antosdk-apps/SVGEdit/svgedit/iife-Editor.js.map
DanyLE 4a62c4d1cf
All checks were successful
gitea-sync/antosdk-apps/pipeline/head This commit looks good
add SVGEdit package
2023-08-17 23:54:41 +02:00

1 line
3.4 MiB
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"iife-Editor.js","sources":["../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../node_modules/@babel/runtime/helpers/esm/toArray.js","../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../node_modules/i18next/dist/esm/i18next.js","../../src/editor/locale.js","../../src/editor/components/seButton.js","../../src/editor/components/seFlyingButton.js","../../src/editor/components/seExplorerButton.js","../../src/editor/components/seZoom.js","../../node_modules/elix/src/core/htmlLiterals.js","../../node_modules/elix/src/core/internal.js","../../node_modules/elix/src/core/AttributeMarshallingMixin.js","../../node_modules/elix/src/core/ReactiveMixin.js","../../node_modules/elix/src/core/ShadowTemplateMixin.js","../../node_modules/elix/src/core/ReactiveElement.js","../../node_modules/elix/src/base/internal.js","../../node_modules/elix/src/base/DelegateInputLabelMixin.js","../../node_modules/elix/src/core/dom.js","../../node_modules/elix/src/base/FocusVisibleMixin.js","../../node_modules/elix/src/base/FormElementMixin.js","../../node_modules/elix/src/base/TrackTextSelectionMixin.js","../../node_modules/elix/src/base/DelegateFocusMixin.js","../../node_modules/elix/src/base/WrappedStandardElement.js","../../node_modules/elix/src/base/Input.js","../../node_modules/elix/src/plain/PlainInput.js","../../node_modules/elix/src/plain/PlainInputMixin.js","../../node_modules/elix/define/Input.js","../../src/editor/components/seInput.js","../../node_modules/elix/src/base/ComposedFocusMixin.js","../../node_modules/elix/src/base/Button.js","../../node_modules/elix/src/base/RepeatMousedownMixin.js","../../node_modules/elix/src/base/RepeatButton.js","../../node_modules/elix/src/plain/PlainButtonMixin.js","../../node_modules/elix/src/plain/PlainRepeatButton.js","../../node_modules/elix/src/core/template.js","../../node_modules/elix/src/base/DisabledMixin.js","../../node_modules/elix/src/base/KeyboardDirectionMixin.js","../../node_modules/elix/src/base/KeyboardMixin.js","../../node_modules/elix/src/base/SpinBox.js","../../node_modules/elix/src/base/DelegateInputSelectionMixin.js","../../src/editor/dialogs/se-elix/src/base/NumberSpinBox.js","../../src/editor/dialogs/se-elix/src/plain/PlainNumberSpinBox.js","../../node_modules/elix/src/plain/PlainSpinBoxMixin.js","../../src/editor/dialogs/se-elix/define/NumberSpinBox.js","../../src/editor/components/seSpinInput.js","../../src/editor/components/sePalette.js","../../node_modules/elix/src/base/MenuItem.js","../../node_modules/elix/src/base/CurrentMixin.js","../../node_modules/elix/src/base/SelectableMixin.js","../../node_modules/elix/src/plain/PlainMenuItem.js","../../node_modules/elix/define/MenuItem.js","../../node_modules/elix/src/base/accessibility.js","../../node_modules/elix/src/base/scrolling.js","../../node_modules/elix/src/base/ItemsCursorMixin.js","../../node_modules/elix/src/base/content.js","../../node_modules/elix/src/base/KeyboardPagedCursorMixin.js","../../node_modules/elix/src/base/constants.js","../../node_modules/elix/src/base/KeyboardPrefixCursorMixin.js","../../node_modules/elix/src/base/LanguageDirectionMixin.js","../../node_modules/elix/src/base/ContentItemsMixin.js","../../node_modules/elix/src/base/SlotContentMixin.js","../../node_modules/elix/src/base/Menu.js","../../node_modules/elix/src/base/AriaMenuMixin.js","../../node_modules/elix/src/base/CursorAPIMixin.js","../../node_modules/elix/src/base/CursorInViewMixin.js","../../node_modules/elix/src/base/DirectionCursorMixin.js","../../node_modules/elix/src/base/ItemsAPIMixin.js","../../node_modules/elix/src/base/ItemsTextMixin.js","../../node_modules/elix/src/base/SlotItemsMixin.js","../../node_modules/elix/src/base/TapCursorMixin.js","../../node_modules/elix/src/base/PopupDragSelectMixin.js","../../node_modules/elix/src/base/layoutPopup.js","../../node_modules/elix/src/base/OpenCloseMixin.js","../../node_modules/elix/src/base/Backdrop.js","../../node_modules/elix/src/base/AriaRoleMixin.js","../../node_modules/elix/src/base/OverlayFrame.js","../../node_modules/elix/src/base/OverlayMixin.js","../../node_modules/elix/src/base/Overlay.js","../../node_modules/elix/src/base/PopupModalityMixin.js","../../node_modules/elix/src/base/Popup.js","../../node_modules/elix/src/base/PopupSource.js","../../node_modules/elix/src/base/PopupButton.js","../../node_modules/elix/src/base/PopupListMixin.js","../../node_modules/elix/src/base/MenuButton.js","../../node_modules/elix/src/base/UpDownToggle.js","../../node_modules/elix/src/base/PopupToggleMixin.js","../../node_modules/elix/src/plain/PlainButton.js","../../node_modules/elix/src/plain/PlainBorderButton.js","../../node_modules/elix/src/plain/PlainMenu.js","../../node_modules/elix/src/plain/PlainOpenCloseToggle.js","../../node_modules/elix/src/plain/PlainBackdrop.js","../../node_modules/elix/src/plain/PlainOverlayFrame.js","../../node_modules/elix/src/plain/PlainPopup.js","../../node_modules/elix/src/plain/PlainMenuButton.js","../../src/editor/components/sePlainBorderButton.js","../../src/editor/components/sePlainMenuButton.js","../../src/editor/components/seMenu.js","../../node_modules/elix/define/Menu.js","../../src/editor/components/seMenuItem.js","../../src/editor/components/seList.js","../../src/editor/components/seListItem.js","../../packages/svgcanvas/dist/svgcanvas.js","../../src/editor/components/jgraduate/ColorValuePicker.js","../../src/common/util.js","../../src/editor/components/jgraduate/Slider.js","../../src/editor/components/jgraduate/jQuery.jPicker.js","../../src/editor/components/jgraduate/jQuery.jGraduate.js","../../src/editor/components/PaintBox.js","../../src/editor/components/seColorPicker.js","../../src/editor/components/seSelect.js","../../src/editor/components/seText.js","../../node_modules/elix/src/base/DialogModalityMixin.js","../../node_modules/elix/src/base/FocusCaptureMixin.js","../../node_modules/elix/src/base/ModalBackdrop.js","../../node_modules/elix/src/base/Dialog.js","../../node_modules/elix/src/plain/PlainModalBackdrop.js","../../node_modules/elix/src/plain/PlainModalOverlayMixin.js","../../node_modules/elix/src/plain/PlainDialog.js","../../node_modules/elix/define/Dialog.js","../../src/editor/dialogs/imagePropertiesDialog.js","../../src/editor/dialogs/editorPreferencesDialog.js","../../src/editor/dialogs/svgSourceDialog.js","../../src/editor/dialogs/cmenuDialog.js","../../src/editor/dialogs/cmenuLayersDialog.js","../../node_modules/elix/src/base/AlertDialog.js","../../node_modules/elix/src/plain/PlainAlertDialog.js","../../src/editor/dialogs/SePlainAlertDialog.js","../../src/editor/dialogs/seSelectDialog.js","../../src/editor/dialogs/seConfirmDialog.js","../../src/editor/dialogs/sePromptDialog.js","../../src/editor/dialogs/seAlertDialog.js","../../src/editor/dialogs/exportDialog.js","../../src/common/browser.js","../../src/editor/ConfigObj.js","../../src/editor/contextmenu.js","../../src/editor/Rulers.js","../../src/editor/EditorStartup.js","../../src/editor/panels/LeftPanel.js","../../src/editor/panels/TopPanel.js","../../src/editor/panels/BottomPanel.js","../../src/editor/panels/LayersPanel.js","../../src/editor/MainMenu.js","../../src/editor/Editor.js","../../src/editor/locale/lang.af.js","../../src/editor/locale/lang.ar.js","../../src/editor/locale/lang.az.js","../../src/editor/locale/lang.be.js","../../src/editor/locale/lang.bg.js","../../src/editor/locale/lang.ca.js","../../src/editor/locale/lang.cs.js","../../src/editor/locale/lang.cy.js","../../src/editor/locale/lang.da.js","../../src/editor/locale/lang.de.js","../../src/editor/locale/lang.el.js","../../src/editor/locale/lang.en.js","../../src/editor/locale/lang.es.js","../../src/editor/locale/lang.et.js","../../src/editor/locale/lang.fa.js","../../src/editor/locale/lang.fi.js","../../src/editor/locale/lang.fr.js","../../src/editor/locale/lang.fy.js","../../src/editor/locale/lang.ga.js","../../src/editor/locale/lang.gl.js","../../src/editor/locale/lang.he.js","../../src/editor/locale/lang.hi.js","../../src/editor/locale/lang.hr.js","../../src/editor/locale/lang.hu.js","../../src/editor/locale/lang.hy.js","../../src/editor/locale/lang.id.js","../../src/editor/locale/lang.is.js","../../src/editor/locale/lang.it.js","../../src/editor/locale/lang.ja.js","../../src/editor/locale/lang.ko.js","../../src/editor/locale/lang.lt.js","../../src/editor/locale/lang.lv.js","../../src/editor/locale/lang.mk.js","../../src/editor/locale/lang.ms.js","../../src/editor/locale/lang.mt.js","../../src/editor/locale/lang.nl.js","../../src/editor/locale/lang.no.js","../../src/editor/locale/lang.pl.js","../../src/editor/locale/lang.pt-BR.js","../../src/editor/locale/lang.pt-PT.js","../../src/editor/locale/lang.ro.js","../../src/editor/locale/lang.ru.js","../../src/editor/locale/lang.sk.js","../../src/editor/locale/lang.sl.js","../../src/editor/locale/lang.sq.js","../../src/editor/locale/lang.sr.js","../../src/editor/locale/lang.sv.js","../../src/editor/locale/lang.sw.js","../../src/editor/locale/lang.test.js","../../src/editor/locale/lang.th.js","../../src/editor/locale/lang.tl.js","../../src/editor/locale/lang.tr.js","../../src/editor/locale/lang.uk.js","../../src/editor/locale/lang.vi.js","../../src/editor/locale/lang.yi.js","../../src/editor/locale/lang.zh-CN.js","../../src/editor/locale/lang.zh-HK.js","../../src/editor/locale/lang.zh-TW.js"],"sourcesContent":["export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\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\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","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 _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}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _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 Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default 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}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread(_objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n\n return matched;\n}\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n\n current = current[paths[i]];\n }\n\n return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n var _super = _createSuper(ResourceStore);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$1(_objectSpread$1({}, pack), resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n var _super = _createSuper$1(Translator);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n\n if (key === undefined || key === null) {\n return false;\n }\n\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n\n if (returnDetails) {\n resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n return resolved;\n }\n\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n\n if (returnDetails) {\n resolved.res = key;\n return resolved;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n\n return r;\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {\n interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (!rule) {\n return [];\n }\n\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n\n return this.getSuffixRetroCompatible(rule, count);\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && options.hasOwnProperty(matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread$3({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\n\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Formatter);\n\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: function number(val, lng, options) {\n return new Intl.NumberFormat(lng, options).format(val);\n },\n currency: function currency(val, lng, options) {\n return new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {\n style: 'currency'\n })).format(val);\n },\n datetime: function datetime(val, lng, options) {\n return new Intl.DateTimeFormat(lng, _objectSpread$4({}, options)).format(val);\n },\n relativetime: function relativetime(val, lng, options) {\n return new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options)).format(val, options.range || 'day');\n },\n list: function list(val, lng, options) {\n return new Intl.ListFormat(lng, _objectSpread$4({}, options)).format(val);\n }\n };\n this.init(options);\n }\n\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n\n var formats = _format.split(this.formatSeparator);\n\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n\n if (_this.formats[formatName]) {\n var formatted = mem;\n\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n\n return mem;\n }, value);\n return result;\n }\n }]);\n\n return Formatter;\n}();\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n var _super = _createSuper$2(Connector);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n\n if (loadedKeys.length) {\n loadedKeys.forEach(function (ns) {\n if (loaded[l][ns] === undefined) loaded[l][ns] = true;\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n\n this.readingCalls++;\n return this.backend[fcName](lng, ns, function (err, data) {\n _this3.readingCalls--;\n\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction noop() {}\n\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n var _super = _createSuper$3(I18n);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!options.defaultNS && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n\n var defOpts = get();\n this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));\n\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);\n }\n\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var formatter;\n\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\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 _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n\n _this4.setResolvedLanguage(l);\n };\n\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread$6({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread$6({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\n\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport default instance;\nexport { changeLanguage, createInstance, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","/**\n * Localizing script for SVG-edit UI.\n * @module locale\n * @license MIT\n *\n * @copyright 2010 Narendra Sisodya\n * @copyright 2010 Alexis Deveria\n *\n */\n\nimport i18next from 'i18next'\n\n/**\n * The string keys of the object are two-letter language codes.\n * @tutorial LocaleDocs\n * @typedef {PlainObject<string, string|module:locale.LocaleStrings|module:locale.LocaleArray>} module:locale.LocaleStrings\n */\n// keyed to an array of objects with \"id\" and \"title\" or \"textContent\" properties\n/**\n * @typedef {PlainObject<string, string>} module:locale.LocaleSelectorValue\n */\n\nlet langParam\n\n/**\n* The \"data\" property is generally set to an an array of objects with\n* \"id\" and \"title\" or \"textContent\" properties.\n* @typedef {PlainObject} module:locale.AddLangExtensionLocaleData\n* @property {module:locale.LocaleStrings[]} data See {@tutorial LocaleDocs}\n*/\n\n/**\n* @interface module:locale.LocaleEditorInit\n*/\n/**\n * @function module:locale.LocaleEditorInit#addLangData\n * @param {string} langParam\n * @returns {module:locale.AddLangExtensionLocaleData}\n*/\n/**\n* @typedef {PlainObject} module:locale.LangAndData\n* @property {string} langParam\n* @property {module:locale.LocaleStrings} langData\n*/\n\n/**\n *\n * @function module:locale.putLocale\n * @param {string} givenParam\n * @param {string[]} goodLangs\n * @fires module:svgcanvas.SvgCanvas#event:ext_addLangData\n * @fires module:svgcanvas.SvgCanvas#event:ext_langReady\n * @fires module:svgcanvas.SvgCanvas#event:ext_langChanged\n * @returns {Promise<module:locale.LangAndData>} Resolves to result of {@link module:locale.readLang}\n*/\n\nexport const putLocale = async function (givenParam, goodLangs) {\n if (givenParam) {\n langParam = givenParam\n } else if (navigator.userLanguage) { // Explorer\n langParam = navigator.userLanguage\n } else if (navigator.language) { // FF, Opera, ...\n langParam = navigator.language\n }\n\n // Set to English if language is not in list of good langs\n if (!goodLangs.includes(langParam) && langParam !== 'test') {\n langParam = 'en'\n }\n const module = await import(`./locale/lang.${encodeURIComponent(langParam)}.js`)\n i18next.init({\n lng: langParam,\n debug: false,\n resources: {\n [langParam]: {\n translation: module.default\n }\n }\n })\n return { langParam, i18next }\n}\n\nexport const t = function (key) {\n return i18next.t(key)\n}\n","/* globals svgEditor */\nimport { t } from '../locale.js'\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n :host(:hover) :not(.disabled)\n {\n background-color: var(--icon-bg-color-hover);\n }\n div\n {\n height: 24px;\n width: 24px;\n margin: 4px 1px 4px;\n padding: 3px;\n background-color: var(--icon-bg-color);\n cursor: pointer;\n border-radius: 3px;\n }\n .small {\n width: 14px;\n height: 14px;\n padding: 1px;\n border-radius: 1px;\n }\n img {\n border: none;\n width: 100%;\n height: 100%;\n }\n .pressed {\n background-color: var(--icon-bg-color-hover);\n }\n .disabled {\n opacity: 0.3;\n cursor: default;\n }\n </style>\n <div title=\"title\">\n <img alt=\"icon\">\n </div>\n`\n/**\n * @class ToolButton\n */\nexport class ToolButton extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n // locate the component\n this.$div = this._shadowRoot.querySelector('div')\n this.$img = this._shadowRoot.querySelector('img')\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['title', 'src', 'pressed', 'disabled', 'size', 'style']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'title':\n {\n const shortcut = this.getAttribute('shortcut')\n this.$div.setAttribute('title', `${t(newValue)} ${shortcut ? `[${t(shortcut)}]` : ''}`)\n }\n break\n case 'style':\n this.$div.style = newValue\n break\n case 'src':\n if (newValue.indexOf('data:') !== -1) {\n this.$img.setAttribute('src', newValue)\n } else {\n this.$img.setAttribute('src', this.imgPath + '/' + newValue)\n }\n break\n case 'pressed':\n if (newValue === null) {\n this.$div.classList.remove('pressed')\n } else {\n this.$div.classList.add('pressed')\n }\n break\n case 'size':\n if (newValue === 'small') {\n this.$div.classList.add('small')\n } else {\n this.$div.classList.remove('small')\n }\n break\n case 'disabled':\n if (newValue) {\n this.$div.classList.add('disabled')\n } else {\n this.$div.classList.remove('disabled')\n }\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get pressed () {\n return this.hasAttribute('pressed')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set pressed (value) {\n // boolean value => existence = true\n if (value) {\n this.setAttribute('pressed', 'true')\n } else {\n this.removeAttribute('pressed')\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get disabled () {\n return this.hasAttribute('disabled')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set disabled (value) {\n // boolean value => existence = true\n if (value) {\n this.setAttribute('disabled', 'true')\n } else {\n this.removeAttribute('disabled')\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get src () {\n return this.getAttribute('src')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set src (value) {\n this.setAttribute('src', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get size () {\n return this.getAttribute('size')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set size (value) {\n this.setAttribute('size', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n // capture shortcuts\n const shortcut = this.getAttribute('shortcut')\n if (shortcut) {\n // register the keydown event\n document.addEventListener('keydown', (e) => {\n // only track keyboard shortcuts for the body containing the SVG-Editor\n if (e.target.nodeName !== 'BODY') return\n // normalize key\n const key = `${(e.metaKey) ? 'meta+' : ''}${(e.ctrlKey) ? 'ctrl+' : ''}${e.key.toUpperCase()}`\n if (shortcut !== key) return\n // launch the click event\n this.click()\n e.preventDefault()\n })\n }\n }\n}\n\n// Register\ncustomElements.define('se-button', ToolButton)\n","/* globals svgEditor */\nimport { t } from '../locale.js'\n\n/**\n * @class FlyingButton\n */\nexport class FlyingButton extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n this.template = this.createTemplate(this.imgPath)\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(this.template.content.cloneNode(true))\n // locate the component\n this.$button = this._shadowRoot.querySelector('.menu-button')\n this.$handle = this._shadowRoot.querySelector('.handle')\n this.$overall = this._shadowRoot.querySelector('.overall')\n this.$img = this._shadowRoot.querySelector('img')\n this.$menu = this._shadowRoot.querySelector('.menu')\n // the last element of the div is the slot\n // we retrieve all elements added in the slot (i.e. se-buttons)\n this.$elements = this.$menu.lastElementChild.assignedElements()\n }\n\n /**\n * @function createTemplate\n * @param {string} imgPath\n * @returns {any} template\n */\n\n createTemplate (imgPath) {\n const template = document.createElement('template')\n template.innerHTML = `\n <style>\n :host {\n position:relative;\n }\n .overall:hover *\n {\n background-color: var(--icon-bg-color-hover);\n }\n img {\n border: none;\n width: 24px;\n height: 24px;\n }\n .overall.pressed .button-icon,\n .overall.pressed .handle {\n background-color: var(--icon-bg-color-hover) !important;\n }\n .overall.pressed .menu-button {\n background-color: var(--icon-bg-color-hover) !important;\n }\n .disabled {\n opacity: 0.3;\n cursor: default;\n }\n .menu-button {\n height: 24px;\n width: 24px;\n margin: 2px 1px 4px;\n padding: 3px;\n background-color: var(--icon-bg-color);\n cursor: pointer;\n position: relative;\n border-radius: 3px;\n overflow: hidden;\n }\n .handle {\n height: 8px;\n width: 8px;\n background-image: url(${imgPath}/handle.svg);\n position:absolute;\n bottom: 0px;\n right: 0px;\n }\n .button-icon {\n }\n .menu {\n position: fixed;\n background: none !important;\n display:none;\n margin-left: 34px;\n }\n .open {\n display: flex;\n }\n .menu-item {\n align-content: flex-start;\n height: 24px;\n width: 24px;\n top:0px;\n left:0px;\n }\n .overall {\n background: none !important;\n }\n </style>\n\n <div class=\"overall\">\n <div class=\"menu\">\n <slot></slot>\n </div>\n <div class=\"menu-button\">\n <img class=\"button-icon\" src=\"logo.svg\" alt=\"icon\">\n <div class=\"handle\"></div>\n </div>\n </div>`\n return template\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['title', 'pressed', 'disabled', 'opened']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'title':\n {\n const shortcut = this.getAttribute('shortcut')\n this.$button.setAttribute('title', `${t(newValue)} ${shortcut ? `[${t(shortcut)}]` : ''}`)\n }\n break\n case 'pressed':\n if (newValue) {\n this.$overall.classList.add('pressed')\n } else {\n this.$overall.classList.remove('pressed')\n }\n break\n case 'opened':\n if (newValue) {\n this.$menu.classList.add('open')\n } else {\n this.$menu.classList.remove('open')\n }\n break\n case 'disabled':\n if (newValue) {\n this.$overall.classList.add('disabled')\n } else {\n this.$overall.classList.remove('disabled')\n }\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get pressed () {\n return this.hasAttribute('pressed')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set pressed (value) {\n // boolean value => existence = true\n if (value) {\n this.setAttribute('pressed', 'true')\n } else {\n this.removeAttribute('pressed', '')\n // close also the menu if open\n this.removeAttribute('opened')\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get opened () {\n return this.hasAttribute('opened')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set opened (value) {\n // boolean value => existence = true\n if (value) {\n this.setAttribute('opened', 'opened')\n } else {\n this.removeAttribute('opened')\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get disabled () {\n return this.hasAttribute('disabled')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set disabled (value) {\n // boolean value => existence = true\n if (value) {\n this.setAttribute('disabled', 'true')\n } else {\n this.removeAttribute('disabled', '')\n }\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n this.activeSlot = this.shadowRoot.querySelector('slot').assignedElements()[0]\n this.$img.setAttribute('src', this.imgPath + '/' + this.activeSlot.getAttribute('src'))\n // capture click event on the button to manage the logic\n const onClickHandler = (ev) => {\n ev.stopPropagation()\n switch (ev.target.nodeName) {\n case 'SE-FLYINGBUTTON':\n if (this.pressed) {\n this.setAttribute('opened', 'opened')\n } else {\n // launch current action\n this.activeSlot.click()\n this.setAttribute('pressed', 'pressed')\n }\n break\n case 'SE-BUTTON':\n // change to the current action\n this.$img.setAttribute('src', this.imgPath + '/' + ev.target.getAttribute('src'))\n this.activeSlot = ev.target\n this.setAttribute('pressed', 'pressed')\n // and close the menu\n this.$menu.classList.remove('open')\n break\n case 'DIV':\n // this is a click on the handle so let's open/close the menu.\n if (this.opened) {\n this.removeAttribute('opened')\n } else {\n this.setAttribute('opened', 'opened')\n // In case menu scroll on top or bottom position based popup position set\n const rect = this.getBoundingClientRect()\n this.$menu.style.top = rect.top + 'px'\n }\n break\n default:\n console.error('unkonw nodeName for:', ev.target, ev.target.className)\n }\n }\n // capture event from slots\n svgEditor.$click(this, onClickHandler)\n svgEditor.$click(this.$handle, onClickHandler)\n }\n}\n\n// Register\ncustomElements.define('se-flyingbutton', FlyingButton)\n","/* globals svgEditor */\n\n/**\n * @class ExplorerButton\n */\nexport class ExplorerButton extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n // create the shadowDom and insert the template\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n this.template = this.createTemplate(this.imgPath)\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(this.template.content.cloneNode(true))\n // locate the component\n this.$button = this._shadowRoot.querySelector('.menu-button')\n this.$overall = this._shadowRoot.querySelector('.overall')\n this.$img = this._shadowRoot.querySelector('.menu-button img')\n this.$menu = this._shadowRoot.querySelector('.menu')\n this.$handle = this._shadowRoot.querySelector('.handle')\n this.$lib = this._shadowRoot.querySelector('.image-lib')\n this.files = []\n this.request = new XMLHttpRequest()\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n }\n\n /**\n * @function createTemplate\n * @param {string} imgPath\n * @returns {any} template\n */\n\n createTemplate (imgPath) {\n const template = document.createElement('template')\n template.innerHTML = `\n <style>\n :host {\n position:relative;\n }\n .menu-button:hover, se-button:hover, .menu-item:hover\n {\n background-color: var(--icon-bg-color-hover);\n }\n img {\n border: none;\n width: 24px;\n height: 24px;\n }\n .overall.pressed .button-icon,\n .overall.pressed,\n .menu-item.pressed {\n background-color: var(--icon-bg-color-hover) !important;\n }\n .overall.pressed .menu-button {\n background-color: var(--icon-bg-color-hover) !important;\n }\n .disabled {\n opacity: 0.3;\n cursor: default;\n }\n .menu-button {\n height: 24px;\n width: 24px;\n margin: 2px 1px 4px;\n padding: 3px;\n background-color: var(--icon-bg-color);\n cursor: pointer;\n position: relative;\n border-radius: 3px;\n overflow: hidden;\n }\n .handle {\n height: 8px;\n width: 8px;\n background-image: url(${imgPath}/handle.svg);\n position:absolute;\n bottom: 0px;\n right: 0px;\n }\n .button-icon {\n }\n .menu {\n position: fixed;\n margin-left: 34px;\n background: none !important;\n display:none;\n top: 30%;\n left: 171px;\n }\n .image-lib {\n position: fixed;\n left: 34px;\n top: 30%;\n background: #E8E8E8;\n display: none;\n flex-wrap: wrap;\n flex-direction: row;\n width: 170px;\n }\n .menu-item {\n line-height: 1em;\n padding: 0.5em;\n border: 1px solid #5a6162;\n background: #E8E8E8;\n margin-bottom: -1px;\n white-space: nowrap;\n }\n .open-lib {\n display: inline-flex;\n }\n .open {\n display: block;\n }\n .overall {\n background: none !important;\n }\n </style>\n \n <div class=\"overall\">\n <div class=\"menu-button\">\n <img class=\"button-icon\" src=\"explorer.svg\" alt=\"icon\">\n <div class=\"handle\"></div>\n </div>\n <div class=\"image-lib\"\">\n <se-button></se-button>\n </div>\n <div class=\"menu\">\n <div class=\"menu-item\">menu</div>\n </div>\n </div>`\n return template\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['title', 'pressed', 'disabled', 'lib', 'src']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n async attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'title':\n {\n const shortcut = this.getAttribute('shortcut')\n this.$button.setAttribute('title', `${newValue} [${shortcut}]`)\n }\n break\n case 'pressed':\n if (newValue) {\n this.$overall.classList.add('pressed')\n } else {\n this.$overall.classList.remove('pressed')\n }\n break\n case 'disabled':\n if (newValue) {\n this.$overall.classList.add('disabled')\n } else {\n this.$overall.classList.remove('disabled')\n }\n break\n case 'lib':\n try {\n const response = await fetch(`${newValue}index.json`)\n const json = await response.json()\n const { lib } = json\n this.$menu.innerHTML = lib.map((menu, i) => (\n `<div data-menu=\"${menu}\" class=\"menu-item ${(i === 0) ? 'pressed' : ''} \">${menu}</div>`\n )).join('')\n await this.updateLib(lib[0])\n } catch (error) {\n console.error(error)\n }\n break\n case 'src':\n this.$img.setAttribute('src', this.imgPath + '/' + newValue)\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get pressed () {\n return this.hasAttribute('pressed')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set pressed (value) {\n // boolean value => existence = true\n if (value) {\n this.setAttribute('pressed', 'true')\n } else {\n this.removeAttribute('pressed', '')\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get disabled () {\n return this.hasAttribute('disabled')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set disabled (value) {\n // boolean value => existence = true\n if (value) {\n this.setAttribute('disabled', 'true')\n } else {\n this.removeAttribute('disabled', '')\n }\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n // capture click event on the button to manage the logic\n const onClickHandler = (ev) => {\n ev.stopPropagation()\n switch (ev.target.nodeName) {\n case 'SE-EXPLORERBUTTON':\n this.$menu.classList.add('open')\n this.$lib.classList.add('open-lib')\n break\n case 'SE-BUTTON':\n // change to the current action\n this.currentAction = ev.target\n this.$img.setAttribute('src', this.currentAction.getAttribute('src'))\n this.dataset.draw = this.data[this.currentAction.dataset.shape]\n this._shadowRoot.querySelectorAll('.image-lib [pressed]').forEach((b) => { b.pressed = false })\n this.currentAction.setAttribute('pressed', 'pressed')\n // and close the menu\n this.$menu.classList.remove('open')\n this.$lib.classList.remove('open-lib')\n break\n case 'DIV':\n if (ev.target.classList[0] === 'handle') {\n // this is a click on the handle so let's open/close the menu.\n this.$menu.classList.toggle('open')\n this.$lib.classList.toggle('open-lib')\n } else {\n this._shadowRoot.querySelectorAll('.menu > .pressed').forEach((b) => { b.classList.remove('pressed') })\n ev.target.classList.add('pressed')\n this.updateLib(ev.target.dataset.menu)\n }\n break\n default:\n console.error('unknown nodeName for:', ev.target, ev.target.className)\n }\n }\n // capture event from slots\n svgEditor.$click(this, onClickHandler)\n svgEditor.$click(this.$menu, onClickHandler)\n svgEditor.$click(this.$lib, onClickHandler)\n svgEditor.$click(this.$handle, onClickHandler)\n }\n\n /**\n * @function updateLib\n * @param {string} lib\n * @returns {void}\n */\n async updateLib (lib) {\n const libDir = this.getAttribute('lib')\n try {\n // initialize buttons for all shapes defined for this library\n const response = await fetch(`${libDir}${lib}.json`)\n const json = await response.json()\n this.data = json.data\n const size = json.size ?? 300\n const fill = json.fill ? '#333' : 'none'\n const off = size * 0.05\n const vb = [-off, -off, size + off * 2, size + off * 2].join(' ')\n const stroke = json.fill ? 0 : (size / 30)\n this.$lib.innerHTML = Object.entries(this.data).map(([key, path]) => {\n const encoded = btoa(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\">\n <svg viewBox=\"${vb}\"><path fill=\"${fill}\" stroke=\"#f8bb00\" stroke-width=\"${stroke}\" d=\"${path}\"></path></svg>\n </svg>`)\n return `<se-button data-shape=\"${key}\"src=\"data:image/svg+xml;base64,${encoded}\"></se-button>`\n }).join('')\n } catch (error) {\n console.error(`could not read file:${libDir}${lib}.json`, error)\n }\n }\n}\n\n// Register\ncustomElements.define('se-explorerbutton', ExplorerButton)\n","/* globals svgEditor */\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n input{\n border:unset;\n background-color:var(--input-color);\n min-width:unset;\n width:40px;\n height:23px;\n padding:1px 2px;\n border:2px;\n font: inherit;\n margin: 2px 1px 0px 2px;\n box-sizing:border-box;\n text-align: center;\n border-radius: 3px 0px 0px 3px;\n }\n #tool-wrapper{\n height:20px;\n display:flex;\n align-items:center;\n }\n #icon{\n margin-bottom:1px\n }\n #spinner{\n display:flex;\n flex-direction:column;\n }\n #spinner > div {\n height: 11px;\n width: 7px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 7px;\n border-left:solid 1px transparent;\n border-right:solid 1px transparent;\n background-color:var(--input-color);\n }\n #arrow-up{\n height:9px;\n margin-top: 2px;\n margin-bottom: 1px;\n }\n #down{\n width:18px;\n height:23px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color:var(--input-color);\n border-radius: 0px 3px 3px 0px;\n margin: 2px 5px 0px 1px;\n }\n #down > img {\n margin-top: 2px;\n }\n #options-container {\n position:fixed\n display:flex;\n flex-direction:column;\n background-color:var(--icon-bg-color);\n border:solid 1px white;\n box-shadow:0 0px 10px rgb(0 0 0 / 50%);\n }\n ::slotted(*) {\n margin:2px;\n padding:3px;\n color:white;\n }\n ::slotted(*:hover) {\n background-color: rgb(43, 60, 69);\n }\n </style>\n <div id=\"tool-wrapper\">\n <img id=\"icon\" alt=\"icon\" width=\"18\" height=\"18\"/>\n <input/>\n <div id=\"spinner\">\n <div id=\"arrow-up\">▲</div>\n <div id=\"arrow-down\">▼</div>\n </div>\n <div id=\"down\">\n <img width=\"16\" height=\"8\" src=\"./images/arrow_down.svg\"/>\n </div>\n </div>\n <div id=\"options-container\" style=\"display:none\">\n <slot></slot>\n </div>\n`\n\nclass SeZoom extends HTMLElement {\n constructor () {\n super()\n\n this.handleMouseDown = this.handleMouseDown.bind(this)\n this.handleMouseUp = this.handleMouseUp.bind(this)\n this.handleKeyDown = this.handleKeyDown.bind(this)\n this.initPopup = this.initPopup.bind(this)\n this.handleInput = this.handleInput.bind(this)\n\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n // locate the component\n this._shadowRoot.append(template.content.cloneNode(true))\n\n // prepare the slot element\n this.slotElement = this._shadowRoot.querySelector('slot')\n this.slotElement.addEventListener(\n 'slotchange',\n this.handleOptionsChange.bind(this)\n )\n\n // hookup events for the input box\n this.inputElement = this._shadowRoot.querySelector('input')\n this.inputElement.addEventListener('click', this.handleClick.bind(this))\n this.inputElement.addEventListener('change', this.handleInput)\n this.inputElement.addEventListener('keydown', this.handleKeyDown)\n\n this.clickArea = this._shadowRoot.querySelector('#down')\n this.clickArea.addEventListener('click', this.handleClick.bind(this))\n\n // set src for imageElement\n this.imageElement = this._shadowRoot.querySelector('img')\n this.imageElement.setAttribute(\n 'src',\n (this.imgPath =\n svgEditor.configObj.curConfig.imgPath + '/' + this.getAttribute('src'))\n )\n\n // hookup events for arrow buttons\n this.arrowUp = this._shadowRoot.querySelector('#arrow-up')\n this.arrowUp.addEventListener('click', this.increment.bind(this))\n this.arrowUp.addEventListener('mousedown', e =>\n this.handleMouseDown('up', true)\n )\n this.arrowUp.addEventListener('mouseleave', e => this.handleMouseUp('up'))\n this.arrowUp.addEventListener('mouseup', e => this.handleMouseUp('up'))\n\n this.arrowDown = this._shadowRoot.querySelector('#arrow-down')\n this.arrowDown.addEventListener('click', this.decrement.bind(this))\n this.arrowDown.addEventListener('mousedown', e =>\n this.handleMouseDown('down', true)\n )\n this.arrowDown.addEventListener('mouseleave', e =>\n this.handleMouseUp('down')\n )\n this.arrowDown.addEventListener('mouseup', e => this.handleMouseUp('down'))\n\n this.optionsContainer = this._shadowRoot.querySelector(\n '#options-container'\n )\n\n // add an event listener to close the popup\n document.addEventListener('click', e => this.handleClose(e))\n this.changedTimeout = null\n }\n\n static get observedAttributes () {\n return ['value']\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get value () {\n return this.getAttribute('value')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set value (value) {\n this.setAttribute('value', value)\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) {\n switch (name) {\n case 'value':\n if (parseInt(this.inputElement.value) !== newValue) {\n this.inputElement.value = newValue\n }\n break\n }\n\n return\n }\n\n switch (name) {\n case 'value':\n this.inputElement.value = newValue\n this.dispatchEvent(\n new CustomEvent('change', { detail: { value: newValue } })\n )\n break\n }\n }\n\n /**\n * @function handleOptionsChange\n * @returns {void}\n */\n handleOptionsChange () {\n if (this.slotElement.assignedElements().length > 0) {\n this.options = this.slotElement.assignedElements()\n this.selectedValue = this.options[0].textContent\n\n this.initPopup()\n\n this.options.forEach(option => {\n option.addEventListener('click', e => this.handleSelect(e))\n })\n }\n }\n\n /**\n * @function handleClick\n * @returns {void}\n */\n handleClick () {\n this.optionsContainer.style.display = 'flex'\n this.inputElement.select()\n this.initPopup()\n }\n\n /**\n * @function handleSelect\n * @param {Event} e\n * @returns {void}\n */\n handleSelect (e) {\n this.value = e.target.getAttribute('value')\n this.title = e.target.getAttribute('text')\n }\n\n /**\n * @function handleShow\n * @returns {void}\n * initialises the popup menu position\n */\n initPopup () {\n const zoomPos = this.getBoundingClientRect()\n const popupPos = this.optionsContainer.getBoundingClientRect()\n const top = zoomPos.top - popupPos.height\n const left = zoomPos.left\n\n this.optionsContainer.style.position = 'fixed'\n this.optionsContainer.style.top = `${top}px`\n this.optionsContainer.style.left = `${left}px`\n }\n\n /**\n * @function handleClose\n * @param {Event} e\n * @returns {void}\n * Close the popup menu\n */\n handleClose (e) {\n if (e.target !== this) {\n this.optionsContainer.style.display = 'none'\n this.inputElement.blur()\n }\n }\n\n /**\n * @function handleInput\n * @returns {void}\n */\n handleInput () {\n if (this.changedTimeout) {\n clearTimeout(this.changedTimeout)\n }\n\n this.changedTimeout = setTimeout(this.triggerInputChanged.bind(this), 500)\n }\n\n /**\n * @function triggerInputChanged\n * @returns {void}\n */\n triggerInputChanged () {\n const newValue = this.inputElement.value\n this.value = newValue\n }\n\n /**\n * @function increment\n * @returns {void}\n */\n increment () {\n this.value = parseInt(this.value) + 10\n }\n\n /**\n * @function decrement\n * @returns {void}\n */\n decrement () {\n if (this.value - 10 <= 0) {\n this.value = 10\n } else {\n this.value = parseInt(this.value) - 10\n }\n }\n\n /**\n * @function handleMouseDown\n * @param {string} dir\n * @param {boolean} isFirst\n * @returns {void}\n * Increment/Decrement on mouse held down, if its the first call add a delay before starting\n */\n handleMouseDown (dir, isFirst) {\n if (dir === 'up') {\n this.incrementHold = true\n !isFirst && this.increment()\n\n setTimeout(\n () => {\n if (this.incrementHold) {\n this.handleMouseDown(dir, false)\n }\n },\n isFirst ? 500 : 50\n )\n } else if (dir === 'down') {\n this.decrementHold = true\n !isFirst && this.decrement()\n\n setTimeout(\n () => {\n if (this.decrementHold) {\n this.handleMouseDown(dir, false)\n }\n },\n isFirst ? 500 : 50\n )\n }\n }\n\n /**\n * @function handleMouseUp\n * @param {string} dir\n * @returns {void}\n */\n handleMouseUp (dir) {\n if (dir === 'up') {\n this.incrementHold = false\n } else {\n this.decrementHold = false\n }\n }\n\n /**\n * @function handleKeyDown\n * @param {Event} e\n * @returns {void}\n */\n handleKeyDown (e) {\n if (e.key === 'ArrowUp') {\n this.increment()\n } else if (e.key === 'ArrowDown') {\n this.decrement()\n }\n }\n}\n\n// Register\ncustomElements.define('se-zoom', SeZoom)\n","/**\n * JavaScript template literals for constructing DOM nodes from HTML\n *\n * @module html\n */\n\n/**\n * A JavaScript template string literal that returns an HTML document fragment.\n *\n * Example:\n *\n * const fragment = fragmentFrom.html`Hello, <em>world</em>.`\n *\n * returns a `DocumentFragment` whose `innerHTML` is `Hello, <em>world</em>.`\n *\n * This function is called `html` so that it can be easily used with HTML\n * syntax-highlighting extensions for various popular code editors.\n *\n * See also [templateFrom.html](template#html), which returns a similar result but\n * as an HTMLTemplateElement.\n *\n * @param {TemplateStringsArray} strings - the strings passed to the JavaScript template\n * literal\n * @param {string[]} substitutions - the variable values passed to the\n * JavaScript template literal\n * @returns {DocumentFragment}\n */\nexport const fragmentFrom = {\n html(strings, ...substitutions) {\n return templateFrom.html(strings, ...substitutions).content;\n },\n};\n\n/**\n * A JavaScript template string literal that returns an HTML template.\n *\n * Example:\n *\n * const myTemplate = templateFrom.html`Hello, <em>world</em>.`\n *\n * returns an `HTMLTemplateElement` whose `innerHTML` is `Hello, <em>world</em>.`\n *\n * This function is called `html` so that it can be easily used with HTML\n * syntax-highlighting extensions for various popular code editors.\n *\n * See also [html](html), a helper which returns a similar result but as an\n * DocumentFragment.\n *\n * @param {TemplateStringsArray} strings - the strings passed to the JavaScript template\n * literal\n * @param {string[]} substitutions - the variable values passed to the\n * JavaScript template literal\n * @returns {HTMLTemplateElement}\n */\nexport const templateFrom = {\n html(strings, ...substitutions) {\n const template = document.createElement(\"template\");\n template.innerHTML = String.raw(strings, ...substitutions);\n return template;\n },\n};\n","/**\n * Collection of shared Symbol objects for internal component communication.\n *\n * The shared `Symbol` objects in this module let mixins and a component\n * internally communicate without exposing these internal properties and methods\n * in the component's public API. They also help avoid unintentional name\n * collisions, as a component developer must specifically import the `internal`\n * module and reference one of its symbols.\n *\n * To use these `Symbol` objects in your own component, include this module and\n * then create a property or method whose key is the desired Symbol. E.g.,\n * [ShadowTemplateMixin](ShadowTemplateMixin) expects a component to define\n * a property called [template](#template):\n *\n * import { template } from 'elix/src/core/internal.js';\n * import { templateFrom } from 'elix/src/core/htmlLiterals.js'\n * import ShadowTemplateMixin from 'elix/src/core/ShadowTemplateMixin.js';\n *\n * class MyElement extends ShadowTemplateMixin(HTMLElement) {\n * [template]() {\n * return templateFrom.html`Hello, <em>world</em>.`;\n * }\n * }\n *\n * The above use of the internal `template` member lets the mixin find the\n * component's template in a way that will not pollute the component's public\n * API or interfere with other component logic. For example, if for some reason\n * the component wants to define a separate property with the plain string name,\n * \"template\", it can do so without affecting the above property setter.\n *\n * @module internal\n */\n\n/**\n * Symbol for the default state for this element.\n */\nexport const defaultState = Symbol(\"defaultState\");\n\n/**\n * Symbol for the `delegatesFocus` property.\n *\n * [DelegatesFocusMixin](DelegatesFocusMixin) defines this property, returning\n * true to indicate that the focus is being delegated, even in browsers that\n * don't support that natively. Mixins like [KeyboardMixin](KeyboardMixin) use\n * this to accommodate focus delegation.\n */\nexport const delegatesFocus = Symbol(\"delegatesFocus\");\n\n/**\n * Symbol for the `firstRender` property.\n *\n * [ReactiveMixin](ReactiveMixin) sets the property to `true` during the\n * element's first `render` and `rendered` callback, then `false` in subsequent\n * callbacks.\n *\n * You can inspect this property in your own `rendered` callback handler to do\n * work like wiring up events that should only happen once.\n */\nexport const firstRender = Symbol(\"firstRender\");\n\n/**\n * Symbol for the `focusTarget` property.\n *\n * [DelegatesFocusMixin](DelegatesFocusMixin) defines this property as either:\n * 1) the element itself, in browsers that support native focus delegation or,\n * 2) the shadow root's first focusable element.\n */\nexport const focusTarget = Symbol(\"focusTarget\");\n\n/**\n * Symbol for the `hasDynamicTemplate` property.\n *\n * If your component class does not always use the same template, define a\n * static class property getter with this symbol and have it return `true`.\n * This will disable template caching for your component.\n */\nexport const hasDynamicTemplate = Symbol(\"hasDynamicTemplate\");\n\n/**\n * Symbol for the `ids` property.\n *\n * [ShadowTemplateMixin](ShadowTemplateMixin) defines a shorthand function\n * `internal.ids` that can be used to obtain a reference to a shadow element with\n * a given ID.\n *\n * Example: if component's template contains a shadow element\n * `<button id=\"foo\">`, you can use the reference `this[ids].foo` to obtain\n * the corresponding button in the component instance's shadow tree.\n * The `ids` function is simply a shorthand for `getElementById`, so\n * `this[ids].foo` is the same as `this.shadowRoot.getElementById('foo')`.\n */\nexport const ids = Symbol(\"ids\");\n\n/**\n * Symbol for access to native HTML element internals.\n */\nexport const nativeInternals = Symbol(\"nativeInternals\");\n\n/**\n * Symbol for the `raiseChangeEvents` property.\n *\n * This property is used by mixins to determine whether they should raise\n * property change events. The standard HTML pattern is to only raise such\n * events in response to direct user interactions. For a detailed discussion\n * of this point, see the Gold Standard checklist item for\n * [Propery Change Events](https://github.com/webcomponents/gold-standard/wiki/Property%20Change%20Events).\n *\n * The above article describes a pattern for using a flag to track whether\n * work is being performed in response to internal component activity, and\n * whether the component should therefore raise property change events.\n * This `raiseChangeEvents` symbol is a shared flag used for that purpose by\n * all Elix mixins and components. Sharing this flag ensures that internal\n * activity (e.g., a UI event listener) in one mixin can signal other mixins\n * handling affected properties to raise change events.\n *\n * All UI event listeners (and other forms of internal handlers, such as\n * timeouts and async network handlers) should set `raiseChangeEvents` to\n * `true` at the start of the event handler, then `false` at the end:\n *\n * this.addEventListener('click', event => {\n * this[raiseChangeEvents] = true;\n * // Do work here, possibly setting properties, like:\n * this.foo = 'Hello';\n * this[raiseChangeEvents] = false;\n * });\n *\n * Elsewhere, property setters that raise change events should only do so it\n * this property is `true`:\n *\n * set foo(value) {\n * // Save foo value here, do any other work.\n * if (this[raiseChangeEvents]) {\n * export const event = new CustomEvent('foochange');\n * this.dispatchEvent(event);\n * }\n * }\n *\n * In this way, programmatic attempts to set the `foo` property will not trigger\n * the `foochange` event, but UI interactions that update that property will\n * cause those events to be raised.\n */\nexport const raiseChangeEvents = Symbol(\"raiseChangeEvents\");\n\n/**\n * Symbol for the `render` method.\n *\n * [ReactiveMixin](ReactiveMixin) invokes this `internal.render` method to give\n * the component a chance to render recent changes in component state.\n */\nexport const render = Symbol(\"render\");\n\n/**\n * Symbol for the `renderChanges` method.\n *\n * [ReactiveMixin](ReactiveMixin) invokes this method in response to a\n * `setState` call; you should generally not invoke this method yourself.\n */\nexport const renderChanges = Symbol(\"renderChanges\");\n\n/**\n * Symbol for the `rendered` method.\n *\n * [ReactiveMixin](ReactiveMixin) will invoke this method after your\n * element has completely finished rendering.\n *\n * If you only want to do work the first time rendering happens (for example, if\n * you want to wire up event handlers), your `internal.rendered` implementation\n * can inspect the `internal.firstRender` flag.\n */\nexport const rendered = Symbol(\"rendered\");\n\n/**\n * Symbol for the `rendering` property.\n *\n * [ReactiveMixin](ReactiveMixin) sets this property to true during rendering,\n * at other times it will be false.\n */\nexport const rendering = Symbol(\"rendering\");\n\n/**\n * Symbol for the `setState` method.\n *\n * A component using [ReactiveMixin](ReactiveMixin) can invoke this method to\n * apply changes to the element's current state.\n */\nexport const setState = Symbol(\"setState\");\n\n/**\n * Symbol for the `shadowRoot` property.\n *\n * This property holds a reference to an element's shadow root, like\n * `this.shadowRoot`. This propery exists because `this.shadowRoot` is not\n * available for components with closed shadow roots.\n * [ShadowTemplateMixin](ShadowTemplateMixin) creates open shadow roots by\n * default, but you can opt into creating closed shadow roots; see\n * [shadowRootMode](internal#internal.shadowRootMode).\n */\nexport const shadowRoot = Symbol(\"shadowRoot\");\n\n/**\n * Symbol for the `shadowRootMode` property.\n *\n * If true (the default), then [ShadowTemplateMixin](ShadowTemplateMixin) will\n * create an open shadow root when the component is instantiated. Set this to\n * false if you want to programmatically hide component internals in a closed\n * shadow root.\n */\nexport const shadowRootMode = Symbol(\"shadowRootMode\");\n\n/**\n * Symbol for the element's current state.\n *\n * This is managed by [ReactiveMixin](ReactiveMixin).\n */\nexport const state = Symbol(\"state\");\n\n/**\n * Symbol for the `stateEffects` method.\n *\n * See [stateEffects](ReactiveMixin#stateEffects).\n */\nexport const stateEffects = Symbol(\"stateEffects\");\n\n/**\n * Symbol for the `template` method.\n *\n * [ShadowTemplateMixin](ShadowTemplateMixin) uses this property to obtain a\n * component's template, which it will clone into a component's shadow root.\n */\nexport const template = Symbol(\"template\");\n","import { rendering } from \"./internal.js\";\n\n// Memoized maps of attribute to property names and vice versa.\n// We initialize this with the special case of the tabindex (lowercase \"i\")\n// attribute, which is mapped to the tabIndex (capital \"I\") property.\n/** @type {IndexedObject<string>} */\nconst attributeToPropertyNames = {\n tabindex: \"tabIndex\",\n};\n/** @type {IndexedObject<string>} */\nconst propertyNamesToAttributes = {\n tabIndex: \"tabindex\",\n};\n\n/**\n * Sets properties when the corresponding attributes change\n *\n * If your component exposes a setter for a property, it's generally a good\n * idea to let devs using your component be able to set that property in HTML\n * via an element attribute. You can code that yourself by writing an\n * `attributeChangedCallback`, or you can use this mixin to get a degree of\n * automatic support.\n *\n * This mixin implements an `attributeChangedCallback` that will attempt to\n * convert a change in an element attribute into a call to the corresponding\n * property setter. Attributes typically follow hyphenated names (\"foo-bar\"),\n * whereas properties typically use camelCase names (\"fooBar\"). This mixin\n * respects that convention, automatically mapping the hyphenated attribute\n * name to the corresponding camelCase property name.\n *\n * Example: You define a component using this mixin:\n *\n * class MyElement extends AttributeMarshallingMixin(HTMLElement) {\n * get fooBar() { return this._fooBar; }\n * set fooBar(value) { this._fooBar = value; }\n * }\n *\n * If someone then instantiates your component in HTML:\n *\n * <my-element foo-bar=\"Hello\"></my-element>\n *\n * Then, after the element has been upgraded, the `fooBar` setter will\n * automatically be invoked with the initial value \"Hello\".\n *\n * Attributes can only have string values. If you'd like to convert string\n * attributes to other types (numbers, booleans), you must implement parsing\n * yourself.\n *\n * @module AttributeMarshallingMixin\n * @param {Constructor<CustomElement>} Base\n */\nexport default function AttributeMarshallingMixin(Base) {\n // The class prototype added by the mixin.\n class AttributeMarshalling extends Base {\n /**\n * Handle a change to the attribute with the given name.\n *\n * @ignore\n * @param {string} attributeName\n * @param {string} oldValue\n * @param {string} newValue\n */\n attributeChangedCallback(attributeName, oldValue, newValue) {\n if (super.attributeChangedCallback) {\n super.attributeChangedCallback(attributeName, oldValue, newValue);\n }\n\n // Sometimes this callback is invoked when there's not actually any\n // change, in which we skip invoking the property setter.\n //\n // We also skip setting properties if we're rendering. A component may\n // want to reflect property values to attributes during rendering, but\n // such attribute changes shouldn't trigger property updates.\n if (newValue !== oldValue && !this[rendering]) {\n const propertyName = attributeToPropertyName(attributeName);\n // If the attribute name corresponds to a property name, set the property.\n if (propertyName in this) {\n // Parse standard boolean attributes.\n const parsed = standardBooleanAttributes[attributeName]\n ? booleanAttributeValue(attributeName, newValue)\n : newValue;\n this[propertyName] = parsed;\n }\n }\n }\n\n // Because maintaining the mapping of attributes to properties is tedious,\n // this provides a default implementation for `observedAttributes` that\n // assumes that your component will want to expose all public properties in\n // your component's API as properties.\n //\n // You can override this default implementation of `observedAttributes`. For\n // example, if you have a system that can statically analyze which\n // properties are available to your component, you could hand-author or\n // programmatically generate a definition for `observedAttributes` that\n // avoids the minor run-time performance cost of inspecting the component\n // prototype to determine your component's public properties.\n static get observedAttributes() {\n return attributesForClass(this);\n }\n }\n\n return AttributeMarshalling;\n}\n\n/**\n * Return the custom attributes for the given class.\n *\n * E.g., if the supplied class defines a `fooBar` property, then the resulting\n * array of attribute names will include the \"foo-bar\" attribute.\n *\n * @private\n * @param {Constructor<HTMLElement>} classFn\n * @returns {string[]}\n */\nfunction attributesForClass(classFn) {\n // We treat the HTMLElement base class as if it has no attributes, since we\n // don't want to receive attributeChangedCallback for it (or anything further\n // up the protoype chain).\n if (classFn === HTMLElement) {\n return [];\n }\n\n // Get attributes for parent class.\n const baseClass = Object.getPrototypeOf(classFn.prototype).constructor;\n\n // See if parent class defines observedAttributes manually.\n let baseAttributes = baseClass.observedAttributes;\n if (!baseAttributes) {\n // Calculate parent class attributes ourselves.\n baseAttributes = attributesForClass(baseClass);\n }\n\n // Get the properties for this particular class.\n const propertyNames = Object.getOwnPropertyNames(classFn.prototype);\n const setterNames = propertyNames.filter((propertyName) => {\n const descriptor = Object.getOwnPropertyDescriptor(\n classFn.prototype,\n propertyName\n );\n return descriptor && typeof descriptor.set === \"function\";\n });\n\n // Map the property names to attribute names.\n const attributes = setterNames.map((setterName) =>\n propertyNameToAttribute(setterName)\n );\n\n // Merge the attribute for this class and its base class.\n const diff = attributes.filter(\n (attribute) => baseAttributes.indexOf(attribute) < 0\n );\n const result = baseAttributes.concat(diff);\n\n return result;\n}\n\n/**\n * Convert hyphenated foo-bar attribute name to camel case fooBar property name.\n *\n * @private\n * @param {string} attributeName\n */\nfunction attributeToPropertyName(attributeName) {\n let propertyName = attributeToPropertyNames[attributeName];\n if (!propertyName) {\n // Convert and memoize.\n const hyphenRegEx = /-([a-z])/g;\n propertyName = attributeName.replace(hyphenRegEx, (match) =>\n match[1].toUpperCase()\n );\n attributeToPropertyNames[attributeName] = propertyName;\n }\n return propertyName;\n}\n\n/**\n * Given a string value for a named boolean attribute, return `true` if the\n * value is either: a) the empty string, or b) a case-insensitive match for the\n * name.\n *\n * This is native HTML behavior; see the MDN documentation on [boolean\n * attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes#Boolean_Attributes)\n * for the reasoning.\n *\n * Given a null value, this return `false`.\n * Given a boolean value, this return the value as is.\n *\n * @param {string} name\n * @param {string|boolean|null} value\n */\nexport function booleanAttributeValue(name, value) {\n return typeof value === \"boolean\"\n ? value\n : typeof value === \"string\"\n ? value === \"\" || name.toLowerCase() === value.toLowerCase()\n : false;\n}\n\n/**\n * Convert a camel case fooBar property name to a hyphenated foo-bar attribute.\n *\n * @private\n * @param {string} propertyName\n */\nfunction propertyNameToAttribute(propertyName) {\n let attribute = propertyNamesToAttributes[propertyName];\n if (!attribute) {\n // Convert and memoize.\n const uppercaseRegEx = /([A-Z])/g;\n attribute = propertyName.replace(uppercaseRegEx, \"-$1\").toLowerCase();\n propertyNamesToAttributes[propertyName] = attribute;\n }\n return attribute;\n}\n\n/** @type {IndexedObject<boolean>} */\nexport const standardBooleanAttributes = {\n checked: true,\n defer: true,\n disabled: true,\n hidden: true,\n ismap: true,\n multiple: true,\n noresize: true,\n readonly: true,\n selected: true,\n};\n","import {\n defaultState,\n firstRender,\n raiseChangeEvents,\n render,\n renderChanges,\n rendered,\n rendering,\n setState,\n state,\n stateEffects,\n} from \"./internal.js\";\n\n/** @type {any} */\nconst stateKey = Symbol(\"state\");\n/** @type {any} */\nconst raiseChangeEventsInNextRenderKey = Symbol(\n \"raiseChangeEventsInNextRender\"\n);\n// Tracks total set of changes made to elements since their last render.\n/** @type {any} */\nconst changedSinceLastRenderKey = Symbol(\"changedSinceLastRender\");\n\n/**\n * Manages component state and renders changes in state\n *\n * This is modeled after React/Preact's state management, and is adapted for\n * use with web components. Applying this mixin to a component will give it\n * FRP behavior comparable to React's.\n *\n * This model is very basic. It's key aspects are:\n * * an immutable `state` property updated via `setState` calls.\n * * a `render` method that will be invoked asynchronously when state changes.\n *\n * @module ReactiveMixin\n * @param {Constructor<CustomElement>} Base\n */\nexport default function ReactiveMixin(Base) {\n class Reactive extends Base {\n constructor() {\n super();\n\n // Components can inspect `firstRender` during rendering to do special\n // work the first time (like wire up event handlers). Until the first\n // render actually happens, we set that flag to be undefined so we have a\n // way of distinguishing between a component that has never rendered and\n // one that is being rendered for the nth time.\n this[firstRender] = undefined;\n\n // We want to support the standard HTML pattern of only raising events in\n // response to direct user interactions. For a detailed discussion of this\n // point, see the Gold Standard checklist item for [Propery Change\n // Events](https://github.com/webcomponents/gold-standard/wiki/Property%20Change%20Events).\n //\n // To support this pattern, we define a flag indicating whether change\n // events should be raised. By default, we want the flag to be false. In\n // UI event handlers, a component can temporarily set the flag to true. If\n // a setState call is made while the flag is true, then that fact will be\n // remembered and passed the subsequent render/rendered methods. That will\n // let the methods know whether they should raise property change events.\n this[raiseChangeEvents] = false;\n\n // Maintain a change log of all fields which have changed since the\n // component was last rendered.\n this[changedSinceLastRenderKey] = null;\n\n // Set the initial state from the default state defined by the component\n // and its mixins/base classes.\n this[setState](this[defaultState]);\n }\n\n // When the component is attached to the document (or upgraded), we will\n // generally render the component for the first time. That operation will\n // include rendering of the default state and any state changes that\n // happened between constructor time and this connectedCallback.\n connectedCallback() {\n if (super.connectedCallback) {\n super.connectedCallback();\n }\n\n // Render the component.\n //\n // If the component was forced to render before this point, and the state\n // hasn't changed, this call will be a no-op.\n this[renderChanges]();\n }\n\n /**\n * The default state for the component. This can be extended by mixins and\n * classes to provide additional default state.\n *\n * @type {PlainObject}\n */\n // @ts-ignore\n get [defaultState]() {\n // Defer to base implementation if defined.\n return super[defaultState] || {};\n }\n\n /**\n * Render the indicated changes in state to the DOM.\n *\n * The default implementation of this method does nothing. Override this\n * method in your component to update your component's host element and\n * any shadow elements to reflect the component's new state. See the\n * [rendering example](ReactiveMixin#rendering).\n *\n * Be sure to call `super` in your method implementation so that your\n * component's base classes and mixins have a chance to perform their own\n * render work.\n *\n * @param {ChangedFlags} changed - dictionary of flags indicating which state\n * members have changed since the last render\n */\n [render](changed) {\n if (super[render]) {\n super[render](changed);\n }\n }\n\n /**\n * Render any pending component changes to the DOM.\n *\n * This method does nothing if the state has not changed since the last\n * render call.\n *\n * ReactiveMixin will invoke this method following a `setState` call;\n * you should not need to invoke this method yourself.\n *\n * This method invokes the internal `render` method, then invokes the\n * `rendered` method.\n */\n [renderChanges]() {\n if (this[firstRender] === undefined) {\n // First render.\n this[firstRender] = true;\n }\n\n // Get the log of which fields have changed since the last render.\n const changed = this[changedSinceLastRenderKey];\n\n // We only render if this is the first render, or state has changed since\n // the last render.\n if (this[firstRender] || changed) {\n // If at least one of the[setState] calls was made in response\n // to user interaction or some other component-internal event, set the\n // raiseChangeEvents flag so that render/rendered methods know whether\n // to raise property change events. See the comments in the component\n // constructor where we initialize this flag for details.\n const saveRaiseChangeEvents = this[raiseChangeEvents];\n this[raiseChangeEvents] = this[raiseChangeEventsInNextRenderKey];\n\n // From this point on, we'll assume we won't need to raise events in the\n // next render. If raiseChangeEvents is true right now, however, and the\n // rendered method calls setState, then this flag will be set to true\n // for the next render. That's apporopriate because the second-order\n // setState call in rendered still counts as a user-initiated effect\n // that should raise change events.\n this[raiseChangeEventsInNextRenderKey] = false;\n\n // We set a flag to indicate that rendering is happening. The component\n // may use this to avoid triggering other updates during the render.\n this[rendering] = true;\n\n // Invoke any internal render implementations.\n this[render](changed);\n\n this[rendering] = false;\n\n // Since we've now rendered all changes, clear the change log. If other\n // async render calls are queued up behind this call, they'll see an\n // empty change log, and so skip unnecessary render work.\n this[changedSinceLastRenderKey] = null;\n\n // Let the component know it was rendered.\n this[rendered](changed);\n\n // We've now rendered for the first time.\n this[firstRender] = false;\n\n // Restore state of event flag.\n this[raiseChangeEvents] = saveRaiseChangeEvents;\n }\n }\n\n /**\n * Perform any work that must happen after state changes have been rendered\n * to the DOM.\n *\n * The default implementation of this method does nothing. Override this\n * method in your component to perform work that requires the component to\n * be fully rendered, such as setting focus on a shadow element or\n * inspecting the computed style of an element. If such work should result\n * in a change in component state, you can safely call `setState` during the\n * `rendered` method.\n *\n * Be sure to call `super` in your method implementation so that your\n * component's base classes and mixins have a chance to perform their own\n * post-render work.\n *\n * @param {ChangedFlags} changed\n */\n [rendered](changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n }\n\n /**\n * Update the component's state by merging the specified changes on\n * top of the existing state. If the component is connected to the document,\n * and the new state has changed, this returns a promise to asynchronously\n * render the component. Otherwise, this returns a resolved promise.\n *\n * @param {PlainObject} changes - the changes to apply to the element's state\n * @returns {Promise} - resolves when the new state has been rendered\n */\n async [setState](changes) {\n // There's no good reason to have a render method update state.\n if (this[rendering]) {\n /* eslint-disable no-console */\n console.warn(\n `${this.constructor.name} called [setState] during rendering, which you should avoid.\\nSee https://elix.org/documentation/ReactiveMixin.`\n );\n }\n\n // Apply the changes to a copy of the component's current state to produce\n // a new, updated state and a dictionary of flags indicating which fields\n // actually changed.\n const { state, changed } = copyStateWithChanges(this, changes);\n\n // We only need to apply the changes to the component state if: a) the\n // current state is undefined (this is the first time setState has been\n // called), or b) the supplied changes parameter actually contains\n // substantive changes.\n if (this[stateKey] && Object.keys(changed).length === 0) {\n // No need to update state.\n return;\n }\n\n // Freeze the new state so it's immutable. This prevents accidental\n // attempts to set state without going through setState.\n Object.freeze(state);\n\n // Set this as the component's new state.\n this[stateKey] = state;\n\n // If setState was called with the raiseChangeEvents flag set, record that\n // fact for use in rendering. See the comments in the component\n // constructor for details.\n if (this[raiseChangeEvents]) {\n this[raiseChangeEventsInNextRenderKey] = true;\n }\n\n // Look to see whether the component is already set up to render.\n const willRender =\n this[firstRender] === undefined ||\n this[changedSinceLastRenderKey] !== null;\n\n // Add this round of changed fields to the complete log of fields that\n // have changed since the component was last rendered.\n this[changedSinceLastRenderKey] = Object.assign(\n this[changedSinceLastRenderKey] || {},\n changed\n );\n\n // We only need to queue a render if we're in the document and a render\n // operation hasn't already been queued for this component. If we're not\n // in the document yet, when the component is eventually added to the\n // document, the connectedCallback will ensure we render at that point.\n const needsRender = this.isConnected && !willRender;\n if (needsRender) {\n // Yield with promise timing. This lets any *synchronous* setState calls\n // that happen after this current setState call complete first. Their\n // effects on the state will be batched up, and accumulate in the change\n // log stored under this[changedSinceLastRenderKey].\n await Promise.resolve();\n\n // Now that the above promise has resolved, render the component. By the\n // time this line is reached, the complete log of batched changes can be\n // applied in a single render call.\n this[renderChanges]();\n }\n }\n\n /**\n * The component's current state.\n *\n * The returned state object is immutable. To update it, invoke\n * `internal.setState`.\n *\n * It's extremely useful to be able to inspect component state while\n * debugging. If you append `?elixdebug=true` to a page's URL, then\n * ReactiveMixin will conditionally expose a public `state` property that\n * returns the component's state. You can then access the state in your\n * browser's debug console.\n *\n * @type {PlainObject}\n */\n get [state]() {\n return this[stateKey];\n }\n\n /**\n * Ask the component whether a state with a set of recently-changed fields\n * implies that additional second-order changes should be applied to that\n * state to make it consistent.\n *\n * This method is invoked during a call to `internal.setState` to give all\n * of a component's mixins and classes a chance to respond to changes in\n * state. If one mixin/class updates state that it controls, another\n * mixin/class may want to respond by updating some other state member that\n * *it* controls.\n *\n * This method should return a dictionary of changes that should be applied\n * to the state. If the dictionary object is not empty, the\n * `internal.setState` method will apply the changes to the state, and\n * invoke this `stateEffects` method again to determine whether there are\n * any third-order effects that should be applied. This process repeats\n * until all mixins/classes report that they have no additional changes to\n * make.\n *\n * See an example of how `ReactiveMixin` invokes the `stateEffects` to\n * [ensure state consistency](ReactiveMixin#ensuring-state-consistency).\n *\n * @param {PlainObject} state - a proposal for a new state\n * @param {ChangedFlags} changed - the set of fields changed in this\n * latest proposal for the new state\n * @returns {PlainObject}\n */\n [stateEffects](state, changed) {\n return super[stateEffects] ? super[stateEffects](state, changed) : {};\n }\n }\n\n // Expose state when debugging; see note for `[state]` getter.\n const elixdebug = new URLSearchParams(location.search).get(\"elixdebug\");\n if (elixdebug === \"true\") {\n Object.defineProperty(Reactive.prototype, \"state\", {\n get() {\n return this[state];\n },\n });\n }\n\n return Reactive;\n}\n\n/**\n * Create a copy of the component's state with the indicated changes applied.\n * Ask the component whether the new state implies any second-order effects. If\n * so, apply those and loop again until the state has stabilized. Return the new\n * state and a dictionary of flags indicating which fields were actually\n * changed.\n *\n * @private\n * @param {Element} element\n * @param {PlainObject} changes\n */\nexport function copyStateWithChanges(element, changes) {\n // Start with a copy of the current state.\n /** @type {PlainObject} */\n const state = Object.assign({}, element[stateKey]);\n /** @type {ChangedFlags} */\n const changed = {};\n // Take the supplied changes as the first round of effects.\n let effects = changes;\n // Loop until there are no effects to apply.\n /* eslint-disable no-constant-condition */\n while (true) {\n // See whether the effects actually changed anything in state.\n const changedByEffects = fieldsChanged(state, effects);\n if (Object.keys(changedByEffects).length === 0) {\n // No more effects to apply; we're done.\n break;\n }\n // Apply the effects.\n Object.assign(state, effects);\n Object.assign(changed, changedByEffects);\n // Ask the component if there are any second- (or third-, etc.) order\n // effects that should be applied.\n effects = element[stateEffects](state, changedByEffects);\n }\n return { state, changed };\n}\n\n/**\n * Return true if the two values are equal.\n *\n * @private\n * @param {any} value1\n * @param {any} value2\n * @returns {boolean}\n */\nfunction equal(value1, value2) {\n if (value1 instanceof Date && value2 instanceof Date) {\n return value1.getTime() === value2.getTime();\n }\n return value1 === value2;\n}\n\n/**\n * Return a dictionary of flags indicating which of the indicated changes to the\n * state are actually substantive changes.\n *\n * @private\n * @param {PlainObject} state\n * @param {PlainObject} changes\n */\nfunction fieldsChanged(state, changes) {\n /** @type {ChangedFlags} */\n const changed = {};\n for (const field in changes) {\n if (!equal(changes[field], state[field])) {\n changed[field] = true;\n }\n }\n return changed;\n}\n","import {\n delegatesFocus,\n hasDynamicTemplate,\n ids,\n render,\n shadowRoot,\n shadowRootMode,\n template,\n} from \"./internal.js\";\n\n// A cache of processed templates, indexed by element class.\nconst classTemplateMap = new Map();\n\n// A Proxy that maps shadow element IDs to shadow elements.\n// This will be return as the element's `this[ids]` property;\n// see comments in that property below.\n/** @type {any} */\nconst shadowIdProxyKey = Symbol(\"shadowIdProxy\");\n\n// A reference stored on the shadow element proxy target to get to the actual\n// element. We use a Symbol here instead of a string name to avoid naming\n// conflicts with the element's internal shadow element IDs.\nconst proxyElementKey = Symbol(\"proxyElement\");\n\n// A handler used for the shadow element ID proxy.\nconst shadowIdProxyHandler = {\n get(target, id) {\n // From this proxy, obtain a reference to the original component.\n const element = target[proxyElementKey];\n\n // Get a reference to the component's open or closed shadow root.\n const root = element[shadowRoot];\n\n // Look for a shadow element with the indicated ID.\n return root && typeof id === \"string\" ? root.getElementById(id) : null;\n },\n};\n\n/**\n * Stamps a template into a component's Shadow DOM when instantiated\n *\n * To use this mixin, define a `template` method that returns a string or HTML\n * `<template>` element:\n *\n * import { createElement, replace, transmute } from 'elix/src/template.js';\n *\n * class MyElement extends ShadowTemplateMixin(HTMLElement) {\n * get [template]() {\n * return templateFrom.html`Hello, <em>world</em>.`;\n * }\n * }\n *\n * When your component class is instantiated, a shadow root will be created on\n * the instance, and the contents of the template will be cloned into the\n * shadow root. If your component does not define a `template` method, this\n * mixin has no effect.\n *\n * This adds a member on the component called `this[ids]` that can be used to\n * reference shadow elements with IDs. E.g., if component's shadow contains an\n * element `<button id=\"foo\">`, then this mixin will create a member\n * `this[ids].foo` that points to that button.\n *\n * @module ShadowTemplateMixin\n * @param {Constructor<HTMLElement>} Base\n */\nexport default function ShadowTemplateMixin(Base) {\n // The class prototype added by the mixin.\n class ShadowTemplate extends Base {\n /**\n * A convenient shortcut for looking up an element by ID in the component's\n * Shadow DOM subtree.\n *\n * Example: if component's template contains a shadow element `<button\n * id=\"foo\">`, you can use the reference `this[ids].foo` to obtain\n * the corresponding button in the component instance's shadow tree. The\n * `ids` property is simply a shorthand for `getElementById`, so\n * `this[ids].foo` is the same as\n * `this[shadowRoot].getElementById('foo')`.\n *\n * @type {object} - a dictionary mapping shadow element IDs to elements\n */\n get [ids]() {\n if (!this[shadowIdProxyKey]) {\n // Construct a proxy that maps to getElementById.\n const target = {\n // Give the proxy a means of refering to this element via the target.\n [proxyElementKey]: this,\n };\n this[shadowIdProxyKey] = new Proxy(target, shadowIdProxyHandler);\n }\n return this[shadowIdProxyKey];\n }\n\n /*\n * If the component defines a template, a shadow root will be created on the\n * component instance, and the template stamped into it.\n */\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n // We populate the shadow root if the component doesn't have a shadow;\n // i.e., the first time the component is rendered. For this check, we use\n // an internal reference we maintain for the shadow root; see below.\n if (this[shadowRoot] === undefined) {\n // If this type of element defines a template, prepare it for use.\n const template = getTemplate(this);\n\n if (template) {\n // Stamp the template into a new shadow root.\n const root = this.attachShadow({\n delegatesFocus: this[delegatesFocus],\n mode: this[shadowRootMode],\n });\n const clone = document.importNode(template.content, true);\n root.append(clone);\n\n // After this call, we won't be able to rely on being able to access\n // the shadow root via `this.shadowRoot`, because the component may\n // have asked for a closed shadow root. We save a reference to the\n // shadow root now so that the component always has a consistent means\n // to reference its own shadow root.\n this[shadowRoot] = root;\n } else {\n // No template. Set shadow root to null (instead of undefined) so we\n // won't try to render shadow on next render.\n // @ts-ignore Not sure why/how TS has type info on this[shadowRoot].\n this[shadowRoot] = null;\n }\n }\n }\n\n /**\n * @type {ShadowRootMode}\n * @default \"open\"\n */\n get [shadowRootMode]() {\n return \"open\";\n }\n }\n\n return ShadowTemplate;\n}\n\n/**\n * Return the template for the element being instantiated.\n *\n * If this is the first time we're creating this type of element, or the\n * component has indicated that its template is dynamic (and should be retrieved\n * each time), ask the component class for the template and cache the result.\n * Otherwise, immediately return the cached template.\n *\n * @private\n * @param {HTMLElement} element\n * @returns {HTMLTemplateElement}\n */\nfunction getTemplate(element) {\n let t = element[hasDynamicTemplate]\n ? undefined // Always retrieve template\n : classTemplateMap.get(element.constructor); // See if we've cached it\n if (t === undefined) {\n // Ask the component for its template.\n t = element[template];\n // A component using this mixin isn't required to supply a template --\n // if they don't, they simply won't end up with a shadow root.\n if (t) {\n // But if the component does supply a template, it needs to be an\n // HTMLTemplateElement instance.\n if (!(t instanceof HTMLTemplateElement)) {\n throw `Warning: the [template] property for ${element.constructor.name} must return an HTMLTemplateElement.`;\n }\n }\n if (!element[hasDynamicTemplate]) {\n // Store prepared template for next creation of same type of element.\n // If the component didn't define a template, store null so that we skip\n // the template retrieval next time.\n classTemplateMap.set(element.constructor, t || null);\n }\n }\n return t;\n}\n","import AttributeMarshallingMixin from \"./AttributeMarshallingMixin.js\";\nimport ReactiveMixin from \"./ReactiveMixin.js\";\nimport ShadowTemplateMixin from \"./ShadowTemplateMixin.js\";\n\n/**\n * General-purpose base for writing components in functional-reactive style\n *\n * This base class lets you create web components in a functional-reactive\n * programming (FRP) style. It simply bundles a small set of mixins:\n *\n * const ReactiveElement =\n * AttributeMarshallingMixin(\n * ReactiveMixin(\n * ShadowTemplateMixin(\n * HTMLElement\n * )))));\n *\n * `ReactiveElement` is provided as a convenience. You can achieve the same\n * result by applying the mixins yourself to `HTMLElement`.\n *\n * @inherits HTMLElement\n * @mixes AttributeMarshallingMixin\n * @mixes ReactiveMixin\n * @mixes ShadowTemplateMixin\n */\nconst ReactiveElement = AttributeMarshallingMixin(\n ReactiveMixin(ShadowTemplateMixin(HTMLElement))\n);\n\nexport default ReactiveElement;\n","/**\n * Collection of shared Symbol objects for internal component communication.\n *\n * The shared `Symbol` objects in this module let mixins and a component\n * internally communicate without exposing these internal properties and methods\n * in the component's public API. They also help avoid unintentional name\n * collisions, as a component developer must specifically import the `internal`\n * module and reference one of its symbols.\n *\n * To use these `Symbol` objects in your own component, include this module and\n * then create a property or method whose key is the desired Symbol. E.g.,\n * [ShadowTemplateMixin](ShadowTemplateMixin) expects a component to define\n * a property called [template](#template):\n *\n * import { template } from 'elix/src/core/internal.js';\n * import { templateFrom } from 'elix/src/core/htmlLiterals.js'\n * import ShadowTemplateMixin from 'elix/src/core/ShadowTemplateMixin.js';\n *\n * class MyElement extends ShadowTemplateMixin(HTMLElement) {\n * [template]() {\n * return templateFrom.html`Hello, <em>world</em>.`;\n * }\n * }\n *\n * The above use of the internal `template` member lets the mixin find the\n * component's template in a way that will not pollute the component's public\n * API or interfere with other component logic. For example, if for some reason\n * the component wants to define a separate property with the plain string name,\n * \"template\", it can do so without affecting the above property setter.\n *\n * @module internal\n */\n\nimport * as coreInternal from \"../core/internal.js\";\n\n/**\n * Symbol for the `applyElementData` method.\n *\n * Components that want to be able to apply data from one element to another\n * can support this method. E.g., [DropdownList](DropdownList) uses this to\n * apply data from the selected item to the component's value part.\n */\nexport const applyElementData = Symbol(\"applyElementData\");\n\n/**\n * Symbol for the `checkSize` method.\n *\n * If defined, this method will be invoked by [ResizeMixin](ResizeMixin)\n * when an element's size may have changed. The default implementation of\n * this method compares the element's current `clientHeight` and `clientWidth`\n * properties against the last known values of those properties (saved in\n * `state.clienHeight` and `state.clientWidth`).\n *\n * Components should override this method if they contain elements that may need\n * to know about size changes as well. For example, when an [Overlay](Overlay)\n * mixin opens, it invokes this method on any content elements that define it.\n * This gives the contents a chance to resize in response to being displayed.\n */\nexport const checkSize = Symbol(\"checkSize\");\n\n/**\n * Symbol for the `closestAvailableItemIndex` method.\n *\n * This method is defined by [ItemsCursorMixin](ItemsCursorMixin). You can call\n * this if you want to find an item at a particular location, but may need to\n * account for the fact that the item at that position is not available, and\n * would like to find the closest item that is available.\n */\nexport const closestAvailableItemIndex = Symbol(\"closestAvailableItemIndex\");\n\n/**\n * Symbol for the `contentSlot` property.\n *\n * [SlotContentMixin](SlotContentMixin) uses this to identify which slot\n * element in the component's shadow tree that holds the component's content.\n * By default, this is the first slot element with no \"name\" attribute. You\n * can override this to return a different slot.\n */\nexport const contentSlot = Symbol(\"contentSlot\");\n\n/**\n * The default state for this element.\n */\nexport const defaultState = coreInternal.defaultState;\n\n/**\n * Symbol for the `defaultTabIndex` property.\n *\n * [KeyboardMixin](KeyboardMixin) uses this if it is unable to successfully\n * parse a string tabindex attribute.\n */\nexport const defaultTabIndex = Symbol(\"defaultTabIndex\");\n\n/**\n * Symbol for the `delegatesFocus` property.\n *\n * [DelegatesFocusMixin](DelegatesFocusMixin) defines this property, returning\n * true to indicate that the focus is being delegated, even in browsers that\n * don't support that natively. Mixins like [KeyboardMixin](KeyboardMixin) use\n * this to accommodate focus delegation.\n */\nexport const delegatesFocus = coreInternal.delegatesFocus;\n\n/**\n * Symbol for the `effectEndTarget` property.\n *\n * [TransitionEffectMixin](TransitionEffectMixin) inspects this property to\n * determine which element's `transitionend` event will signal the end of a\n * transition effect.\n */\nexport const effectEndTarget = Symbol(\"effectEndTarget\");\n\n/**\n * Symbol for the `firstRender` property.\n *\n * [ReactiveMixin](ReactiveMixin) sets the property to `true` during the\n * element's first `connectedCallback`, then `false` in subsequent callbacks.\n *\n * You can inspect this property in your own `connectedCallback` handler\n * to do work like wiring up events that should only happen once.\n */\nexport const firstRender = coreInternal.firstRender;\n\n/**\n * Symbol for the `focusTarget` property.\n *\n * [DelegatesFocusMixin](DelegatesFocusMixin) defines this property as either:\n * 1) the element itself, in browsers that support native focus delegation or,\n * 2) the shadow root's first focusable element.\n */\nexport const focusTarget = coreInternal.focusTarget;\n\n/**\n * Symbol for the `getItemText` method.\n *\n * This method can be applied to an item to return its text.\n * [KeyboardPrefixCursorMixin](KeyboardPrefixCursorMixin) uses this to\n * obtain the text for each item in a list, then matches keypresses again that\n * text.\n *\n * This method takes a single parameter: the `HTMLElement` of the item from\n * which text should be extracted.\n */\nexport const getItemText = Symbol(\"getItemText\");\n\n/**\n * Symbol for the `goDown` method.\n *\n * This method is invoked when the user wants to go/navigate down.\n */\nexport const goDown = Symbol(\"goDown\");\n\n/**\n * Symbol for the `goEnd` method.\n *\n * This method is invoked when the user wants to go/navigate to the end (e.g.,\n * of a list).\n */\nexport const goEnd = Symbol(\"goEnd\");\n\n/**\n * Symbol for the `goFirst` method.\n *\n * This method is invoked when the user wants to go to the first item in a list.\n */\nexport const goFirst = Symbol(\"goFirst\");\n\n/**\n * Symbol for the `goLast` method.\n *\n * This method is invoked when the user wants to go to the last item in a list.\n */\nexport const goLast = Symbol(\"goLast\");\n\n/**\n * Symbol for the `goLeft` method.\n *\n * This method is invoked when the user wants to go/navigate left. Mixins that\n * make use of this method include\n * [KeyboardDirectionMixin](KeyboardDirectionMixin) and\n * [SwipeDirectionMixin](SwipeDirectionMixin).\n */\nexport const goLeft = Symbol(\"goLeft\");\n\n/**\n * Symbol for the `goNext` method.\n *\n * This method is invoked when the user wants to go/navigate to the next item.\n */\nexport const goNext = Symbol(\"goNext\");\n\n/**\n * Symbol for the `goPrevious` method.\n *\n * This method is invoked when the user wants to go/navigate to the previous item.\n */\nexport const goPrevious = Symbol(\"goPrevious\");\n\n/**\n * Symbol for the `goRight` method.\n *\n * This method is invoked when the user wants to go/navigate right. Mixins\n * that make use of this method include\n * [KeyboardDirectionMixin](KeyboardDirectionMixin) and\n * [SwipeDirectionMixin](SwipeDirectionMixin).\n */\nexport const goRight = Symbol(\"goRight\");\n\n/**\n * Symbol for the `goStart` method.\n *\n * This method is invoked when the user wants to go/navigate to the start\n * (e.g., of a list).\n */\nexport const goStart = Symbol(\"goStart\");\n\n/**\n * Symbol for the `goToItemWithPrefix` method.\n *\n * This method is invoked by\n * [KeyboardPrefixCursorMixin](KeyboardPrefixCursorMixin) when the user types\n * text characters.\n */\nexport const goToItemWithPrefix = Symbol(\"goToItemWithPrefix\");\n\n/**\n * Symbol for the `goUp` method.\n *\n * This method is invoked when the user wants to go/navigate up.\n */\nexport const goUp = Symbol(\"goUp\");\n\n/**\n * Symbol for the `hasDynamicTemplate` property.\n *\n * If your component class does not always use the same template, define a\n * static class property getter with this symbol and have it return `true`.\n * This will disable template caching for your component.\n */\nexport const hasDynamicTemplate = coreInternal.hasDynamicTemplate;\n\n/**\n * Symbol for the `ids` property.\n *\n * [ShadowTemplateMixin](ShadowTemplateMixin) defines a shorthand function\n * `internal.ids` that can be used to obtain a reference to a shadow element with\n * a given ID.\n *\n * Example: if component's template contains a shadow element\n * `<button id=\"foo\">`, you can use the reference `this[ids].foo` to obtain\n * the corresponding button in the component instance's shadow tree.\n * The `ids` function is simply a shorthand for `getElementById`, so\n * `this[ids].foo` is the same as `this.shadowRoot.getElementById('foo')`.\n */\nexport const ids = coreInternal.ids;\n\n/**\n * Symbol for the `inputDelegate` property.\n *\n * [DelegateInputSelectionMixin](DelegateInputSelectionMixin) uses this property\n * to indicate which shadow element is the input-type element to which text\n * selection methods and properties should be delegated.\n */\nexport const inputDelegate = Symbol(\"inputDelegate\");\n\n/**\n * Symbol for the `itemsDelegate` property.\n *\n * A component using [DelegateItemsMixin](DelegateItemsMixin) uses this property\n * to indicate which one of its shadow elements is the one whose `items`\n * property will be treated as the component's own `items`.\n */\nexport const itemsDelegate = Symbol(\"itemsDelegate\");\n\n/**\n * Symbol for the `keydown` method.\n *\n * This method is invoked when an element receives a `keydown` event.\n *\n * An implementation of `internal.keydown` should return `true` if it handled\n * the event, and `false` otherwise. If `true` is returned (the event was\n * handled), `KeyboardMixin` invokes the event's `preventDefault` and\n * `stopPropagation` methods to let the browser know the event was handled.\n *\n * The convention for handling `internal.keydown` is that the last mixin\n * applied wins. That is, if an implementation of `internal.keydown` *did*\n * handle the event, it can return immediately. If it did not, it should\n * invoke `super` to let implementations further up the prototype chain have\n * their chance.\n *\n * This method takes a `KeyboardEvent` parameter that contains the event being\n * processed.\n */\nexport const keydown = Symbol(\"keydown\");\n\n/**\n * Symbol for the `matchText` method.\n *\n * [AutoCompleteInput](AutoCompleteInput) invokes this method when trying\n * to find a match for a given input string against its set of texts.\n */\nexport const matchText = Symbol(\"matchText\");\n\n/**\n * Symbol for the `mouseenter` method.\n *\n * [HoverMixin](HoverMixin) invokes this method when the user moves the\n * mouse over a component. That mixin provides a base implementation of this\n * method, but you can extend it to do additional work on `mouseenter`.\n *\n * This method takes a `MouseEvent` parameter that contains the event being\n * processed.\n */\nexport const mouseenter = Symbol(\"mouseenter\");\n\n/**\n * Symbol for the `mouseleave` method.\n *\n * [HoverMixin](HoverMixin) invokes this method when the user moves off a\n * component. That mixin provides a base implementation of this method, but\n * you can extend it to do additional work on `mouseleave`.\n *\n * This method takes a `MouseEvent` parameter that contains the event being\n * processed.\n */\nexport const mouseleave = Symbol(\"mouseleave\");\n\n/**\n * Symbol for access to native HTML element internals.\n */\nexport const nativeInternals = coreInternal.nativeInternals;\n\n/**\n * Symbol for the `raiseChangeEvents` property.\n *\n * This property is used by mixins to determine whether they should raise\n * property change events. The standard HTML pattern is to only raise such\n * events in response to direct user interactions. For a detailed discussion\n * of this point, see the Gold Standard checklist item for\n * [Propery Change Events](https://github.com/webcomponents/gold-standard/wiki/Property%20Change%20Events).\n *\n * The above article describes a pattern for using a flag to track whether\n * work is being performed in response to internal component activity, and\n * whether the component should therefore raise property change events.\n * This `raiseChangeEvents` symbol is a shared flag used for that purpose by\n * all Elix mixins and components. Sharing this flag ensures that internal\n * activity (e.g., a UI event listener) in one mixin can signal other mixins\n * handling affected properties to raise change events.\n *\n * All UI event listeners (and other forms of internal handlers, such as\n * timeouts and async network handlers) should set `raiseChangeEvents` to\n * `true` at the start of the event handler, then `false` at the end:\n *\n * this.addEventListener('click', event => {\n * this[raiseChangeEvents] = true;\n * // Do work here, possibly setting properties, like:\n * this.foo = 'Hello';\n * this[raiseChangeEvents] = false;\n * });\n *\n * Elsewhere, property setters that raise change events should only do so it\n * this property is `true`:\n *\n * set foo(value) {\n * // Save foo value here, do any other work.\n * if (this[raiseChangeEvents]) {\n * export const event = new CustomEvent('foochange');\n * this.dispatchEvent(event);\n * }\n * }\n *\n * In this way, programmatic attempts to set the `foo` property will not trigger\n * the `foochange` event, but UI interactions that update that property will\n * cause those events to be raised.\n */\nexport const raiseChangeEvents = coreInternal.raiseChangeEvents;\n\n/**\n * Symbol for the `render` method.\n *\n * [ReactiveMixin](ReactiveMixin) invokes this `internal.render` method to give\n * the component a chance to render recent changes in component state.\n */\nexport const render = coreInternal.render;\n\n/**\n * Symbol for the `renderChanges` method.\n *\n * [ReactiveMixin](ReactiveMixin) invokes this method in response to a\n * `setState` call; you should generally not invoke this method yourself.\n */\nexport const renderChanges = coreInternal.renderChanges;\n\n/**\n * Symbol for the `renderDataToElement` method.\n *\n * [DataItemsMixin](DataItemsMixin) invokes this method to render data to an\n * element being used as an item in a list.\n */\nexport const renderDataToElement = Symbol(\"renderDataToElement\");\n\n/**\n * Symbol for the `rendered` method.\n *\n * [ReactiveMixin](ReactiveMixin) will invoke this method after your\n * element has completely finished rendering.\n */\nexport const rendered = coreInternal.rendered;\n\n/**\n * Symbol for the `rendering` property.\n *\n * [ReactiveMixin](ReactiveMixin) sets this property to true during rendering,\n * at other times it will be false.\n */\nexport const rendering = coreInternal.rendering;\n\n/**\n * Symbol for the `scrollTarget` property.\n *\n * This property indicates which element in a component's shadow subtree\n * should be scrolled. [CursorInViewMixin](CursorInViewMixin) can use\n * this property to determine which element should be scrolled to keep the\n * selected item in view.\n */\nexport const scrollTarget = Symbol(\"scrollTarget\");\n\n/**\n * Symbol for the `setState` method.\n *\n * A component using [ReactiveMixin](ReactiveMixin) can invoke this method to\n * apply changes to the element's current state.\n */\nexport const setState = coreInternal.setState;\n\n/**\n * Symbol for the `shadowRoot` property.\n *\n * This property holds a reference to an element's shadow root, like\n * `this.shadowRoot`. This propery exists because `this.shadowRoot` is not\n * available for components with closed shadow roots.\n * [ShadowTemplateMixin](ShadowTemplateMixin) creates open shadow roots by\n * default, but you can opt into creating closed shadow roots; see\n * [shadowRootMode](internal#internal.shadowRootMode).\n */\nexport const shadowRoot = coreInternal.shadowRoot;\n\n/**\n * Symbol for the `shadowRootMode` property.\n *\n * If true (the default), then [ShadowTemplateMixin](ShadowTemplateMixin) will\n * create an open shadow root when the component is instantiated. Set this to\n * false if you want to programmatically hide component internals in a closed\n * shadow root.\n */\nexport const shadowRootMode = coreInternal.shadowRootMode;\n\n/**\n * Symbol for the `startEffect` method.\n *\n * A component using [TransitionEffectMixin](TransitionEffectMixin) can invoke\n * this method to trigger the application of a named, asynchronous CSS\n * transition effect.\n *\n * This method takes a single `string` parameter giving the name of the effect\n * to start.\n */\nexport const startEffect = Symbol(\"startEffect\");\n\n/**\n * The element's current state.\n *\n * This is managed by [ReactiveMixin](ReactiveMixin).\n */\nexport const state = coreInternal.state;\n\nexport const stateEffects = coreInternal.stateEffects;\n\n/**\n * Symbol for the `swipeDown` method.\n *\n * The swipe mixin [TouchSwipeMixin](TouchSwipeMixin) invokes this method when\n * the user finishes a gesture to swipe down.\n */\nexport const swipeDown = Symbol(\"swipeDown\");\n\n/**\n * Symbol for the `swipeDownComplete` method.\n *\n * [SwipeCommandsMixin](SwipeCommandsMixin) invokes this method after any\n * animated transition associated with a swipe down has completed.\n */\nexport const swipeDownComplete = Symbol(\"swipeDownComplete\");\n\n/**\n * Symbol for the `swipeLeft` method.\n *\n * The swipe mixins [TouchSwipeMixin](TouchSwipeMixin) and\n * [TrackpadSwipeMixin](TrackpadSwipeMixin) invoke this method when the user\n * finishes a gesture to swipe left.\n */\nexport const swipeLeft = Symbol(\"swipeLeft\");\n\n/**\n * Symbol for the `swipeLeftTransitionEnd` method.\n *\n * [SwipeCommandsMixin](SwipeCommandsMixin) invokes this method after any\n * animated transition associated with a swipe left has completed.\n */\nexport const swipeLeftTransitionEnd = Symbol(\"swipeLeftTransitionEnd\");\n\n/**\n * Symbol for the `swipeRight` method.\n *\n * The swipe mixins [TouchSwipeMixin](TouchSwipeMixin) and\n * [TrackpadSwipeMixin](TrackpadSwipeMixin) invoke this method when the user\n * finishes a gesture to swipe right.\n */\nexport const swipeRight = Symbol(\"swipeRight\");\n\n/**\n * Symbol for the `swipeRightTransitionEnd` method.\n *\n * [SwipeCommandsMixin](SwipeCommandsMixin) invokes this method after any\n * animated transition associated with a swipe right has completed.\n */\nexport const swipeRightTransitionEnd = Symbol(\"swipeRightTransitionEnd\");\n\n/**\n * Symbol for the `swipeUp` method.\n *\n * The swipe mixin [TouchSwipeMixin](TouchSwipeMixin) invokes this method when\n * the user finishes a gesture to swipe up.\n */\nexport const swipeUp = Symbol(\"swipeUp\");\n\n/**\n * Symbol for the `swipeUpComplete` method.\n *\n * [SwipeCommandsMixin](SwipeCommandsMixin) invokes this method after any\n * animated transition associated with a swipe up has completed.\n */\nexport const swipeUpComplete = Symbol(\"swipeUpComplete\");\n\n/**\n * Symbol for the `swipeStart` method.\n *\n * [TouchSwipeMixin](TouchSwipeMixin) and\n * [TrackpadSwipeMixin](TrackpadSwipeMixin) invoke this method when a swipe\n * is starting, passing in the starting (x, y) client coordinate.\n */\nexport const swipeStart = Symbol(\"swipeStart\");\n\n/**\n * Symbol for the `swipeTarget` property.\n *\n * By default, the swipe mixins [TouchSwipeMixin](TouchSwipeMixin) and\n * [TrackpadSwipeMixin](TrackpadSwipeMixin) assume that the element the user\n * is swiping the top-level element. In some cases (e.g., [Drawer](Drawer)),\n * the component wants to let the user swipe a shadow element. In such cases,\n * this property should return the element that should be swiped.\n *\n * The swipe target's `offsetWidth` is used by the mixin to calculate the\n * `state.swipeFraction` member when the user drags their finger. The\n * `swipeFraction` is the distance the user has dragged in the current drag\n * operation over that `offsetWidth`.\n */\nexport const swipeTarget = Symbol(\"swipeTarget\");\n\n/**\n * Symbol for the `tap` method.\n *\n * This method is invoked when an element receives an operation that should\n * be interpreted as a tap. [TapCursorMixin](TapCursorMixin)\n * invokes this when the element receives a `mousedown` event, for example.\n */\nexport const tap = Symbol(\"tap\");\n\n/**\n * Symbol for the `template` method.\n *\n * [ShadowTemplateMixin](ShadowTemplateMixin) uses this property to obtain a\n * component's template, which it will clone into a component's shadow root.\n */\nexport const template = coreInternal.template;\n\n/**\n * Symbol for the `toggleSelectedFlag` method.\n *\n * [ItemsMultiSelectMixin](ItemsMultiSelectMixin) exposes this method to let\n * other mixins like [MultiSelectAPIMixin](MultiSelectAPIMixin) toggle the\n * selected state of an individual item.\n */\nexport const toggleSelectedFlag = Symbol(\"toggleSelectedFlag\");\n\n// Expose internals as a global when debugging.\nconst elixdebug = new URLSearchParams(location.search).get(\"elixdebug\");\nif (elixdebug === \"true\") {\n /** @type {any} */ (window).elix = {\n internal: {\n checkSize,\n closestAvailableItemIndex,\n contentSlot,\n defaultState,\n defaultTabIndex,\n delegatesFocus,\n effectEndTarget,\n firstRender,\n focusTarget,\n getItemText,\n goDown,\n goEnd,\n goFirst,\n goLast,\n goLeft,\n goNext,\n goPrevious,\n goRight,\n goStart,\n goToItemWithPrefix,\n goUp,\n hasDynamicTemplate,\n ids,\n inputDelegate,\n itemsDelegate,\n keydown,\n mouseenter,\n mouseleave,\n nativeInternals,\n event,\n raiseChangeEvents,\n render,\n renderChanges,\n renderDataToElement,\n rendered,\n rendering,\n scrollTarget,\n setState,\n shadowRoot,\n shadowRootMode,\n startEffect,\n state,\n stateEffects,\n swipeDown,\n swipeDownComplete,\n swipeLeft,\n swipeLeftTransitionEnd,\n swipeRight,\n swipeRightTransitionEnd,\n swipeUp,\n swipeUpComplete,\n swipeStart,\n swipeTarget,\n tap,\n template,\n toggleSelectedFlag,\n },\n };\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n firstRender,\n inputDelegate,\n raiseChangeEvents,\n render,\n rendered,\n setState,\n state,\n stateEffects,\n} from \"./internal.js\";\n\n/**\n * Delegates its ARIA label property to an inner input-type element.\n *\n * This helps ensure that elements built around an inner input element provide a\n * proper accessible label for assistive technologies like screen readers.\n *\n * You can identify which inner input element selection should be delegated to\n * by defining an `internal.inputDelegate` property and returning the desired\n * inner input.\n *\n * @module DelegateInputLabelMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function DelegateInputLabelMixin(Base) {\n // The class prototype added by the mixin.\n class DelegateInputLabel extends Base {\n // Forward any ARIA label to the input element.\n get ariaLabel() {\n return this[state].ariaLabel;\n }\n set ariaLabel(ariaLabel) {\n if (!this[state].removingAriaAttribute) {\n this[setState]({\n ariaLabel: String(ariaLabel),\n });\n }\n }\n\n // Forward ARIA labelledby as an aria-label to the input element.\n // Note the lowercase \"b\" in the name, necessary to support the actual\n // attribute name \"aria-labelledby\", which has no hyphen before the \"by\".\n get ariaLabelledby() {\n return this[state].ariaLabelledby;\n }\n set ariaLabelledby(ariaLabelledby) {\n if (!this[state].removingAriaAttribute) {\n this[setState]({\n ariaLabelledby: String(ariaLabelledby),\n });\n }\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n ariaLabel: null,\n ariaLabelledby: null,\n inputLabel: null,\n removingAriaAttribute: false,\n });\n }\n\n [render](changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n if (this[firstRender]) {\n // Refresh the input label on focus. This refresh appears to happen fast\n // enough that the screen reader will announce the refreshed label.\n this.addEventListener(\"focus\", () => {\n this[raiseChangeEvents] = true;\n const inputLabel = refreshInputLabel(this, this[state]);\n this[setState]({ inputLabel });\n this[raiseChangeEvents] = false;\n });\n }\n\n // Apply the latest input label to the input delegate.\n if (changed.inputLabel) {\n const { inputLabel } = this[state];\n if (inputLabel) {\n this[inputDelegate].setAttribute(\"aria-label\", inputLabel);\n } else {\n this[inputDelegate].removeAttribute(\"aria-label\");\n }\n }\n }\n\n [rendered](changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n if (this[firstRender]) {\n // Refresh the label on first render. This is not guaranteed to pick up\n // labels defined by another element, as that element (or elements) may\n // not be in the DOM yet. For that reason, we'll also refresh the label\n // on focus. The reason to do it now is to handle the common cases where\n // the element defining the label does exist so that accessibility\n // testing tools can confirm that the input delegate does have a label.\n // Because this refresh can entail multiple searches of the tree, we\n // defer the refresh to idle time.\n // @ts-ignore\n const idleCallback = window.requestIdleCallback || setTimeout;\n idleCallback(() => {\n const inputLabel = refreshInputLabel(this, this[state]);\n this[setState]({ inputLabel });\n });\n }\n\n // Once we've obtained an aria-label or aria-labelledby from the host, we\n // remove those attirbutes so that the labels don't get announced twice.\n // We use a flag to distinguish between us removing our own ARIA\n // attributes (which should not update state), and someone removing\n // those attributes from the outside (which should update state).\n const { ariaLabel, ariaLabelledby } = this[state];\n if (changed.ariaLabel && !this[state].removingAriaAttribute) {\n if (this.getAttribute(\"aria-label\")) {\n this.setAttribute(\"delegated-label\", ariaLabel);\n this[setState]({ removingAriaAttribute: true });\n this.removeAttribute(\"aria-label\");\n }\n }\n if (changed.ariaLabelledby && !this[state].removingAriaAttribute) {\n if (this.getAttribute(\"aria-labelledby\")) {\n this.setAttribute(\"delegated-labelledby\", ariaLabelledby);\n this[setState]({ removingAriaAttribute: true });\n this.removeAttribute(\"aria-labelledby\");\n }\n }\n\n if (changed.removingAriaAttribute && this[state].removingAriaAttribute) {\n // We've done whatever removal we needed, and can now reset our flag.\n this[setState]({ removingAriaAttribute: false });\n }\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects]\n ? super[stateEffects](state, changed)\n : {};\n\n // If the ariaLabel changes, we can update our inputLabel state\n // immediately. Among other things, this facilitates scenarios where we\n // have nested elements using DelegateInputLabelMixin: the outermost\n // element can use whatever label approach it wants, the inner elements\n // will all use ariaLabel.\n //\n // We also update the label if we're focused, using ariaLabelledby, and\n // the selectedText changes. One pattern with select-like elements is to\n // have them include their own ID in the IDs specified by aria-labelledby.\n // This can incorporate the element's own `selectedText` in the announced\n // label. That `selectedText` can change while the element has focus, in\n // which case we'll refresh.\n if (\n (changed.ariaLabel && state.ariaLabel) ||\n (changed.selectedText &&\n state.ariaLabelledby &&\n this.matches(\":focus-within\"))\n ) {\n const inputLabel = refreshInputLabel(this, state);\n Object.assign(effects, { inputLabel });\n }\n\n return effects;\n }\n }\n\n return DelegateInputLabel;\n}\n\n// Given an element that is being used as a label, extract its label text.\nfunction getLabelFromElement(element) {\n // We use innerText here instead of textContent because we want the rendered\n // text. If, e.g., a text node includes a span with `display: none`,\n // textContent would include that hidden text, but innerText would leave it\n // out -- which is what we want here.\n if (\"selectedText\" in element) {\n // Element (most likely Elix) with selectedText property\n return element.selectedText;\n } else if (\"value\" in element && \"options\" in element) {\n // select or select-like element\n const value = element.value;\n const option = element.options.find((option) => option.value === value);\n return option ? option.innerText : \"\";\n } else if (\"value\" in element) {\n // Other input element\n return element.value;\n } else {\n // Other\n return element.innerText;\n }\n}\n\n/**\n * Calculate an appropriate label for the component's delegated input element.\n * When the element gets the focus, we refresh its label. This is done because\n * three of the labeling strategies (`aria-labelledby` attribute, `for`\n * attribute, and wrapping `label`) reference other elements in the tree -- and\n * the contents of those elements can change dynamically.\n *\n * @private\n * @param {HTMLElement} element\n * @param {PlainObject} state\n */\nfunction refreshInputLabel(element, state) {\n const { ariaLabel, ariaLabelledby } = state;\n /** @type {any} */ const rootNode = element.isConnected\n ? element.getRootNode()\n : null;\n let inputLabel = null;\n\n // Prefer aria-labelledby over aria-label, per\n // https://developers.google.com/web/fundamentals/accessibility/semantics-aria/aria-labels-and-relationships.\n // After that, we prefer a `label` element with a `for` attribute, and finally\n // a wrapping `label` element.\n //\n // There do not appear to be consistent cross-browser rules for handling\n // multiple forms of label assignment on the same component. E.g., if you\n // place an element in a wrapping label *and* point a `label` element at that\n // element with a `for` attribute, as of August 2020 Chrome and Firefox will\n // announce both, but Safari will only announce the `for` label.\n //\n // Since people are probably not relying upon specific results for multiple\n // forms of label assignment, we don't attempt to construct a combined label\n // in those cases.\n if (ariaLabelledby && rootNode) {\n // Collect labels from elements with the indicated IDs.\n const ids = ariaLabelledby.split(\" \");\n const labels = ids.map((id) => {\n const elementWithId = rootNode.getElementById(id);\n // Get a label from the indicated element.\n // Special case: if the element is providing its own label, we return its\n // current `selectedText` state.\n const label = !elementWithId\n ? \"\"\n : elementWithId === element && state.value !== null\n ? state.selectedText\n : getLabelFromElement(elementWithId);\n return label;\n });\n inputLabel = labels.join(\" \");\n } else if (ariaLabel) {\n // Use ariaLabel property as input label.\n inputLabel = ariaLabel;\n } else if (rootNode) {\n const id = element.id;\n if (id) {\n // Look for labelling element with `for` attribute.\n const elementWithFor = rootNode.querySelector(`[for=\"${id}\"]`);\n if (elementWithFor instanceof HTMLElement) {\n // Obtain label from wrapping label element.\n inputLabel = getLabelFromElement(elementWithFor);\n }\n }\n if (inputLabel === null) {\n // Last option is to look for closest wrapping label element.\n const labelElement = element.closest(\"label\");\n if (labelElement) {\n inputLabel = getLabelFromElement(labelElement);\n }\n }\n }\n\n if (inputLabel) {\n inputLabel = inputLabel.trim();\n }\n\n return inputLabel;\n}\n","import * as attributes from \"./AttributeMarshallingMixin.js\";\nimport { focusTarget, nativeInternals } from \"./internal.js\";\n\n/**\n * Miscellaneous DOM helpers for web components\n *\n * @module dom\n */\n\nconst mousedownListenerKey = Symbol(\"mousedownListener\");\n\n/**\n * Given a string value for a named boolean attribute, return `true` if the\n * value is either: a) the empty string, or b) a case-insensitive match for the\n * name.\n *\n * This is native HTML behavior; see the MDN documentation on [boolean\n * attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes#Boolean_Attributes)\n * for the reasoning.\n *\n * Given a null value, this return `false`.\n * Given a boolean value, this return the value as is.\n *\n * @private\n * @param {string} name\n * @param {string|boolean|null} value\n */\nexport function booleanAttributeValue(name, value) {\n console.warn(\n `booleanAttributes has moved from dom.js to AttributeMarshallingMixin.js. Please update your imports.`\n );\n return attributes.booleanAttributeValue(name, value);\n}\n\n/**\n * Return the closest focusable node that's either the node itself (if it's\n * focusable), or the closest focusable ancestor in the *composed* tree.\n *\n * If no focusable node is found, this returns null.\n *\n * @param {Node} node\n * @returns {HTMLElement|null}\n */\nexport function closestFocusableNode(node) {\n for (const current of selfAndComposedAncestors(node)) {\n // If the current element defines a focusTarget (e.g., via\n // DelegateFocusMixin), use that, otherwise use the element itself.\n const target = current[focusTarget] || current;\n // We want an element that has a tabIndex of 0 or more. We ignore disabled\n // elements, and slot elements (which oddly have a tabIndex of 0).\n /** @type {any} */ const cast = target;\n const focusable =\n target instanceof HTMLElement &&\n target.tabIndex >= 0 &&\n !cast.disabled &&\n !(target instanceof HTMLSlotElement);\n if (focusable) {\n return target;\n }\n }\n return null;\n}\n\n/**\n * Return the ancestors of the given node in the composed tree.\n *\n * In the composed tree, the ancestor of a node assigned to a slot is that slot,\n * not the node's DOM ancestor. The ancestor of a shadow root is its host.\n *\n * @param {Node} node\n * @returns {Iterable<Node>}\n */\nexport function* composedAncestors(node) {\n /** @type {Node|null} */\n let current = node;\n while (true) {\n current =\n current instanceof HTMLElement && current.assignedSlot\n ? current.assignedSlot\n : current instanceof ShadowRoot\n ? current.host\n : current.parentNode;\n if (current) {\n yield current;\n } else {\n break;\n }\n }\n}\n\n/**\n * Returns true if the first node contains the second, even if the second node\n * is in a shadow tree.\n *\n * The standard Node.contains() function does not account for Shadow DOM, and\n * returns false if the supplied target node is sitting inside a shadow tree\n * within the container.\n *\n * @param {Node} container - The container to search within.\n * @param {Node} target - The node that may be inside the container.\n * @returns {boolean} - True if the container contains the target node.\n */\nexport function deepContains(container, target) {\n /** @type {any} */\n let current = target;\n while (current) {\n const parent = current.assignedSlot || current.parentNode || current.host;\n if (parent === container) {\n return true;\n }\n current = parent;\n }\n return false;\n}\n\n/**\n * Return the first focusable element in the composed tree below the given root.\n * The composed tree includes nodes assigned to slots.\n *\n * This heuristic considers only the document order of the elements below the\n * root and whether a given element is focusable. It currently does not respect\n * the tab sort order defined by tabindex values greater than zero.\n *\n * @param {Node} root - the root of the tree in which to search\n * @returns {HTMLElement|null} - the first focusable element, or null if none\n * was found\n */\nexport function firstFocusableElement(root) {\n // CSS selectors for focusable elements from\n // https://stackoverflow.com/a/30753870/76472\n const focusableQuery =\n 'a[href],area[href],button:not([disabled]),details,iframe,input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[contentEditable=\"true\"],[tabindex]';\n // Walk the tree looking for nodes that match the above selectors.\n const walker = walkComposedTree(\n root,\n (/** @type {Node} */ node) =>\n node instanceof HTMLElement &&\n node.matches(focusableQuery) &&\n node.tabIndex >= 0\n );\n // We only actually need the first matching value.\n const { value } = walker.next();\n // value, if defined, will always be an HTMLElement, but we do the following\n // check to pass static type checking.\n return value instanceof HTMLElement ? value : null;\n}\n\n/**\n * Trap any `mousedown` events on the `origin` element and prevent the default\n * behavior from setting the focus on that element. Instead, put the focus on\n * the `target` element (or, if the `target` is not focusable, on the target's\n * closest focusable ancestor).\n *\n * If this method is called again with the same `origin` element, the old\n * forwarding is overridden, and focus will now go to the new `target` element.\n *\n * If the `target` parameter is `null`, focus handling will be removed from the\n * indicated `origin`.\n *\n * @param {HTMLElement} origin\n * @param {HTMLElement|null} target\n */\nexport function forwardFocus(origin, target) {\n if (origin[mousedownListenerKey]) {\n // Origin was previously forwarding focus, probably to a different target.\n // Remove the previous event listener.\n origin.removeEventListener(\"mousedown\", origin[mousedownListenerKey]);\n }\n if (target) {\n origin[mousedownListenerKey] = (/** @type {MouseEvent} */ event) => {\n // Only process events for the main (usually left) button.\n if (event.button !== 0) {\n return;\n }\n // What element wants the focus?\n const desiredTarget = target[focusTarget] || target;\n // What ancestor can actually take the focus?\n const focusableTarget = closestFocusableNode(desiredTarget);\n if (focusableTarget) {\n focusableTarget.focus();\n event.preventDefault();\n }\n };\n origin.addEventListener(\"mousedown\", origin[mousedownListenerKey]);\n }\n}\n\n/**\n * Search a list element for the item that contains the specified target.\n *\n * When dealing with UI events (e.g., mouse clicks) that may occur in\n * subelements inside a list item, you can use this routine to obtain the\n * containing list item.\n *\n * @param {NodeList|Node[]} items - A list element containing a set of items\n * @param {Node} target - A target element that may or may not be an item in the\n * list.\n * @returns {number} - The index of the list child that is or contains the\n * indicated target node. Returns -1 if not found.\n */\nexport function indexOfItemContainingTarget(items, target) {\n return Array.prototype.findIndex.call(\n items,\n (/** @type Node */ item) => item === target || deepContains(item, target)\n );\n}\n\n/**\n * Return true if the event came from within the node (or from the node itself);\n * false otherwise.\n *\n * @param {Node} node - The node to consider in relation to the event\n * @param {Event} event - The event which may have been raised within/by the\n * node\n * @returns {boolean} - True if the event was raised within or by the node\n */\nexport function ownEvent(node, event) {\n /** @type {any} */\n const cast = event;\n const eventSource = cast.composedPath()[0];\n return node === eventSource || deepContains(node, eventSource);\n}\n\n/**\n * Returns the set that includes the given node and all of its ancestors in the\n * composed tree. See [composedAncestors](#composedAncestors) for details on the\n * latter.\n *\n * @param {Node} node\n * @returns {Iterable<Node>}\n */\nexport function* selfAndComposedAncestors(node) {\n if (node) {\n yield node;\n yield* composedAncestors(node);\n }\n}\n\n/**\n * Set an internal state for browsers that support custom state pseudo classes,\n * as well as an attribute of the same name to permit state-based styling on\n * older browsers.\n *\n * When all browsers support custom state pseudo classes, we'd like to deprecate\n * use of attributes.\n *\n * @param {Element} element\n * @param {string} name\n * @param {boolean} value\n */\nexport function setInternalState(element, name, value) {\n element.toggleAttribute(name, value);\n if (element[nativeInternals] && element[nativeInternals].states) {\n const states = element[nativeInternals].states;\n const stateName = `--${name}`;\n if (value) {\n states.add(stateName);\n } else {\n states.delete(stateName);\n }\n }\n}\n\n/**\n * Adds or removes the element's `childNodes` as necessary to match the nodes\n * indicated in the `childNodes` parameter.\n *\n * This operation is useful in cases where you maintain your own set of nodes\n * which should be rendered as the children of some element. When you insert or\n * remove nodes in that set, you can invoke this function to efficiently apply\n * the new set as a delta to the existing children. Only the items in the set\n * that have actually changed will be added or removed.\n *\n * @param {Element} element - the element to update\n * @param {(NodeList|Node[])} childNodes - the set of nodes to apply\n */\nexport function updateChildNodes(element, childNodes) {\n // If the childNodes parameter is the actual childNodes of an element, then as\n // we append those nodes to the indicated target element, they'll get removed\n // from the original set. To keep the list stable, we make a copy.\n const copy = [...childNodes];\n\n const oldLength = element.childNodes.length;\n const newLength = copy.length;\n const length = Math.max(oldLength, newLength);\n for (let i = 0; i < length; i++) {\n const oldChild = element.childNodes[i];\n const newChild = copy[i];\n if (i >= oldLength) {\n // Add new item not in old set.\n element.append(newChild);\n } else if (i >= newLength) {\n // Remove old item past end of new set.\n element.removeChild(element.childNodes[newLength]);\n } else if (oldChild !== newChild) {\n if (copy.indexOf(oldChild, i) >= i) {\n // Old node comes later in final set. Insert the new node rather than\n // replacing it so that we don't detach the old node only to have to\n // reattach it later.\n element.insertBefore(newChild, oldChild);\n } else {\n // Replace old item with new item.\n element.replaceChild(newChild, oldChild);\n }\n }\n }\n}\n\n/**\n * Walk the composed tree at the root for elements that pass the given filter.\n *\n * Note: the jsDoc types required for the filter function are too complex for\n * the current jsDoc parser to support strong type-checking.\n *\n * @private\n * @param {Node} node\n * @param {function} filter\n * @returns {IterableIterator<Node>}\n */\nfunction* walkComposedTree(node, filter) {\n if (filter(node)) {\n yield node;\n }\n let children;\n if (node instanceof HTMLElement && node.shadowRoot) {\n // Walk the shadow instead of the light DOM.\n children = node.shadowRoot.children;\n } else {\n const assignedNodes =\n node instanceof HTMLSlotElement\n ? node.assignedNodes({ flatten: true })\n : [];\n children =\n assignedNodes.length > 0\n ? // Walk light DOM nodes assigned to this slot.\n assignedNodes\n : // Walk light DOM children.\n node.childNodes;\n }\n if (children) {\n for (let i = 0; i < children.length; i++) {\n yield* walkComposedTree(children[i], filter);\n }\n }\n}\n","import { deepContains } from \"../core/dom.js\";\nimport { fragmentFrom, templateFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { defaultState, render, setState, state, template } from \"./internal.js\";\n\n// We consider the keyboard to be active if the window has received a keydown\n// event since the last mousedown event.\nlet keyboardActive = false;\n\n/** @type {any} */\nconst focusVisibleChangedListenerKey = Symbol(\"focusVisibleChangedListener\");\n\n/**\n * Shows a focus indication if and only if the keyboard is active.\n *\n * The keyboard is considered to be active if a keyboard event has occurred\n * since the last mousedown event.\n *\n * This is loosely modeled after the proposed\n * [focus-visible](https://github.com/WICG/focus-visible) feature for CSS.\n *\n * @module FocusVisibleMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function FocusVisibleMixin(Base) {\n // The class prototype added by the mixin.\n return class FocusVisible extends Base {\n constructor() {\n // @ts-ignore\n super();\n\n // We listen to focusin/focusout instead of focus/blur because components\n // like Menu want to handle focus visiblity for the items they contain,\n // and those contained items can get the focus. Using focusin/focusout\n // lets us know whether this element *or any element it contains* has the\n // focus.\n //\n // Focus events are problematic in that they can occur during rendering:\n // if an element with the focus is updated so that its tabindex is\n // removed, it will lose focus. Since these focus handlers need to set\n // state, this could lead to setting state during rendering, which is bad.\n // To avoid this problem, we use promise timing to defer the setting of\n // state.\n this.addEventListener(\"focusout\", (event) => {\n Promise.resolve().then(() => {\n // What has the focus now?\n /** @type {any} */ const cast = event;\n const newFocusedElement =\n cast.relatedTarget || document.activeElement;\n const isFocusedElement = this === newFocusedElement;\n const containsFocus = deepContains(this, newFocusedElement);\n const lostFocus = !isFocusedElement && !containsFocus;\n if (lostFocus) {\n this[setState]({\n focusVisible: false,\n });\n // No longer need to listen for changes in focus visibility.\n document.removeEventListener(\n \"focusvisiblechange\",\n this[focusVisibleChangedListenerKey]\n );\n this[focusVisibleChangedListenerKey] = null;\n }\n });\n });\n this.addEventListener(\"focusin\", () => {\n Promise.resolve().then(() => {\n if (this[state].focusVisible !== keyboardActive) {\n // Show the element as focused if the keyboard has been used.\n this[setState]({\n focusVisible: keyboardActive,\n });\n }\n if (!this[focusVisibleChangedListenerKey]) {\n // Listen to subsequent changes in focus visibility.\n this[focusVisibleChangedListenerKey] = () => refreshFocus(this);\n document.addEventListener(\n \"focusvisiblechange\",\n this[focusVisibleChangedListenerKey]\n );\n }\n });\n });\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n focusVisible: false,\n });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n // Suppress the component's normal `outline` style unless we know the\n // focus should be visible.\n if (changed.focusVisible) {\n const { focusVisible } = this[state];\n this.toggleAttribute(\"focus-visible\", focusVisible);\n }\n }\n\n get [template]() {\n const result = super[template] || templateFrom.html``;\n result.content.append(fragmentFrom.html`\n <style>\n :host {\n outline: none;\n }\n\n :host([focus-visible]:focus-within) {\n outline-color: Highlight; /* Firefox */\n outline-color: -webkit-focus-ring-color; /* All other browsers */\n outline-style: auto;\n }\n </style>\n `);\n return result;\n }\n };\n}\n\nfunction refreshFocus(/** @type {ReactiveElement} */ element) {\n element[setState]({\n focusVisible: keyboardActive,\n });\n}\n\nfunction updateKeyboardActive(/** @type {boolean} */ newKeyboardActive) {\n if (keyboardActive !== newKeyboardActive) {\n keyboardActive = newKeyboardActive;\n const event = new CustomEvent(\"focusvisiblechange\", {\n detail: {\n focusVisible: keyboardActive,\n },\n });\n document.dispatchEvent(event);\n }\n}\n\n// Listen for top-level keydown and mousedown events.\n// Use capture phase so we detect events even if they're handled.\nwindow.addEventListener(\n \"keydown\",\n () => {\n updateKeyboardActive(true);\n },\n { capture: true }\n);\n\nwindow.addEventListener(\n \"mousedown\",\n () => {\n updateKeyboardActive(false);\n },\n { capture: true }\n);\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n nativeInternals,\n render,\n rendered,\n setState,\n state,\n} from \"./internal.js\";\n\n/**\n * Allows a component to participate in HTML form submission.\n *\n * The mixin expects the component to define a `value` property of type\n * `string`.\n *\n * @module FormElementMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function FormElementMixin(Base) {\n // The class prototype added by the mixin.\n class FormElement extends Base {\n constructor() {\n super();\n /** @type {any} */ const cast = this;\n if (!this[nativeInternals] && cast.attachInternals) {\n this[nativeInternals] = cast.attachInternals();\n }\n }\n\n checkValidity() {\n return this[nativeInternals].checkValidity();\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n name: \"\",\n validationMessage: \"\",\n valid: true,\n });\n }\n\n // Uncomment for debugging only\n get internals() {\n return this[nativeInternals];\n }\n\n static get formAssociated() {\n return true;\n }\n\n /**\n * The ID of the `form` element with which this element is associated,\n * or `null` if the element is not associated with any form. This is provided\n * for consistency with the native HTML\n * [form](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#form)\n * property.\n *\n * @type {string}\n */\n get form() {\n return this[nativeInternals].form;\n }\n\n /**\n * The name of the form field that will be filled with this element's\n * `value`. This is an analogue of the standard HTML\n * [name](https://developer.mozilla.org/en-US/docs/Web/API/Element/name)\n * property.\n *\n * @type {string}\n */\n get name() {\n return this[state] ? this[state].name : \"\";\n }\n set name(name) {\n const s = String(name);\n if (\"name\" in Base.prototype) {\n super.name = s;\n }\n this[setState]({\n name: s,\n });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n // Reflect name property to attribute so form will pick it up.\n if (changed.name) {\n const { name } = this[state];\n if (name) {\n this.setAttribute(\"name\", name);\n } else {\n this.removeAttribute(\"name\");\n }\n }\n\n if (this[nativeInternals] && this[nativeInternals].setValidity) {\n // Reflect validity state to internals.\n if (changed.valid || changed.validationMessage) {\n const { valid, validationMessage } = this[state];\n if (valid) {\n this[nativeInternals].setValidity({});\n } else {\n this[nativeInternals].setValidity(\n {\n customError: true,\n },\n validationMessage\n );\n }\n }\n }\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n if (changed.value) {\n if (this[nativeInternals] && this[nativeInternals].setFormValue) {\n this[nativeInternals].setFormValue(this[state].value, this[state]);\n }\n }\n }\n\n reportValidity() {\n return this[nativeInternals].reportValidity();\n }\n\n /**\n * The \"type\" of the form field, provided for consistency with the\n * native HTML\n * [type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#type)\n * property.\n *\n * If a base class provides a `type` property, that will be returned. (If\n * this mixin is applied to a class defined by WrappedStandardElement, this\n * will return the `type` of the inner standard element.) Otherwise, the\n * default value of this property will be the same as the HTML tag name\n * registered for the custom element.\n *\n * @type {string}\n */\n get type() {\n // Defer to base class value.\n return super.type || this.localName;\n }\n\n get validationMessage() {\n return this[state].validationMessage;\n }\n\n get validity() {\n return this[nativeInternals].validity;\n }\n\n get willValidate() {\n return this[nativeInternals].willValidate;\n }\n }\n\n return FormElement;\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n firstRender,\n raiseChangeEvents,\n render,\n rendered,\n setState,\n} from \"./internal.js\";\n\n/**\n * Track the selection state of an inner input-like element\n *\n * This mixin is an adjunct to [WrappedStandardElement](WrappedStandardElement),\n * intended to be used with a wrapped input or textarea. The inner input or\n * textarea will have selection properties `selectionStart` and `selectionEnd`\n * that we would like to track as state members. Doing so is challenging,\n * because the browser provides no standard event for tracking a change in\n * selection.\n *\n * To compensate, this mixin listens to keyboard or mouse activity within the\n * inner element that might affect selection, then refreshes the host\n * component's selection state as appropriate.\n *\n * @module TrackTextSelectionMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function TrackTextSelectionMixin(Base) {\n // The class prototype added by the mixin.\n class TrackTextSelection extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n selectionEnd: 0,\n selectionStart: 0,\n });\n }\n\n [render](changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n if (this[firstRender]) {\n // The user can manually update the selection with the keyboard or\n // mouse. We listen to keydown and mousedown events, wait for the\n // browser to perform its default action, and then refresh the selection\n // state in case it changed.\n const refreshListener = (() => {\n // HACK: If we check too quickly, the default action won't have\n // happened. We wait for an arbitrary amount of time that seems to\n // work, although this feels gross.\n const delay = 10; // milliseconds\n setTimeout(() => {\n this[raiseChangeEvents] = true;\n refreshSelectionState(this);\n this[raiseChangeEvents] = false;\n }, delay);\n }).bind(this);\n this.addEventListener(\"keydown\", refreshListener);\n this.addEventListener(\"mousedown\", refreshListener);\n this.addEventListener(\"touchend\", refreshListener);\n }\n }\n\n [rendered](changed) {\n super[rendered](changed);\n\n // Setting value implies updating selection state as well.\n if (changed.value) {\n refreshSelectionState(this);\n }\n }\n }\n\n return TrackTextSelection;\n}\n\n// Refresh our selection state values from the inner component's current\n// selection properties.\nfunction refreshSelectionState(element) {\n const inner = element.inner;\n const { selectionEnd, selectionStart } = inner;\n element[setState]({\n selectionEnd,\n selectionStart,\n });\n}\n","import { firstFocusableElement } from \"../core/dom.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { delegatesFocus, focusTarget, shadowRoot } from \"./internal.js\";\n\n/**\n * Delegates a component's focus to its first focusable shadow element.\n *\n * This mixin serves as a polyfill for the standard `delegatesFocus` shadow root\n * property. As of June 2020, that property is still only natively supported in\n * Chrome. The Chrome delegatesFocus implementation has some subtle issues;\n * until additional implementations are available, it's hard to know whether the\n * issues are with the definition of delegatesFocus, with Chrome's\n * implementation, or with Elix component code. Accordingly, for the time being\n * this polyfill is used even on Chrome.\n *\n * @module DelegateFocusMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function DelegateFocusMixin(Base) {\n // The class prototype added by the mixin.\n class DelegateFocus extends Base {\n /**\n * Returns true if the component is delegating its focus.\n *\n * A component using `DelegateFocusMixin` will always have this property be\n * true unless a class takes measures to override it.\n *\n * @type {boolean}\n * @default true\n */\n get [delegatesFocus]() {\n return true;\n }\n\n /**\n * If someone tries to put the focus on us, delegate the focus to the first\n * focusable element in the composed tree below our shadow root.\n *\n * @ignore\n * @param {FocusOptions=} focusOptions\n */\n focus(focusOptions) {\n // On browsers that support delegatesFocus natively, we should just be\n // able to let the browser handle the focus method. However, we hit a bug\n // in June 2020 where the native focus method in Chrome did not always\n // produce the expected results if delegatesFocus is set.\n //\n // Specific bug: a PopupButton would like to delegates focus to its source\n // button. Tabbing to a PopupButton focused on the source button as\n // expected. Moreover, programmatically setting focus on the button also\n // worked. However, when a PopupButton's popup was closed with the Escape\n // key, OverlayMixin attemped to set programmatically focus to the\n // PopupButton. This did *not* work as expecte, and focus ended up on the\n // body. Until we have a second native implementation to compare against,\n // it's difficult to determine whether this is a bug in the definition of\n // delegatesFocus, Chrome's implementation, or our code.\n\n // /** @type {any} */ const cast = this[shadowRoot];\n // if (cast.delegatesFocus) {\n // // Native support for delegatesFocus, so don't need to do anything.\n // super.focus(focusOptions);\n // return;\n // }\n const focusElement = this[focusTarget];\n if (focusElement) {\n focusElement.focus(focusOptions);\n }\n }\n\n get [focusTarget]() {\n // HACK: The commented-out code lets us rely on the browser to indicate\n // which element should be focused on in browsers that don't support\n // native delegatesFocus. However, this code creates subtle focus problems\n // in components like AutoCompleteListBox: if the user clicks the toggle\n // button, the focus won't be placed on the top-level AutoCompleteComboBox\n // as expected; that element will be returned as the focus target, but if\n // it doesn't have a non-negative tabindex, forwardFocus won't think it's\n // focusable. A more correct solution would be for all components that are\n // focusable to give themselves a tabIndex of 0 by default or define a new\n // public `focusable` that components could use to indicate that they're\n // focusable. Until we have time to fully explore that, we workaround the\n // bug by providing the polyfill behavior even in browsers that have\n // delegatesFocus.\n\n // /** @type {any} */ const cast = this[shadowRoot];\n // return cast.delegatesFocus\n // ? this\n // : firstFocusableElement(this[shadowRoot]);\n return firstFocusableElement(this[shadowRoot]);\n }\n }\n\n return DelegateFocus;\n}\n","import { standardBooleanAttributes } from \"../core/AttributeMarshallingMixin.js\";\nimport { setInternalState } from \"../core/dom.js\";\nimport { templateFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\";\nimport DelegateFocusMixin from \"./DelegateFocusMixin.js\";\nimport {\n defaultState,\n defaultTabIndex,\n firstRender,\n ids,\n nativeInternals,\n render,\n rendered,\n setState,\n shadowRoot,\n state,\n template,\n} from \"./internal.js\";\n\nconst extendsKey = Symbol(\"extends\");\n\nconst delegatedPropertySettersKey = Symbol(\"delegatedPropertySetters\");\n\n/* True if a standard element is focusable by default. */\n/** @type {IndexedObject<boolean>} */\nconst focusableByDefault = {\n a: true,\n area: true,\n button: true,\n details: true,\n iframe: true,\n input: true,\n select: true,\n textarea: true,\n};\n\n/*\n * A set of events which, if fired by the inner standard element, should be\n * re-raised by the custom element.\n *\n * These are events which are spec'ed to NOT get retargetted across a Shadow DOM\n * boundary, organized by which element(s) raise the events. To properly\n * simulate these, we will need to listen for the real events, then re-raise a\n * simulation of the original event. For more information, see\n * https://www.w3.org/TR/shadow-dom/#h-events-that-are-not-leaked-into-ancestor-trees.\n *\n * It appears that we do *not* need to re-raise the non-bubbling \"focus\" and\n * \"blur\" events. These appear to be automatically re-raised as expected -- but\n * it's not clear why that happens.\n *\n * The list below is reasonably complete. It omits elements that cannot be\n * wrapped (see class notes above). Also, we haven't actually tried wrapping\n * every element in this list; some of the more obscure ones might not actually\n * work as expected, but it was easier to include them for completeness than\n * to actually verify whether or not the element can be wrapped.\n */\n/** @type {IndexedObject<string[]>} */\nconst reraiseEvents = {\n address: [\"scroll\"],\n blockquote: [\"scroll\"],\n caption: [\"scroll\"],\n center: [\"scroll\"],\n dd: [\"scroll\"],\n dir: [\"scroll\"],\n div: [\"scroll\"],\n dl: [\"scroll\"],\n dt: [\"scroll\"],\n fieldset: [\"scroll\"],\n form: [\"reset\", \"scroll\"],\n frame: [\"load\"],\n h1: [\"scroll\"],\n h2: [\"scroll\"],\n h3: [\"scroll\"],\n h4: [\"scroll\"],\n h5: [\"scroll\"],\n h6: [\"scroll\"],\n iframe: [\"load\"],\n img: [\"abort\", \"error\", \"load\"],\n input: [\"abort\", \"change\", \"error\", \"select\", \"load\"],\n li: [\"scroll\"],\n link: [\"load\"],\n menu: [\"scroll\"],\n object: [\"error\", \"scroll\"],\n ol: [\"scroll\"],\n p: [\"scroll\"],\n script: [\"error\", \"load\"],\n select: [\"change\", \"scroll\"],\n tbody: [\"scroll\"],\n tfoot: [\"scroll\"],\n thead: [\"scroll\"],\n textarea: [\"change\", \"select\", \"scroll\"],\n};\n\n/*\n * Mouse events that should be disabled if the inner component is disabled.\n */\nconst mouseEventNames = [\n \"click\",\n \"dblclick\",\n \"mousedown\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"wheel\",\n];\n\n// Keep track of which re-raised events should bubble.\n/** @type {IndexedObject<boolean>} */\nconst eventBubbles = {\n abort: true,\n change: true,\n reset: true,\n};\n\n// Elements which are display: block by default.\n// Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\nconst blockElements = [\n \"address\",\n \"article\",\n \"aside\",\n \"blockquote\",\n \"canvas\",\n \"dd\",\n \"div\",\n \"dl\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"li\",\n \"main\",\n \"nav\",\n \"noscript\",\n \"ol\",\n \"output\",\n \"p\",\n \"pre\",\n \"section\",\n \"table\",\n \"tfoot\",\n \"ul\",\n \"video\",\n];\n\n// Standard attributes that don't have corresponding properties.\n// These need to be delegated from the wrapper to the inner element.\nconst attributesWithoutProperties = [\n \"accept-charset\",\n \"autoplay\",\n \"buffered\",\n \"challenge\",\n \"codebase\",\n \"colspan\",\n \"contenteditable\",\n \"controls\",\n \"crossorigin\",\n \"datetime\",\n \"dirname\",\n \"for\",\n \"formaction\",\n \"http-equiv\",\n \"icon\",\n \"ismap\",\n \"itemprop\",\n \"keytype\",\n \"language\",\n \"loop\",\n \"manifest\",\n \"maxlength\",\n \"minlength\",\n \"muted\",\n \"novalidate\",\n \"preload\",\n \"radiogroup\",\n \"readonly\",\n \"referrerpolicy\",\n \"rowspan\",\n \"scoped\",\n \"usemap\",\n];\n\nconst Base = DelegateFocusMixin(ReactiveElement);\n\n/**\n * Wraps a standard HTML element so it can be extended\n *\n * The typical way to use this class is via its static `wrap` method.\n *\n * @inherits ReactiveElement\n * @mixes DelegateFocusMixin\n * @part inner - the inner standard HTML element\n */\nclass WrappedStandardElement extends Base {\n constructor() {\n super();\n /** @type {any} */ const cast = this;\n if (!this[nativeInternals] && cast.attachInternals) {\n this[nativeInternals] = cast.attachInternals();\n }\n }\n\n /**\n *\n * Wrapped standard elements need to forward some attributes to the inner\n * element in cases where the attribute does not have a corresponding\n * property. These attributes include those prefixed with \"aria-\", and some\n * unusual standard attributes like contenteditable. To handle those, this\n * class defines its own attributeChangedCallback.\n *\n * @ignore\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n */\n attributeChangedCallback(name, oldValue, newValue) {\n const forwardAttribute = attributesWithoutProperties.indexOf(name) >= 0;\n if (forwardAttribute) {\n const innerAttributes = Object.assign({}, this[state].innerAttributes, {\n [name]: newValue,\n });\n this[setState]({ innerAttributes });\n } else {\n // Rely on the base attributeChangedCallback provided by\n // AttributeMarshallingMixin.\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n // Delegate method defined by HTMLElement.\n blur() {\n this.inner.blur();\n }\n\n // One HTMLElement we *don't* delegate is `click`. Generally speaking, a click\n // on the outer wrapper should behave the same as a click on the inner\n // element. Also, we want to ensure outside event listeners get a click event\n // when the click method is invoked. But a click on the inner element will\n // raise a click event that won't be re-raised by default across the shadow\n // boundary. The precise behavior seems to be slightly different in Safari\n // than other browsers, but it seems safer to not delegate click.\n //\n // click() {}\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n innerAttributes: {},\n });\n }\n\n get [defaultTabIndex]() {\n return focusableByDefault[this.extends] ? 0 : -1;\n }\n\n /**\n * The tag name of the standard HTML element extended by this class.\n *\n * @returns {string}\n */\n get extends() {\n return this.constructor[extendsKey];\n }\n\n /**\n * Returns a reference to the inner standard HTML element.\n *\n * @type {HTMLElement}\n */\n get inner() {\n /** @type {any} */\n const result = this[ids] && this[ids].inner;\n if (!result) {\n /* eslint-disable no-console */\n console.warn(\n \"Attempted to get an inner standard element before it was instantiated.\"\n );\n }\n return result;\n }\n\n static get observedAttributes() {\n // For our custom attributeChangedCallback to work, we need to observe\n // the attributes we want to forward.\n // @ts-ignore\n return [...super.observedAttributes, ...attributesWithoutProperties];\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n\n const inner = this.inner;\n if (this[firstRender]) {\n // Listen for any events raised by the inner element which will not\n // automatically be retargetted across the Shadow DOM boundary, and\n // re-raise those events when they happen.\n const eventNames = reraiseEvents[this.extends] || [];\n eventNames.forEach((eventName) => {\n inner.addEventListener(eventName, () => {\n const event = new Event(eventName, {\n bubbles: eventBubbles[eventName] || false,\n });\n this.dispatchEvent(event);\n });\n });\n\n // If inner element can be disabled, then listen to mouse events on the\n // *outer* element and absorb them if the inner element is disabled.\n // Without this, a mouse event like a click on the inner disabled element\n // would be treated as a click on the outer element. Someone listening to\n // clicks on the outer element would get a click event, even though the\n // overall element is supposed to be disabled.\n if (\"disabled\" in inner) {\n mouseEventNames.forEach((eventName) => {\n this.addEventListener(eventName, (event) => {\n if (/** @type {any} */ (inner).disabled) {\n event.stopImmediatePropagation();\n }\n });\n });\n }\n }\n\n if (changed.tabIndex) {\n inner.tabIndex = this[state].tabIndex;\n }\n\n if (changed.innerAttributes) {\n // Forward attributes to the inner element.\n // See notes at attributeChangedCallback.\n const { innerAttributes } = this[state];\n for (const name in innerAttributes) {\n applyAttribute(inner, name, innerAttributes[name]);\n }\n }\n\n // Forward delegated properties to the inner element.\n this.constructor[delegatedPropertySettersKey].forEach((property) => {\n if (changed[property]) {\n const value = this[state][property];\n\n // Inner selection properties needed to be handled specially.\n // See TrackTextSelectionMixin.\n const specialCase =\n (property === \"selectionEnd\" || property === \"selectionStart\") &&\n value === null;\n if (!specialCase) {\n inner[property] = value;\n }\n }\n });\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n super[rendered](changed);\n\n // Apply disabled state.\n if (changed.disabled) {\n const { disabled } = this[state];\n if (disabled !== undefined) {\n setInternalState(this, \"disabled\", disabled);\n }\n }\n }\n\n /**\n * The template copied into the shadow tree of new instances of this element.\n *\n * The default value of this property is a template that includes an instance\n * the standard element being wrapped, with a `<slot>` element inside that\n * to pick up the element's light DOM content. For example, if you wrap an\n * `<a>` element, then the default template will look like:\n *\n * <template>\n * <style>\n * :host {\n * display: inline-block;\n * }\n * </style>\n * <a id=\"inner\">\n * <slot></slot>\n * </a>\n * </template>\n *\n * The `display` styling applied to the host will be `block` for elements that\n * are block elements by default, and `inline-block` (not `inline`) for other\n * elements.\n *\n * If you'd like the template to include other elements, then override this\n * property and return a template of your own. The template should include an\n * instance of the standard HTML element you are wrapping, and the ID of that\n * element should be \"inner\".\n *\n * @type {(string|HTMLTemplateElement)}\n */\n get [template]() {\n const display = blockElements.includes(this.extends)\n ? \"block\"\n : \"inline-block\";\n const tag = this.extends;\n return templateFrom.html`\n <style>\n :host {\n display: ${display}\n }\n \n [part~=\"inner\"] {\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n }\n </style>\n <${tag} id=\"inner\" part=\"inner ${tag}\">\n <slot></slot>\n </${tag}>\n `;\n }\n\n /**\n * Creates a class that wraps a standard HTML element.\n *\n * Note that the resulting class is a subclass of WrappedStandardElement, not\n * the standard class being wrapped. E.g., if you call\n * `WrappedStandardElement.wrap('a')`, you will get a class whose shadow tree\n * will include an anchor element, but the class will *not* inherit from\n * HTMLAnchorElement.\n *\n * @static\n * @param {string} extendsTag - the standard HTML element tag to extend\n */\n static wrap(extendsTag) {\n // Create the new class.\n /** @type {Constructor<WrappedStandardElement>} */\n class Wrapped extends WrappedStandardElement {}\n\n // Indicate which tag it wraps.\n /** @type {any} */ (Wrapped)[extendsKey] = extendsTag;\n\n // Create getter/setters that delegate to the wrapped element.\n const element = document.createElement(extendsTag);\n defineDelegates(Wrapped, Object.getPrototypeOf(element));\n\n return Wrapped;\n }\n}\n\n/**\n * Update the given attribute on an element.\n *\n * Passing a non-null `value` acts like a call to `setAttribute(name, value)`.\n * If the supplied `value` is nullish, this acts like a call to\n * `removeAttribute(name)`.\n *\n * @private\n * @param {HTMLElement} element\n * @param {string} name\n * @param {string} value\n */\nexport function applyAttribute(element, name, value) {\n if (standardBooleanAttributes[name]) {\n // Boolean attribute\n if (typeof value === \"string\") {\n element.setAttribute(name, \"\");\n } else if (value === null) {\n element.removeAttribute(name);\n }\n } else {\n // Regular string-valued attribute\n if (value != null) {\n element.setAttribute(name, value.toString());\n } else {\n element.removeAttribute(name);\n }\n }\n}\n\n/**\n * Create a delegate for the method or property identified by the descriptor.\n *\n * @private\n * @param {string} name\n * @param {PropertyDescriptor} descriptor\n */\nfunction createDelegate(name, descriptor) {\n if (typeof descriptor.value === \"function\") {\n if (name !== \"constructor\") {\n return createMethodDelegate(name, descriptor);\n }\n } else if (\n typeof descriptor.get === \"function\" ||\n typeof descriptor.set === \"function\"\n ) {\n return createPropertyDelegate(name, descriptor);\n }\n return null;\n}\n\n/**\n * Create a delegate for the method identified by the descriptor.\n *\n * @private\n * @param {string} name\n * @param {PropertyDescriptor} descriptor\n */\nfunction createMethodDelegate(name, descriptor) {\n const value = function (/** @type {any[]} */ ...args) {\n // @ts-ignore\n this.inner[name](...args);\n };\n const delegate = {\n configurable: descriptor.configurable,\n enumerable: descriptor.enumerable,\n value,\n writable: descriptor.writable,\n };\n return delegate;\n}\n\n/**\n * Create a delegate for the property identified by the descriptor.\n *\n * @private\n * @param {string} name\n * @param {PropertyDescriptor} descriptor\n */\nfunction createPropertyDelegate(name, descriptor) {\n /** @type {PlainObject} */\n const delegate = {\n configurable: descriptor.configurable,\n enumerable: descriptor.enumerable,\n };\n if (descriptor.get) {\n delegate.get = function () {\n return getInnerProperty(/** @type {any} */ (this), name);\n };\n }\n if (descriptor.set) {\n delegate.set = function (/** @type {any} */ value) {\n setInnerProperty(/** @type {any} */ (this), name, value);\n };\n }\n if (descriptor.writable) {\n delegate.writable = descriptor.writable;\n }\n return delegate;\n}\n\n/**\n * Define delegates for the given class for each property/method on the\n * indicated prototype.\n *\n * @private\n * @param {Constructor<Object>} cls\n * @param {Object} prototype\n */\nfunction defineDelegates(cls, prototype) {\n const names = Object.getOwnPropertyNames(prototype);\n cls[delegatedPropertySettersKey] = [];\n names.forEach((name) => {\n const descriptor = Object.getOwnPropertyDescriptor(prototype, name);\n if (!descriptor) {\n return;\n }\n const delegate = createDelegate(name, descriptor);\n if (delegate) {\n Object.defineProperty(cls.prototype, name, delegate);\n if (delegate.set) {\n cls[delegatedPropertySettersKey].push(name);\n }\n }\n });\n}\n\n/**\n * Return the value of the named property on the inner standard element.\n *\n * @private\n * @param {ReactiveElement} element\n * @param {string} name\n */\nfunction getInnerProperty(element, name) {\n // If we haven't rendered yet, use internal state value. Once we've\n // rendered, we get the value from the wrapped element itself. Return our\n // concept of the current property value from state. If the property hasn't\n // been defined, however, get the current value of the property from the\n // inner element.\n //\n // This is intended to support cases like an anchor element. If someone sets\n // `href` on a wrapped anchor, we'll know the value of `href` from state,\n // but we won't know the value of href-dependent calculated properties like\n // `protocol`. Using two sources of truth (state and the inner element)\n // seems fragile, but it's unclear how else to handle this without\n // reimplementing all HTML property interactions ourselves.\n //\n // This arrangement also means that, if an inner element property can change\n // in response to user interaction (e.g., an input element's value changes\n // as the user types), the component must listen to suitable events on the\n // inner element and update its state accordingly.\n const value = element[state][name];\n return value || (element[shadowRoot] && element.inner[name]);\n}\n\n/**\n * Set the named property on the inner standard element.\n *\n * @private\n * @param {ReactiveElement} element\n * @param {string} name\n * @param {any} value\n */\nfunction setInnerProperty(element, name, value) {\n // We normally don't check an existing state value before calling[setState],\n // relying instead on[setState] to do that check for us. However, we have\n // dangers in this particular component of creating infinite loops.\n //\n // E.g., setting the tabindex attibute will call attributeChangedCallback,\n // which will set the tabIndex property, which will want to set state, which\n // will cause a render, which will try to reflect the current value of the\n // tabIndex property to the tabindex attribute, causing a loop.\n //\n // To avoid this, we check the existing value before updating our state.\n if (element[state][name] !== value) {\n element[setState]({ [name]: value });\n }\n}\n\nexport default WrappedStandardElement;\n","import { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport DelegateInputLabelMixin from \"./DelegateInputLabelMixin.js\";\nimport FocusVisibleMixin from \"./FocusVisibleMixin.js\";\nimport FormElementMixin from \"./FormElementMixin.js\";\nimport {\n defaultState,\n firstRender,\n ids,\n inputDelegate,\n raiseChangeEvents,\n render,\n setState,\n state,\n template,\n} from \"./internal.js\";\nimport TrackTextSelectionMixin from \"./TrackTextSelectionMixin.js\";\nimport WrappedStandardElement from \"./WrappedStandardElement.js\";\n\nconst Base = DelegateInputLabelMixin(\n FocusVisibleMixin(\n FormElementMixin(\n TrackTextSelectionMixin(WrappedStandardElement.wrap(\"input\"))\n )\n )\n);\n\n/**\n * Base class for custom input elements\n *\n * `Input` wraps a standard HTML `input` element, allowing for custom styling\n * and behavior while ensuring standard keyboard and focus behavior.\n *\n * @inherits WrappedStandardElement\n * @mixes DelegateInputLabelMixin\n * @mixes FocusVisibleMixin\n * @mixes FormElementMixin\n * @mixes TrackTextSelectionMixin\n * @part input - the inner standard HTML input\n */\nclass Input extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n value: \"\",\n });\n }\n\n get [inputDelegate]() {\n return this.inner;\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n if (this[firstRender]) {\n // The following jsDoc comment doesn't directly apply to the statement which\n // follows, but is placed there because the comment has to go somewhere to\n // be visible to jsDoc, and the statement is at tangentially related.\n /**\n * Raised when the user changes the element's text content.\n *\n * This is the standard `input` event; the component does not do any work to\n * raise it. It is documented here to let people know it is available to\n * detect when the user edits the content.\n *\n * @event input\n */\n this[ids].inner.addEventListener(\"input\", () => {\n this[raiseChangeEvents] = true;\n /** @type {any} */\n const inner = this[ids].inner;\n this[setState]({ value: inner.value });\n this[raiseChangeEvents] = false;\n });\n }\n }\n\n get [template]() {\n const result = super[template];\n result.content.append(fragmentFrom.html`\n <style>\n [part~=\"input\"] {\n font: inherit;\n outline: none;\n text-align: inherit;\n }\n </style>\n `);\n return result;\n }\n\n get value() {\n return this[state].value;\n }\n set value(value) {\n this[setState]({\n value: String(value),\n });\n }\n}\n\nexport default Input;\n","import Input from \"../base/Input.js\";\nimport PlainInputMixin from \"./PlainInputMixin.js\";\n\n/**\n * ListBox component in the Plain reference design system\n *\n * @inherits Input\n * @mixes PlainInputMixin\n */\nclass PlainInput extends PlainInputMixin(Input) {}\n\nexport default PlainInput;\n","import { template } from \"../base/internal.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\n\n/**\n * Input styles in the Plain reference design system\n *\n * @module PlainInputMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function PlainInputMixin(Base) {\n return class PlainInput extends Base {\n get [template]() {\n const result = super[template];\n result.content.append(fragmentFrom.html`\n <style>\n :host {\n background: white;\n border: 1px solid gray;\n box-sizing: border-box;\n }\n\n [part~=\"input\"] {\n background: transparent;\n border-color: transparent;\n }\n </style>\n `);\n return result;\n }\n };\n}\n","import PlainInput from \"../src/plain/PlainInput.js\";\nexport default class ElixInput extends PlainInput {}\ncustomElements.define(\"elix-input\", ElixInput);\n","import 'elix/define/Input.js'\nimport { t } from '../locale.js'\n\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n div {\n height: 24px;\n margin: 5px 1px;\n padding: 3px;\n }\n img {\n top: 2px;\n left: 4px;\n position: relative;\n }\n span {\n bottom: 1px;\n right: -4px;\n position: relative;\n margin-right: 4px;\n color: #fff;\n }\n elix-input {\n background-color: var(--input-color);\n border-radius: 3px;\n height: 24px;\n }\n </style>\n <div>\n <img alt=\"icon\" width=\"12\" height=\"12\" />\n <span id=\"label\">label</span>\n <elix-input></elix-input>\n </div>\n`\n\n/**\n * @class SEInput\n */\nexport class SEInput extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n // locate the component\n this.$div = this._shadowRoot.querySelector('div')\n this.$img = this._shadowRoot.querySelector('img')\n this.$label = this.shadowRoot.getElementById('label')\n this.$event = new CustomEvent('change')\n this.$input = this._shadowRoot.querySelector('elix-input')\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['value', 'label', 'src', 'size', 'title']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'title':\n this.$div.setAttribute('title', `${t(newValue)}`)\n break\n case 'src':\n this.$img.setAttribute('src', newValue)\n this.$label.remove()\n break\n case 'size':\n this.$input.setAttribute('size', newValue)\n break\n case 'label':\n this.$label.textContent = t(newValue)\n this.$img.remove()\n break\n case 'value':\n this.$input.value = newValue\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get label () {\n return this.getAttribute('label')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set label (value) {\n this.setAttribute('label', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get value () {\n return this.$input.value\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set value (value) {\n this.$input.value = value\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get src () {\n return this.getAttribute('src')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set src (value) {\n this.setAttribute('src', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get size () {\n return this.getAttribute('size')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set size (value) {\n this.setAttribute('size', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n this.$input.addEventListener('change', (e) => {\n e.preventDefault()\n this.value = e.target.value\n this.dispatchEvent(this.$event)\n })\n this.$input.addEventListener('keyup', (e) => {\n e.preventDefault()\n this.value = e.target.value\n this.dispatchEvent(this.$event)\n })\n }\n}\n// Register\ncustomElements.define('se-input', SEInput)\n","import { closestFocusableNode } from \"../core/dom.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { defaultState, firstRender, render, state } from \"./internal.js\";\n\n// Quick detection of whether we'll need to handle focus.\n// As of February 2019, we don't need to handle this in Chrome, perhaps because\n// they already support delegatesFocus (which handles related focus issues).\nconst focusTest = document.createElement(\"div\");\nfocusTest.attachShadow({ mode: \"open\", delegatesFocus: true });\n/** @type {any} */\nconst focusTestShadowRoot = focusTest.shadowRoot;\nconst nativeDelegatesFocus = focusTestShadowRoot.delegatesFocus;\n\n/**\n * Normalizes focus treatment for custom elements with Shadow DOM\n *\n * This mixin exists because the default behavior for mousedown should set the\n * focus to the closest ancestor of the clicked element that can take the focus.\n * As of Nov 2018, Chrome and Safari don't handle this as expected when the\n * clicked element is reassigned across more than one slot to end up inside a\n * focusable element. In such cases, the focus will end up on the body. Firefox\n * exhibits the behavior we want. See\n * https://github.com/w3c/webcomponents/issues/773.\n *\n * This mixin normalizes behavior to provide what Firefox does. When the user\n * mouses down inside anywhere inside the component's light DOM or Shadow DOM,\n * we walk up the composed tree to find the first element that can take the\n * focus and put the focus on it.\n *\n * @module ComposedFocusMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function ComposedFocusMixin(Base) {\n // The class prototype added by the mixin.\n class ComposedFocus extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n composeFocus: !nativeDelegatesFocus,\n });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n if (this[firstRender]) {\n this.addEventListener(\"mousedown\", (event) => {\n if (!this[state].composeFocus) {\n return;\n }\n // Only process events for the main (usually left) button.\n if (event.button !== 0) {\n return;\n }\n if (event.target instanceof Element) {\n const target = closestFocusableNode(event.target);\n if (target) {\n target.focus();\n event.preventDefault();\n }\n }\n });\n }\n }\n }\n\n return ComposedFocus;\n}\n","import { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport ComposedFocusMixin from \"./ComposedFocusMixin.js\";\nimport DelegateInputLabelMixin from \"./DelegateInputLabelMixin.js\";\nimport FocusVisibleMixin from \"./FocusVisibleMixin.js\";\nimport { defaultState, ids, inputDelegate, tap, template } from \"./internal.js\";\nimport WrappedStandardElement from \"./WrappedStandardElement.js\";\n\nconst Base = ComposedFocusMixin(\n DelegateInputLabelMixin(\n FocusVisibleMixin(WrappedStandardElement.wrap(\"button\"))\n )\n);\n\n/**\n * Base class for custom buttons.\n *\n * `Button` wraps a standard HTML `button` element, allowing for custom styling\n * and behavior while ensuring standard keyboard and focus behavior.\n *\n * @inherits WrappedStandardElement\n * @mixes ComposedFocusMixin\n * @mixes DelegateInputLabelMixin\n * @mixes KeyboardMixin\n * @part button - the inner standard HTML button\n */\nclass Button extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n role: \"button\",\n });\n }\n\n get [inputDelegate]() {\n return this[ids].inner;\n }\n\n // Respond to a simulated click.\n [tap]() {\n const clickEvent = new MouseEvent(\"click\", {\n bubbles: true,\n cancelable: true,\n });\n this.dispatchEvent(clickEvent);\n }\n\n get [template]() {\n const result = super[template];\n result.content.append(\n fragmentFrom.html`\n <style>\n :host {\n display: inline-flex;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n touch-action: manipulation;\n }\n\n [part~=\"button\"] {\n align-items: center;\n background: none;\n border: none;\n color: inherit;\n flex: 1;\n font: inherit;\n outline: none;\n padding: 0;\n }\n </style>\n `\n );\n return result;\n }\n}\n\nexport default Button;\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n firstRender,\n raiseChangeEvents,\n render,\n setState,\n state,\n stateEffects,\n} from \"./internal.js\";\n\n// Used to distinguish our synthetic events from a real one.\nclass SyntheticMouseEvent extends MouseEvent {}\n\n/**\n * Generates mousedown events at intervals for as long as the mouse is down\n *\n * This is useful for buttons or other elements that should perform an\n * action repeatedly if the user holds down the mouse.\n *\n * @module RepeatMousedownMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function RepeatMousedownMixin(Base) {\n return class RepeatMousedown extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n repeatDelayDuration: 500, // In ms. Wait a bit before starting repeats.\n repeatInterval: null,\n repeatIntervalDuration: 50, // In ms. Once repeats start, they go fast.\n repeatTimeout: null,\n });\n }\n\n [render](changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n // Wire up event handlers.\n if (this[firstRender]) {\n // Only listen to mouse events with the primary (usually left) button.\n this.addEventListener(\"mousedown\", (event) => {\n if (!(event instanceof SyntheticMouseEvent) && event.button === 0) {\n this[raiseChangeEvents] = true;\n repeatStart(this);\n this[raiseChangeEvents] = false;\n }\n });\n this.addEventListener(\"mouseup\", (event) => {\n if (event.button === 0) {\n this[raiseChangeEvents] = true;\n repeatStop(this);\n this[raiseChangeEvents] = false;\n }\n });\n this.addEventListener(\"mouseleave\", (event) => {\n if (event.button === 0) {\n this[raiseChangeEvents] = true;\n repeatStop(this);\n this[raiseChangeEvents] = false;\n }\n });\n\n // Treat touch events like mouse events.\n this.addEventListener(\"touchstart\", () => {\n this[raiseChangeEvents] = true;\n repeatStart(this);\n this[raiseChangeEvents] = false;\n });\n this.addEventListener(\"touchend\", () => {\n this[raiseChangeEvents] = true;\n repeatStop(this);\n this[raiseChangeEvents] = false;\n });\n }\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects]\n ? super[stateEffects](state, changed)\n : {};\n\n if (changed.disabled) {\n if (state.disabled) {\n clearRepeat(this);\n Object.assign(effects, {\n repeatInterval: null,\n repeatTimeout: null,\n });\n }\n }\n\n return effects;\n }\n };\n}\n\nfunction clearRepeat(element) {\n if (element[state].repeatTimeout) {\n clearTimeout(element[state].repeatTimeout);\n }\n if (element[state].repeatInterval) {\n clearInterval(element[state].repeatInterval);\n }\n}\n\nfunction repeatStart(element) {\n // Start initial wait.\n const { repeatIntervalDuration, repeatDelayDuration } = element[state];\n const repeatTimeout = setTimeout(() => {\n // Initial wait complete; start repeat interval.\n const repeatInterval = setInterval(() => {\n // Repeat interval passed; raise a mousedown event.\n raiseMousedown(element);\n }, repeatIntervalDuration);\n element[setState]({ repeatInterval });\n }, repeatDelayDuration - repeatIntervalDuration);\n element[setState]({ repeatTimeout });\n}\n\n// Stop timeout and/or interval in progress.\nfunction repeatStop(element) {\n clearRepeat(element);\n element[setState]({\n repeatTimeout: null,\n repeatInterval: null,\n });\n}\n\n// Raise a synthetic mousedown event.\nfunction raiseMousedown(element) {\n const event = new SyntheticMouseEvent(\"mousedown\", {\n bubbles: true,\n button: 0,\n cancelable: true,\n clientX: 0,\n clientY: 0,\n });\n element.dispatchEvent(event);\n}\n","import Button from \"./Button.js\";\nimport RepeatMousedownMixin from \"./RepeatMousedownMixin.js\";\n\n/**\n * A button that raises mousedown events as long as the mouse is down\n *\n * @inherits Button\n * @mixes RepeatMousedownMixin\n */\nclass RepeatButton extends RepeatMousedownMixin(Button) {}\n\nexport default RepeatButton;\n","import { template } from \"../base/internal.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\n\n/**\n * Button styles in the Plain reference design system\n *\n * @module PlainButtonMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function PlainButtonMixin(Base) {\n return class PlainButton extends Base {\n get [template]() {\n const result = super[template];\n result.content.append(fragmentFrom.html`\n <style>\n :host([disabled]) ::slotted(*) {\n opacity: 0.5;\n }\n\n [part~=\"button\"] {\n display: inline-flex;\n justify-content: center;\n margin: 0;\n position: relative;\n }\n </style>\n `);\n return result;\n }\n };\n}\n","import RepeatButton from \"../base/RepeatButton.js\";\nimport PlainButtonMixin from \"./PlainButtonMixin.js\";\n\n/**\n * Button component in the Plain reference design system\n *\n * @inherits RepeatButton\n * @mixes PlainButtonMixin\n */\nclass PlainRepeatButton extends PlainButtonMixin(RepeatButton) {}\n\nexport default PlainRepeatButton;\n","/**\n * Helpers for dynamically creating and patching component templates.\n *\n * The [ShadowTemplateMixin](ShadowTemplateMixin) lets you define a component\n * template that will be used to popuplate the shadow subtree of new component\n * instances. These helpers, especially the [html](#html) function, are intended\n * to simplify the creation of such templates.\n *\n * In particular, these helpers can be useful in [patching\n * templates](customizing#template-patching) inherited from a base class.\n *\n * Some of these functions take _descriptors_ that can either be a class, a tag\n * name, or an HTML template. These are generally used to fill specific roles in\n * an element's template; see [element roles](customizing#element-part-types).\n *\n * @module template\n */\n\n// Used by registerCustomElement.\nconst mapBaseTagToCount = new Map();\n\n/**\n * Create an element from a role descriptor (a component class constructor or\n * an HTML tag name).\n *\n * If the descriptor is an HTML template, and the resulting document fragment\n * contains a single top-level node, that node is returned directly (instead of\n * the fragment).\n *\n * @param {PartDescriptor} descriptor - the descriptor that will be used to\n * create the element\n * @returns {Element} the new element\n */\nexport function createElement(descriptor) {\n if (typeof descriptor === \"function\") {\n // Instantiable component class constructor\n let element;\n try {\n element = new descriptor();\n } catch (/** @type {any} */ e) {\n if (e.name === \"TypeError\") {\n // Most likely this error results from the fact that the indicated\n // component class hasn't been registered. Register it now with a random\n // name and try again.\n registerCustomElement(descriptor);\n element = new descriptor();\n } else {\n // The exception was for some other reason.\n throw e;\n }\n }\n return element;\n // @ts-ignore\n } else {\n // String tag name: e.g., 'div'\n return document.createElement(descriptor);\n }\n}\n\n/**\n * Register the indicated constructor as a custom element class.\n *\n * This function generates a suitable string tag for the class. If the\n * constructor is a named function (which is typical for hand-authored code),\n * the function's `name` will be used as the base for the tag. If the\n * constructor is an anonymous function (which often happens in\n * generated/minified code), the tag base will be \"custom-element\".\n *\n * In either case, this function adds a uniquifying number to the end of the\n * base to produce a complete tag.\n *\n * @private\n * @param {Constructor<HTMLElement>} classFn\n */\nfunction registerCustomElement(classFn) {\n let baseTag;\n // HTML places more restrictions on the first character in a tag than\n // JavaScript places on the first character of a class name. We apply this\n // more restrictive condition to the class names we'll convert to tags. Class\n // names that fail this check -- often generated class names -- will result in\n // a base tag name of \"custom-element\".\n const classNameRegex = /^[A-Za-z][A-Za-z0-9_$]*$/;\n const classNameMatch = classFn.name && classFn.name.match(classNameRegex);\n if (classNameMatch) {\n // Given the class name `FooBar`, calculate the base tag name `foo-bar`.\n const className = classNameMatch[0];\n const uppercaseRegEx = /([A-Z])/g;\n const hyphenated = className.replace(\n uppercaseRegEx,\n (match, letter, offset) => (offset > 0 ? `-${letter}` : letter)\n );\n baseTag = hyphenated.toLowerCase();\n } else {\n baseTag = \"custom-element\";\n }\n // Add a uniquifying number to the end of the tag until we find a tag\n // that hasn't been registered yet.\n let count = mapBaseTagToCount.get(baseTag) || 0;\n let tag;\n for (; ; count++) {\n tag = `${baseTag}-${count}`;\n if (!customElements.get(tag)) {\n // Not in use.\n break;\n }\n }\n // Register with the generated tag.\n customElements.define(tag, /** @type {any} */ classFn);\n // Bump number and remember it. If we see the same base tag again later, we'll\n // start counting at that number in our search for a uniquifying number.\n mapBaseTagToCount.set(baseTag, count + 1);\n}\n\n/**\n * Replace an original node in a tree or document fragment with the indicated\n * replacement node. The attributes, classes, styles, and child nodes of the\n * original node will be moved to the replacement.\n *\n * @param {Node} original - an existing node to be replaced\n * @param {Node} replacement - the node to replace the existing node with\n * @returns {Node} the updated replacement node\n */\nexport function replace(original, replacement) {\n const parent = original.parentNode;\n if (!parent) {\n throw \"An element must have a parent before it can be substituted.\";\n }\n if (\n (original instanceof HTMLElement || original instanceof SVGElement) &&\n (replacement instanceof HTMLElement || replacement instanceof SVGElement)\n ) {\n // Merge attributes from original to replacement, letting replacement win\n // conflicts. Handle classes and styles separately (below).\n Array.prototype.forEach.call(\n original.attributes,\n (/** @type {Attr} */ attribute) => {\n if (\n !replacement.getAttribute(attribute.name) &&\n attribute.name !== \"class\" &&\n attribute.name !== \"style\"\n ) {\n replacement.setAttribute(attribute.name, attribute.value);\n }\n }\n );\n // Copy classes/styles from original to replacement, letting replacement win\n // conflicts.\n Array.prototype.forEach.call(\n original.classList,\n (/** @type {string} */ className) => {\n replacement.classList.add(className);\n }\n );\n Array.prototype.forEach.call(\n original.style,\n (/** @type {number} */ key) => {\n if (!replacement.style[key]) {\n replacement.style[key] = original.style[key];\n }\n }\n );\n }\n // Copy over children.\n // @ts-ignore\n replacement.append(...original.childNodes);\n\n parent.replaceChild(replacement, original);\n return replacement;\n}\n\n/**\n * Replace a node with a new element, transferring all attributes, classes,\n * styles, and child nodes from the original(s) to the replacement(s).\n *\n * The descriptor used for the replacements can be a 1) component class\n * constructor, 2) an HTML tag name, or 3) an HTML template. For #1 and #2, if\n * the existing elements that match the selector are already of the desired\n * class/tag name, the replacement operation is skipped.\n *\n * @param {Element} original - the node to replace\n * @param {PartDescriptor} descriptor - the descriptor used to generate the\n * replacement element\n * @returns {Element} the replacement node(s)\n */\nexport function transmute(original, descriptor) {\n if (\n (typeof descriptor === \"function\" && original.constructor === descriptor) ||\n (typeof descriptor === \"string\" &&\n original instanceof Element &&\n original.localName === descriptor)\n ) {\n // Already correct type of element, no transmutation necessary.\n return original;\n } else {\n // Transmute the single node.\n const replacement = createElement(descriptor);\n replace(original, replacement);\n return replacement;\n }\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n raiseChangeEvents,\n rendered,\n setState,\n state,\n} from \"./internal.js\";\n\n/**\n * Tracks the disabled state of a component that can be disabled\n *\n * @module DisabledMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function DisabledMixin(Base) {\n // The class prototype added by the mixin.\n class Disabled extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n disabled: false,\n });\n }\n\n /**\n * True if the component is disabled, false (the default) if not.\n *\n * The value of this property will be reflected to the `disabled` attribute\n * so that it can be referenced in CSS. Note that this non-native\n * implementation of the `disabled` attribute will *not* trigger the\n * `:disabled` CSS pseudo-class, so your style rules will have to reference\n * the presence or absence of the `disabled` attribute. That is, instead\n * of writing\n *\n * my-component:disabled { ... }\n *\n * write this instead\n *\n * my-component[disabled] { ... }\n *\n * Like the native `disabled` attribute, this attribute is boolean. That\n * means that it's *existence* in markup sets the attribute, even if set to\n * an empty string or a string like \"false\".\n *\n * @type {boolean}\n * @default false\n */\n get disabled() {\n return this[state].disabled;\n }\n // AttributeMarshallingMixin should parse this as a boolean attribute for us.\n set disabled(disabled) {\n this[setState]({ disabled });\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n if (changed.disabled) {\n // Reflect value of disabled property to the corresponding attribute.\n this.toggleAttribute(\"disabled\", this.disabled);\n\n if (this[raiseChangeEvents]) {\n /**\n * Raised when the `disabled` property changes.\n *\n * @event disabledchange\n */\n const event = new CustomEvent(\"disabledchange\", {\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n }\n }\n }\n\n return Disabled;\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n goDown,\n goEnd,\n goLeft,\n goRight,\n goStart,\n goUp,\n keydown,\n state,\n} from \"./internal.js\";\n\n/**\n * Maps direction keys to direction semantics.\n *\n * This mixin is useful for components that want to map direction keys (Left,\n * Right, etc.) to movement in the indicated direction (go left, go right,\n * etc.).\n *\n * This mixin expects the component to invoke a `keydown` method when a key is\n * pressed. You can use [KeyboardMixin](KeyboardMixin) for that\n * purpose, or wire up your own keyboard handling and call `keydown` yourself.\n *\n * This mixin calls methods such as `goLeft` and `goRight`. You can define\n * what that means by implementing those methods yourself. If you want to use\n * direction keys to navigate a selection, use this mixin with\n * [DirectionCursorMixin](DirectionCursorMixin).\n *\n * If the component defines a property called `orientation`, the value of that\n * property will constrain navigation to the horizontal or vertical axis.\n *\n * @module KeyboardDirectionMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function KeyboardDirectionMixin(Base) {\n // The class prototype added by the mixin.\n class KeyboardDirection extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n handleBubblingDirectionKeys: false,\n });\n }\n\n /**\n * Invoked when the user wants to go/navigate down.\n * The default implementation of this method does nothing.\n */\n [goDown]() {\n if (super[goDown]) {\n return super[goDown]();\n }\n }\n\n /**\n * Invoked when the user wants to go/navigate to the end (e.g., of a list).\n * The default implementation of this method does nothing.\n */\n [goEnd]() {\n if (super[goEnd]) {\n return super[goEnd]();\n }\n }\n\n /**\n * Invoked when the user wants to go/navigate left.\n * The default implementation of this method does nothing.\n */\n [goLeft]() {\n if (super[goLeft]) {\n return super[goLeft]();\n }\n }\n\n /**\n * Invoked when the user wants to go/navigate right.\n * The default implementation of this method does nothing.\n */\n [goRight]() {\n if (super[goRight]) {\n return super[goRight]();\n }\n }\n\n /**\n * Invoked when the user wants to go/navigate to the start (e.g., of a\n * list). The default implementation of this method does nothing.\n */\n [goStart]() {\n if (super[goStart]) {\n return super[goStart]();\n }\n }\n\n /**\n * Invoked when the user wants to go/navigate up.\n * The default implementation of this method does nothing.\n */\n [goUp]() {\n if (super[goUp]) {\n return super[goUp]();\n }\n }\n\n [keydown](/** @type {KeyboardEvent} */ event) {\n let handled = false;\n\n // Direction keys generally are low-priority keys: if a shadow element\n // like an input has focus, we want to let that focused element handle\n // direction keys. So we only handle the event if we're the target.\n //\n // (We'd really like to be able to provide direction key handling as a\n // default — i.e., if the focused element doesn't handle a key, then we\n // would handle it here. Unfortunately, there doesn't seem to be any\n // general way for us to do that.)\n if (this[state].handleBubblingDirectionKeys || event.target === this) {\n // Respect orientation state if defined, otherwise assume \"both\".\n const orientation = this[state].orientation || \"both\";\n const horizontal =\n orientation === \"horizontal\" || orientation === \"both\";\n const vertical = orientation === \"vertical\" || orientation === \"both\";\n\n // Ignore Left/Right keys when metaKey or altKey modifier is also pressed,\n // as the user may be trying to navigate back or forward in the browser.\n switch (event.key) {\n case \"ArrowDown\":\n if (vertical) {\n handled = event.altKey ? this[goEnd]() : this[goDown]();\n }\n break;\n\n case \"ArrowLeft\":\n if (horizontal && !event.metaKey && !event.altKey) {\n handled = this[goLeft]();\n }\n break;\n\n case \"ArrowRight\":\n if (horizontal && !event.metaKey && !event.altKey) {\n handled = this[goRight]();\n }\n break;\n\n case \"ArrowUp\":\n if (vertical) {\n handled = event.altKey ? this[goStart]() : this[goUp]();\n }\n break;\n\n case \"End\":\n handled = this[goEnd]();\n break;\n\n case \"Home\":\n handled = this[goStart]();\n break;\n }\n }\n\n // Prefer mixin result if it's defined, otherwise use base result.\n return handled || (super[keydown] && super[keydown](event)) || false;\n }\n }\n\n return KeyboardDirection;\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n defaultTabIndex,\n delegatesFocus,\n keydown,\n raiseChangeEvents,\n render,\n rendering,\n setState,\n state,\n} from \"./internal.js\";\n\n/**\n * Manages keyboard handling for a component.\n *\n * This mixin handles several keyboard-related features.\n *\n * First, it wires up a single keydown event handler that can be shared by\n * multiple mixins on a component. The event handler will invoke a `keydown`\n * method with the event object, and any mixin along the prototype chain that\n * wants to handle that method can do so.\n *\n * If a mixin wants to indicate that keyboard event has been handled, and that\n * other mixins should *not* handle it, the mixin's `keydown` handler should\n * return a value of true. The convention that seems to work well is that a\n * mixin should see if it wants to handle the event and, if not, then ask the\n * superclass to see if it wants to handle the event. This has the effect of\n * giving the mixin that was applied last the first chance at handling a\n * keyboard event.\n *\n * Example:\n *\n * [keydown](event) {\n * let handled;\n * switch (event.key) {\n * // Handle the keys you want, setting handled = true if appropriate.\n * }\n * // Prefer mixin result if it's defined, otherwise use base result.\n * return handled || (super[keydown] && super[keydown](event));\n * }\n *\n * A second feature provided by this mixin is that it implicitly makes the\n * component a tab stop if it isn't already, by setting `tabindex` to 0. This\n * has the effect of adding the component to the tab order in document order.\n *\n * @module KeyboardMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function KeyboardMixin(Base) {\n // The class prototype added by the mixin.\n class Keyboard extends Base {\n constructor() {\n // @ts-ignore\n super();\n this.addEventListener(\"keydown\", async (event) => {\n this[raiseChangeEvents] = true;\n // For use with FocusVisibleMixin.\n if (!this[state].focusVisible) {\n // The user may have begun interacting with this element using the\n // mouse/touch, but has now begun using the keyboard, so show focus.\n this[setState]({\n focusVisible: true,\n });\n }\n const handled = this[keydown](event);\n if (handled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n await Promise.resolve();\n this[raiseChangeEvents] = false;\n });\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"tabindex\") {\n // Parse the passed value, which could be a string or null.\n let parsed;\n if (newValue === null) {\n // tabindex attribute was removed.\n parsed = -1;\n } else {\n parsed = Number(newValue);\n if (isNaN(parsed)) {\n // Non-numeric tabindex falls back to default value (if defined).\n parsed = this[defaultTabIndex] ? this[defaultTabIndex] : 0;\n }\n }\n this.tabIndex = parsed;\n } else {\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n // @ts-ignore\n get [defaultState]() {\n // If we're using DelegateFocusMixin, we don't need or want to set a\n // tabindex on the host; we'll rely on the inner shadow elements to take\n // the focus and raise keyboard events. Otherwise, we do set a tabindex on\n // the host, so that we can get keyboard events.\n const tabIndex = this[delegatesFocus] ? -1 : 0;\n const state = Object.assign(super[defaultState] || {}, {\n tabIndex,\n });\n\n return state;\n }\n\n /**\n * See the [symbols](internal#internal.keydown) documentation for details.\n */\n [keydown](/** @type {KeyboardEvent} */ event) {\n if (super[keydown]) {\n return super[keydown](event);\n }\n return false;\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n if (changed.tabIndex) {\n this.tabIndex = this[state].tabIndex;\n }\n }\n\n // Record our own notion of the state of the tabIndex property so we can\n // rerender if necessary.\n get tabIndex() {\n return super.tabIndex;\n }\n set tabIndex(tabIndex) {\n // If value has changed, invoke the super setter.\n if (super.tabIndex !== tabIndex) {\n super.tabIndex = tabIndex;\n }\n\n // The tabIndex setter can get called during rendering when we render our\n // own notion of the tabIndex state, in which case we don't need or want\n // to set state again.\n if (!this[rendering]) {\n // Record the new tabIndex in our state.\n this[setState]({\n tabIndex,\n });\n }\n }\n }\n\n return Keyboard;\n}\n","import { forwardFocus } from \"../core/dom.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\";\nimport { transmute } from \"../core/template.js\";\nimport DelegateFocusMixin from \"./DelegateFocusMixin.js\";\nimport DelegateInputLabelMixin from \"./DelegateInputLabelMixin.js\";\nimport DelegateInputSelectionMixin from \"./DelegateInputSelectionMixin.js\";\nimport DisabledMixin from \"./DisabledMixin.js\";\nimport FocusVisibleMixin from \"./FocusVisibleMixin.js\";\nimport FormElementMixin from \"./FormElementMixin.js\";\nimport {\n defaultState,\n goDown,\n goUp,\n ids,\n inputDelegate,\n raiseChangeEvents,\n render,\n rendered,\n setState,\n shadowRoot,\n state,\n template,\n} from \"./internal.js\";\nimport KeyboardDirectionMixin from \"./KeyboardDirectionMixin.js\";\nimport KeyboardMixin from \"./KeyboardMixin.js\";\n\nconst Base = DelegateFocusMixin(\n DelegateInputLabelMixin(\n DelegateInputSelectionMixin(\n DisabledMixin(\n FocusVisibleMixin(\n FormElementMixin(\n KeyboardDirectionMixin(KeyboardMixin(ReactiveElement))\n )\n )\n )\n )\n )\n);\n\n/**\n * Input with buttons to increase or decrease a value\n *\n * @inherits ReactiveElement\n * @mixes DelegateFocusMixin\n * @mixes DelegateInputLabelMixin\n * @mixes DelegateInputSelectionMixin\n * @mixes DisabledMixin\n * @mixes FocusVisibleMixin\n * @mixes FormElementMixin\n * @mixes KeyboardDirectionMixin\n * @mixes KeyboardMixin\n * @part {input} input - the text input portion of the spin box\n * @part {button} button - the up and down buttons\n * @part up-button - the up button\n * @part down-button - the down button\n */\nexport class SpinBox extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n buttonPartType: \"button\",\n canGoDown: true,\n canGoUp: true,\n inputPartType: \"input\",\n orientation: \"vertical\",\n step: 1,\n stepSelect: false,\n value: \"\",\n });\n }\n\n [goDown]() {\n if (super[goDown]) {\n super[goDown]();\n }\n this.stepDown();\n return true; // Handled\n }\n\n [goUp]() {\n if (super[goUp]) {\n super[goUp]();\n }\n this.stepUp();\n return true; // Handled\n }\n\n get [inputDelegate]() {\n return this[ids].input;\n }\n\n [render](changed) {\n super[render](changed);\n\n renderParts(this[shadowRoot], this[state], changed);\n\n // Wire up handlers on new buttons.\n if (changed.buttonPartType) {\n this[ids].downButton.addEventListener(\"mousedown\", () => {\n this[raiseChangeEvents] = true;\n this.stepDown();\n this[raiseChangeEvents] = false;\n });\n this[ids].upButton.addEventListener(\"mousedown\", () => {\n this[raiseChangeEvents] = true;\n this.stepUp();\n this[raiseChangeEvents] = false;\n });\n }\n\n // Wire up event handler on new input.\n if (changed.inputPartType) {\n // Wire up handler on new input.\n this[ids].input.addEventListener(\"input\", () => {\n this[raiseChangeEvents] = true;\n this.value = /** @type {any} */ (this[ids].input).value;\n this[raiseChangeEvents] = false;\n });\n }\n\n // When buttons are clicked, keep focus on input.\n if (changed.buttonPartType || changed.inputPartType) {\n const input = this[ids].input;\n const downButton = this[ids].downButton;\n if (downButton instanceof HTMLElement && input instanceof HTMLElement) {\n forwardFocus(downButton, input);\n }\n const upButton = this[ids].upButton;\n if (upButton instanceof HTMLElement && input instanceof HTMLElement) {\n forwardFocus(upButton, input);\n }\n }\n\n const { disabled, value } = this[state];\n\n // When disabled, disable inner elements.\n // Also, disable up or down button if we're at max or min.\n if (changed.canGoUp || changed.canGoDown || changed.disabled) {\n const { canGoUp, canGoDown } = this[state];\n if (\"disabled\" in this[ids].input) {\n /** @type {any} */ (this[ids].input).disabled = disabled;\n }\n if (\"disabled\" in this[ids].downButton) {\n const upDisabled = disabled || !canGoUp;\n /** @type {any} */ (this[ids].upButton).disabled = upDisabled;\n }\n if (\"disabled\" in this[ids].upButton) {\n const downDisabled = disabled || !canGoDown;\n /** @type {any} */ (this[ids].downButton).disabled = downDisabled;\n }\n }\n\n // Render value state to input.\n if (changed.value) {\n /** @type {any} */ (this[ids].input).value = value;\n }\n }\n\n [rendered](changed) {\n super[rendered](changed);\n\n // If we changed the value as a result of stepDown/stepUp, put the cursor\n // at the end of the new text.\n const { stepSelect, value } = this[state];\n if (changed.value && stepSelect) {\n /** @type {any} */ const input = this[ids].input;\n const length = value.length;\n input.selectionStart = length;\n input.selectionEnd = length;\n this[setState]({ stepSelect: false });\n }\n\n if (changed.value && this[raiseChangeEvents]) {\n /**\n * Raised when the `value` property changes.\n *\n * @event change\n */\n const event = new CustomEvent(\"change\", {\n bubbles: true,\n detail: { value },\n });\n this.dispatchEvent(event);\n }\n }\n\n stepDown() {\n // Set selection after we've rendered.\n this[setState]({ stepSelect: true });\n }\n\n stepUp() {\n // Set selection after we've rendered.\n this[setState]({ stepSelect: true });\n }\n\n get [template]() {\n const result = super[template];\n result.content.append(fragmentFrom.html`\n <style>\n :host {\n display: inline-grid;\n }\n\n [part~=\"input\"] {\n grid-row-end: 3;\n grid-row-start: 1;\n outline: none;\n text-align: right;\n }\n\n [part~=\"spin-button\"] {\n grid-column: 2;\n user-select: none;\n }\n </style>\n <div id=\"input\" part=\"input\"></div>\n <div id=\"upButton\" part=\"spin-button up-button\" tabindex=\"-1\"></div>\n <div id=\"downButton\" part=\"spin-button down-button\" tabindex=\"-1\"></div>\n `);\n return result;\n }\n\n /**\n * The text entered in the spin box.\n *\n * @type {string}\n * @default \"\"\n */\n get value() {\n return this[state].value;\n }\n set value(value) {\n this[setState]({\n value: String(value),\n });\n }\n}\n\n/**\n * Render parts for the template or an instance.\n *\n * @private\n * @param {DocumentFragment} root\n * @param {PlainObject} state\n * @param {ChangedFlags} [changed]\n */\nfunction renderParts(root, state, changed) {\n if (!changed || changed.inputPartType) {\n const { buttonPartType } = state;\n const buttons = root.querySelectorAll('[part~=\"spin-button\"]');\n buttons.forEach((button) => {\n transmute(button, buttonPartType);\n });\n }\n if (!changed || changed.inputPartType) {\n const { inputPartType } = state;\n const input = root.getElementById(\"input\");\n if (input) {\n transmute(input, inputPartType);\n }\n }\n}\n\nexport default SpinBox;\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { inputDelegate } from \"./internal.js\";\n\n/**\n * Delegates text selection methods and properties to an inner input-type element\n *\n * This mixin makes it easy for you to support the complete set standard DOM\n * APIs for selecting text by delegating those methods to an inner input-type\n * element.\n *\n * You can identify which inner input element selection should be delegated to\n * by defining an `internal.inputDelegate` property and returning the desired\n * inner input.\n *\n * @module DelegateInputSelectionMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function DelegateInputSelectionMixin(Base) {\n // The class prototype added by the mixin.\n class DelegateInputSelection extends Base {\n /**\n * Selects all the text.\n *\n * See the standard [select](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select)\n * documentation for details.\n */\n select() {\n this[inputDelegate].select();\n }\n\n /**\n * The end index of the selected text.\n *\n * See the standard [input](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement)\n * element documentation for details.\n */\n get selectionEnd() {\n return this[inputDelegate].selectionEnd;\n }\n set selectionEnd(selectionEnd) {\n this[inputDelegate].selectionEnd = selectionEnd;\n }\n\n /**\n * The beginning index of the selected text.\n *\n * See the standard [input](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement)\n * element documentation for details.\n */\n get selectionStart() {\n return this[inputDelegate].selectionStart;\n }\n set selectionStart(selectionStart) {\n this[inputDelegate].selectionStart = selectionStart;\n }\n\n /**\n * Replaces a range of text.\n *\n * See the standard [setRangeText](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setRangeText)\n * documentation for details.\n */\n setRangeText(...params) {\n this[inputDelegate].setRangeText(...params);\n }\n\n /**\n * Sets the start and end positions of the current text selection.\n *\n * See the standard [setSelectionRange](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * documentation for details.\n */\n setSelectionRange(...params) {\n this[inputDelegate].setSelectionRange(...params);\n /** @type {HTMLInputElement} */ const e = document.createElement(\"input\");\n e.select;\n }\n }\n\n return DelegateInputSelection;\n}\n","import {\n defaultState,\n setState,\n state,\n stateEffects\n} from 'elix/src/base/internal.js'\nimport {\n SpinBox\n} from 'elix/src/base/SpinBox.js'\n\n/**\n * @class NumberSpinBox\n */\nclass NumberSpinBox extends SpinBox {\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (name === 'max') {\n this.max = parseFloat(newValue)\n } else if (name === 'min') {\n this.min = parseFloat(newValue)\n } else if (name === 'step') {\n this.step = parseFloat(newValue)\n } else {\n super.attributeChangedCallback(name, oldValue, newValue)\n }\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n get [defaultState] () {\n return Object.assign(super[defaultState], {\n max: null,\n min: null,\n step: 1\n })\n }\n\n /**\n * @function formatValue\n * Format the numeric value as a string.\n *\n * This is used after incrementing/decrementing the value to reformat the\n * value as a string.\n *\n * @param {number} value\n * @param {number} precision\n * @returns {number}\n */\n formatValue (value, precision) {\n return Number(value).toFixed(precision)\n }\n\n /**\n * The maximum allowable value of the `value` property.\n *\n * @type {number|null}\n * @default 1\n */\n get max () {\n return this[state].max\n }\n\n /**\n * The maximum allowable value of the `value` property.\n *\n * @type {number|null}\n * @default 1\n */\n set max (max) {\n this[setState]({\n max\n })\n }\n\n /**\n * The minimum allowable value of the `value` property.\n *\n * @type {number|null}\n * @default 1\n */\n get min () {\n return this[state].min\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set min (min) {\n this[setState]({\n min\n })\n }\n\n /**\n * @function parseValue\n * @param {number} value\n * @param {number} precision\n * @returns {int}\n */\n parseValue (value, precision) {\n const parsed = precision === 0 ? parseInt(value) : parseFloat(value)\n return isNaN(parsed) ? 0 : parsed\n }\n\n /**\n * @function stateEffects\n * @param {any} state\n * @param {any} changed\n * @returns {any}\n */\n [stateEffects] (state, changed) {\n const effects = super[stateEffects]\n // If step changed, calculate its precision (number of digits after\n // the decimal).\n if (changed.step) {\n const {\n step\n } = state\n const decimalRegex = /\\.(\\d)+$/\n const match = decimalRegex.exec(String(step))\n const precision = match && match[1] ? match[1].length : 0\n Object.assign(effects, {\n precision\n })\n }\n\n if (changed.max || changed.min || changed.value) {\n // The value is valid if it falls between the min and max.\n // TODO: We need a way to let other classes/mixins on the prototype chain\n // contribute to validity -- if someone else thinks the value is invalid,\n // we should respect that, even if the value falls within the min/max\n // bounds.\n const {\n max,\n min,\n precision,\n value\n } = state\n const parsed = parseInt(value, precision)\n if (value !== '' && isNaN(parsed)) {\n Object.assign(effects, {\n valid: false,\n validationMessage: 'Value must be a number'\n })\n } else if (!(max === null || parsed <= max)) {\n Object.assign(effects, {\n valid: false,\n validationMessage: `Value must be less than or equal to ${max}.`\n })\n } else if (!(min === null || parsed >= min)) {\n Object.assign(effects, {\n valid: false,\n validationMessage: `Value must be greater than or equal to ${min}.`\n })\n } else {\n Object.assign(effects, {\n valid: true,\n validationMessage: ''\n })\n }\n // We can only go up if we're below max.\n Object.assign(effects, {\n canGoUp: isNaN(parsed) || state.max === null || parsed <= state.max\n })\n\n // We can only go down if we're above min.\n Object.assign(effects, {\n canGoDown: isNaN(parsed) || state.min === null || parsed >= state.min\n })\n }\n\n return effects\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get step () {\n return this[state].step\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set step (step) {\n if (!isNaN(step)) {\n this[setState]({\n step\n })\n }\n }\n\n /**\n * @function stepDown\n * @returns {void}\n */\n stepDown () {\n super.stepDown()\n const {\n max,\n precision,\n value\n } = this[state]\n let result = this.parseValue(value, precision) - this.step\n if (max !== null) {\n result = Math.min(result, max)\n }\n const {\n min\n } = this[state]\n if (min === null || result >= min) {\n this.value = this.formatValue(result, precision)\n }\n }\n\n /**\n * @function stepUp\n * @returns {void}\n */\n stepUp () {\n super.stepUp()\n const {\n min,\n precision,\n value\n } = this[state]\n let result = this.parseValue(value, precision) + this.step\n if (min !== null) {\n result = Math.max(result, min)\n }\n const {\n max\n } = this[state]\n if (max === null || result <= max) {\n this.value = this.formatValue(result, precision)\n }\n }\n}\n\nexport default NumberSpinBox\n","import PlainSpinBoxMixin from 'elix/src/plain/PlainSpinBoxMixin.js'\nimport NumberSpinBox from '../base/NumberSpinBox.js'\n\n/**\n * @class PlainNumberSpinBox\n */\nclass PlainNumberSpinBox extends PlainSpinBoxMixin(NumberSpinBox) {}\n\nexport default PlainNumberSpinBox\n","import { defaultState, template } from \"../base/internal.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport PlainInput from \"./PlainInput.js\";\nimport PlainRepeatButton from \"./PlainRepeatButton.js\";\n\n/**\n * SpinBox design in the Plain reference design system\n *\n * @module PlainSpinBoxMixin\n * @param {Constructor<ReactiveElement>} Base\n * @part {PlainRepeatButton} button\n * @part {PlainInput} input\n */\nexport default function PlainSpinBoxMixin(Base) {\n return class PlainSpinBox extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n buttonPartType: PlainRepeatButton,\n inputPartType: PlainInput,\n });\n }\n\n get [template]() {\n const result = super[template];\n const upButton = result.content.getElementById(\"upButton\");\n upButton.textContent = \"▲\";\n const downButton = result.content.getElementById(\"downButton\");\n downButton.textContent = \"▼\";\n result.content.append(fragmentFrom.html`\n <style>\n :host {\n background: white;\n border: 1px solid gray;\n box-sizing: border-box;\n }\n\n [part~=\"input\"] {\n background: transparent;\n border: none;\n width: 4em;\n }\n\n [part~=\"spin-button\"] {\n background: transparent;\n border: 1px solid gray;\n box-sizing: border-box;\n font-size: 0.6em;\n padding: 2px;\n }\n\n [part~=\"up-button\"] {\n border-right: none;\n border-top: none;\n }\n\n [part~=\"down-button\"] {\n border-bottom: none;\n border-right: none;\n border-top: none;\n }\n </style>\n `);\n return result;\n }\n };\n}\n","import PlainNumberSpinBox from '../src/plain/PlainNumberSpinBox.js'\n/**\n * @class ElixNumberSpinBox\n */\nexport default class ElixNumberSpinBox extends PlainNumberSpinBox {}\n\ncustomElements.define('elix-number-spin-box', ElixNumberSpinBox)\n","/* globals svgEditor */\nimport '../dialogs/se-elix/define/NumberSpinBox.js'\nimport { t } from '../locale.js'\n\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n div {\n height: 24px;\n margin: 5px 1px;\n padding: 3px;\n }\n div.imginside {\n width: var(--global-se-spin-input-width);\n }\n img {\n position: relative;\n right: -4px;\n top: 2px;\n }\n span {\n bottom: -0.5em;\n right: -4px;\n position: relative;\n margin-left: -4px;\n margin-right: 1px;\n color: #fff;\n }\n elix-number-spin-box {\n background-color: var(--input-color);\n border-radius: 3px;\n height: 20px;\n margin-top: 1px;\n vertical-align: top;\n }\n elix-number-spin-box::part(spin-button) {\n padding: 0px;\n }\n elix-number-spin-box::part(input) {\n width: 3em;\n }\n elix-number-spin-box{\n width: 54px;\n height: 24px;\n }\n </style>\n <div>\n <img alt=\"icon\" width=\"24\" height=\"24\" aria-labelledby=\"label\" />\n <span id=\"label\">label</span>\n <elix-number-spin-box min=\"1\" step=\"1\"></elix-number-spin-box>\n </div>\n`\n\n/**\n * @class SESpinInput\n */\nexport class SESpinInput extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n // locate the component\n this.$div = this._shadowRoot.querySelector('div')\n this.$img = this._shadowRoot.querySelector('img')\n this.$label = this.shadowRoot.getElementById('label')\n this.$event = new CustomEvent('change')\n this.$input = this._shadowRoot.querySelector('elix-number-spin-box')\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['value', 'label', 'src', 'size', 'min', 'max', 'step', 'title']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'title':\n {\n const shortcut = this.getAttribute('shortcut')\n this.$div.setAttribute('title', `${t(newValue)} ${shortcut ? `[${t(shortcut)}]` : ''}`)\n }\n break\n case 'src':\n this.$img.setAttribute('src', this.imgPath + '/' + newValue)\n this.$label.remove()\n this.$div.classList.add('imginside')\n break\n case 'size':\n // access to the underlying input box\n this.$input.shadowRoot.getElementById('input').size = newValue\n // below seems mandatory to override the default width style that takes precedence on size\n this.$input.shadowRoot.getElementById('input').style.width = 'unset'\n break\n case 'step':\n this.$input.setAttribute('step', newValue)\n break\n case 'min':\n this.$input.setAttribute('min', newValue)\n break\n case 'max':\n this.$input.setAttribute('max', newValue)\n break\n case 'label':\n this.$label.textContent = t(newValue)\n this.$img.remove()\n break\n case 'value':\n this.$input.value = newValue\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get label () {\n return this.getAttribute('label')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set label (value) {\n this.setAttribute('label', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get value () {\n return this.$input.value\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set value (value) {\n this.$input.value = value\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get src () {\n return this.getAttribute('src')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set src (value) {\n this.setAttribute('src', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get size () {\n return this.getAttribute('size')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set size (value) {\n this.setAttribute('size', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n const shadow = this.$input.shadowRoot\n const childNodes = Array.from(shadow.childNodes)\n childNodes.forEach((childNode) => {\n if (childNode?.id === 'input') {\n childNode.addEventListener('keyup', (e) => {\n e.preventDefault()\n if (!isNaN(e.target.value)) {\n this.value = e.target.value\n this.dispatchEvent(this.$event)\n }\n })\n }\n })\n this.$input.addEventListener('change', (e) => {\n e.preventDefault()\n this.value = e.target.value\n this.dispatchEvent(this.$event)\n })\n svgEditor.$click(this.$input, (e) => {\n e.preventDefault()\n this.value = e.target.value\n this.dispatchEvent(this.$event)\n })\n }\n}\n\n// Register\ncustomElements.define('se-spin-input', SESpinInput)\n","/* globals svgEditor */\n/* eslint-disable max-len */\nconst palette = [\n // Todo: Make into configuration item?\n 'none', '#000000', '#3f3f3f', '#7f7f7f', '#bfbfbf', '#ffffff',\n '#ff0000', '#ff7f00', '#ffff00', '#7fff00',\n '#00ff00', '#00ff7f', '#00ffff', '#007fff',\n '#0000ff', '#7f00ff', '#ff00ff', '#ff007f',\n '#7f0000', '#7f3f00', '#7f7f00', '#3f7f00',\n '#007f00', '#007f3f', '#007f7f', '#003f7f',\n '#00007f', '#3f007f', '#7f007f', '#7f003f',\n '#ffaaaa', '#ffd4aa', '#ffffaa', '#d4ffaa',\n '#aaffaa', '#aaffd4', '#aaffff', '#aad4ff',\n '#aaaaff', '#d4aaff', '#ffaaff', '#ffaad4'\n]\n\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n .square {\n height: 15px;\n width: 15px;\n float: left;\n }\n #palette_holder {\n overflow: hidden;\n padding: 4px;\n background: #f0f0f0;\n border-radius: 3px;\n z-index: 2;\n }\n \n #js-se-palette {\n float: left;\n width: 632px;\n height: 16px;\n }\n \n div.palette_item {\n height: 15px;\n width: 15px;\n float: left;\n }\n \n div.palette_item:first-child {\n background: white;\n }\n \n </style>\n <div id=\"palette_holder\" title=\"\">\n <div id=\"js-se-palette\">\n </div>\n </div>\n`\n\n/**\n * @class SEPalette\n */\nexport class SEPalette extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$strip = this._shadowRoot.querySelector('#js-se-palette')\n palette.forEach((rgb) => {\n const newDiv = document.createElement('div')\n newDiv.classList.add('square')\n if (rgb === 'none') {\n const img = document.createElement('img')\n img.src = 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgY2xhc3M9InN2Z19pY29uIj48c3ZnIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiNkNDAwMDAiIGlkPSJzdmdfOTAiIHkyPSIyNCIgeDI9IjI0IiB5MT0iMCIgeDE9IjAiLz4KICAgIDxsaW5lIGlkPSJzdmdfOTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2Q0MDAwMCIgeTI9IjI0IiB4Mj0iMCIgeTE9IjAiIHgxPSIyNCIvPgogIDwvc3ZnPjwvc3ZnPg=='\n img.style.width = '15px'\n img.style.height = '15px'\n newDiv.append(img)\n } else {\n newDiv.style.backgroundColor = rgb\n }\n newDiv.dataset.rgb = rgb\n svgEditor.$click(newDiv, (evt) => {\n evt.preventDefault()\n // shift key or right click for stroke\n const picker = evt.shiftKey || evt.button === 2 ? 'stroke' : 'fill'\n let color = newDiv.dataset.rgb\n // Webkit-based browsers returned 'initial' here for no stroke\n if (color === 'none' || color === 'transparent' || color === 'initial') {\n color = 'none'\n }\n const paletteEvent = new CustomEvent('change', { detail: { picker, color }, bubbles: false })\n this.dispatchEvent(paletteEvent)\n })\n this.$strip.append(newDiv)\n })\n }\n\n /**\n * @function init\n * @param {any} name\n * @returns {void}\n */\n init (i18next) {\n this.setAttribute('ui-palette_info', i18next.t('ui.palette_info'))\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['ui-palette_info']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n let node\n if (name === 'ui-palette_info') {\n node = this._shadowRoot.querySelector('#palette_holder')\n node.setAttribute('title', newValue)\n }\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n }\n}\n\n// Register\ncustomElements.define('se-palette', SEPalette)\n","import ReactiveElement from \"../core/ReactiveElement.js\";\nimport CurrentMixin from \"./CurrentMixin.js\";\nimport DisabledMixin from \"./DisabledMixin.js\";\nimport SelectableMixin from \"./SelectableMixin.js\";\n\n/**\n * A choice in a menu\n *\n * This class is a convenient way to popuplate a [Menu](Menu) with items that\n * exhibit an appearance roughly consistent with operating system menu items.\n * Use of this class is not required, however -- a `Menu` can contain any type\n * of item you want.\n *\n * @inherits ReactiveElement\n * @mixes CurrentMixin\n * @mixes DisabledMixin\n * @mixes SelectableMixin\n */\nclass MenuItem extends CurrentMixin(\n DisabledMixin(SelectableMixin(ReactiveElement))\n) {}\n\nexport default MenuItem;\n","import { booleanAttributeValue } from \"../core/AttributeMarshallingMixin.js\";\nimport { setInternalState } from \"../core/dom.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n nativeInternals,\n render,\n rendered,\n setState,\n state,\n} from \"./internal.js\";\n\n/**\n * Tracks whether an item is the current item.\n *\n * @module CurrentMixin\n * @state current\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function CurrentMixin(Base) {\n // The class prototype added by the mixin.\n return class Current extends Base {\n constructor() {\n super();\n /** @type {any} */ const cast = this;\n if (!this[nativeInternals] && cast.attachInternals) {\n this[nativeInternals] = cast.attachInternals();\n }\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"current\") {\n const value = booleanAttributeValue(name, newValue);\n if (this.current !== value) {\n this.current = value;\n }\n } else {\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n current: false,\n });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n if (changed.current) {\n const { current } = this[state];\n setInternalState(this, \"current\", current);\n }\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n // TODO: How do we know whether to raise this if selection is set by Menu? */\n if (changed.current /* && this[raiseChangeEvents] */) {\n const { current } = this[state];\n /**\n * Raised when the `current` property changes.\n *\n * @event currentchange\n */\n const event = new CustomEvent(\"currentchange\", {\n bubbles: true,\n detail: { current },\n });\n this.dispatchEvent(event);\n }\n }\n\n /**\n * True if the element is currently current.\n *\n * @type {boolean}\n * @default false\n */\n get current() {\n return this[state].current;\n }\n set current(current) {\n // Note: AttributeMarshallingMixin will recognize `current` as the name of\n // attribute that should be parsed as a boolean attribute, and so will\n // handling parsing it for us.\n this[setState]({ current });\n }\n };\n}\n","import { setInternalState } from \"../core/dom.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n nativeInternals,\n render,\n rendered,\n setState,\n state,\n} from \"./internal.js\";\n\n/**\n * Tracks whether the element is currently selected.\n *\n * @module SelectableMixin\n * @state selected\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function SelectableMixin(Base) {\n // The class prototype added by the mixin.\n return class Selectable extends Base {\n constructor() {\n super();\n /** @type {any} */ const cast = this;\n if (!this[nativeInternals] && cast.attachInternals) {\n this[nativeInternals] = cast.attachInternals();\n }\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n selected: false,\n });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n if (changed.selected) {\n const { selected } = this[state];\n setInternalState(this, \"selected\", selected);\n }\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n // TODO: How do we know whether to raise this if selection is set by Menu? */\n if (changed.selected /* && this[raiseChangeEvents] */) {\n const { selected } = this[state];\n /**\n * Raised when the `selected` property changes.\n *\n * @event selectedchange\n */\n const event = new CustomEvent(\"selectedchange\", {\n bubbles: true,\n detail: { selected },\n });\n this.dispatchEvent(event);\n }\n }\n\n /**\n * True if the element is currently selected.\n *\n * @type {boolean}\n * @default false\n */\n get selected() {\n return this[state].selected;\n }\n set selected(selected) {\n // Note: AttributeMarshallingMixin will recognize `selected` as the name of\n // attribute that should be parsed as a boolean attribute, and so will\n // handling parsing it for us.\n this[setState]({ selected });\n }\n };\n}\n","import { template } from \"../base/internal.js\";\nimport MenuItem from \"../base/MenuItem.js\";\nimport { templateFrom } from \"../core/htmlLiterals.js\";\n\n/**\n * MenuItem component in the Plain reference design system\n *\n * @inherits MenuItem\n */\nclass PlainMenuItem extends MenuItem {\n get [template]() {\n // Apply variety of system fonts.\n // Checkmark icon from Material Design.\n return templateFrom.html`\n <style>\n :host {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n font-size: 10pt;\n white-space: nowrap;\n }\n\n :host([disabled]) {\n opacity: 0.5;\n }\n\n #checkmark {\n height: 1em;\n visibility: hidden;\n width: 1em;\n }\n\n :host([selected]) #checkmark {\n visibility: visible;\n }\n </style>\n <svg id=\"checkmark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"4 6 18 12\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z\"/>\n </svg>\n <slot></slot>\n `;\n }\n}\n\nexport default PlainMenuItem;\n","import PlainMenuItem from \"../src/plain/PlainMenuItem.js\";\nexport default class ElixMenuItem extends PlainMenuItem {}\ncustomElements.define(\"elix-menu-item\", ElixMenuItem);\n","/**\n * Helpers related to universal accessibility\n *\n * Universal accessibility is a core goal of the Elix project. These helpers are\n * used by mixins like [AriaListMixin](AriaListMixin) and\n * [AriaMenuMixin](AriaMenuMixin) to support accessibility via ARIA.\n *\n * @module accessibility\n */\n\n// Used by ensureId\nconst generatedIdKey = Symbol(\"generatedId\");\nlet generatedIdCount = 0;\n\n/**\n * A dictionary mapping built-in HTML elements to their default ARIA role.\n *\n * Example: `defaultAriaRole.ol` returns \"list\", since the default ARIA role\n * for an `ol` (ordered list) element is \"list\".\n */\nexport const defaultAriaRole = {\n a: \"link\",\n article: \"region\",\n button: \"button\",\n h1: \"sectionhead\",\n h2: \"sectionhead\",\n h3: \"sectionhead\",\n h4: \"sectionhead\",\n h5: \"sectionhead\",\n h6: \"sectionhead\",\n hr: \"sectionhead\",\n iframe: \"region\",\n link: \"link\",\n menu: \"menu\",\n ol: \"list\",\n option: \"option\",\n output: \"liveregion\",\n progress: \"progressbar\",\n select: \"select\",\n table: \"table\",\n td: \"td\",\n textarea: \"textbox\",\n th: \"th\",\n ul: \"list\",\n};\n\n/**\n * If the given element already has an ID, return it. If not, generate a\n * previously unused ID and return that.\n *\n * @param {Element} element\n * @returns {string}\n */\nexport function ensureId(element) {\n let id = element.id || element[generatedIdKey];\n if (!id) {\n id = `_id${generatedIdCount++}`;\n // Remember that we generated an ID for this element.\n element[generatedIdKey] = id;\n }\n return id;\n}\n","import { selfAndComposedAncestors } from \"../core/dom.js\";\nimport { shadowRoot } from \"./internal.js\";\n\n/**\n * Utilities for working with scrolling.\n *\n * @module defaultScrollTarget\n */\n\n/**\n * Returns true if the given target or any of its ancestors can be scrolled\n * in the indicated direction.\n *\n * This is used, e.g., by gesture event handlers to predict if the default\n * behavior for a given event is likely to result in scrolling.\n *\n * @param {EventTarget} target\n * @param {'horizontal'|'vertical'} orientation\n * @param {boolean} downOrRight\n */\nexport function canScrollInDirection(target, orientation, downOrRight) {\n if (!(target instanceof Node)) {\n return false;\n }\n for (const ancestor of selfAndComposedAncestors(target)) {\n if (ancestor instanceof HTMLElement) {\n const style = getComputedStyle(ancestor);\n const vertical = orientation === \"vertical\";\n const scrollAxisMatch =\n (vertical &&\n (style.overflowY === \"scroll\" || style.overflowY === \"auto\")) ||\n (!vertical &&\n (style.overflowX === \"scroll\" || style.overflowX === \"auto\"));\n if (scrollAxisMatch) {\n // Found an ancestor that can potentially scroll in this orientation.\n const scrollEdge = vertical ? \"scrollTop\" : \"scrollLeft\";\n if (!downOrRight && ancestor[scrollEdge] > 0) {\n // Target has room to scroll up or left.\n return true;\n }\n const scrollLength = vertical ? \"scrollHeight\" : \"scrollWidth\";\n const clientLength = vertical ? \"clientHeight\" : \"clientWidth\";\n const scrollMax = ancestor[scrollLength] - ancestor[clientLength];\n if (downOrRight && ancestor[scrollEdge] < scrollMax) {\n // Target has room to scroll down or right.\n return true;\n }\n }\n }\n }\n return false;\n}\n\n/**\n * This helper returns a guess as to what portion of the given element can be\n * scrolled. This is used by [CursorInViewMixin](CursorInViewMixin) to\n * provide a default implementation of [scrollTarget].\n *\n * If the element has a shadow root containing a default (unnamed) slot, this\n * returns the first ancestor of that slot that has either `overflow-x` or\n * `overflow-y` styled as `auto` or `scroll`. If the element has no default\n * slot, or no scrolling ancestor is found, the element itself is returned.\n *\n * @param {Element} element the component to examine for a scrolling\n * element\n * @returns {Element}\n */\nexport function defaultScrollTarget(element) {\n const root = element[shadowRoot];\n const slot = root && root.querySelector(\"slot:not([name])\");\n const scrollingParent =\n slot &&\n slot.parentNode instanceof Element &&\n getScrollableElement(slot.parentNode);\n return scrollingParent || element;\n}\n\n/**\n * Return true if the given element can be scrolled.\n *\n * @private\n * @param {HTMLElement} element\n */\nfunction isElementScrollable(element) {\n const style = getComputedStyle(element);\n const overflowX = style.overflowX;\n const overflowY = style.overflowY;\n return (\n overflowX === \"scroll\" ||\n overflowX === \"auto\" ||\n overflowY === \"scroll\" ||\n overflowY === \"auto\"\n );\n}\n\n/**\n * If the given element can be scrolled, return that. If not, return the closest\n * ancestor that can be scrolled. If no such ancestor is found, return null.\n *\n * @param {Element} node\n * @returns {Element|null}\n */\nexport function getScrollableElement(node) {\n for (const ancestor of selfAndComposedAncestors(node)) {\n if (ancestor instanceof HTMLElement && isElementScrollable(ancestor)) {\n return ancestor;\n }\n }\n return null;\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n closestAvailableItemIndex,\n defaultState,\n goFirst,\n goLast,\n goNext,\n goPrevious,\n setState,\n state,\n stateEffects,\n} from \"./internal.js\";\n\n/**\n * Tracks and navigates the current item in a set of items\n *\n * @module ItemsCursorMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function ItemsCursorMixin(Base) {\n // The class prototype added by the mixin.\n class ItemsCursor extends Base {\n /**\n * Look for an item which is available in the given state..\n *\n * The `options` parameter can accept options for:\n *\n * * `direction`: 1 to move forward, -1 to move backward\n * * `index`: the index to start at, defaults to `state.currentIndex`\n * * `wrap`: whether to wrap around the ends of the `items` array, defaults\n * to `state.cursorOperationsWrap`.\n *\n * If an available item was found, this returns its index. If no item was\n * found, this returns -1.\n *\n * @param {PlainObject} state\n * @param {PlainObject} options\n * @returns {number}\n */\n [closestAvailableItemIndex](state, options = {}) {\n const direction = options.direction !== undefined ? options.direction : 1;\n const index =\n options.index !== undefined ? options.index : state.currentIndex;\n const wrap =\n options.wrap !== undefined ? options.wrap : state.cursorOperationsWrap;\n\n const { items } = state;\n const count = items ? items.length : 0;\n\n if (count === 0) {\n // No items\n return -1;\n }\n\n if (wrap) {\n // Search with wrapping.\n\n // Modulus taking into account negative numbers.\n let i = ((index % count) + count) % count;\n const end = (((i - direction) % count) + count) % count;\n while (i !== end) {\n const available = state.availableItemFlags\n ? state.availableItemFlags[i]\n : true;\n if (available) {\n return i;\n }\n // See modulus note above.\n i = (((i + direction) % count) + count) % count;\n }\n } else {\n // Search without wrapping.\n for (let i = index; i >= 0 && i < count; i += direction) {\n const available = state.availableItemFlags\n ? state.availableItemFlags[i]\n : true;\n if (available) {\n return i;\n }\n }\n }\n\n return -1; // No item found\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n currentIndex: -1,\n desiredCurrentIndex: null,\n currentItem: null,\n currentItemRequired: false,\n cursorOperationsWrap: false,\n });\n }\n\n /**\n * Move to the first item in the set.\n *\n * @protected\n * @returns {Boolean} True if the current item changed, false if not.\n */\n [goFirst]() {\n if (super[goFirst]) {\n super[goFirst]();\n }\n return moveToIndex(this, 0, 1);\n }\n\n /**\n * Move to the last item in the set.\n *\n * @protected\n * @returns {Boolean} True if the current item changed, false if not.\n */\n [goLast]() {\n if (super[goLast]) {\n super[goLast]();\n }\n return moveToIndex(this, this[state].items.length - 1, -1);\n }\n\n /**\n * Move to the next item in the set.\n *\n * If no item is current, move to the first item.\n *\n * @protected\n * @returns {Boolean} True if the current item changed, false if not.\n */\n [goNext]() {\n if (super[goNext]) {\n super[goNext]();\n }\n const { currentIndex, items } = this[state];\n const start = currentIndex < 0 && items ? 0 : currentIndex + 1;\n return moveToIndex(this, start, 1);\n }\n\n /**\n * Move to the previous item in the set.\n *\n * If no item is current, move to the last item.\n *\n * @protected\n * @returns {Boolean} True if the current item changed, false if not.\n */\n [goPrevious]() {\n if (super[goPrevious]) {\n super[goPrevious]();\n }\n const { currentIndex, items } = this[state];\n const start =\n currentIndex < 0 && items ? items.length - 1 : currentIndex - 1;\n return moveToIndex(this, start, -1);\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects]\n ? super[stateEffects](state, changed)\n : {};\n\n // Ensure currentIndex is valid.\n if (\n changed.availableItemFlags ||\n changed.items ||\n changed.currentIndex ||\n changed.currentItemRequired\n ) {\n const {\n currentIndex,\n desiredCurrentIndex,\n currentItem,\n currentItemRequired,\n items,\n } = state;\n\n const count = items ? items.length : 0;\n\n // Determine the desired index: the one we want irrespective of whether\n // we have items or their availability.\n // Assume we'll stick with the same desired index we already have.\n let newDesiredIndex = desiredCurrentIndex;\n if (\n changed.items &&\n !changed.currentIndex &&\n currentItem &&\n count > 0 &&\n items[currentIndex] !== currentItem\n ) {\n // The items changed, and the item at the cursor is no longer the\n // same. See if we can find that item again in the list of items.\n const newItemIndex = items.indexOf(currentItem);\n if (newItemIndex >= 0) {\n // Found the item again; try to use its index.\n newDesiredIndex = newItemIndex;\n }\n } else if (\n changed.currentIndex &&\n ((currentIndex < 0 && currentItem !== null) ||\n (currentIndex >= 0 &&\n (count === 0 || items[currentIndex] !== currentItem)) ||\n desiredCurrentIndex === null)\n ) {\n // Someone explicitly moved the cursor, which trumps any previously\n // desired index.\n newDesiredIndex = currentIndex;\n }\n\n // If an item is required and there's no selection, we'll implicitly try\n // to get the first available item.\n if (currentItemRequired && newDesiredIndex < 0) {\n newDesiredIndex = 0;\n }\n\n // Now that we know what index we want, see how close we can get to it.\n let newIndex;\n if (newDesiredIndex < 0) {\n // All negative indices are equivalent to -1.\n newDesiredIndex = -1;\n newIndex = -1;\n } else if (count === 0) {\n // No items yet.\n newIndex = -1;\n } else {\n // See how close we can get to the desired index.\n // First clamp index to existing array bounds.\n newIndex = Math.max(Math.min(count - 1, newDesiredIndex), 0);\n // Look for an available item going forward.\n newIndex = this[closestAvailableItemIndex](state, {\n direction: 1,\n index: newIndex,\n wrap: false,\n });\n if (newIndex < 0) {\n // Next best: look for an available item going backward.\n newIndex = this[closestAvailableItemIndex](state, {\n direction: -1,\n index: newIndex - 1,\n wrap: false,\n });\n }\n }\n\n const newItem = (items && items[newIndex]) || null;\n Object.assign(effects, {\n currentIndex: newIndex,\n desiredCurrentIndex: newDesiredIndex,\n currentItem: newItem,\n });\n }\n\n return effects;\n }\n }\n\n return ItemsCursor;\n}\n\n/**\n * Update currentIndex and return true if it changed.\n *\n * @private\n * @param {Element} element\n * @param {number} index\n * @param {number} direction\n */\nfunction moveToIndex(element, index, direction) {\n const newIndex = element[closestAvailableItemIndex](element[state], {\n direction,\n index,\n });\n if (newIndex < 0) {\n // Couldn't find an item to move to.\n return false;\n }\n // Normally we don't check to see if state is going to change before setting\n // state, but the methods defined by this mixin want to be able to return true\n // if the index is actually going to change.\n const changed = element[state].currentIndex !== newIndex;\n if (changed) {\n element[setState]({\n currentIndex: newIndex,\n });\n }\n return changed;\n}\n","/**\n * Helpers for working with element content.\n *\n * @module content\n */\n\n// These are tags for elements that can appear in the document body, but do not\n// seem to have any user-visible manifestation.\n// See https://developer.mozilla.org/en-US/docs/Web/HTML/Element\nconst auxiliarycustomTags = [\n \"applet\", // deprecated\n \"basefont\", // deprecated\n \"embed\",\n \"font\", // deprecated\n \"frame\", // deprecated\n \"frameset\", // deprecated\n \"isindex\", // deprecated\n \"keygen\", // deprecated\n \"link\",\n \"multicol\", // deprecated\n \"nextid\", // deprecated\n \"noscript\",\n \"object\",\n \"param\",\n \"script\",\n \"style\",\n \"template\",\n \"noembed\", // deprecated\n];\n\n/**\n * Use a heuristic to extract text from the given item.\n *\n * This looks, in order, at: the `aria-label` attribute, the `alt` attribute,\n * `innerText`, or `textContent`.\n *\n * This function is used as the default implementation of the\n * [getItemText](internal#getItemText) function in several mixins.\n *\n * @param {Element} element\n * @returns {string}\n */\nexport function getDefaultText(element) {\n return (\n element.getAttribute(\"aria-label\") ||\n element.getAttribute(\"alt\") ||\n /** @type {any} */ (element).innerText ||\n element.textContent ||\n \"\"\n );\n}\n\n/**\n * Return true if the given node is likely to be useful as component content.\n *\n * This will be `true` for nodes that are: a) instances of `Element`\n * (`HTMLElement` or `SVGElement`), and b) not on a blacklist of normally\n * invisible elements (such as `style` or `script`). Among other things, this\n * returns `false` for Text nodes.\n *\n * This is used by [ContentItemsMixin](ContentItemsMixin) to filter out nodes\n * which are unlikely to be interesting as list items. This is intended to\n * satisfy the Gold Standard checklist criteria [Auxiliary\n * Content](https://github.com/webcomponents/gold-standard/wiki/Auxiliary-Content),\n * so that a component does not inadvertently treat `<style>` and other invisible\n * items as element content.\n *\n * @param {Node} node\n * @returns {boolean}\n */\nexport function isSubstantiveElement(node) {\n return (\n node instanceof Element &&\n (!node.localName || auxiliarycustomTags.indexOf(node.localName) < 0)\n );\n}\n\n/**\n * Return a set of Elements which are likely to be useful as component content.\n *\n * Given a `NodeList` or array of objects, this will return only those array\n * members that are: a) instances of `Element` (`HTMLElement` or `SVGElement`),\n * and b) not on a blacklist of normally invisible elements (such as `style` or\n * `script`). Among other things, this filters out Text nodes.\n *\n * @param {(NodeList|Node[])} nodes - the list of nodes to filter\n * @returns {Element[]} the filtered elements\n */\nexport function substantiveElements(nodes) {\n return [].filter.call(nodes, (/** @type {Node} */ node) =>\n isSubstantiveElement(node)\n );\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n closestAvailableItemIndex,\n keydown,\n raiseChangeEvents,\n scrollTarget,\n setState,\n state,\n} from \"./internal.js\";\nimport { defaultScrollTarget } from \"./scrolling.js\";\n\n/**\n * Maps the Page Up and Page Down keys to item cursor operations.\n *\n * The keyboard interaction model generally follows that of Microsoft Windows'\n * list boxes instead of those in OS X:\n *\n * * The Page Up/Down and Home/End keys actually move the item cursor, rather\n * than just scrolling. The former behavior seems more generally useful for\n * keyboard users.\n *\n * * Pressing Page Up/Down will first move the cursor to the topmost/bottommost\n * visible item if the cursor is not already there. Thereafter, the key\n * will move the cursor up/down by a page, and (per the above point) make\n * the current item visible.\n *\n * To ensure the current item is in view following use of Page Up/Down, use\n * the related [CursorInViewMixin](CursorInViewMixin).\n *\n * This mixin expects the component to provide:\n *\n * * A `[keydown]` method invoked when a key is pressed. You can use\n * [KeyboardMixin](KeyboardMixin) for that purpose, or wire up your own\n * keyboard handling and call `[keydown]` yourself.\n * * A `currentIndex` state member updatable via [setState]`.\n *\n * @module KeyboardPagedCursorMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function KeyboardPagedCursorMixin(Base) {\n // The class prototype added by the mixin.\n class KeyboardPagedCursor extends Base {\n [keydown](/** @type {KeyboardEvent} */ event) {\n let handled = false;\n const orientation = this.orientation;\n if (orientation !== \"horizontal\") {\n switch (event.key) {\n case \"PageDown\":\n handled = this.pageDown();\n break;\n\n case \"PageUp\":\n handled = this.pageUp();\n break;\n }\n }\n\n // Prefer mixin result if it's defined, otherwise use base result.\n return handled || (super[keydown] && super[keydown](event));\n }\n\n // Default orientation implementation defers to super,\n // but if not found, looks in state.\n get orientation() {\n return (\n super.orientation || (this[state] && this[state].orientation) || \"both\"\n );\n }\n\n /**\n * Scroll down one page.\n */\n pageDown() {\n if (super.pageDown) {\n super.pageDown();\n }\n return scrollOnePage(this, true);\n }\n\n /**\n * Scroll up one page.\n */\n pageUp() {\n if (super.pageUp) {\n super.pageUp();\n }\n return scrollOnePage(this, false);\n }\n\n /**\n * The element that will be scrolled when the user presses Page Up or\n * Page Down. The default value is calculated by\n * [defaultScrollTarget](defaultScrollTarget#defaultScrollTarget).\n *\n * See [scrollTarget](internal#internal.scrollTarget).\n *\n * @type {HTMLElement}\n */\n get [scrollTarget]() {\n /** @type {any} */\n const element = this;\n return super[scrollTarget] || defaultScrollTarget(element);\n }\n }\n\n return KeyboardPagedCursor;\n}\n\n/**\n * Return the item whose content spans the given y position (relative to the\n * top of the list's scrolling client area), or null if not found.\n *\n * If downward is true, move down the list of items to find the first item\n * found at the given y position; if downward is false, move up the list of\n * items to find the last item at that position.\n *\n * @private\n * @param {ReactiveElement} element\n * @param {number} y\n * @param {boolean} downward\n */\nfunction getIndexOfItemAtY(element, y, downward) {\n const items = element[state].items;\n const start = downward ? 0 : items.length - 1;\n const end = downward ? items.length : 0;\n const step = downward ? 1 : -1;\n\n // Find the item spanning the indicated y coordinate.\n let index;\n /** @type {HTMLElement|SVGElement|null} */ let item = null;\n let itemRect;\n const { availableItemFlags } = element[state];\n for (index = start; index !== end; index += step) {\n // Only consider items available in the element's current state.\n const available = availableItemFlags ? availableItemFlags[index] : true;\n if (available) {\n itemRect = items[index].getBoundingClientRect();\n if (itemRect.top <= y && y <= itemRect.bottom) {\n // Item spans the indicated y coordinate.\n item = items[index];\n break;\n }\n }\n }\n\n if (!item || !itemRect) {\n return null;\n }\n\n // We may have found an item whose padding spans the given y coordinate,\n // but whose content is actually above/below that point.\n // TODO: If the item has a border, then padding should be included in\n // considering a hit.\n const itemStyle = getComputedStyle(item);\n const itemPaddingTop = itemStyle.paddingTop\n ? parseFloat(itemStyle.paddingTop)\n : 0;\n const itemPaddingBottom = itemStyle.paddingBottom\n ? parseFloat(itemStyle.paddingBottom)\n : 0;\n const contentTop = itemRect.top + itemPaddingTop;\n const contentBottom =\n contentTop + item.clientHeight - itemPaddingTop - itemPaddingBottom;\n if ((downward && contentTop <= y) || (!downward && contentBottom >= y)) {\n // The indicated coordinate hits the actual item content.\n return index;\n } else {\n // The indicated coordinate falls within the item's padding. Back up to\n // the item below/above the item we found and return that.\n return index - step;\n }\n}\n\n/**\n * Move by one page downward (if downward is true), or upward (if false).\n * Return true if we ended up moving the cursor, false if not.\n *\n * @private\n * @param {ReactiveElement} element\n * @param {boolean} downward\n */\nfunction scrollOnePage(element, downward) {\n const items = element[state].items;\n const currentIndex = element[state].currentIndex;\n\n // Determine the item visible just at the edge of direction we're heading.\n // We'll move to that item if it's not already current.\n const targetRect = element[scrollTarget].getBoundingClientRect();\n const edge = downward ? targetRect.bottom : targetRect.top;\n const indexOfItemAtEdge = getIndexOfItemAtY(element, edge, downward);\n\n let newIndex;\n if (indexOfItemAtEdge && currentIndex === indexOfItemAtEdge) {\n // The item at the edge was already current, so scroll in the indicated\n // direction by one page, measuring from the bounds of the current item.\n // Leave the new item at that edge current.\n const currentItem = items[currentIndex];\n const currentRect = currentItem.getBoundingClientRect();\n const pageHeight = element[scrollTarget].clientHeight;\n const y = downward\n ? currentRect.bottom + pageHeight\n : currentRect.top - pageHeight;\n newIndex = getIndexOfItemAtY(element, y, downward);\n } else {\n // The item at the edge wasn't current yet. Instead of scrolling, we'll just\n // move to that item. That is, the first attempt to page up/down usually\n // just moves the cursor to the edge in that direction.\n newIndex = indexOfItemAtEdge;\n }\n\n if (!newIndex) {\n // We went past the first/last item without finding an item. Move to the\n // last item (if moving downward) or first item (if moving upward).\n const index = downward ? items.length - 1 : 0;\n newIndex = element[closestAvailableItemIndex]\n ? element[closestAvailableItemIndex](element[state], {\n direction: downward ? -1 /* Work up */ : 1 /* Work down */,\n index,\n })\n : index;\n }\n\n const changed = newIndex !== currentIndex;\n if (changed) {\n // If external code causes an operation that scrolls the page, it's\n // impossible for it to predict where the currentIndex is going to end up.\n // Accordingly, we raise change events.\n const saveRaiseChangesEvents = element[raiseChangeEvents];\n element[raiseChangeEvents] = true;\n element[setState]({\n currentIndex: newIndex,\n });\n element[raiseChangeEvents] = saveRaiseChangesEvents;\n }\n return changed;\n}\n","/**\n * Constants used by Elix mixins and components\n *\n * Sharing these constants allows for greater consistency in things such as user\n * interface timings.\n *\n * @module constants\n */\n\n/**\n * Time in milliseconds after which the user is considered to have stopped\n * typing.\n *\n * This is used by\n * [KeyboardPrefixCursorMixin](KeyboardPrefixCursorMixin).\n *\n * @const {number} TYPING_TIMEOUT_DURATION\n */\nexport const TYPING_TIMEOUT_DURATION = 1000;\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { TYPING_TIMEOUT_DURATION } from \"./constants.js\";\nimport { goToItemWithPrefix, keydown, setState, state } from \"./internal.js\";\n\n// Symbols for private data members on an element.\nconst typedPrefixKey = Symbol(\"typedPrefix\");\nconst prefixTimeoutKey = Symbol(\"prefixTimeout\");\n\n/**\n * Lets a user navigate an item cursor by typing the beginning of items\n *\n * Example: suppose a component using this mixin has the following items:\n *\n * <sample-list-component>\n * <div>Apple</div>\n * <div>Apricot</div>\n * <div>Banana</div>\n * <div>Blackberry</div>\n * <div>Blueberry</div>\n * <div>Cantaloupe</div>\n * <div>Cherry</div>\n * <div>Lemon</div>\n * <div>Lime</div>\n * </sample-list-component>\n *\n * If this component receives the focus, and the user presses the \"b\" or \"B\"\n * key, the item cursor will move to \"Banana\", because it's the first item that\n * matches the prefix \"b\". (Matching is case-insensitive.) If the user now\n * presses the \"l\" or \"L\" key quickly, the prefix to match becomes \"bl\", so the\n * cursor will move to \"Blackberry\".\n *\n * The prefix typing feature has a one second timeout — the prefix to match will\n * be reset after a second has passed since the user last typed a key. If, in\n * the above example, the user waits a second between typing \"b\" and \"l\", the\n * prefix will become \"l\", so the cursor would move to \"Lemon\".\n *\n * This mixin expects the component to invoke a `keydown` method when a key is\n * pressed. You can use [KeyboardMixin](KeyboardMixin) for that purpose, or wire\n * up your own keyboard handling and call `keydown` yourself.\n *\n * This mixin also expects the component to provide an `items` property. The\n * `textContent` of those items will be used for purposes of prefix matching.\n *\n * @module KeyboardPrefixCursorMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function KeyboardPrefixCursorMixin(Base) {\n // The class prototype added by the mixin.\n class KeyboardPrefixCursor extends Base {\n constructor() {\n // @ts-ignore\n super();\n resetTypedPrefix(this);\n }\n\n /**\n * Go to the first item whose text content begins with the given prefix.\n *\n * @param {string} prefix - The prefix string to search for\n * @returns {boolean}\n */\n [goToItemWithPrefix](prefix) {\n if (super[goToItemWithPrefix]) {\n super[goToItemWithPrefix](prefix);\n }\n if (prefix == null || prefix.length === 0) {\n return false;\n }\n // Find item that begins with the prefix. Ignore case.\n const searchText = prefix.toLowerCase();\n /** @type {string[]} */ const texts = this[state].texts;\n const index = texts.findIndex(\n (text) => text.substr(0, prefix.length).toLowerCase() === searchText\n );\n if (index >= 0) {\n const previousIndex = this[state].currentIndex;\n this[setState]({ currentIndex: index });\n return this[state].currentIndex !== previousIndex;\n } else {\n return false;\n }\n }\n\n [keydown](/** @type {KeyboardEvent} */ event) {\n let handled;\n\n switch (event.key) {\n case \"Backspace\":\n handleBackspace(this);\n handled = true;\n break;\n\n case \"Escape\":\n // Pressing Escape lets user quickly start typing a new prefix.\n resetTypedPrefix(this);\n break;\n\n default:\n if (\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n event.key.length === 1\n ) {\n handlePlainCharacter(this, event.key);\n }\n }\n\n // Prefer mixin result if it's defined, otherwise use base result.\n return handled || (super[keydown] && super[keydown](event));\n }\n }\n\n return KeyboardPrefixCursor;\n}\n\n/**\n * Handle the Backspace key: remove the last character from the prefix.\n *\n * @private\n * @param {ReactiveElement} element\n */\nfunction handleBackspace(element) {\n /** @type {any} */ const cast = element;\n const length = cast[typedPrefixKey] ? cast[typedPrefixKey].length : 0;\n if (length > 0) {\n cast[typedPrefixKey] = cast[typedPrefixKey].substr(0, length - 1);\n }\n element[goToItemWithPrefix](cast[typedPrefixKey]);\n setPrefixTimeout(element);\n}\n\n/**\n * Add a plain character to the prefix.\n *\n * @private\n * @param {ReactiveElement} element\n * @param {string} char\n */\nfunction handlePlainCharacter(element, char) {\n /** @type {any} */ const cast = element;\n const prefix = cast[typedPrefixKey] || \"\";\n cast[typedPrefixKey] = prefix + char;\n element[goToItemWithPrefix](cast[typedPrefixKey]);\n setPrefixTimeout(element);\n}\n\n/**\n * Stop listening for typing.\n *\n * @private\n * @param {ReactiveElement} element\n */\nfunction resetPrefixTimeout(element) {\n /** @type {any} */ const cast = element;\n if (cast[prefixTimeoutKey]) {\n clearTimeout(cast[prefixTimeoutKey]);\n cast[prefixTimeoutKey] = false;\n }\n}\n\n/**\n * Clear the prefix under construction.\n *\n * @private\n * @param {ReactiveElement} element\n */\nfunction resetTypedPrefix(element) {\n /** @type {any} */ (element)[typedPrefixKey] = \"\";\n resetPrefixTimeout(element);\n}\n\n/**\n * Wait for the user to stop typing.\n *\n * @private\n * @param {ReactiveElement} element\n */\nfunction setPrefixTimeout(element) {\n resetPrefixTimeout(element);\n /** @type {any} */ (element)[prefixTimeoutKey] = setTimeout(() => {\n resetTypedPrefix(element);\n }, TYPING_TIMEOUT_DURATION);\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { setState } from \"./internal.js\";\n\n/**\n * Lets an element determine whether it resides in right-to-left text.\n *\n * @module LanguageDirectionMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function LanguageDirectionMixin(Base) {\n // The class prototype added by the mixin.\n return class LanguageDirection extends Base {\n // The only way to get text direction is to wait for the component to\n // connect and then inspect the computed style on its root element. We set\n // state before calling super so the new state will be included when\n // ReactiveMixin calls render.\n connectedCallback() {\n /** @type {any} */ const element = this;\n const languageDirection = getComputedStyle(element).direction;\n const rightToLeft = languageDirection === \"rtl\";\n this[setState]({ rightToLeft });\n super.connectedCallback();\n }\n };\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { isSubstantiveElement } from \"./content.js\";\nimport { defaultState, stateEffects } from \"./internal.js\";\n\n/**\n * Treats an element's content nodes as list items.\n *\n * Items differ from nodes contents in several ways:\n *\n * * They are often referenced via index.\n * * They may have a selection state.\n * * It's common to do work to initialize the appearance or state of a new\n * item.\n * * Text nodes are filtered out.\n * * Auxiliary invisible child elements are filtered out and not counted as\n * items. Auxiliary elements include link, script, style, and template\n * elements. This filtering ensures that those auxiliary elements can be\n * used in markup inside of a list without being treated as list items.\n *\n * This mixin expects a component to provide a `content` state member returning\n * a raw set of elements. You can provide that yourself, or use\n * [SlotContentMixin](SlotContentMixin).\n *\n * Most Elix [elements](elements) use `ContentItemsMixin`, including\n * [ListBox](ListBox), [Modes](Modes), and [Tabs](Tabs).\n *\n * @module ContentItemsMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function ContentItemsMixin(Base) {\n return class ContentItems extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n items: null,\n });\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects]\n ? super[stateEffects](state, changed)\n : {};\n\n // Regenerate items when content changes.\n if (changed.content) {\n /** @type {Node[]} */ const content = state.content;\n const items = content\n ? Array.prototype.filter.call(content, (/** @type {Node} */ item) =>\n isSubstantiveElement(item)\n )\n : null;\n if (items) {\n Object.freeze(items);\n }\n Object.assign(effects, { items });\n }\n\n return effects;\n }\n };\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n contentSlot,\n defaultState,\n firstRender,\n raiseChangeEvents,\n rendered,\n setState,\n shadowRoot,\n} from \"./internal.js\";\n\n/**\n * Defines a component's content as the flattened set of nodes assigned to a\n * slot.\n *\n * This mixin defines a component's `content` state member as the flattened\n * set of nodes assigned to a slot, typically the default slot.\n *\n * If the set of assigned nodes changes, the `content` state will be updated.\n * This helps a component satisfy the Gold Standard checklist item for\n * monitoring\n * [Content Changes](https://github.com/webcomponents/gold-standard/wiki/Content-Changes).\n *\n * By default, the mixin looks in the component's shadow subtree for a default\n * (unnamed) `slot` element. You can specify that a different slot should be\n * used by overriding the `internal.contentSlot` property.\n *\n * Most Elix [elements](elements) use `SlotContentMixin`, including\n * [ListBox](ListBox), [Modes](Modes), and [Tabs](Tabs).\n *\n * @module SlotContentMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function SlotContentMixin(Base) {\n // The class prototype added by the mixin.\n class SlotContent extends Base {\n /**\n * See [contentSlot](internal#internal.contentSlot).\n */\n get [contentSlot]() {\n /** @type {HTMLSlotElement|null} */ const slot =\n this[shadowRoot] && this[shadowRoot].querySelector(\"slot:not([name])\");\n if (!this[shadowRoot] || !slot) {\n /* eslint-disable no-console */\n console.warn(\n `SlotContentMixin expects ${this.constructor.name} to define a shadow tree that includes a default (unnamed) slot.\\nSee https://elix.org/documentation/SlotContentMixin.`\n );\n }\n return slot;\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n content: null,\n });\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n if (this[firstRender]) {\n // Listen to changes on the default slot.\n const slot = this[contentSlot];\n if (slot) {\n slot.addEventListener(\"slotchange\", async () => {\n // Although slotchange isn't generally a user-driven event, it's\n // impossible for us to know whether a change in slot content is going\n // to result in effects that the host of this element can predict.\n // To be on the safe side, we raise any change events that come up\n // during the processing of this event.\n this[raiseChangeEvents] = true;\n\n // The nodes assigned to the given component have changed.\n // Update the component's state to reflect the new content.\n const content = slot.assignedNodes({ flatten: true });\n Object.freeze(content);\n this[setState]({ content });\n\n await Promise.resolve();\n this[raiseChangeEvents] = false;\n });\n }\n }\n }\n }\n\n return SlotContent;\n}\n","import { templateFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\";\nimport AriaMenuMixin from \"./AriaMenuMixin.js\";\nimport CursorAPIMixin from \"./CursorAPIMixin.js\";\nimport CursorInViewMixin from \"./CursorInViewMixin.js\";\nimport DelegateFocusMixin from \"./DelegateFocusMixin.js\";\nimport DirectionCursorMixin from \"./DirectionCursorMixin.js\";\nimport {\n defaultState,\n firstRender,\n ids,\n raiseChangeEvents,\n render,\n rendered,\n scrollTarget,\n setState,\n state,\n stateEffects,\n tap,\n template,\n} from \"./internal.js\";\nimport ItemsAPIMixin from \"./ItemsAPIMixin.js\";\nimport ItemsCursorMixin from \"./ItemsCursorMixin.js\";\nimport ItemsTextMixin from \"./ItemsTextMixin.js\";\nimport KeyboardDirectionMixin from \"./KeyboardDirectionMixin.js\";\nimport KeyboardMixin from \"./KeyboardMixin.js\";\nimport KeyboardPagedCursorMixin from \"./KeyboardPagedCursorMixin.js\";\nimport KeyboardPrefixCursorMixin from \"./KeyboardPrefixCursorMixin.js\";\nimport LanguageDirectionMixin from \"./LanguageDirectionMixin.js\";\nimport SlotItemsMixin from \"./SlotItemsMixin.js\";\nimport TapCursorMixin from \"./TapCursorMixin.js\";\n\nconst Base = AriaMenuMixin(\n CursorAPIMixin(\n CursorInViewMixin(\n DelegateFocusMixin(\n DirectionCursorMixin(\n ItemsAPIMixin(\n ItemsCursorMixin(\n ItemsTextMixin(\n KeyboardDirectionMixin(\n KeyboardMixin(\n KeyboardPagedCursorMixin(\n KeyboardPrefixCursorMixin(\n LanguageDirectionMixin(\n SlotItemsMixin(TapCursorMixin(ReactiveElement))\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n);\n\n/**\n * A menu of choices or commands\n *\n * This holds the contents of the menu, not the top-level UI element that invokes\n * a menu. For that, see [MenuButton](MenuButton) or [PopupSource](PopupSource).\n *\n * @inherits ReactiveElement\n * @mixes AriaMenuMixin\n * @mixes CursorInViewMixin\n * @mixes CursorAPIMixin\n * @mixes DelegateFocusMixin\n * @mixes DirectionCursorMixin\n * @mixes ItemsAPIMixin\n * @mixes ItemsCursorMixin\n * @mixes ItemsTextMixin\n * @mixes KeyboardDirectionMixin\n * @mixes KeyboardMixin\n * @mixes KeyboardPagedCursorMixin\n * @mixes KeyboardPrefixCursorMixin\n * @mixes LanguageDirectionMixin\n * @mixes SingleSelectAPIMixin\n * @mixes SlotItemsMixin\n * @mixes TapCursorMixin\n */\nclass Menu extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n availableItemFlags: null,\n handleBubblingDirectionKeys: true,\n highlightCurrentItem: true,\n orientation: \"vertical\",\n currentItemFocused: false,\n });\n }\n\n /**\n * Flash the current item.\n *\n * By default, this uses a heuristic to guess whether the menu was closed by a\n * keyboard or mouse (on desktop). If so, the menu flashes the current item\n * off then back on, emulating the menu item selection effect in macOS.\n * Otherwise, it does nothing.\n */\n async flashCurrentItem() {\n const keyboardActive = this[state].focusVisible;\n const probablyDesktop = matchMedia(\"(pointer: fine)\").matches;\n if (keyboardActive || probablyDesktop) {\n const flashDuration = 75; // milliseconds\n this[setState]({ highlightCurrentItem: false });\n await new Promise((resolve) => setTimeout(resolve, flashDuration));\n this[setState]({ highlightCurrentItem: true });\n await new Promise((resolve) => setTimeout(resolve, flashDuration));\n }\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n\n if (this[firstRender]) {\n // Listen to changes in disabled state.\n this.addEventListener(\"disabledchange\", (event) => {\n this[raiseChangeEvents] = true;\n /** @type {any} */ const target = event.target;\n const { items } = this[state];\n const index = items === null ? -1 : items.indexOf(target);\n if (index >= 0) {\n // Update item availability.\n const availableItemFlags = this[state].availableItemFlags.slice();\n availableItemFlags[index] = !target.disabled;\n this[setState]({ availableItemFlags });\n }\n this[raiseChangeEvents] = false;\n });\n\n // Treat a pointerdown event as a tap.\n if (\"PointerEvent\" in window) {\n // Prefer listening to standard pointer events.\n this.addEventListener(\"pointerdown\", (event) => this[tap](event));\n } else {\n this.addEventListener(\"touchstart\", (event) => this[tap](event));\n }\n\n this.removeAttribute(\"tabindex\");\n }\n\n const { currentIndex, items } = this[state];\n\n // Highlight the current item.\n if (\n (changed.items || changed.currentIndex || changed.highlightCurrentItem) &&\n items\n ) {\n const { highlightCurrentItem } = this[state];\n items.forEach((item, index) => {\n item.toggleAttribute(\n \"current\",\n highlightCurrentItem && index === currentIndex\n );\n });\n }\n\n if (\n (changed.items ||\n changed.currentIndex ||\n changed.currentItemFocused ||\n changed.focusVisible) &&\n items\n ) {\n // A menu has a complicated focus arrangement in which the current item has\n // focus, which means it needs a tabindex. However, we don't want any other\n // item in the menu to have a tabindex, so that if the user presses Tab or\n // Shift+Tab, they move away from the menu entirely (rather than just moving\n // to the next or previous item).\n //\n // That's already complex, but to make things worse, if we remove the\n // tabindex from an item that has the focus, the focus gets moved to the\n // document. In popup menus, the popup will conclude it's lost the focus,\n // and implicitly close. So we want to move the focus in two phases: 1)\n // set tabindex on a newly-current item so we can focus on it, 2) after\n // the new item has been focused, remove the tabindex from any\n // previous item.\n items.forEach((item, index) => {\n const current = index === currentIndex;\n const isDefaultFocusableItem = currentIndex < 0 && index === 0;\n if (!this[state].currentItemFocused) {\n // Phase 1: Add tabindex to newly-current item.\n if (current || isDefaultFocusableItem) {\n item.tabIndex = 0;\n }\n } else {\n // Phase 2: Remove tabindex from any previous item.\n if (!(current || isDefaultFocusableItem)) {\n item.removeAttribute(\"tabindex\");\n }\n }\n });\n }\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n super[rendered](changed);\n if (\n !this[firstRender] &&\n changed.currentIndex &&\n !this[state].currentItemFocused\n ) {\n // The current item needs the focus, but this is complicated. See notes\n // in render.\n const { currentItem } = this[state];\n const focusElement =\n currentItem instanceof HTMLElement ? currentItem : this;\n focusElement.focus();\n\n // Now that the current item has been focused, we can remove/reset the\n // tabindex on any item that had previously been current.\n this[setState]({\n currentItemFocused: true,\n });\n }\n }\n\n // @ts-ignore\n get [scrollTarget]() {\n return this[ids].content;\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects](state, changed);\n\n // When current item changes, we'll need to focus on it in rendered.\n if (changed.currentIndex) {\n Object.assign(effects, {\n currentItemFocused: false,\n });\n }\n\n // Mark disabled items as unavailable.\n if (changed.items) {\n const { items } = state;\n const availableItemFlags =\n items === null ? null : items.map((item) => !item.disabled);\n Object.assign(effects, { availableItemFlags });\n }\n\n return effects;\n }\n\n get [template]() {\n return templateFrom.html`\n <style>\n :host {\n box-sizing: border-box;\n cursor: default;\n display: inline-flex;\n -webkit-tap-highlight-color: transparent;\n touch-action: manipulation;\n }\n\n #content {\n display: flex;\n flex: 1;\n flex-direction: column;\n max-height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; /* for momentum scrolling */\n }\n \n ::slotted(*) {\n flex-shrink: 0;\n outline: none;\n touch-action: manipulation;\n }\n\n ::slotted(option) {\n font: inherit;\n min-height: inherit;\n }\n </style>\n <div id=\"content\" role=\"none\">\n <slot></slot>\n </div>\n `;\n }\n}\n\nexport default Menu;\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { defaultAriaRole } from \"./accessibility.js\";\nimport {\n defaultState,\n render,\n rendering,\n setState,\n state,\n} from \"./internal.js\";\n\n/**\n * Tells assistive technologies to describe a list's items as a menu of choices.\n *\n * @module AriaMenuMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function AriaMenuMixin(Base) {\n // The class prototype added by the mixin.\n class AriaMenu extends Base {\n // @ts-ignore\n get [defaultState]() {\n const base = super[defaultState];\n return Object.assign(base, {\n itemRole: base.itemRole || \"menuitem\",\n role: base.role || \"menu\",\n });\n }\n\n get itemRole() {\n return this[state].itemRole;\n }\n set itemRole(itemRole) {\n this[setState]({ itemRole });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n /** @type {ListItemElement[]} */ const items = this[state].items;\n if ((changed.items || changed.itemRole) && items) {\n // Give each item a role.\n const { itemRole } = this[state];\n items.forEach((item) => {\n if (itemRole === defaultAriaRole[item.localName]) {\n item.removeAttribute(\"role\");\n } else {\n item.setAttribute(\"role\", itemRole);\n }\n });\n }\n\n if (changed.role) {\n // Apply top-level role.\n const { role } = this[state];\n this.setAttribute(\"role\", role);\n }\n }\n\n // Setting the standard role attribute will invoke this property setter,\n // which will allow us to update our state.\n get role() {\n return super.role;\n }\n set role(role) {\n super.role = role;\n if (!this[rendering]) {\n this[setState]({ role });\n }\n }\n }\n\n return AriaMenu;\n}\n","import { booleanAttributeValue } from \"../core/AttributeMarshallingMixin.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n goFirst,\n goLast,\n goNext,\n goPrevious,\n raiseChangeEvents,\n rendered,\n setState,\n state,\n} from \"./internal.js\";\n\n/**\n * Exposes a public API for navigating a cursor over a set of items\n *\n * This mixin expects a component to provide an `items` Array of all elements in\n * the list. This mixin also expects the component to apply\n * [ItemsCursorMixin](ItemsCursorMixin) or otherwise define a compatible\n * `currentIndex` state and other state members for navigating the current item.\n *\n * Given the above, this mixin exposes a consistent public API for reading and\n * manipulating the cursor.\n *\n * @module CursorAPIMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function CursorAPIMixin(Base) {\n // The class prototype added by the mixin.\n class CursorAPI extends Base {\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"current-index\") {\n this.currentIndex = Number(newValue);\n } else if (name === \"current-item-required\") {\n const value = booleanAttributeValue(name, newValue);\n if (this.currentItemRequired !== value) {\n this.currentItemRequired = value;\n }\n } else if (name === \"cursor-operations-wrap\") {\n const value = booleanAttributeValue(name, newValue);\n if (this.cursorOperationsWrap !== value) {\n this.cursorOperationsWrap = value;\n }\n } else {\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n /**\n * The index of the current item, or -1 if no item is current.\n *\n * @type {number}\n */\n get currentIndex() {\n const { items, currentIndex } = this[state];\n return items && items.length > 0 ? currentIndex : -1;\n }\n set currentIndex(currentIndex) {\n if (!isNaN(currentIndex)) {\n this[setState]({ currentIndex });\n }\n }\n\n /**\n * The current item, or null if no item is current.\n *\n * @type {Element}\n */\n get currentItem() {\n const { items, currentIndex } = this[state];\n return items && items[currentIndex];\n }\n set currentItem(currentItem) {\n const { items } = this[state];\n if (!items) {\n return;\n }\n const currentIndex = items.indexOf(currentItem);\n this[setState]({ currentIndex });\n }\n\n /**\n * True if the list should always have a current item (if it has items).\n *\n * @type {boolean}\n * @default false\n */\n get currentItemRequired() {\n return this[state].currentItemRequired;\n }\n set currentItemRequired(currentItemRequired) {\n this[setState]({ currentItemRequired });\n }\n\n /**\n * True if cursor operations wrap from last to first, and vice versa.\n *\n * @type {boolean}\n * @default false\n */\n get cursorOperationsWrap() {\n return this[state].cursorOperationsWrap;\n }\n set cursorOperationsWrap(cursorOperationsWrap) {\n this[setState]({ cursorOperationsWrap });\n }\n\n /**\n * Moves to the first item in the list.\n *\n * @returns {Boolean} True if the current item changed, false if not.\n */\n goFirst() {\n if (super.goFirst) {\n super.goFirst();\n }\n return this[goFirst]();\n }\n\n /**\n * Move to the last item in the list.\n *\n * @returns {Boolean} True if the current item changed\n */\n goLast() {\n if (super.goLast) {\n super.goLast();\n }\n return this[goLast]();\n }\n\n /**\n * Move to the next item in the list.\n *\n * If the list has no current item, the first item will become current.\n *\n * @returns {Boolean} True if the current item changed\n */\n goNext() {\n if (super.goNext) {\n super.goNext();\n }\n return this[goNext]();\n }\n\n /**\n * Moves to the previous item in the list.\n *\n * If the list has no current item, the last item will become current.\n *\n * @returns {Boolean} True if the current item changed\n */\n goPrevious() {\n if (super.goPrevious) {\n super.goPrevious();\n }\n return this[goPrevious]();\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n if (changed.currentIndex && this[raiseChangeEvents]) {\n const { currentIndex } = this[state];\n /**\n * Raised when the `currentIndex` property changes.\n *\n * @event currentindexchange\n */\n const event = new CustomEvent(\"currentindexchange\", {\n bubbles: true,\n detail: { currentIndex },\n });\n this.dispatchEvent(event);\n }\n }\n }\n\n return CursorAPI;\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { rendered, scrollTarget, state } from \"./internal.js\";\nimport { defaultScrollTarget } from \"./scrolling.js\";\n\n/**\n * Scrolls to ensure the current item is visible\n *\n * When the current item in a list-like component changes, the current item\n * should be brought into view so that the user can confirm their selection.\n *\n * This mixin expects an `items` collection, such as that provided by\n * [ContentItemsMixin](ContentItemsMixin). It also expects a\n * `state.currentItem` member indicating which item is current. You\n * can supply that yourself, or use\n * [ItemsCursorMixin](ItemsCursorMixin).\n *\n * @module CursorInViewMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function CursorInViewMixin(Base) {\n // The class prototype added by the mixin.\n class CursorInView extends Base {\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n if (changed.currentItem) {\n this.scrollCurrentItemIntoView();\n }\n }\n\n /**\n * Scroll the current item completely into view, minimizing the degree of\n * scrolling performed.\n *\n * Blink has a `scrollIntoViewIfNeeded()` function that does something\n * similar, but unfortunately it's non-standard, and in any event often ends\n * up scrolling more than is absolutely necessary.\n *\n * This scrolls the containing element defined by the `scrollTarget`\n * property. By default, it will scroll the element itself.\n */\n scrollCurrentItemIntoView() {\n if (super.scrollCurrentItemIntoView) {\n super.scrollCurrentItemIntoView();\n }\n\n const { currentItem, items } = this[state];\n if (!currentItem || !items) {\n return;\n }\n\n // Determine the bounds of the scroll target and item. We use\n // getBoundingClientRect instead of .offsetTop, etc., because the latter\n // round values, and we want to handle fractional values.\n const scrollTargetRect = this[scrollTarget].getBoundingClientRect();\n const itemRect = currentItem.getBoundingClientRect();\n\n // Determine how far the item is outside the viewport.\n const bottomDelta = itemRect.bottom - scrollTargetRect.bottom;\n const leftDelta = itemRect.left - scrollTargetRect.left;\n const rightDelta = itemRect.right - scrollTargetRect.right;\n const topDelta = itemRect.top - scrollTargetRect.top;\n\n // Scroll the target as necessary to bring the item into view.\n // If an `orientation` state member is defined, only scroll along that\n // axis. Otherwise, assume the orientation is \"both\".\n const orientation = this[state].orientation || \"both\";\n if (orientation === \"horizontal\" || orientation === \"both\") {\n if (rightDelta > 0) {\n this[scrollTarget].scrollLeft += rightDelta; // Scroll right\n } else if (leftDelta < 0) {\n this[scrollTarget].scrollLeft += Math.ceil(leftDelta); // Scroll left\n }\n }\n if (orientation === \"vertical\" || orientation === \"both\") {\n if (bottomDelta > 0) {\n this[scrollTarget].scrollTop += bottomDelta; // Scroll down\n } else if (topDelta < 0) {\n this[scrollTarget].scrollTop += Math.ceil(topDelta); // Scroll up\n }\n }\n }\n\n /**\n * The element that should be scrolled to get the selected item into view.\n *\n * By default, this uses the [defaultScrollTarget](defaultScrollTarget)\n * helper to find the most likely candidate for scrolling. You can override\n * this property to directly identify which element should be scrolled.\n *\n * See also [scrollTarget](internal#internal.scrollTarget).\n */\n get [scrollTarget]() {\n const base = super[scrollTarget];\n /** @type {any} */\n const element = this;\n return base || defaultScrollTarget(element);\n }\n }\n\n return CursorInView;\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n goDown,\n goEnd,\n goFirst,\n goLast,\n goLeft,\n goNext,\n goPrevious,\n goRight,\n goStart,\n goUp,\n state,\n stateEffects,\n} from \"./internal.js\";\n\n/**\n * Maps direction semantics to cursor semantics.\n *\n * This turns a movement in a direction (go left, go right) into a cursor\n * operation (go previous, go next).\n *\n * This mixin can be used in conjunction with\n * [KeyboardDirectionMixin](KeyboardDirectionMixin) (which maps keyboard events\n * to directions) and a mixin that handles cursor operations like\n * [ItemsCursorMixin](ItemsCursorMixin).\n *\n * @module DirectionCursorMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function DirectionCursorMixin(Base) {\n // The class prototype added by the mixin.\n class DirectionCursor extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n canGoDown: null,\n canGoLeft: null,\n canGoRight: null,\n canGoUp: null,\n });\n }\n\n /**\n * Interprets `goDown` to mean \"move to the next item\".\n */\n [goDown]() {\n if (super[goDown]) {\n super[goDown]();\n }\n return this[goNext]();\n }\n\n /**\n * Interprets `goEnd` to mean \"move to the last item\".\n */\n [goEnd]() {\n if (super[goEnd]) {\n super[goEnd]();\n }\n return this[goLast]();\n }\n\n /**\n * Interprets `goLeft` to mean \"move to the previous item\".\n *\n * If the element has a `rightToLeft` property and it is true, then this\n * moves to the _next_ item.\n */\n [goLeft]() {\n if (super[goLeft]) {\n super[goLeft]();\n }\n return this[state] && this[state].rightToLeft\n ? this[goNext]()\n : this[goPrevious]();\n }\n\n /**\n * Interprets `goRight` to mean \"move to the next item\".\n *\n * If the element has a `rightToLeft` property and it is true, then this\n * moves to the _previous_ item.\n */\n [goRight]() {\n if (super[goRight]) {\n super[goRight]();\n }\n return this[state] && this[state].rightToLeft\n ? this[goPrevious]()\n : this[goNext]();\n }\n\n /**\n * Interprets `goStart` to mean \"move to the first item\".\n */\n [goStart]() {\n if (super[goStart]) {\n super[goStart]();\n }\n return this[goFirst]();\n }\n\n /**\n * Interprets `goUp` to mean \"move to the previous item\".\n */\n [goUp]() {\n if (super[goUp]) {\n super[goUp]();\n }\n return this[goPrevious]();\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects]\n ? super[stateEffects](state, changed)\n : {};\n\n // Update computed state members to track whether we can go\n // down/left/right/up.\n if (\n changed.canGoNext ||\n changed.canGoPrevious ||\n changed.languageDirection ||\n changed.orientation ||\n changed.rightToLeft\n ) {\n const { canGoNext, canGoPrevious, orientation, rightToLeft } = state;\n const horizontal =\n orientation === \"horizontal\" || orientation === \"both\";\n const vertical = orientation === \"vertical\" || orientation === \"both\";\n const canGoDown = vertical && canGoNext;\n const canGoLeft = !horizontal\n ? false\n : rightToLeft\n ? canGoNext\n : canGoPrevious;\n const canGoRight = !horizontal\n ? false\n : rightToLeft\n ? canGoPrevious\n : canGoNext;\n const canGoUp = vertical && canGoPrevious;\n Object.assign(effects, {\n canGoDown,\n canGoLeft,\n canGoRight,\n canGoUp,\n });\n }\n\n return effects;\n }\n }\n\n return DirectionCursor;\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { firstRender, raiseChangeEvents, rendered, state } from \"./internal.js\";\n\n/**\n * Exposes a public API for the set of items in a list-like element\n *\n * @module ItemsAPIMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function ItemsAPIMixin(Base) {\n // The class prototype added by the mixin.\n class ItemsAPI extends Base {\n /**\n * The current set of items drawn from the element's current state.\n *\n * @type {ListItemElement[]} the element's current items\n */\n get items() {\n return this[state] ? this[state].items : null;\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n // Raise items-changed if items changed after the initial render. We'll\n // see changed.items on initial render, and raiseChangeEvents will be true\n // if we're using SlotContentMixin, but we don't want to actually raise\n // the event then because the items didn't change in response to user\n // activity.\n if (!this[firstRender] && changed.items && this[raiseChangeEvents]) {\n /**\n * Raised when the `items` property changes.\n *\n * @event itemschange\n */\n const event = new CustomEvent(\"itemschange\", {\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n }\n }\n\n return ItemsAPI;\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { getDefaultText } from \"./content.js\";\nimport { defaultState, getItemText, stateEffects } from \"./internal.js\";\n\n/**\n * Exposes the text content of a list's items as an array of strings.\n *\n * @module ItemsTextMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function ItemsTextMixin(Base) {\n // The class prototype added by the mixin.\n class ItemsText extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n texts: null,\n });\n }\n\n /**\n * Extract the text from the given item.\n *\n * The default implementation returns an item's `aria-label`, `alt`\n * attribute, `innerText`, or `textContent`, in that order. You can override\n * this to return the text that should be used.\n *\n * @param {Element} item\n * @returns {string}\n */\n [getItemText](item) {\n return super[getItemText]\n ? super[getItemText](item)\n : getDefaultText(item);\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects]\n ? super[stateEffects](state, changed)\n : {};\n\n // Regenerate texts when items change.\n if (changed.items) {\n const { items } = state;\n const texts = getTextsFromItems(items, this[getItemText]);\n if (texts) {\n Object.freeze(texts);\n Object.assign(effects, { texts });\n }\n }\n\n return effects;\n }\n }\n\n return ItemsText;\n}\n\n/**\n * Extract the text from the given items.\n *\n * @private\n * @param {Element[]} items\n */\nexport function getTextsFromItems(items, getText) {\n return items ? Array.from(items, (item) => getText(item)) : null;\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport ContentItemsMixin from \"./ContentItemsMixin.js\";\nimport SlotContentMixin from \"./SlotContentMixin.js\";\n\n/**\n * Treats the elements assigned to the default slot as list items\n *\n * This is simply a combination of\n * [ContentItemsMixin](ContentItemsMixin) and\n * [SlotContentMixin](SlotContentMixin).\n *\n * @module SlotItemsMixin\n * @mixes ContentItemsMixin\n * @mixes SlotContentMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function SlotItemsMixin(Base) {\n return ContentItemsMixin(SlotContentMixin(Base));\n}\n","import { indexOfItemContainingTarget } from \"../core/dom.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n firstRender,\n raiseChangeEvents,\n render,\n setState,\n state,\n tap,\n} from \"./internal.js\";\n\n/**\n * A tap/mousedown on a list item makes that item current.\n *\n * This simple mixin is useful in list-like elements like [ListBox](ListBox),\n * where a tap/mousedown on a list item implicitly selects it.\n *\n * The standard use for this mixin is in list-like elements. Native list\n * boxes don't appear to be consistent with regard to whether they select\n * on mousedown or click/mouseup. This mixin assumes the use of mousedown.\n * On touch devices, that event appears to trigger when the touch is *released*.\n *\n * This mixin only listens to mousedown events for the primary mouse button\n * (typically the left button). Right clicks are ignored so that the browser may\n * display a context menu.\n *\n * This mixin expects the component to provide an `state.items` member. It also\n * expects the component to define a `state.currentIndex` member; you can\n * provide that yourself, or use [ItemsCursorMixin](ItemsCursorMixin).\n *\n * If the component receives an event that doesn't correspond to an item (e.g.,\n * the user taps on the element background visible between items), the cursor\n * will be removed. However, if the component sets `state.currentItemRequired` to\n * true, a background tap will *not* remove the cursor.\n *\n * @module TapCursorMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function TapCursorMixin(Base) {\n // The class prototype added by the mixin.\n return class TapCursor extends Base {\n constructor() {\n // @ts-ignore\n super();\n this.addEventListener(\"mousedown\", (event) => {\n // Only process events for the main (usually left) button.\n if (event.button !== 0) {\n return;\n }\n this[raiseChangeEvents] = true;\n this[tap](event);\n this[raiseChangeEvents] = false;\n });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n if (this[firstRender]) {\n Object.assign(this.style, {\n touchAction: \"manipulation\", // for iOS Safari\n mozUserSelect: \"none\",\n msUserSelect: \"none\",\n webkitUserSelect: \"none\",\n userSelect: \"none\",\n });\n }\n }\n\n [tap](/** @type {MouseEvent} */ event) {\n // In some situations, the event target will not be the child which was\n // originally clicked on. E.g., if the item clicked on is a button, the\n // event seems to be raised in phase 2 (AT_TARGET) — but the event target\n // will be the component, not the item that was clicked on. Instead of\n // using the event target, we get the first node in the event's composed\n // path.\n // @ts-ignore\n const target = event.composedPath\n ? event.composedPath()[0]\n : event.target;\n\n // Find which item was clicked on and, if found, make it current. Ignore\n // clicks on disabled items.\n //\n // For elements which don't require a cursor, a background click will\n // determine the item was null, in which we case we'll remove the cursor.\n const { items, currentItemRequired } = this[state];\n if (items && target instanceof Node) {\n const targetIndex = indexOfItemContainingTarget(items, target);\n const item = targetIndex >= 0 ? items[targetIndex] : null;\n if ((item && !item.disabled) || (!item && !currentItemRequired)) {\n this[setState]({\n currentIndex: targetIndex,\n });\n event.stopPropagation();\n }\n }\n }\n };\n}\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n ids,\n raiseChangeEvents,\n rendered,\n setState,\n shadowRoot,\n state,\n stateEffects,\n} from \"./internal.js\";\n\nconst documentMouseupListenerKey = Symbol(\"documentMouseupListener\");\n\n/**\n * Add drag-select behavior to an element with a popup.\n *\n * This allows a user to mouse down on a popup source, drag into the resulting\n * popup, and release the mouse to select something in the popup. This can be\n * used in conjunction with [PopupListMixin](PopupListMixin).\n *\n * @module PopupDragSelectMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function PopupDragSelectMixin(Base) {\n // The class prototype added by the mixin.\n class PopupDragSelect extends Base {\n connectedCallback() {\n super.connectedCallback();\n // Handle edge case where component is opened, removed, then added back.\n listenIfOpenAndConnected(this);\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n dragSelect: true,\n });\n }\n\n disconnectedCallback() {\n if (super.disconnectedCallback) {\n super.disconnectedCallback();\n }\n listenIfOpenAndConnected(this);\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n super[rendered](changed);\n\n if (changed.opened) {\n listenIfOpenAndConnected(this);\n }\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects](state, changed);\n\n // Set things when opening, or reset things when closing.\n if (changed.opened) {\n if (state.opened) {\n // Opening\n Object.assign(effects, {\n // Until we get a mouseup, we're doing a drag-select.\n dragSelect: true,\n });\n }\n }\n\n return effects;\n }\n }\n\n return PopupDragSelect;\n}\n\nasync function handleMouseup(/** @type {MouseEvent} */ event) {\n // @ts-ignore\n const element = this;\n const hitTargets = element[shadowRoot].elementsFromPoint(\n event.clientX,\n event.clientY\n );\n if (element.opened) {\n // Was mouseup over source part?\n const overSource = hitTargets.indexOf(element[ids].source) >= 0;\n\n // Was mouseup over the popup or popup frame?\n const popup = element[ids].popup;\n const overPopup = hitTargets.indexOf(popup) >= 0;\n const overPopupFrame = popup.frame && hitTargets.indexOf(popup.frame) >= 0;\n\n if (overSource) {\n // User released the mouse over the source button (behind the\n // backdrop), so we're no longer doing a drag-select.\n if (element[state].dragSelect) {\n element[raiseChangeEvents] = true;\n element[setState]({\n dragSelect: false,\n });\n element[raiseChangeEvents] = false;\n }\n } else if (!(overPopup || overPopupFrame)) {\n // If we get to this point, the user released over the backdrop with\n // the popup open, so close.\n element[raiseChangeEvents] = true;\n await element.close();\n element[raiseChangeEvents] = false;\n }\n }\n}\n\nfunction listenIfOpenAndConnected(element) {\n if (element[state].opened && element.isConnected) {\n // If the popup is open and user releases the mouse over the backdrop, we\n // want to close the popup. We need to listen to mouseup on the document,\n // not this element. If the user mouses down on the source, then moves the\n // mouse off the document before releasing the mouse, the element itself\n // won't get the mouseup. The document will, however, so it's a more\n // reliable source of mouse state.\n //\n // Coincidentally, we *also* need to listen to mouseup on the document to\n // tell whether the user released the mouse over the source button. When the\n // user mouses down, the backdrop will appear and cover the source, so from\n // that point on the source won't receive a mouseup event. Again, we can\n // listen to mouseup on the document and do our own hit-testing to see if\n // the user released the mouse over the source.\n if (!element[documentMouseupListenerKey]) {\n // Not listening yet; start.\n element[documentMouseupListenerKey] = handleMouseup.bind(element);\n document.addEventListener(\"mouseup\", element[documentMouseupListenerKey]);\n }\n } else if (element[documentMouseupListenerKey]) {\n // Currently listening; stop.\n document.removeEventListener(\n \"mouseup\",\n element[documentMouseupListenerKey]\n );\n element[documentMouseupListenerKey] = null;\n }\n}\n","/**\n * Function for positioning a popup relative to a source element.\n *\n * @module positionPopup\n */\n\n/**\n * Given an (x, y) origin point, a bounding rectangle, and a layout, return the\n * height and width of the available space in the quadrant used by that layout.\n *\n * @private\n * @param {DOMRect} sourceRect\n * @param {DOMRect} boundsRect\n */\nfunction availableSpace(sourceRect, boundsRect, direction, align) {\n const sourceOrigin = getSourceOrigin(sourceRect, direction, align);\n\n let height = 0;\n let width = 0;\n const vertical = direction === \"above\" || direction === \"below\";\n switch (direction) {\n case \"above\":\n height = sourceOrigin.y - boundsRect.top;\n break;\n case \"below\":\n height = boundsRect.bottom - sourceOrigin.y;\n break;\n case \"left\":\n width = sourceOrigin.x - boundsRect.left;\n break;\n case \"right\":\n width = boundsRect.right - sourceOrigin.x;\n break;\n }\n switch (align) {\n case \"bottom\":\n height = sourceOrigin.y - boundsRect.top;\n break;\n case \"center\":\n if (vertical) {\n width = boundsRect.width;\n } else {\n height = boundsRect.height;\n }\n break;\n case \"stretch\":\n if (vertical) {\n width = sourceRect.width;\n } else {\n height = sourceRect.height;\n }\n break;\n case \"left\":\n width = boundsRect.right - sourceOrigin.x;\n break;\n case \"right\":\n width = sourceOrigin.x - boundsRect.left;\n break;\n case \"top\":\n height = boundsRect.bottom - sourceOrigin.y;\n break;\n }\n height = Math.max(0, height);\n width = Math.max(0, width);\n return { height, width };\n}\n\n/**\n * Given two layouts, return -1 if the first is better, 1 if the second is\n * better, and 0 if they're equally good.\n *\n * Our comparison uses a heuristic that looks to see whether a layout can fit\n * the popup in height, width, or both. A layout is best if it fits both height\n * and width. If each layout only fits one dimension, then the layout that gives\n * the popup more space is preferred.\n *\n * @private\n * @param {DOMRect} sourceRect\n * @param {DOMRect} popupRect\n * @param {DOMRect} boundsRect\n */\nfunction compareLayouts(layout1, layout2, sourceRect, popupRect, boundsRect) {\n const space1 = availableSpace(\n sourceRect,\n boundsRect,\n layout1.direction,\n layout1.align\n );\n const space2 = availableSpace(\n sourceRect,\n boundsRect,\n layout2.direction,\n layout2.align\n );\n const fitsWidth1 = popupRect.width <= space1.width;\n const fitsHeight1 = popupRect.height <= space1.height;\n const fitsEither1 = fitsWidth1 || fitsHeight1;\n const fitsBoth1 = fitsWidth1 && fitsHeight1;\n const fitsWidth2 = popupRect.width <= space2.width;\n const fitsHeight2 = popupRect.height <= space2.height;\n const fitsEither2 = fitsWidth2 || fitsHeight2;\n const fitsBoth2 = fitsWidth2 && fitsHeight2;\n const area1 = space1.width * space1.height;\n const area2 = space2.width * space2.height;\n if (fitsBoth1 && fitsBoth2) {\n // Both layouts can fit in both dimensions; they're equally good.\n return 0;\n } else if (fitsBoth1) {\n // Layout 1 has space for popup in both dimensions.\n return -1;\n } else if (fitsBoth2) {\n // Layout 2 has space for popup in both dimensions.\n return 1;\n } else if (fitsEither1 && !fitsEither2) {\n // Layout 1 fits in one dimension, layout 2 doesn't fit either.\n return -1;\n } else if (fitsEither2 && !fitsEither1) {\n // Layout 2 fits in one dimensions, layout 1 doesn't fit either.\n return 1;\n } else if (fitsEither1 && area1 > area2) {\n // Layout 1 fits in one dimension and gives popup more space.\n return -1;\n } else if (fitsEither2 && area2 > area1) {\n // Layout 2 fits in one dimension and gives popup more space.\n return 1;\n } else if (area1 > area2) {\n // Layout 1 gives popup more space.\n return -1;\n } else if (area2 > area1) {\n // Layout 2 gives popup more space.\n return 1;\n } else {\n // Layouts equally good or bad.\n return 0;\n }\n}\n\n/**\n * Determine the (x, y) location at which the popup should be positioned to\n * touch the indicated source origin point.\n *\n * @private\n * @param {DOMRect} sourceRect\n * @param {DOMRect} popupRect\n * @param {DOMRect} boundsRect\n */\nfunction getPositionedRect(\n sourceRect,\n popupRect,\n boundsRect,\n direction,\n align\n) {\n // With respect to which point on the source will we position the popup?\n const sourceOrigin = getSourceOrigin(sourceRect, direction, align);\n\n // We'll adjust our bounds depending upon the layout.\n let {\n x: boundsLeft,\n y: boundsTop,\n bottom: boundsBottom,\n right: boundsRight,\n } = boundsRect;\n\n let x = 0;\n let y = 0;\n let height = popupRect.height;\n let width = popupRect.width;\n const vertical = direction === \"above\" || direction === \"below\";\n switch (direction) {\n case \"above\":\n y = sourceOrigin.y - popupRect.height;\n boundsBottom = sourceOrigin.y;\n break;\n case \"below\":\n y = sourceOrigin.y;\n boundsTop = sourceOrigin.y;\n break;\n case \"left\":\n x = sourceOrigin.x - popupRect.width;\n boundsRight = sourceOrigin.x;\n break;\n case \"right\":\n x = sourceOrigin.x;\n boundsLeft = sourceOrigin.x;\n break;\n }\n switch (align) {\n case \"bottom\":\n y = sourceOrigin.y - popupRect.height;\n boundsBottom = sourceOrigin.y;\n break;\n case \"left\":\n x = sourceOrigin.x;\n boundsLeft = sourceOrigin.x;\n break;\n case \"center\":\n if (vertical) {\n x = sourceOrigin.x - popupRect.width / 2;\n } else {\n y = sourceOrigin.y - popupRect.height / 2;\n }\n break;\n case \"right\":\n x = sourceOrigin.x - popupRect.width;\n boundsRight = sourceOrigin.x;\n break;\n case \"stretch\":\n if (vertical) {\n x = sourceOrigin.x;\n width = sourceRect.width;\n } else {\n y = sourceOrigin.y;\n height = sourceRect.height;\n }\n break;\n case \"top\":\n y = sourceOrigin.y;\n boundsTop = sourceOrigin.y;\n break;\n }\n\n // Force the desired rectangle to fit within the bounds.\n x = Math.max(x, boundsLeft);\n y = Math.max(y, boundsTop);\n width = Math.min(width, boundsRight - x);\n height = Math.min(height, boundsBottom - y);\n\n return new DOMRect(x, y, width, height);\n}\n\n/**\n * For a given layout, we will use a different point on the source element as a\n * reference point to position the popup. Return that (x, y) point.\n *\n * @private\n * @param {DOMRect} sourceRect\n */\nfunction getSourceOrigin(sourceRect, direction, align) {\n let x = 0;\n let y = 0;\n const vertical = direction === \"above\" || direction === \"below\";\n switch (direction) {\n case \"above\":\n y = sourceRect.top;\n break;\n case \"below\":\n y = sourceRect.bottom;\n break;\n case \"left\":\n case \"right\":\n x = sourceRect[direction];\n break;\n }\n switch (align) {\n case \"bottom\":\n case \"top\":\n y = sourceRect[align];\n break;\n case \"left\":\n case \"right\":\n x = sourceRect[align];\n break;\n case \"center\":\n if (vertical) {\n x = sourceRect.left + sourceRect.width / 2;\n } else {\n y = sourceRect.top + sourceRect.height / 2;\n }\n break;\n case \"stretch\":\n if (vertical) {\n x = sourceRect.left;\n } else {\n y = sourceRect.top;\n }\n break;\n }\n return { x, y };\n}\n\n/**\n * Return the optimum layout for the popup element with respect to a source\n * element that fits in the given bounds.\n *\n * @param {DOMRect} sourceRect\n * @param {DOMRect} popupRect\n * @param {DOMRect} boundsRect\n * @param {any} options\n */\nexport default function layoutPopup(\n sourceRect,\n popupRect,\n boundsRect,\n options\n) {\n const normalized = normalizeOptions(options);\n\n // Given the direction and alignment, which layouts do we want to consider?\n const layouts = prioritizedLayouts(normalized.direction, normalized.align);\n\n // Sort layouts by our heuristic.\n layouts.sort((layout1, layout2) =>\n compareLayouts(layout1, layout2, sourceRect, popupRect, boundsRect)\n );\n\n // Take the best layout.\n const layout = layouts[0];\n\n // Find the positioned rect with respect to the source origin.\n layout.rect = getPositionedRect(\n sourceRect,\n popupRect,\n boundsRect,\n layout.direction,\n layout.align\n );\n\n return layout;\n}\n\n// Normalize the popup options. Convert any logical layout options (start, end)\n// to physical options (e.g., left, right). Replace any unknown option values\n// with defaults.\nfunction normalizeOptions(options) {\n const {\n align: logicalAlign,\n direction: logicalDirection,\n rightToLeft,\n } = options;\n const defaultDirection = \"below\";\n const physicalDirection =\n {\n above: \"above\",\n below: \"below\",\n column: \"below\",\n \"column-reverse\": \"above\",\n left: \"left\",\n right: \"right\",\n row: rightToLeft ? \"left\" : \"right\",\n \"row-reverse\": rightToLeft ? \"right\" : \"left\",\n }[logicalDirection] || defaultDirection;\n const crossAxis = {\n above: \"horizontal\",\n below: \"horizontal\",\n left: \"vertical\",\n right: \"vertical\",\n }[physicalDirection];\n const defaultAlign = {\n horizontal: \"left\",\n vertical: \"top\",\n }[crossAxis];\n const physicalAlign =\n {\n horizontal: {\n center: \"center\",\n end: rightToLeft ? \"left\" : \"right\",\n left: \"left\",\n right: \"right\",\n start: rightToLeft ? \"right\" : \"left\",\n stretch: \"stretch\",\n },\n vertical: {\n bottom: \"bottom\",\n center: \"center\",\n end: \"bottom\",\n start: \"top\",\n stretch: \"stretch\",\n top: \"top\",\n },\n }[crossAxis][logicalAlign] || defaultAlign;\n return {\n align: physicalAlign,\n direction: physicalDirection,\n rightToLeft,\n };\n}\n\n// Given a preferred direction and alignment, determine the set of 2 or 4 layout\n// alternatives that should be considered, in priority order.\nfunction prioritizedLayouts(preferredDirection, preferredAlign) {\n const flipDirection = {\n above: \"below\",\n below: \"above\",\n left: \"right\",\n right: \"left\",\n };\n const flipAlign = {\n top: \"bottom\",\n bottom: \"top\",\n left: \"right\",\n right: \"left\",\n };\n\n // Our first choice of layout will be the preferred options.\n const possibilties = [\n { align: preferredAlign, direction: preferredDirection },\n ];\n\n if (preferredAlign === \"center\" || preferredAlign === \"stretch\") {\n // Center/stretch align only needs to consider flipping over main axis.\n possibilties.push({\n align: preferredAlign,\n direction: flipDirection[preferredDirection],\n });\n } else {\n // Consider possibilities of flipping on either axis or both.\n possibilties.push({\n align: flipAlign[preferredAlign],\n direction: preferredDirection,\n });\n possibilties.push({\n align: preferredAlign,\n direction: flipDirection[preferredDirection],\n });\n possibilties.push({\n align: flipAlign[preferredAlign],\n direction: flipDirection[preferredDirection],\n });\n }\n\n return possibilties;\n}\n","import { booleanAttributeValue } from \"../core/AttributeMarshallingMixin.js\";\nimport { setInternalState } from \"../core/dom.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n raiseChangeEvents,\n render,\n rendered,\n setState,\n startEffect,\n state,\n stateEffects,\n} from \"./internal.js\";\n\n/** @type {any} */\nconst closePromiseKey = Symbol(\"closePromise\");\n/** @type {any} */\nconst closeResolveKey = Symbol(\"closeResolve\");\n\n/**\n * Tracks the open/close state of a component.\n *\n * @module OpenCloseMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function OpenCloseMixin(Base) {\n // The class prototype added by the mixin.\n class OpenClose extends Base {\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"opened\") {\n const value = booleanAttributeValue(name, newValue);\n if (this.opened !== value) {\n this.opened = value;\n }\n } else {\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n /**\n * Close the component (if not already closed).\n *\n * Some components like [AlertDialog](AlertDialog) want to indicate why or\n * how they were closed. To support such scenarios, you can supply a value\n * to the optional `closeResult` parameter. This closeResult will be made\n * available in the `whenClosed` promise and the `state.closeResult` member.\n *\n * @param {object} [closeResult] - an indication of how or why the element closed\n */\n async close(closeResult) {\n if (super.close) {\n await super.close();\n }\n this[setState]({ closeResult });\n await this.toggle(false);\n }\n\n /**\n * True if the element is currently closed.\n *\n * This read-only property is provided as a convenient inverse of `opened`.\n *\n * @type {boolean}\n */\n get closed() {\n return this[state] && !this[state].opened;\n }\n\n /**\n * True if the element has completely closed.\n *\n * For components not using asynchronous open/close effects, this property\n * returns the same value as the `closed` property. For elements that have a\n * true value of `state.openCloseEffects` (e.g., elements using\n * [TransitionEffectMixin](TransitionEffectMixin)), this property returns\n * true only if `state.effect` is \"close\" and `state.effectPhase` is\n * \"after\".\n *\n * @type {boolean}\n */\n get closeFinished() {\n return this[state].closeFinished;\n }\n\n get closeResult() {\n return this[state].closeResult;\n }\n\n // @ts-ignore\n get [defaultState]() {\n const defaults = {\n closeResult: undefined,\n opened: false,\n };\n // If this component defines a `startEffect` method (e.g., by using\n // TransitionEffectMixin), include default state for open/close effects.\n // Since the component is closed by default, the default effect state is\n // after the close effect has completed.\n if (this[startEffect]) {\n Object.assign(defaults, {\n closeFinished: true,\n effect: \"close\",\n effectPhase: \"after\",\n openCloseEffects: true,\n });\n }\n return Object.assign(super[defaultState] || {}, defaults);\n }\n\n /**\n * Open the element (if not already opened).\n */\n async open() {\n if (super.open) {\n await super.open();\n }\n await this.toggle(true);\n }\n\n /**\n * True if the element is currently opened.\n *\n * This property can be set as a boolean attribute\n *\n * @type {boolean}\n * @default false\n */\n get opened() {\n return this[state] && this[state].opened;\n }\n set opened(opened) {\n this[setState]({ closeResult: undefined });\n this.toggle(opened);\n }\n\n [render](changed) {\n super[render](changed);\n\n // Reflect opened state.\n if (changed.opened) {\n const { opened } = this[state];\n setInternalState(this, \"opened\", opened);\n }\n\n // Reflect closed state. To handle asynchronous close effects, we reflect\n // the inverse of closeFinished instead of reflecting closed.\n if (changed.closeFinished) {\n const { closeFinished } = this[state];\n setInternalState(this, \"closed\", closeFinished);\n }\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n if (changed.opened && this[raiseChangeEvents]) {\n /**\n * Raised when the opened/closed state of the component changes.\n *\n * @event openedchange\n */\n const openedChangeEvent = new CustomEvent(\"openedchange\", {\n bubbles: true,\n detail: {\n closeResult: this[state].closeResult,\n opened: this[state].opened,\n },\n });\n this.dispatchEvent(openedChangeEvent);\n\n if (this[state].opened) {\n const oldOpenedEvent = new CustomEvent(\"opened\", {\n bubbles: true,\n });\n this.dispatchEvent(oldOpenedEvent);\n /**\n * Raised when the component opens.\n *\n * @event open\n */\n const openEvent = new CustomEvent(\"open\", {\n bubbles: true,\n });\n this.dispatchEvent(openEvent);\n } else {\n const oldClosedEvent = new CustomEvent(\"closed\", {\n bubbles: true,\n detail: {\n closeResult: this[state].closeResult,\n },\n });\n this.dispatchEvent(oldClosedEvent);\n /**\n * Raised when the component closes.\n *\n * @event close\n */\n const closeEvent = new CustomEvent(\"close\", {\n bubbles: true,\n detail: {\n closeResult: this[state].closeResult,\n },\n });\n this.dispatchEvent(closeEvent);\n }\n }\n\n // If someone's waiting for the component to close, and it's completely\n // finished closing, then resolve the close promise.\n const closeResolve = this[closeResolveKey];\n if (this.closeFinished && closeResolve) {\n this[closeResolveKey] = null;\n this[closePromiseKey] = null;\n closeResolve(this[state].closeResult);\n }\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects]\n ? super[stateEffects](state, changed)\n : {};\n\n // If the component is being opened, then clear any previous closeResult.\n if (changed.opened && state.opened) {\n Object.assign(effects, {\n closeResult: undefined,\n });\n }\n\n // Update our notion of closeFinished to track the closed state for\n // components with synchronous open/close effects and components with\n // asynchronous open/close effects.\n if (\n changed.openCloseEffects ||\n changed.effect ||\n changed.effectPhase ||\n changed.opened\n ) {\n const { effect, effectPhase, openCloseEffects, opened } = state;\n const closeFinished = openCloseEffects\n ? effect === \"close\" && effectPhase === \"after\"\n : !opened;\n Object.assign(effects, { closeFinished });\n }\n\n return effects;\n }\n\n /**\n * Toggle the open/close state of the element.\n *\n * @param {boolean} [opened] - true if the element should be opened, false\n * if closed.\n */\n async toggle(opened = !this.opened) {\n if (super.toggle) {\n await super.toggle(opened);\n }\n const changed = opened !== this[state].opened;\n if (changed) {\n /** @type {PlainObject} */ const changes = { opened };\n if (this[state].openCloseEffects) {\n changes.effect = opened ? \"open\" : \"close\";\n if (this[state].effectPhase === \"after\") {\n changes.effectPhase = \"before\";\n }\n }\n await this[setState](changes);\n }\n }\n\n /**\n * This method can be used as an alternative to listening to the\n * \"openedchange\" event, particularly in situations where you want to only\n * handle the next time the component is closed.\n *\n * @returns {Promise} A promise that resolves when the element has\n * completely closed, including the completion of any asynchronous opening\n * effect.\n */\n whenClosed() {\n if (!this[closePromiseKey]) {\n this[closePromiseKey] = new Promise((resolve) => {\n this[closeResolveKey] = resolve;\n });\n }\n return this[closePromiseKey];\n }\n }\n\n return OpenClose;\n}\n","import { templateFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\";\nimport AriaRoleMixin from \"./AriaRoleMixin.js\";\nimport { defaultState, template } from \"./internal.js\";\n\nconst Base = AriaRoleMixin(ReactiveElement);\n\n/**\n * Background element shown behind an overlay's primary content\n *\n * The backdrop is transparent by default, suggesting to the user that the\n * overlay is modeless, and they can click through it to reach the background\n * elements. For a modal variant, see [ModalBackdrop](ModalBackdrop).\n *\n * @inherits ReactiveElement\n * @mixes AriaRoleMixin\n */\nclass Backdrop extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n role: \"none\",\n });\n }\n\n get [template]() {\n return templateFrom.html`\n <style>\n :host {\n display: inline-block;\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n touch-action: manipulation;\n width: 100%;\n }\n </style>\n <slot></slot>\n `;\n }\n}\n\nexport default Backdrop;\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n render,\n rendering,\n setState,\n state,\n} from \"./internal.js\";\n\n/**\n * Lets a component define its ARIA role through a `role` state member\n *\n * Among other things, this allows a class or mixin to define a default\n * role through the component's `defaultState`.\n *\n * Some mixins come with identicial support for managing an ARIA role. Those\n * mixins include [AriaListMixin](AriaListMixin),\n * [AriaMenuMixin](AriaMenuMixin), [DialogModalityMixin](DialogModalityMixin),\n * and [PopupModalityMixin](PopupModalityMixin). If you're using one of those\n * mixins, you do *not* need to use this mixin.\n *\n * @module AriaRoleMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function AriaRoleMixin(Base) {\n // The class prototype added by the mixin.\n class AriaRole extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n role: null,\n });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n if (changed.role) {\n // Apply top-level role.\n const { role } = this[state];\n if (role) {\n this.setAttribute(\"role\", role);\n } else {\n this.removeAttribute(\"role\");\n }\n }\n }\n\n // Setting the standard role attribute will invoke this property setter,\n // which will allow us to update our state.\n get role() {\n return super.role;\n }\n set role(role) {\n const s = String(role);\n super.role = s;\n if (!this[rendering]) {\n this[setState]({ s });\n }\n }\n }\n\n return AriaRole;\n}\n","import { templateFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\";\nimport { template } from \"./internal.js\";\n\n/**\n * A simple frame for overlay content.\n *\n * The default appearance of `OverlayFrame` uses a simple drop-shadow to let the\n * user see the framed content as being on top of the background page content.\n *\n * @inherits ReactiveElement\n */\nclass OverlayFrame extends ReactiveElement {\n get [template]() {\n return templateFrom.html`\n <style>\n :host {\n display: inline-block;\n position: relative;\n }\n </style>\n <slot></slot>\n `;\n }\n}\n\nexport default OverlayFrame;\n","import { deepContains, firstFocusableElement } from \"../core/dom.js\";\nimport { fragmentFrom, templateFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n firstRender,\n render,\n rendered,\n setState,\n state,\n template,\n} from \"./internal.js\";\n\n/** @type {any} */\nconst appendedToDocumentKey = Symbol(\"appendedToDocument\");\n/** @type {any} */\nconst defaultZIndexKey = Symbol(\"assignedZIndex\");\n/** @type {any} */\nconst restoreFocusToElementKey = Symbol(\"restoreFocusToElement\");\n\n/**\n * Displays an opened element on top of other page elements.\n *\n * This mixin handles showing and hiding an overlay element. It, together with\n * [OpenCloseMixin](OpenCloseMixin), form the core behavior for [Overlay](Overlay),\n * which in turn forms the basis of Elix's overlay components.\n *\n * @module OverlayMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function OverlayMixin(Base) {\n // The class prototype added by the mixin.\n class Overlay extends Base {\n // TODO: Document\n get autoFocus() {\n return this[state].autoFocus;\n }\n set autoFocus(autoFocus) {\n this[setState]({ autoFocus });\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n autoFocus: true,\n persistent: false,\n });\n }\n\n async open() {\n if (!this[state].persistent && !this.isConnected) {\n // Overlay isn't in document yet.\n this[appendedToDocumentKey] = true;\n document.body.append(this);\n }\n if (super.open) {\n await super.open();\n }\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n if (this[firstRender]) {\n this.addEventListener(\"blur\", (event) => {\n // What has the focus now?\n const newFocusedElement =\n event.relatedTarget || document.activeElement;\n /** @type {any} */\n const node = this;\n if (newFocusedElement instanceof HTMLElement) {\n const focusInside = deepContains(node, newFocusedElement);\n if (!focusInside) {\n if (this.opened) {\n // The user has most likely clicked on something in the background\n // of a modeless overlay. Remember that element, and restore focus\n // to it when the overlay finishes closing.\n this[restoreFocusToElementKey] = newFocusedElement;\n } else {\n // A blur event fired, but the overlay closed itself before the blur\n // event could be processed. In closing, we may have already\n // restored the focus to the element that originally invoked the\n // overlay. Since the user has clicked somewhere else to close the\n // overlay, put the focus where they wanted it.\n newFocusedElement.focus();\n this[restoreFocusToElementKey] = null;\n }\n }\n }\n });\n }\n\n if (changed.effectPhase || changed.opened || changed.persistent) {\n if (!this[state].persistent) {\n // Temporary overlay\n const closed =\n typeof this.closeFinished === \"undefined\"\n ? this.closed\n : this.closeFinished;\n\n if (closed) {\n if (this[defaultZIndexKey]) {\n // Remove default z-index.\n this.style.zIndex = \"\";\n this[defaultZIndexKey] = null;\n }\n } else if (this[defaultZIndexKey]) {\n this.style.zIndex = this[defaultZIndexKey];\n } else {\n if (!hasZIndex(this)) {\n bringToFront(this);\n }\n }\n }\n }\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n if (this[firstRender]) {\n // Perform one-time check to see if component needs a default z-index.\n if (this[state].persistent && !hasZIndex(this)) {\n bringToFront(this);\n }\n }\n\n if (changed.opened) {\n if (this[state].autoFocus) {\n if (this[state].opened) {\n // Opened\n if (\n !this[restoreFocusToElementKey] &&\n document.activeElement !== document.body\n ) {\n // Remember which element had the focus before we were opened.\n this[restoreFocusToElementKey] = document.activeElement;\n }\n // Focus on the element itself (if it's focusable), or the first focusable\n // element inside it.\n // TODO: We'd prefer to require that overlays (like the Overlay base\n // class) make use of delegatesFocus via DelegateFocusMixin, which would\n // let us drop the need for this mixin here to do anything special with\n // focus. However, an initial trial of this revealed an issue in\n // MenuButton, where invoking the menu did not put the focus on the first\n // menu item as expected. Needs more investigation.\n const focusElement = firstFocusableElement(this);\n if (focusElement) {\n focusElement.focus();\n }\n } else {\n // Closed\n if (this[restoreFocusToElementKey]) {\n // Restore focus to the element that had the focus before the overlay was\n // opened.\n this[restoreFocusToElementKey].focus();\n this[restoreFocusToElementKey] = null;\n }\n }\n }\n }\n\n // If we're finished closing an overlay that was automatically added to the\n // document, remove it now. Note: we only do this when the component\n // updates, not when it mounts, because we don't want an automatically-added\n // element to be immediately removed during its connectedCallback.\n if (\n !this[firstRender] &&\n !this[state].persistent &&\n this.closeFinished &&\n this[appendedToDocumentKey]\n ) {\n this[appendedToDocumentKey] = false;\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n }\n }\n\n get [template]() {\n const result = super[template] || templateFrom.html``;\n\n // We'd like to just use the `hidden` attribute, but a side-effect of\n // styling with the hidden attribute is that naive styling of the\n // component from the outside (to change to display: flex, say) will\n // override the display: none implied by hidden. To work around this\n // problem, we use display: none when the overlay is closed.\n result.content.append(fragmentFrom.html`\n <style>\n :host([closed]) {\n display: none;\n }\n </style>\n `);\n\n return result;\n }\n }\n\n return Overlay;\n}\n\n// Pick a default z-index, remember it, and apply it.\nfunction bringToFront(element) {\n const defaultZIndex = maxZIndexInUse() + 1;\n element[defaultZIndexKey] = defaultZIndex;\n element.style.zIndex = defaultZIndex.toString();\n}\n\n/**\n * If the element has or inherits an explicit numeric z-index, return true.\n * Otherwise, return false.\n *\n * @private\n * @param {HTMLElement} element\n * @returns {boolean}\n */\nfunction hasZIndex(element) {\n const computedZIndex = getComputedStyle(element).zIndex;\n const explicitZIndex = element.style.zIndex;\n const isExplicitZIndexNumeric = !isNaN(parseInt(explicitZIndex));\n if (computedZIndex === \"auto\") {\n return isExplicitZIndexNumeric;\n }\n if (computedZIndex === \"0\" && !isExplicitZIndexNumeric) {\n // Might be on Safari, which reports a computed z-index of zero even in\n // cases where no z-index has been inherited but the element creates a\n // stacking context. Inspect the composed tree parent to infer whether the\n // element is really inheriting a z-index.\n const parent =\n element.assignedSlot ||\n (element instanceof ShadowRoot ? element.host : element.parentNode);\n if (!(parent instanceof HTMLElement)) {\n // Theoretical edge case, assume zero z-index is real.\n return true;\n }\n if (!hasZIndex(parent)) {\n // The parent doesn't have a numeric z-index, and the element itself\n // doesn't have a numeric z-index, so the \"0\" value for the computed\n // z-index is simulated, not a real assigned numeric z-index.\n return false;\n }\n }\n // Element has a non-zero numeric z-index.\n return true;\n}\n\n/*\n * Return the highest z-index currently in use in the document's light DOM.\n *\n * This calculation looks at all light DOM elements, so is theoretically\n * expensive. That said, it only runs when an overlay is opening, and is only used\n * if an overlay doesn't have a z-index already. In cases where performance is\n * an issue, this calculation can be completely circumvented by manually\n * applying a z-index to an overlay.\n */\nfunction maxZIndexInUse() {\n const elements = document.body.querySelectorAll(\"*\");\n const zIndices = Array.from(elements, (element) => {\n const style = getComputedStyle(element);\n let zIndex = 0;\n if (style.position !== \"static\" && style.zIndex !== \"auto\") {\n const parsed = style.zIndex ? parseInt(style.zIndex) : 0;\n zIndex = !isNaN(parsed) ? parsed : 0;\n }\n return zIndex;\n });\n return Math.max(...zIndices);\n}\n","import { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\";\nimport { transmute } from \"../core/template.js\";\nimport Backdrop from \"./Backdrop.js\";\nimport {\n checkSize,\n defaultState,\n ids,\n render,\n rendered,\n setState,\n shadowRoot,\n state,\n template,\n} from \"./internal.js\";\nimport OpenCloseMixin from \"./OpenCloseMixin.js\";\nimport OverlayFrame from \"./OverlayFrame.js\";\nimport OverlayMixin from \"./OverlayMixin.js\";\nimport SlotContentMixin from \"./SlotContentMixin.js\";\n\n// TODO: We'd like to use DelegateFocusMixin in this component, but see the note\n// at OverlayMixin's openedChanged function.\nconst Base = OpenCloseMixin(OverlayMixin(SlotContentMixin(ReactiveElement)));\n\n/**\n * An element that appears over other page elements\n *\n * The main overlay content is presented within a frame on top of an optional\n * backdrop.\n *\n * The overlay logic is provided by [OverlayMixin](OverlayMixin). `Overlay` adds\n * the definition of customizable element tags: [frameTag](#frameTag) for the\n * frame around the overlay content, and [backdropTag](#backdropTag) (if\n * defined) for the optional element covering the page elements behind the\n * overlay.\n *\n * As a convenience, the `open` method of `Overlay` will automatically add the\n * overlay to the end of the document body if the overlay isn't already in the\n * document. If the overlay is automatically attached in this way, then when it\n * closes, it will automatically be removed.\n *\n * See [Dialog](Dialog) and [Popup](Popup) for modal and modeless subclasses,\n * respectively.\n *\n * @inherits ReactiveElement\n * @mixes OpenCloseMixin\n * @mixes OverlayMixin\n * @mixes SlotContentMixin\n * @part {Backdrop} backdrop - the backdrop behind the overlay\n * @part {OverlayFrame} frame - the frame around the overlay\n */\nclass Overlay extends Base {\n get backdrop() {\n return this[ids] && this[ids].backdrop;\n }\n\n /**\n * The class or tag used for the `backdrop` part - the optional\n * element shown behind the overlay.\n *\n * This can help focus the user's attention on the overlay content.\n * Additionally, a backdrop can be used to absorb clicks on background page\n * elements. For example, [Dialog](Dialog) uses [ModalBackdrop](ModalBackdrop)\n * as an overlay backdrop in such a way.\n *\n * @type {PartDescriptor}\n * @default Backdrop\n */\n get backdropPartType() {\n return this[state].backdropPartType;\n }\n set backdropPartType(backdropPartType) {\n this[setState]({ backdropPartType });\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n backdropPartType: Backdrop,\n framePartType: OverlayFrame,\n });\n }\n\n get frame() {\n return this[ids].frame;\n }\n\n /**\n * The class or tag used to create the `frame` part the overlay's\n * primary content.\n *\n * The frame element can be used to provide a border around the overlay\n * content, and to provide visual effects such as a drop-shadow to help\n * distinguish overlay content from background page elements.\n *\n * @type {PartDescriptor}\n * @default OverlayFrame\n */\n get framePartType() {\n return this[state].framePartType;\n }\n set framePartType(framePartType) {\n this[setState]({ framePartType });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n renderParts(this[shadowRoot], this[state], changed);\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n super[rendered](changed);\n\n if (changed.opened && this[state].content) {\n // If contents know how to size themselves, ask them to check their size.\n this[state].content.forEach((element) => {\n if (element[checkSize]) {\n element[checkSize]();\n }\n });\n }\n }\n\n get [template]() {\n const result = super[template];\n\n // Using a grid here is tricky, because we want to deliver size-to-content\n // and expand-to-container sizing here. We also want to apply `overflow:\n // hidden` to the frame for use in a popup source like ListComboBox with a\n // popup that needs to scroll. However, tHe presence of `overflow` will\n // cause a grid at the viewport's right edge to *not* size to content as\n // expected, which will throw off our popup layout heuristics because they\n // can't get the real intrinsic size of the popup by looking at the popup\n // itself.\n //\n // To work around that, PopupSource must have special logic to inspect the\n // frame's intrinsic size directly. We'd prefer to avoid such entanglements\n // when we can, but after much experimentation with both grid and block\n // styling, grid seemed to minimize the amount of trickery needed.\n result.content.append(fragmentFrom.html`\n <style>\n :host {\n max-height: 100vh;\n max-width: 100vw;\n outline: none;\n position: fixed;\n -webkit-tap-highlight-color: transparent;\n }\n\n [part~=\"frame\"] {\n box-sizing: border-box;\n display: grid;\n overflow: hidden;\n overscroll-behavior: contain;\n pointer-events: initial;\n position: relative;\n }\n </style>\n <div id=\"backdrop\" part=\"backdrop\" tabindex=\"-1\"></div>\n <div id=\"frame\" part=\"frame\" role=\"none\">\n <slot></slot>\n </div>\n `);\n\n renderParts(result.content, this[state]);\n\n return result;\n }\n}\n\n/**\n * Render parts for the template or an instance.\n *\n * @private\n * @param {DocumentFragment} root\n * @param {PlainObject} state\n * @param {ChangedFlags} [changed]\n */\nfunction renderParts(root, state, changed) {\n if (!changed || changed.backdropPartType) {\n const { backdropPartType } = state;\n const backdrop = root.getElementById(\"backdrop\");\n if (backdrop) {\n transmute(backdrop, backdropPartType);\n }\n }\n if (!changed || changed.framePartType) {\n const { framePartType } = state;\n const frame = root.getElementById(\"frame\");\n if (frame) {\n transmute(frame, framePartType);\n }\n }\n}\n\nexport default Overlay;\n","import { deepContains, ownEvent } from \"../core/dom.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n firstRender,\n keydown,\n raiseChangeEvents,\n render,\n rendered,\n rendering,\n setState,\n state,\n} from \"./internal.js\";\n\n/** @type {any} */\nconst implicitCloseListenerKey = Symbol(\"implicitCloseListener\");\n\nconst elixdebugpopup =\n new URLSearchParams(location.search).get(\"elixdebugpopup\") === \"true\";\n\n/**\n * Gives an overlay lightweight popup-style behavior.\n *\n * This mixin expects the component to provide:\n *\n * * An open/close API compatible with `OpenCloseMixin`.\n *\n * The mixin provides these features to the component:\n *\n * * Event handlers that close the element presses the Esc key, moves the focus\n * outside the element, scrolls the document, resizes the document, or\n * switches focus away from the document.\n * * A default ARIA role of `alert`.\n *\n * For modal overlays, use `DialogModalityMixin` instead. See the documentation\n * of that mixin for a comparison of modality behaviors.\n *\n * @module PopupModalityMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function PopupModalityMixin(Base) {\n // The class prototype added by the mixin.\n class PopupModality extends Base {\n /**\n * True if the popup should close if the user resizes the window.\n *\n * @type {boolean}\n * @default true\n */\n get closeOnWindowResize() {\n return this[state].closeOnWindowResize;\n }\n set closeOnWindowResize(closeOnWindowResize) {\n this[setState]({ closeOnWindowResize });\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n closeOnWindowResize: true,\n role: \"alert\",\n });\n }\n\n // Close on Esc key.\n [keydown](/** @type {KeyboardEvent} */ event) {\n let handled = false;\n\n switch (event.key) {\n case \"Escape\":\n this.close({\n canceled: \"Escape\",\n });\n handled = true;\n break;\n }\n\n // Prefer mixin result if it's defined, otherwise use base result.\n return handled || (super.keydown && super.keydown(event)) || false;\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n if (this[firstRender]) {\n // Don't wire up popup blur handling if we're debugging popups.\n if (!elixdebugpopup) {\n // If we lose focus, and the new focus isn't inside us, then close.\n this.addEventListener(\"blur\", blurHandler.bind(this));\n }\n }\n\n if (changed.role) {\n // Apply top-level role.\n const { role } = this[state];\n this.setAttribute(\"role\", role);\n }\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n if (changed.opened) {\n if (this.opened) {\n // Wait before wiring up events if the popup was opened because the\n // user clicked something, that opening click event may still be\n // bubbling up, and we only want to start listening after it's been\n // processed. Alternatively, if the popup caused the page to scroll, we\n // don't want to immediately close because the page scrolled (only if\n // the user scrolls).\n const callback =\n \"requestIdleCallback\" in window\n ? window[\"requestIdleCallback\"]\n : setTimeout;\n callback(() => {\n // It's conceivable the popup was closed before the timeout completed,\n // so double-check that it's still opened before listening to events.\n if (this.opened) {\n addEventListeners(this);\n }\n });\n } else {\n removeEventListeners(this);\n }\n }\n }\n\n // Setting the standard role attribute will invoke this property setter,\n // which will allow us to update our state.\n get role() {\n return super.role;\n }\n set role(role) {\n super.role = role;\n if (!this[rendering]) {\n this[setState]({ role });\n }\n }\n }\n\n return PopupModality;\n}\n\nfunction addEventListeners(/** @type {ReactiveElement} */ element) {\n // Close handlers for window events.\n element[implicitCloseListenerKey] = closeHandler.bind(element);\n\n if (!elixdebugpopup) {\n // Window blur event tracks loss of focus of *window*, not just element.\n window.addEventListener(\"blur\", element[implicitCloseListenerKey]);\n }\n window.addEventListener(\"resize\", element[implicitCloseListenerKey]);\n window.addEventListener(\"scroll\", element[implicitCloseListenerKey]);\n}\n\nfunction removeEventListeners(/** @type {ReactiveElement} */ element) {\n if (element[implicitCloseListenerKey]) {\n if (!elixdebugpopup) {\n window.removeEventListener(\"blur\", element[implicitCloseListenerKey]);\n }\n window.removeEventListener(\"resize\", element[implicitCloseListenerKey]);\n window.removeEventListener(\"scroll\", element[implicitCloseListenerKey]);\n element[implicitCloseListenerKey] = null;\n }\n}\n\n// Note: This routine also exists in PopupButton, may want to eventually\n// share that. Note that PopupButton handles blur on the *button*; here\n// we're dealing with the popup.\nasync function blurHandler(/** @type {Event} */ event) {\n // @ts-ignore\n /** @type {any} */ const element = this;\n // What has the focus now?\n const newFocusedElement =\n /** @type {any} */ (event).relatedTarget || document.activeElement;\n /** @type {any} */\n if (\n newFocusedElement instanceof Element &&\n !deepContains(element, newFocusedElement)\n ) {\n element[raiseChangeEvents] = true;\n await element.close({ canceled: \"window blur\" });\n element[raiseChangeEvents] = false;\n }\n}\n\nasync function closeHandler(/** @type {Event} */ event) {\n // @ts-ignore\n /** @type {any} */ const element = this;\n const handleEvent =\n event.type !== \"resize\" || element[state].closeOnWindowResize;\n if (!ownEvent(element, event) && handleEvent) {\n element[raiseChangeEvents] = true;\n await element.close({\n canceled: `window ${event.type}`,\n });\n element[raiseChangeEvents] = false;\n }\n}\n","import { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport { ids, raiseChangeEvents, render, template } from \"./internal.js\";\nimport KeyboardMixin from \"./KeyboardMixin.js\";\nimport Overlay from \"./Overlay.js\";\nimport PopupModalityMixin from \"./PopupModalityMixin.js\";\n\nconst Base = KeyboardMixin(PopupModalityMixin(Overlay));\n\n/**\n * Lightweight form of modeless overlay that can be easily dismissed\n *\n * When opened, the popup displays its children on top of other page elements.\n *\n * @inherits Overlay\n * @mixes KeyboardMixin\n * @mixes PopupModalityMixin\n */\nclass Popup extends Base {\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n if (changed.backdropPartType) {\n this[ids].backdrop.addEventListener(\n \"mousedown\",\n mousedownHandler.bind(this)\n );\n\n // Mobile Safari doesn't seem to generate a mousedown handler on the\n // backdrop in some cases that Mobile Chrome handles. For completeness, we\n // also listen to touchend.\n if (!(\"PointerEvent\" in window)) {\n this[ids].backdrop.addEventListener(\"touchend\", mousedownHandler);\n }\n }\n }\n\n get [template]() {\n const result = super[template];\n\n result.content.append(\n fragmentFrom.html`\n <style>\n :host {\n display: grid;\n grid-template: minmax(0, max-content) / minmax(0, max-content);\n }\n </style>\n `\n );\n\n return result;\n }\n}\n\n/**\n * @private\n * @param {Event} event\n */\nasync function mousedownHandler(event) {\n // @ts-ignore\n /** @type {Popup} */ const element = this;\n element[raiseChangeEvents] = true;\n await element.close({\n canceled: \"mousedown outside\",\n });\n element[raiseChangeEvents] = false;\n event.preventDefault();\n event.stopPropagation();\n}\n\nexport default Popup;\n","import { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\";\nimport { transmute } from \"../core/template.js\";\nimport DisabledMixin from \"./DisabledMixin.js\";\nimport FocusVisibleMixin from \"./FocusVisibleMixin.js\";\nimport {\n defaultState,\n firstRender,\n ids,\n inputDelegate,\n raiseChangeEvents,\n render,\n rendered,\n setState,\n shadowRoot,\n state,\n stateEffects,\n template,\n} from \"./internal.js\";\nimport LanguageDirectionMixin from \"./LanguageDirectionMixin.js\";\nimport layoutPopup from \"./layoutPopup.js\";\nimport OpenCloseMixin from \"./OpenCloseMixin.js\";\nimport Popup from \"./Popup.js\";\n\nconst resizeListenerKey = Symbol(\"resizeListener\");\n\nconst Base = DisabledMixin(\n FocusVisibleMixin(LanguageDirectionMixin(OpenCloseMixin(ReactiveElement)))\n);\n\n/**\n * Positions a popup with respect to a source element\n *\n * @inherits ReactiveElement\n * @mixes DisabledMixin\n * @mixes FocusVisibleMixin\n * @mixes OpenCloseMixin\n * @part {Popup} popup - the popup element\n * @part {button} source - the element used as the reference point for positioning the popup, generally the element that invokes the popup\n */\nclass PopupSource extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n ariaHasPopup: \"true\",\n popupAlign: \"start\",\n popupDirection: \"column\",\n popupLayout: null,\n popupPartType: Popup,\n sourcePartType: \"div\",\n });\n }\n\n // By default, assume that the source part is an input-like element that will\n // get the foucs.\n get [inputDelegate]() {\n return this[ids].source;\n }\n\n get frame() {\n return /** @type {any} */ (this[ids].popup).frame;\n }\n\n /**\n * The alignment of the popup with respect to the source button.\n *\n * * `bottom`: popup and source are bottom-aligned\n * * `end`: popup and source are aligned on the trailing edge according to the\n * text direction\n * * `left`: popup and source are left-aligned\n * * `right`: popup and source are right-aligned\n * * `start`: popup and source are aligned on the leading edge according to\n * the text direction\n * * `stretch`: both left and right edges are aligned\n * * `top`: popup and source are top-aligned\n *\n * @type {('bottom'|'end'|'left'|'right'|'start'|'stretch'|'top')}\n * @default 'start'\n */\n get popupAlign() {\n return this[state].popupAlign;\n }\n set popupAlign(popupAlign) {\n this[setState]({ popupAlign });\n }\n\n /**\n * The preferred direction for the popup.\n *\n * * `above`: popup appears above the source\n * * `below`: popup appears below the source\n * * `column-reverse`: popup appears before the source in the block axis\n * * `column`: popup appears after the source in the block axis\n * * `left`: popup appears to the left of the source\n * * `right`: popup appears to the right of the source\n * * `row-reverse`: popup appears before the source in the inline axis\n * * `row`: popup appears after the source in the inline axis\n *\n * @type {('above'|'below'|'column-reverse'|'column'|'left'|'right'|'row-reverse'|'row')}\n * @default 'column'\n */\n get popupDirection() {\n return this[state].popupDirection;\n }\n set popupDirection(popupDirection) {\n this[setState]({ popupDirection });\n }\n\n /**\n * The class or tag used to create the `popup` part the element\n * responsible for displaying the popup and handling overlay behavior.\n *\n * @type {PartDescriptor}\n * @default Popup\n */\n get popupPartType() {\n return this[state].popupPartType;\n }\n set popupPartType(popupPartType) {\n this[setState]({ popupPartType });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n\n renderParts(this[shadowRoot], this[state], changed);\n\n if (this[firstRender] || changed.ariaHasPopup) {\n const { ariaHasPopup } = this[state];\n if (ariaHasPopup === null) {\n this[inputDelegate].removeAttribute(\"aria-haspopup\");\n } else {\n this[inputDelegate].setAttribute(\n \"aria-haspopup\",\n this[state].ariaHasPopup\n );\n }\n }\n\n if (changed.popupPartType) {\n // Popup's opened state becomes our own opened state.\n this[ids].popup.addEventListener(\"open\", () => {\n if (!this.opened) {\n this[raiseChangeEvents] = true;\n this.open();\n this[raiseChangeEvents] = false;\n }\n });\n\n // Popup's closed state becomes our own closed state.\n this[ids].popup.addEventListener(\"close\", (event) => {\n if (!this.closed) {\n this[raiseChangeEvents] = true;\n /** @type {any} */\n\n const cast = event;\n const closeResult = cast.detail.closeResult;\n this.close(closeResult);\n this[raiseChangeEvents] = false;\n }\n });\n }\n\n if (changed.opened || changed.popupLayout) {\n const { opened, popupLayout } = this[state];\n\n // By default, we reset the styles used to position the popup.\n /** @type {any} */\n const styling = {\n height: \"\",\n left: \"\",\n opacity: \"\",\n top: \"\",\n width: \"\",\n };\n if (!opened) {\n // Popup closed. Use the reset above.\n } else if (!popupLayout) {\n // Popup opened but not yet laid out.\n //\n // Render the component invisibly so we can measure it before showing\n // it. We hide it by giving it zero opacity. If we use `visibility:\n // hidden` for this purpose, the popup won't be able to receive the\n // focus, which would complicate our overlay focus handling.\n //\n // In case the popup is being relayed out because a layout-affecting\n // property changed while the popup is open, we reset the positiong\n // styles too.\n styling.opacity = 0;\n } else {\n // Popup opened and laid out. Position the popup using only the edges\n // implicated in the layout.\n const { align, direction, rect } = popupLayout;\n const stretch = align === \"stretch\";\n const vertical = direction === \"above\" || direction === \"below\";\n const gridTemplateRows = !vertical && stretch ? \"minmax(0, 1fr)\" : \"\";\n const gridTemplateColumns = vertical && stretch ? \"minmax(0, 1fr)\" : \"\";\n Object.assign(styling, {\n gridTemplateColumns,\n gridTemplateRows,\n height: `${rect.height}px`,\n left: `${rect.left}px`,\n top: `${rect.top}px`,\n width: `${rect.width}px`,\n });\n }\n Object.assign(this[ids].popup.style, styling);\n }\n\n if (changed.opened) {\n const { opened } = this[state];\n /** @type {any} */ (this[ids].popup).opened = opened;\n }\n\n if (changed.disabled) {\n if (\"disabled\" in this[ids].source) {\n const { disabled } = this[state];\n /** @type {any} */ (this[ids].source).disabled = disabled;\n }\n }\n\n // Let the popup know its position relative to the source.\n if (changed.popupLayout) {\n const { popupLayout } = this[state];\n if (popupLayout) {\n const { align, direction } = popupLayout;\n /** @type {any} */ const popup = this[ids].popup;\n if (\"position\" in popup) {\n popup.position = direction;\n }\n if (\"align\" in popup) {\n popup.align = align;\n }\n }\n }\n }\n\n [rendered](/** @type {ChangedFlags} */ changed) {\n super[rendered](changed);\n const { opened } = this[state];\n if (changed.opened) {\n if (opened) {\n // Worth noting that's possible (but unusual) for a popup to render\n // opened on first render.\n waitThenRenderOpened(this);\n } else {\n removeEventListeners(this);\n }\n } else if (\n changed.popupLayout &&\n this[state].opened &&\n !this[state].popupLayout\n ) {\n // A layout-affecting property changed while the popup is open; do layout\n // again.\n choosePopupLayout(this);\n }\n }\n\n /**\n * The class or tag used to create the `source` part - the button\n * (or other element) the user can tap/click to invoke the popup.\n *\n * @type {PartDescriptor}\n * @default 'button'\n */\n get sourcePartType() {\n return this[state].sourcePartType;\n }\n set sourcePartType(sourcePartType) {\n this[setState]({ sourcePartType });\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects](state, changed);\n\n // We reset our popup calculations when the popup closes, or if it's open\n // and state that affects positioning has changed.\n if (\n (changed.opened && !state.opened) ||\n (state.opened &&\n (changed.popupAlign || changed.popupDirection || changed.rightToLeft))\n ) {\n Object.assign(effects, {\n popupLayout: null,\n });\n }\n\n return effects;\n }\n\n get [template]() {\n const result = super[template];\n result.content.append(fragmentFrom.html`\n <style>\n :host {\n display: inline-block;\n position: relative;\n }\n\n [part~=\"source\"] {\n height: 100%;\n -webkit-tap-highlight-color: transparent;\n touch-action: manipulation;\n width: 100%;\n }\n\n [part~=\"popup\"] {\n outline: none;\n position: fixed;\n }\n </style>\n <div id=\"source\" part=\"source\">\n <slot name=\"source\"></slot>\n </div>\n <div id=\"popup\" part=\"popup\" exportparts=\"backdrop, frame\" role=\"none\">\n <slot></slot>\n </div>\n `);\n\n renderParts(result.content, this[state]);\n\n return result;\n }\n}\n\nfunction addEventListeners(/** @type {PopupSource} */ element) {\n /** @type {any} */ const cast = element;\n cast[resizeListenerKey] = () => {\n // If viewport resizes while the popup is open, we may want to change which\n // layout we're using for the popup.\n choosePopupLayout(element);\n };\n const viewport = window.visualViewport || window;\n viewport.addEventListener(\"resize\", cast[resizeListenerKey]);\n}\n\n/**\n * Based on the current size of the source, popup, and viewport, determine which\n * layout we'll use for the popup.\n *\n * @private\n * @param {PopupSource} element\n */\nfunction choosePopupLayout(element) {\n const { popupAlign, popupDirection, rightToLeft } = element[state];\n const sourceRect = element[ids].source.getBoundingClientRect();\n const popupRect = element[ids].popup.getBoundingClientRect();\n\n // If the popup defines a frame, ask the frame for its intrinsic size by\n // inspecting the scrollHeight/Width properties. These will report the correct\n // size even if the popup is currently constraining the frame.\n const frame = /** @type {any} */ (element[ids].popup).frame;\n if (frame) {\n popupRect.height = element[ids].popup[ids].frame.scrollHeight;\n popupRect.width = element[ids].popup[ids].frame.scrollWidth;\n }\n\n const boundsRect = viewportBounds();\n\n const popupLayout = layoutPopup(sourceRect, popupRect, boundsRect, {\n align: popupAlign,\n direction: popupDirection,\n rightToLeft,\n });\n\n element[setState]({ popupLayout });\n}\n\nfunction removeEventListeners(/** @type {PopupSource} */ element) {\n /** @type {any} */ const cast = element;\n if (cast[resizeListenerKey]) {\n const viewport = window.visualViewport || window;\n viewport.removeEventListener(\"resize\", cast[resizeListenerKey]);\n cast[resizeListenerKey] = null;\n }\n}\n\n/**\n * Render parts for the template or an instance.\n *\n * @private\n * @param {DocumentFragment} root\n * @param {PlainObject} state\n * @param {ChangedFlags} [changed]\n */\nfunction renderParts(root, state, changed) {\n if (!changed || changed.popupPartType) {\n const { popupPartType } = state;\n const popup = root.getElementById(\"popup\");\n if (popup) {\n transmute(popup, popupPartType);\n }\n }\n if (!changed || changed.sourcePartType) {\n const { sourcePartType } = state;\n const source = root.getElementById(\"source\");\n if (source) {\n transmute(source, sourcePartType);\n }\n }\n}\n\n// Determine the bounding rectangle of the viewport. We prefer the\n// VisualViewport API where that's available, as that handles a pinch-zoomed\n// viewport on mobile. If not availble (as of October 2020, Firefox), we fall\n// back to using the window as the viewport.\nfunction viewportBounds() {\n // @ts-ignore\n const viewport = window.visualViewport;\n const boundsRect = viewport\n ? new DOMRect(\n viewport.offsetLeft,\n viewport.offsetTop,\n viewport.width,\n viewport.height\n )\n : new DOMRect(0, 0, window.innerWidth, window.innerHeight);\n return boundsRect;\n}\n\n/**\n *\n * When a popup is first rendered, we let it render invisibly so that it doesn't\n * affect the page layout.\n *\n * We then wait, for two reasons:\n *\n * 1) We need to give the popup time to render invisibly. That lets us get the\n * true size of the popup content.\n *\n * 2) Wire up events that can dismiss the popup. If the popup was opened because\n * the user clicked something, that opening click event may still be bubbling\n * up, and we only want to start listening after it's been processed.\n * Along the same lines, if the popup caused the page to scroll, we don't\n * want to immediately close because the page scrolled (only if the user\n * scrolls).\n *\n * After waiting, we can take care of both of the above tasks.\n *\n * @private\n * @param {PopupSource} element\n */\nfunction waitThenRenderOpened(element) {\n // Wait a tick to let the newly-opened component actually render.\n setTimeout(() => {\n // It's conceivable the popup was closed before the timeout completed,\n // so double-check that it's still opened before listening to events.\n if (element[state].opened) {\n choosePopupLayout(element);\n addEventListeners(element);\n }\n });\n}\n\nexport default PopupSource;\n","import { deepContains, ownEvent } from \"../core/dom.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport DelegateFocusMixin from \"./DelegateFocusMixin.js\";\nimport {\n defaultState,\n firstRender,\n ids,\n keydown,\n raiseChangeEvents,\n render,\n state,\n template,\n} from \"./internal.js\";\nimport KeyboardMixin from \"./KeyboardMixin.js\";\nimport PopupDragSelectMixin from \"./PopupDragSelectMixin.js\";\nimport PopupSource from \"./PopupSource.js\";\n\nconst elixdebugpopup =\n new URLSearchParams(location.search).get(\"elixdebugpopup\") === \"true\";\n\nconst Base = DelegateFocusMixin(\n KeyboardMixin(PopupDragSelectMixin(PopupSource))\n);\n\n/**\n * A button that invokes an attached popup\n *\n * @inherits PopupSource\n * @mixes DelegateFocusMixin\n * @mixes KeyboardMixin\n * @mixes PopupDragSelectMixin\n */\nclass PopupButton extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n sourcePartType: \"button\",\n });\n }\n\n [keydown](/** @type {KeyboardEvent} */ event) {\n let handled;\n\n switch (event.key) {\n // Space or Up/Down arrow keys open the popup.\n case \" \":\n case \"ArrowDown\":\n case \"ArrowUp\":\n if (this.closed) {\n this.open();\n handled = true;\n }\n break;\n\n // Enter opens popup.\n case \"Enter\":\n if (!this.opened) {\n this.open();\n handled = true;\n }\n break;\n\n // If popup is open, pressing Esc should close popup.\n // This code exists to handle cases where the popup does not take the\n // focus (autoFocus is false). In cases where the popup takes focus, it\n // will be up to the popup to handle closing when Esc is pressed.\n case \"Escape\":\n if (this.opened) {\n this.close({\n canceled: \"Escape\",\n });\n handled = true;\n }\n break;\n }\n\n // Give superclass a chance to handle.\n handled = super[keydown] && super[keydown](event);\n\n if (!handled && this.opened && !event.metaKey && !event.altKey) {\n // If they haven't already been handled, absorb keys that might cause the\n // page to scroll in the background, which would in turn cause the popup to\n // inadvertently close.\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \"ArrowUp\":\n case \"End\":\n case \"Home\":\n case \"PageDown\":\n case \"PageUp\":\n case \" \":\n handled = true;\n }\n }\n\n return handled;\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n\n if (this[firstRender]) {\n // Close the popup if we're opened and lose focus. A typical popup using\n // PopupModalityMixin will have its own logic to close on blur -- but in\n // cases where the popup itself doesn't get focus (e.g., TooltipButton),\n // that logic won't apply.\n // Don't close on blur if we're debugging popups.\n if (!elixdebugpopup) {\n this.addEventListener(\"blur\", blurHandler.bind(this));\n }\n\n // If the source element gets the focus while the popup is open, the\n // most likely expanation is that the user hit Shift+Tab to back up out of\n // the popup. In that case, we should close.\n this[ids].source.addEventListener(\"focus\", async (event) => {\n const popupFocused = ownEvent(this[ids].popup, event);\n // It's possible to get a focus event in the initial mousedown on the\n // source button before the popup is even rendered. We don't want to\n // close in that case, so we check to see if we've already measured the\n // popup dimensions (which will be true if the popup fully completed\n // rendering).\n const measured = this[state].popupHeight !== null;\n if (!popupFocused && this.opened && measured) {\n this[raiseChangeEvents] = true;\n await this.close();\n this[raiseChangeEvents] = false;\n }\n });\n }\n\n if (changed.opened) {\n // Reflect opened state to attribute for styling.\n const { opened } = this[state];\n this.toggleAttribute(\"opened\", opened);\n }\n\n if (changed.sourcePartType) {\n // Desktop popups generally open on mousedown, not click/mouseup. On mobile,\n // mousedown won't fire until the user releases their finger, so it behaves\n // like a click.\n const source = this[ids].source;\n source.addEventListener(\"mousedown\", (event) => {\n // mousedown events fire even if button is disabled, so we need\n // to explicitly ignore those.\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n // Only handle primary button mouse down to avoid interfering with\n // right-click behavior.\n /** @type {any} */\n const cast = event;\n if (cast.button && cast.button !== 0) {\n return;\n }\n // We give the default focus behavior time to run before opening the\n // popup. See note below.\n setTimeout(() => {\n if (!this.opened) {\n this[raiseChangeEvents] = true;\n this.open();\n this[raiseChangeEvents] = false;\n }\n });\n event.stopPropagation();\n // We don't prevent the default behavior for mousedown. Among other\n // things, it sets the focus to the element the user moused down on.\n // That's important for us, because OverlayMixin will remember that\n // focused element (i.e., this element) when opening, and restore focus to\n // it when the popup closes.\n });\n }\n\n if (changed.popupPartType) {\n this[ids].popup.removeAttribute(\"tabindex\");\n }\n }\n\n get [template]() {\n const result = super[template];\n // When popup is open, it will have focus; don't show focus ring on host.\n result.content.append(\n fragmentFrom.html`\n <style>\n [part~=\"source\"] {\n cursor: default;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n touch-action: manipulation;\n -moz-user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n }\n\n :host([opened][focus-visible]) {\n outline: none;\n }\n </style>\n `\n );\n return result;\n }\n}\n\n// Note: This routine also exists in PopupModalityMixin, may want to eventually\n// share that. Note that PopupModalityMixin handles blur on the *popup*; here\n// we're dealing with the source button.\nasync function blurHandler(/** @type {Event} */ event) {\n // @ts-ignore\n /** @type {any} */ const element = this;\n // What has the focus now?\n const newFocusedElement =\n /** @type {any} */ (event).relatedTarget || document.activeElement;\n /** @type {any} */\n if (\n newFocusedElement instanceof Element &&\n !deepContains(element, newFocusedElement)\n ) {\n element[raiseChangeEvents] = true;\n await element.close({ canceled: \"blur\" });\n element[raiseChangeEvents] = false;\n }\n}\n\nexport default PopupButton;\n","import { indexOfItemContainingTarget } from \"../core/dom.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n keydown,\n raiseChangeEvents,\n render,\n rendered,\n setState,\n state,\n stateEffects,\n} from \"./internal.js\";\n\nconst documentMousemoveListenerKey = Symbol(\"documentMousemoveListener\");\n\n/**\n * Syncs the cursor a popup source and a list-like element inside the popup.\n *\n * This includes support for drag-select operations: the user can mouse down on\n * the source to produce the popup, drag into the popup to highlight an item,\n * then release the mouse to select that item.\n *\n * @module PopupListMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function PopupListMixin(Base) {\n // The class prototype added by the mixin.\n class PopupList extends Base {\n connectedCallback() {\n super.connectedCallback();\n // Handle edge case where component is opened, removed, then added back.\n listenIfOpenAndConnected(this);\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n currentIndex: -1,\n hasHoveredOverItemSinceOpened: false,\n popupList: null,\n });\n }\n\n disconnectedCallback() {\n if (super.disconnectedCallback) {\n super.disconnectedCallback();\n }\n listenIfOpenAndConnected(this);\n }\n\n [keydown](/** @type {KeyboardEvent} */ event) {\n let handled = false;\n\n switch (event.key) {\n // Enter closes popup.\n case \"Enter\":\n if (this.opened) {\n selectCurrentItemAndClose(this);\n handled = true;\n }\n }\n\n // Prefer our result if it's defined, otherwise use base result.\n return handled || (super[keydown] && super[keydown](event)) || false;\n }\n\n [render](changed) {\n if (super[render]) {\n super[render](changed);\n }\n\n if (changed.popupList) {\n const { popupList } = this[state];\n if (popupList) {\n // If the user mouses up on a list item, close the list with that item as\n // the close result.\n popupList.addEventListener(\"mouseup\", async (event) => {\n // If we're doing a drag-select (user moused down on button, dragged\n // mouse into list, and released), we close. If we're not doing a\n // drag-select (the user opened the list with a complete click), and\n // there's a selection, they clicked on an item, so also close.\n // Otherwise, the user clicked the list open, then clicked on a list\n // separator or list padding; stay open.\n const currentIndex = this[state].currentIndex;\n if (this[state].dragSelect || currentIndex >= 0) {\n // We don't want the document mouseup handler in\n // PopupDragSelectMixin to close the popup before we've asked the\n // list to highlight the selection. We stop event propagation\n // here, before we enter any async code, to actually stop\n // propagation.\n event.stopPropagation();\n this[raiseChangeEvents] = true;\n await selectCurrentItemAndClose(this);\n this[raiseChangeEvents] = false;\n } else {\n event.stopPropagation();\n }\n });\n\n // Track changes in the list's cursor.\n popupList.addEventListener(\"currentindexchange\", (event) => {\n this[raiseChangeEvents] = true;\n /** @type {any} */\n const cast = event;\n this[setState]({\n currentIndex: cast.detail.currentIndex,\n });\n this[raiseChangeEvents] = false;\n });\n }\n }\n\n // The popup's current item is represented in the visible list.\n if (changed.currentIndex || changed.popupList) {\n const { currentIndex, popupList } = this[state];\n if (popupList && \"currentIndex\" in popupList) {\n popupList.currentIndex = currentIndex;\n }\n }\n }\n\n [rendered](changed) {\n if (super[rendered]) {\n super[rendered](changed);\n }\n\n if (changed.opened) {\n if (this[state].opened) {\n // Ensure the list's cursor is visible. If the cursor moved while the\n // list was closed, the cursor may not be in view yet.\n const { popupList } = this[state];\n if (popupList.scrollCurrentItemIntoView) {\n // Give popup time to render.\n setTimeout(() => {\n popupList.scrollCurrentItemIntoView();\n });\n }\n }\n listenIfOpenAndConnected(this);\n }\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects]\n ? super[stateEffects](state, changed)\n : {};\n\n // When opening, reset out notion of whether the user has hovered over an\n // item since the list was opened.\n if (changed.opened && state.opened) {\n Object.assign(effects, {\n hasHoveredOverItemSinceOpened: false,\n });\n }\n\n return effects;\n }\n }\n\n return PopupList;\n}\n\n// Handle a mouse hover select operation.\nfunction handleMousemove(/** @type {MouseEvent} */ event) {\n // @ts-ignore\n const element = this;\n const { hasHoveredOverItemSinceOpened, opened } = element[state];\n if (opened) {\n // Treat the deepest element in the composed event path as the target.\n const target = event.composedPath ? event.composedPath()[0] : event.target;\n const items = element.items;\n\n if (target && target instanceof Node && items) {\n const hoverIndex = indexOfItemContainingTarget(items, target);\n const item = items[hoverIndex];\n\n // If the user is hovering over an enabled item, make it current.\n // If the user is not hovering over an enabled item, but has\n // hovered over such an item at least once since the list was\n // opened, then clear cursor.\n const currentIndex = item && !item.disabled ? hoverIndex : -1;\n\n if (\n (hasHoveredOverItemSinceOpened || currentIndex >= 0) &&\n currentIndex !== element[state].currentIndex\n ) {\n element[raiseChangeEvents] = true;\n element[setState]({ currentIndex });\n if (currentIndex >= 0 && !hasHoveredOverItemSinceOpened) {\n element[setState]({ hasHoveredOverItemSinceOpened: true });\n }\n element[raiseChangeEvents] = false;\n }\n }\n }\n}\n\nfunction listenIfOpenAndConnected(element) {\n if (element[state].opened && element.isConnected) {\n if (!element[documentMousemoveListenerKey]) {\n // Not listening yet; start.\n element[documentMousemoveListenerKey] = handleMousemove.bind(element);\n document.addEventListener(\n \"mousemove\",\n element[documentMousemoveListenerKey]\n );\n }\n } else if (element[documentMousemoveListenerKey]) {\n // Currently listening; stop.\n document.removeEventListener(\n \"mousemove\",\n element[documentMousemoveListenerKey]\n );\n element[documentMousemoveListenerKey] = null;\n }\n}\n\n/**\n * Highlight the current item (if one exists), then close the menu.\n */\nasync function selectCurrentItemAndClose(element) {\n const originalRaiseChangeEvents = element[raiseChangeEvents];\n const cursorDefined = element[state].currentIndex >= 0;\n const items = element.items;\n if (items) {\n const closeResult = cursorDefined\n ? items[element[state].currentIndex]\n : undefined;\n\n const list = element[state].popupList;\n if (cursorDefined && \"flashCurrentItem\" in list) {\n await list.flashCurrentItem();\n }\n const saveRaiseChangeEvents = element[raiseChangeEvents];\n element[raiseChangeEvents] = originalRaiseChangeEvents;\n await element.close(closeResult);\n element[raiseChangeEvents] = saveRaiseChangeEvents;\n }\n}\n","import { deepContains } from \"../core/dom.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport { transmute } from \"../core/template.js\";\nimport {\n defaultState,\n ids,\n raiseChangeEvents,\n render,\n rendered,\n setState,\n shadowRoot,\n state,\n stateEffects,\n template,\n} from \"./internal.js\";\nimport Menu from \"./Menu.js\";\nimport PopupButton from \"./PopupButton.js\";\nimport PopupListMixin from \"./PopupListMixin.js\";\n\nconst Base = PopupListMixin(PopupButton);\n\n/**\n * A button that invokes a menu.\n *\n * @inherits PopupButton\n * @mixes PopupListMixin\n * @part {Menu} menu - the menu shown in the popup\n */\nclass MenuButton extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n menuPartType: Menu,\n });\n }\n\n get items() {\n /** @type {any} */\n const menu = this[ids] && this[ids].menu;\n return menu ? menu.items : null;\n }\n\n /**\n * The class or tag used to define the `menu` part the element\n * presenting the menu items and handling navigation between them.\n *\n * @type {PartDescriptor}\n * @default Menu\n */\n get menuPartType() {\n return this[state].menuPartType;\n }\n set menuPartType(menuPartType) {\n this[setState]({ menuPartType });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n\n renderParts(this[shadowRoot], this[state], changed);\n\n if (changed.menuPartType) {\n // Close the popup if menu loses focus.\n this[ids].menu.addEventListener(\"blur\", async (event) => {\n /** @type {any} */\n const cast = event;\n const newFocusedElement = cast.relatedTarget || document.activeElement;\n if (this.opened && !deepContains(this[ids].menu, newFocusedElement)) {\n this[raiseChangeEvents] = true;\n await this.close();\n this[raiseChangeEvents] = false;\n }\n });\n\n // mousedown events on the menu will propagate up to the top-level element,\n // which will then steal the focus. We want to keep the focus on the menu,\n // both to permit keyboard use, and to avoid closing the menu on blur (see\n // separate blur handler). To keep the focus on the menu, we prevent the\n // default event behavior.\n this[ids].menu.addEventListener(\"mousedown\", (event) => {\n // Only process events for the main (usually left) button.\n if (/** @type {MouseEvent} */ (event).button !== 0) {\n return;\n }\n if (this.opened) {\n event.stopPropagation();\n event.preventDefault();\n }\n });\n }\n\n if (changed.opened) {\n // Reflect opened state to source for ARIA.\n const { opened } = this[state];\n this[ids].source.setAttribute(\"aria-expanded\", opened.toString());\n }\n }\n\n [rendered](changed) {\n super[rendered](changed);\n\n if (changed.menuPartType) {\n this[setState]({\n popupList: this[ids].menu,\n });\n }\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects](state, changed);\n\n // When closing, clear menu selection.\n if (changed.opened && !state.opened) {\n Object.assign(effects, {\n currentIndex: -1,\n });\n }\n\n return effects;\n }\n\n get [template]() {\n const result = super[template];\n\n // Wrap default slot with a menu.\n const defaultSlot = result.content.querySelector(\"slot:not([name])\");\n if (defaultSlot) {\n defaultSlot.replaceWith(fragmentFrom.html`\n <div id=\"menu\" part=\"menu\">\n <slot></slot>\n </div>\n `);\n }\n\n renderParts(result.content, this[state]);\n\n result.content.append(fragmentFrom.html`\n <style>\n [part~=\"menu\"] {\n max-height: 100%;\n }\n </style>\n `);\n\n return result;\n }\n}\n\n/**\n * Render parts for the template or an instance.\n *\n * @private\n * @param {DocumentFragment} root\n * @param {PlainObject} state\n * @param {ChangedFlags} [changed]\n */\nfunction renderParts(root, state, changed) {\n if (!changed || changed.menuPartType) {\n const { menuPartType } = state;\n const menu = root.getElementById(\"menu\");\n if (menu) {\n transmute(menu, menuPartType);\n }\n }\n}\n\nexport default MenuButton;\n","import { templateFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\";\nimport DisabledMixin from \"./DisabledMixin.js\";\nimport {\n defaultState,\n ids,\n render,\n setState,\n state,\n template,\n} from \"./internal.js\";\n\nconst Base = DisabledMixin(ReactiveElement);\n\n/**\n * An element that can point up or down.\n *\n * @inherits ReactiveElement\n * @mixes DisabledMixin\n * @part down-icon - the icon shown in the toggle if the popup will open or close in the down direction\n * @part toggle-icon - both the up and down icons\n * @part up-icon - the icon shown in the toggle if the popup will open or close in the up direction\n */\nclass UpDownToggle extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n direction: \"down\",\n });\n }\n\n /**\n * Indicates which direction the element should point to.\n *\n * @type {'down'|'up'}\n * @default 'down'\n */\n get direction() {\n return this[state].direction;\n }\n set direction(direction) {\n this[setState]({ direction });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n\n if (changed.direction) {\n const { direction } = this[state];\n this[ids].downIcon.style.display =\n direction === \"down\" ? \"block\" : \"none\";\n this[ids].upIcon.style.display = direction === \"up\" ? \"block\" : \"none\";\n }\n }\n\n get [template]() {\n return templateFrom.html`\n <style>\n :host {\n display: inline-block;\n }\n </style>\n <div id=\"downIcon\" part=\"toggle-icon down-icon\">\n <slot name=\"down-icon\"></slot>\n </div>\n <div id=\"upIcon\" part=\"toggle-icon up-icon\">\n <slot name=\"up-icon\"></slot>\n </div>\n `;\n }\n}\n\nexport default UpDownToggle;\n","import { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { transmute } from \"../core/template.js\";\nimport {\n defaultState,\n ids,\n render,\n setState,\n shadowRoot,\n state,\n template,\n} from \"./internal.js\";\nimport UpDownToggle from \"./UpDownToggle.js\";\n\n/**\n * Manages a popup toggle part for a popup source.\n *\n * @module PopupToggleMixin\n * @part {UpDownToggle} popup-toggle - the element that lets the user know they can open the popup\n * @part down-icon - the icon shown in the toggle if the popup will open or close in the down direction\n * @part up-icon - the icon shown in the toggle if the popup will open or close in the up direction\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function PopupToggleMixin(Base) {\n // The class prototype added by the mixin.\n class PopupToggle extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n popupTogglePartType: UpDownToggle,\n });\n }\n\n /**\n * The class or tag used to create the `popup-toggle` part the\n * element that lets the user know they can open the popup.\n *\n * @type {PartDescriptor}\n * @default UpDownToggle\n */\n get popupTogglePartType() {\n return this[state].popupTogglePartType;\n }\n set popupTogglePartType(popupTogglePartType) {\n this[setState]({ popupTogglePartType });\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n\n renderParts(this[shadowRoot], this[state], changed);\n\n // Tell the toggle which direction it should point to depending on which\n // direction the popup will open. Since we assume this is used for up/down\n // popup directions, we don't handle left/right directions.\n if (changed.popupDirection || changed.popupTogglePartType) {\n const { popupDirection } = this[state];\n const toggleDirection =\n popupDirection === \"above\" || popupDirection === \"column-reverse\"\n ? \"up\"\n : \"down\";\n /** @type {any} */ const popupToggle = this[ids].popupToggle;\n if (\"direction\" in popupToggle) {\n popupToggle.direction = toggleDirection;\n }\n }\n\n if (changed.disabled) {\n const { disabled } = this[state];\n /** @type {any} */ (this[ids].popupToggle).disabled = disabled;\n }\n }\n\n get [template]() {\n const result = super[template];\n\n // Append a toggle button to the source.\n const source = result.content.querySelector('[part~=\"source\"]');\n if (source) {\n source.append(fragmentFrom.html`\n <div\n id=\"popupToggle\"\n part=\"popup-toggle\"\n exportparts=\"toggle-icon, down-icon, up-icon\"\n tabindex=\"-1\"\n ></div>\n `);\n }\n\n renderParts(result.content, this[state]);\n\n result.content.append(fragmentFrom.html`\n <style>\n [part~=\"popup-toggle\"] {\n outline: none;\n }\n\n [part~=\"source\"] {\n align-items: center;\n display: flex;\n }\n </style>\n `);\n\n return result;\n }\n }\n\n return PopupToggle;\n}\n\n/**\n * Render parts for the template or an instance.\n *\n * @private\n * @param {DocumentFragment} root\n * @param {PlainObject} state\n * @param {ChangedFlags} [changed]\n */\nfunction renderParts(root, state, changed) {\n if (!changed || changed.popupTogglePartType) {\n const { popupTogglePartType } = state;\n const popupToggle = root.getElementById(\"popupToggle\");\n if (popupToggle) {\n transmute(popupToggle, popupTogglePartType);\n }\n }\n}\n","import Button from \"../base/Button.js\";\nimport PlainButtonMixin from \"./PlainButtonMixin.js\";\n\n/**\n * Button component in the Plain reference design system\n *\n * @inherits Button\n */\nclass PlainButton extends PlainButtonMixin(Button) {}\n\nexport default PlainButton;\n","import { template } from \"../base/internal.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport PlainButton from \"./PlainButton.js\";\n\n/**\n * Button with a border in the Plain reference design system\n *\n * @inherits PlainButton\n */\nclass PlainBorderButton extends PlainButton {\n get [template]() {\n const result = super[template];\n result.content.append(\n fragmentFrom.html`\n <style>\n [part~=\"button\"] {\n background: #eee;\n border: 1px solid #ccc;\n padding: 0.25em 0.5em;\n }\n </style>\n `\n );\n return result;\n }\n}\n\nexport default PlainBorderButton;\n","import { template } from \"../base/internal.js\";\nimport Menu from \"../base/Menu.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\n\n/**\n * Menu component in the Plain reference design system\n *\n * @inherits Menu\n */\nclass PlainMenu extends Menu {\n get [template]() {\n const result = super[template];\n result.content.append(\n fragmentFrom.html`\n <style>\n :host ::slotted(*) {\n padding: 0.25em 1em;\n }\n \n :host ::slotted([current]) {\n background: highlight;\n color: highlighttext;\n }\n\n @media (pointer: coarse) {\n ::slotted(*) {\n padding: 1em;\n }\n }\n </style>\n `\n );\n return result;\n }\n}\n\nexport default PlainMenu;\n","import { template } from \"../base/internal.js\";\nimport UpDownToggle from \"../base/UpDownToggle.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport { replace } from \"../core/template.js\";\n\n/**\n * OpenCloseToggle component in the Plain reference design system\n *\n * @inherits OpenCloseToggle\n */\nclass PlainOpenCloseToggle extends UpDownToggle {\n get [template]() {\n const result = super[template];\n\n // Replace the icons with our up/down glyphs.\n const downIcon = result.content.getElementById(\"downIcon\");\n const downIconGlyph = fragmentFrom.html`\n <svg\n id=\"downIcon\"\n part=\"toggle-icon down-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 10 5\"\n >\n <path d=\"M 0 0 l5 5 5 -5 z\" />\n </svg>\n `.firstElementChild;\n if (downIcon && downIconGlyph) {\n replace(downIcon, downIconGlyph);\n }\n const upIcon = result.content.getElementById(\"upIcon\");\n const upIconGlyph = fragmentFrom.html`\n <svg\n id=\"upIcon\"\n part=\"toggle-icon up-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 10 5\"\n >\n <path d=\"M 0 5 l5 -5 5 5 z\" />\n </svg>\n `.firstElementChild;\n if (upIcon && upIconGlyph) {\n replace(upIcon, upIconGlyph);\n }\n\n result.content.append(\n fragmentFrom.html`\n <style>\n :host {\n align-items: center;\n display: inline-flex;\n padding: 2px;\n }\n\n :host(:not([disabled])):hover {\n background: #eee;\n }\n\n [part~=\"toggle-icon\"] {\n fill: currentColor;\n height: 10px;\n margin: 0.25em;\n width: 10px;\n }\n </style>\n `\n );\n return result;\n }\n}\n\nexport default PlainOpenCloseToggle;\n","import Backdrop from \"../base/Backdrop.js\";\n\n/**\n * Backdrop component in the Plain reference design system\n *\n * @inherits Backdrop\n */\nclass PlainBackdrop extends Backdrop {}\n\nexport default PlainBackdrop;\n","import { template } from \"../base/internal.js\";\nimport OverlayFrame from \"../base/OverlayFrame.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\n\n/**\n * OverlayFrame component in the Plain reference design system\n *\n * The default appearance of `OverlayFrame` uses a simple drop-shadow to let the\n * user see the framed content as being on top of the background page content.\n *\n * @inherits OverlayFrame\n */\nclass PlainOverlayFrame extends OverlayFrame {\n get [template]() {\n const result = super[template];\n result.content.append(\n fragmentFrom.html`\n <style>\n :host {\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 0px 10px rgba(0, 0, 0, 0.5);\n box-sizing: border-box;\n }\n </style>\n `\n );\n return result;\n }\n}\n\nexport default PlainOverlayFrame;\n","import { defaultState } from \"../base/internal.js\";\nimport Popup from \"../base/Popup.js\";\nimport PlainBackdrop from \"./PlainBackdrop.js\";\nimport PlainOverlayFrame from \"./PlainOverlayFrame.js\";\n\n/**\n * Popup component in the Plain reference design system\n *\n * @inherits Popup\n * @part {PlainBackdrop} backdrop\n * @part {PlainOverlayFrame} frame\n */\nclass PlainPopup extends Popup {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n backdropPartType: PlainBackdrop,\n framePartType: PlainOverlayFrame,\n });\n }\n}\n\nexport default PlainPopup;\n","import { defaultState, template } from \"../base/internal.js\";\nimport MenuButton from \"../base/MenuButton.js\";\nimport PopupToggleMixin from \"../base/PopupToggleMixin.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport PlainBorderButton from \"./PlainBorderButton.js\";\nimport PlainMenu from \"./PlainMenu.js\";\nimport PlainOpenCloseToggle from \"./PlainOpenCloseToggle.js\";\nimport PlainPopup from \"./PlainPopup.js\";\n\n/**\n * MenuButton component in the Plain reference design system\n *\n * @inherits MenuButton\n * @part {PlainMenu} menu\n * @part {PlainPopup} popup\n * @part {PlainOpenCloseToggle} popup-toggle\n * @part {PlainBorderButton} source\n * @mixes PopupToggleMixin\n */\nclass PlainMenuButton extends PopupToggleMixin(MenuButton) {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n menuPartType: PlainMenu,\n popupPartType: PlainPopup,\n popupTogglePartType: PlainOpenCloseToggle,\n sourcePartType: PlainBorderButton,\n });\n }\n\n get [template]() {\n const result = super[template];\n result.content.append(\n fragmentFrom.html`\n <style>\n [part~=\"menu\"] {\n background: window;\n border: none;\n padding: 0.5em 0;\n }\n </style>\n `\n );\n return result;\n }\n}\n\nexport default PlainMenuButton;\n","import { template } from 'elix/src/base/internal.js'\nimport { fragmentFrom } from 'elix/src/core/htmlLiterals.js'\nimport PlainButton from 'elix/src/plain/PlainButton.js'\n\n/**\n * @class SePlainBorderButton\n * Button with a border in the Plain reference design system\n *\n */\nclass SePlainBorderButton extends PlainButton {\n /**\n * @function get\n * @returns {PlainObject}\n */\n get [template] () {\n const result = super[template]\n result.content.append(\n fragmentFrom.html`\n <style>\n [part~=\"button\"] {\n background: var(--main-bg-color);\n border: 1px solid #ccc;\n }\n </style>\n `\n )\n return result\n }\n}\n\nexport default SePlainBorderButton\n","import PlainMenuButton from 'elix/src/plain/PlainMenuButton.js'\nimport { defaultState } from 'elix/src/base/internal.js'\nimport sePlainBorderButton from './sePlainBorderButton.js'\n\n/**\n * @class ElixMenuButton\n */\nexport default class ElixMenuButton extends PlainMenuButton {\n /**\n * @function get\n * @returns {PlainObject}\n */\n get [defaultState] () {\n return Object.assign(super[defaultState], {\n sourcePartType: sePlainBorderButton\n })\n }\n}\n\ncustomElements.define('elix-menu-button', ElixMenuButton)\n","/* globals svgEditor */\nimport 'elix/define/MenuItem.js'\nimport './sePlainMenuButton.js'\n\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n :host {\n padding: 0px;\n }\n elix-menu-button::part(menu) {\n background-color: var(--icon-bg-color) !important;\n color: #fff;\n }\n elix-menu-button::part(popup-toggle) {\n padding: 0.25em 0.30em !important\n }\n :host ::slotted([current]){\n background-color: var(--icon-bg-color-hover) !important;\n color: #fff;\n }\n :host ::slotted(*){\n padding: 0.25em 1.25em 0.25em 0.25em !important;\n margin: 2px;\n }\n </style>\n\n <elix-menu-button id=\"MenuButton\" aria-label=\"Main Menu\">\n <slot></slot>\n </elix-menu-button>\n\n`\n/**\n * @class SeMenu\n */\nexport class SeMenu extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$menu = this._shadowRoot.querySelector('elix-menu-button')\n this.$label = this.$menu.shadowRoot.querySelector('#popupToggle').shadowRoot\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['label', 'src']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n const image = new Image()\n if (oldValue === newValue) return\n switch (name) {\n case 'src':\n image.src = this.imgPath + '/' + newValue\n image.width = 24\n image.height = 24\n this.$label.prepend(image)\n break\n case 'label':\n this.$label.prepend(newValue)\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get label () {\n return this.getAttribute('label')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set label (value) {\n this.setAttribute('label', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get src () {\n return this.getAttribute('src')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set src (value) {\n this.setAttribute('src', value)\n }\n}\n\n// Register\ncustomElements.define('se-menu', SeMenu)\n","import PlainMenu from \"../src/plain/PlainMenu.js\";\nexport default class ElixMenu extends PlainMenu {}\ncustomElements.define(\"elix-menu\", ElixMenu);\n","/* globals svgEditor */\nimport 'elix/define/Menu.js'\nimport 'elix/define/MenuItem.js'\nimport { t } from '../locale.js'\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n </style>\n <elix-menu-item>\n <div style=\"display:flex; align-items: center;\">\n <img src=\"logo.svg\" alt=\"icon\" style=\"display:none;\" width=\"24\"/>\n <span style=\"margin-left: 7px;\"></span>\n </div>\n </elix-menu-item>\n`\n/**\n * @class SeMenuItem\n */\nexport class SeMenuItem extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$img = this._shadowRoot.querySelector('img')\n this.$label = this._shadowRoot.querySelector('span')\n this.$menuitem = this._shadowRoot.querySelector('elix-menu-item')\n this.$svg = this.$menuitem.shadowRoot.querySelector('#checkmark')\n this.$svg.setAttribute('style', 'display: none;')\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['label', 'src']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n let shortcut = ''\n if (oldValue === newValue) return\n switch (name) {\n case 'src':\n this.$img.style.display = 'inline-block'\n this.$img.setAttribute('src', this.imgPath + '/' + newValue)\n break\n case 'label':\n shortcut = this.getAttribute('shortcut')\n this.$label.textContent = `${t(newValue)} ${shortcut ? `(${shortcut})` : ''}`\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get label () {\n return this.getAttribute('label')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set label (value) {\n this.setAttribute('label', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get src () {\n return this.getAttribute('src')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set src (value) {\n this.setAttribute('src', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n // capture shortcuts\n const shortcut = this.getAttribute('shortcut')\n if (shortcut) {\n // register the keydown event\n document.addEventListener('keydown', (e) => {\n // only track keyboard shortcuts for the body containing the SVG-Editor\n if (e.target.nodeName !== 'BODY') return\n // normalize key\n const key = `${(e.metaKey) ? 'meta+' : ''}${(e.ctrlKey) ? 'ctrl+' : ''}${e.key.toUpperCase()}`\n if (shortcut !== key) return\n // launch the click event\n if (this.id) {\n document.getElementById(this.id).click()\n }\n e.preventDefault()\n })\n }\n }\n}\n\n// Register\ncustomElements.define('se-menu-item', SeMenuItem)\n","/* globals svgEditor */\nimport { t } from '../locale.js'\n\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n<style>\n#select-container {\n margin-top: 10px;\n display: inline-block;\n}\n\n#select-container:hover {\n background-color: var(--icon-bg-color-hover);\n}\n\n#select-container::part(value) {\n background-color: var(--main-bg-color);\n}\n\n#select-container::part(popup-toggle) {\n display: none;\n}\n::slotted(*) {\n padding:0;\n width:100%;\n}\n\n.closed {\n display: none;\n}\n\n#options-container {\n position: fixed;\n}\n\n</style>\n <label>Label</label>\n <div id=\"select-container\" tabindex=\"0\">\n <div id=\"selected-value\"></div>\n <div id=\"options-container\">\n <slot></slot>\n </div>\n </div>\n\n`\n/**\n * @class SeList\n */\nexport class SeList extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$dropdown = this._shadowRoot.querySelector('#select-container')\n this.$label = this._shadowRoot.querySelector('label')\n this.$selection = this.$dropdown.querySelector('#selected-value')\n this.items = this.querySelectorAll('se-list-item')\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n this.$optionsContainer = this._shadowRoot.querySelector('#options-container')\n this.$optionsContainer.classList.add('closed')\n this.$selection.addEventListener('click', this.toggleList)\n this.updateSelectedValue(this.items[0].getAttribute('value'))\n this.isDropdownOpen = false\n }\n\n toggleList = (e) => {\n if (!this.isDropdownOpen) {\n this.openDropdown()\n this.setDropdownListPosition()\n } else {\n this.closeDropdown()\n }\n }\n\n updateSelectedValue = (newValue) => {\n Array.from(this.items).forEach((element) => {\n if (element.getAttribute('value') === newValue) {\n element.setAttribute('selected', true)\n if (element.hasAttribute('src')) {\n // empty current selection children\n while (this.$selection.firstChild) { this.$selection.removeChild(this.$selection.firstChild) }\n // replace selection child with image of new value\n const img = document.createElement('img')\n img.src = this.imgPath + '/' + element.getAttribute('src')\n img.style.height = element.getAttribute('img-height')\n img.setAttribute('title', t(element.getAttribute('title')))\n this.$selection.append(img)\n } else {\n this.$selection.textContent = t(element.getAttribute('option'))\n }\n } else {\n element.setAttribute('selected', false)\n }\n })\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['label', 'width', 'height', 'title', 'value']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'title':\n this.$dropdown.setAttribute('title', t(newValue))\n break\n case 'label':\n this.$label.textContent = t(newValue)\n break\n case 'height':\n this.$dropdown.style.height = newValue\n break\n case 'width':\n this.$dropdown.style.width = newValue\n break\n case 'value':\n this.updateSelectedValue(newValue)\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get label () {\n return this.getAttribute('label')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set label (value) {\n this.setAttribute('label', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get width () {\n return this.getAttribute('width')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set width (value) {\n this.setAttribute('width', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get height () {\n return this.getAttribute('height')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set height (value) {\n this.setAttribute('height', value)\n }\n\n openDropdown = () => {\n this.isDropdownOpen = true\n this.$optionsContainer.classList.remove('closed')\n }\n\n closeDropdown = () => {\n this.isDropdownOpen = false\n this.$optionsContainer.classList.add('closed')\n }\n\n setDropdownListPosition = () => {\n const windowHeight = window.innerHeight\n const selectedContainerPosition = this.$selection.getBoundingClientRect()\n const optionsContainerPosition = this.$optionsContainer.getBoundingClientRect()\n // list is bottom of frame - needs to open from above\n if (selectedContainerPosition.bottom + optionsContainerPosition.height > windowHeight) {\n this.$optionsContainer.style.top = selectedContainerPosition.top - optionsContainerPosition.height + 'px'\n this.$optionsContainer.style.left = selectedContainerPosition.left + 'px'\n } else {\n this.$optionsContainer.style.top = selectedContainerPosition.bottom + 'px'\n this.$optionsContainer.style.left = selectedContainerPosition.left + 'px'\n }\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n const currentObj = this\n this.$dropdown.addEventListener('selectedindexchange', (e) => {\n if (e?.detail?.selectedItem !== undefined) {\n const value = e.detail.selectedItem\n const closeEvent = new CustomEvent('change', { detail: { value } })\n currentObj.dispatchEvent(closeEvent)\n currentObj.value = value\n currentObj.setAttribute('value', value)\n }\n })\n\n this.$dropdown.addEventListener('focusout', (e) => {\n this.closeDropdown()\n })\n\n window.addEventListener('mousedown', e => {\n // When we click on the canvas and if the dropdown is open, then just close the dropdown and stop the event\n if (this.isDropdownOpen) {\n if (!e.target.closest('se-list')) {\n e.stopPropagation()\n this.closeDropdown()\n }\n }\n }, { capture: true })\n }\n}\n\n// Register\ncustomElements.define('se-list', SeList)\n","/* globals svgEditor */\nimport { t } from '../locale.js'\n\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n [aria-label=\"option\"]{\n padding:0.25rem 0.125rem !important;\n background-color: var(--icon-bg-color);\n }\n [aria-label=\"option\"]:hover{\n background-color: var(--icon-bg-color-hover);\n }\n\n .selected {\n background-color: var(--icon-bg-color-hover);\n }\n\n </style>\n <div aria-label=\"option\">\n <img alt=\"icon\" />\n <slot></slot>\n </div>\n`\n/**\n * @class SeMenu\n */\nexport class SeListItem extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$menuitem = this._shadowRoot.querySelector('[aria-label=option]')\n // this.$svg = this.$menuitem.shadowRoot.querySelector('#checkmark')\n // this.$svg.setAttribute('style', 'display: none;')\n this.$img = this._shadowRoot.querySelector('img')\n this.$img.setAttribute('style', 'display: none;')\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n this.$menuitem.addEventListener('mousedown', e => {\n this.$menuitem.dispatchEvent(new CustomEvent('selectedindexchange', {\n bubbles: true,\n composed: true,\n detail: { selectedItem: this.getAttribute('value') }\n }))\n })\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['option', 'src', 'title', 'img-height', 'selected']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'option':\n this.$menuitem.setAttribute('option', newValue)\n this.$menuitem.textContent = t(newValue)\n break\n case 'src':\n this.$img.setAttribute('style', 'display: block;')\n this.$img.setAttribute('src', this.imgPath + '/' + newValue)\n break\n case 'title':\n this.$img.setAttribute('title', t(newValue))\n break\n case 'img-height':\n this.$img.setAttribute('height', newValue)\n break\n case 'selected':\n if (newValue === 'true') {\n this.$menuitem.classList.add('selected')\n } else {\n this.$menuitem.classList.remove('selected')\n }\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get option () {\n return this.getAttribute('option')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set option (value) {\n this.setAttribute('option', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get imgHeight () {\n return this.getAttribute('img-height')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set imgHeight (value) {\n this.setAttribute('img-height', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get src () {\n return this.getAttribute('src')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set src (value) {\n this.setAttribute('src', value)\n }\n}\n\n// Register\ncustomElements.define('se-list-item', SeListItem)\n","function _mergeNamespaces(tA,eA){return eA.forEach((function(eA){eA&&\"string\"!=typeof eA&&!Array.isArray(eA)&&Object.keys(eA).forEach((function(AA){if(\"default\"!==AA&&!(AA in tA)){var rA=Object.getOwnPropertyDescriptor(eA,AA);Object.defineProperty(tA,AA,rA.get?rA:{enumerable:!0,get:function(){return eA[AA]}})}}))})),Object.freeze(tA)}\"undefined\"!=typeof window&&(\"SVGPathSeg\"in window||(window.SVGPathSeg=function(tA,eA,AA){this.pathSegType=tA,this.pathSegTypeAsLetter=eA,this._owningPathSegList=AA},window.SVGPathSeg.prototype.classname=\"SVGPathSeg\",window.SVGPathSeg.PATHSEG_UNKNOWN=0,window.SVGPathSeg.PATHSEG_CLOSEPATH=1,window.SVGPathSeg.PATHSEG_MOVETO_ABS=2,window.SVGPathSeg.PATHSEG_MOVETO_REL=3,window.SVGPathSeg.PATHSEG_LINETO_ABS=4,window.SVGPathSeg.PATHSEG_LINETO_REL=5,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS=6,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL=7,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS=8,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL=9,window.SVGPathSeg.PATHSEG_ARC_ABS=10,window.SVGPathSeg.PATHSEG_ARC_REL=11,window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS=12,window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL=13,window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS=14,window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL=15,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS=16,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL=17,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS=18,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL=19,window.SVGPathSeg.prototype._segmentChanged=function(){this._owningPathSegList&&this._owningPathSegList.segmentChanged(this)},window.SVGPathSegClosePath=function(tA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CLOSEPATH,\"z\",tA)},window.SVGPathSegClosePath.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegClosePath.prototype.toString=function(){return\"[object SVGPathSegClosePath]\"},window.SVGPathSegClosePath.prototype._asPathString=function(){return this.pathSegTypeAsLetter},window.SVGPathSegClosePath.prototype.clone=function(){return new window.SVGPathSegClosePath(void 0)},window.SVGPathSegMovetoAbs=function(tA,eA,AA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_MOVETO_ABS,\"M\",tA),this._x=eA,this._y=AA},window.SVGPathSegMovetoAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegMovetoAbs.prototype.toString=function(){return\"[object SVGPathSegMovetoAbs]\"},window.SVGPathSegMovetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x+\" \"+this._y},window.SVGPathSegMovetoAbs.prototype.clone=function(){return new window.SVGPathSegMovetoAbs(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegMovetoAbs.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegMovetoAbs.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegMovetoRel=function(tA,eA,AA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_MOVETO_REL,\"m\",tA),this._x=eA,this._y=AA},window.SVGPathSegMovetoRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegMovetoRel.prototype.toString=function(){return\"[object SVGPathSegMovetoRel]\"},window.SVGPathSegMovetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x+\" \"+this._y},window.SVGPathSegMovetoRel.prototype.clone=function(){return new window.SVGPathSegMovetoRel(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegMovetoRel.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegMovetoRel.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoAbs=function(tA,eA,AA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_ABS,\"L\",tA),this._x=eA,this._y=AA},window.SVGPathSegLinetoAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoAbs.prototype.toString=function(){return\"[object SVGPathSegLinetoAbs]\"},window.SVGPathSegLinetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x+\" \"+this._y},window.SVGPathSegLinetoAbs.prototype.clone=function(){return new window.SVGPathSegLinetoAbs(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegLinetoAbs.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegLinetoAbs.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoRel=function(tA,eA,AA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_REL,\"l\",tA),this._x=eA,this._y=AA},window.SVGPathSegLinetoRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoRel.prototype.toString=function(){return\"[object SVGPathSegLinetoRel]\"},window.SVGPathSegLinetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x+\" \"+this._y},window.SVGPathSegLinetoRel.prototype.clone=function(){return new window.SVGPathSegLinetoRel(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegLinetoRel.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegLinetoRel.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoCubicAbs=function(tA,eA,AA,rA,nA,iA,sA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS,\"C\",tA),this._x=eA,this._y=AA,this._x1=rA,this._y1=nA,this._x2=iA,this._y2=sA},window.SVGPathSegCurvetoCubicAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoCubicAbs.prototype.toString=function(){return\"[object SVGPathSegCurvetoCubicAbs]\"},window.SVGPathSegCurvetoCubicAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x1+\" \"+this._y1+\" \"+this._x2+\" \"+this._y2+\" \"+this._x+\" \"+this._y},window.SVGPathSegCurvetoCubicAbs.prototype.clone=function(){return new window.SVGPathSegCurvetoCubicAbs(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,\"x1\",{get:function(){return this._x1},set:function(tA){this._x1=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,\"y1\",{get:function(){return this._y1},set:function(tA){this._y1=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,\"x2\",{get:function(){return this._x2},set:function(tA){this._x2=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype,\"y2\",{get:function(){return this._y2},set:function(tA){this._y2=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoCubicRel=function(tA,eA,AA,rA,nA,iA,sA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL,\"c\",tA),this._x=eA,this._y=AA,this._x1=rA,this._y1=nA,this._x2=iA,this._y2=sA},window.SVGPathSegCurvetoCubicRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoCubicRel.prototype.toString=function(){return\"[object SVGPathSegCurvetoCubicRel]\"},window.SVGPathSegCurvetoCubicRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x1+\" \"+this._y1+\" \"+this._x2+\" \"+this._y2+\" \"+this._x+\" \"+this._y},window.SVGPathSegCurvetoCubicRel.prototype.clone=function(){return new window.SVGPathSegCurvetoCubicRel(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,\"x1\",{get:function(){return this._x1},set:function(tA){this._x1=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,\"y1\",{get:function(){return this._y1},set:function(tA){this._y1=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,\"x2\",{get:function(){return this._x2},set:function(tA){this._x2=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype,\"y2\",{get:function(){return this._y2},set:function(tA){this._y2=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoQuadraticAbs=function(tA,eA,AA,rA,nA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS,\"Q\",tA),this._x=eA,this._y=AA,this._x1=rA,this._y1=nA},window.SVGPathSegCurvetoQuadraticAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoQuadraticAbs.prototype.toString=function(){return\"[object SVGPathSegCurvetoQuadraticAbs]\"},window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x1+\" \"+this._y1+\" \"+this._x+\" \"+this._y},window.SVGPathSegCurvetoQuadraticAbs.prototype.clone=function(){return new window.SVGPathSegCurvetoQuadraticAbs(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype,\"x1\",{get:function(){return this._x1},set:function(tA){this._x1=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype,\"y1\",{get:function(){return this._y1},set:function(tA){this._y1=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoQuadraticRel=function(tA,eA,AA,rA,nA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL,\"q\",tA),this._x=eA,this._y=AA,this._x1=rA,this._y1=nA},window.SVGPathSegCurvetoQuadraticRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoQuadraticRel.prototype.toString=function(){return\"[object SVGPathSegCurvetoQuadraticRel]\"},window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x1+\" \"+this._y1+\" \"+this._x+\" \"+this._y},window.SVGPathSegCurvetoQuadraticRel.prototype.clone=function(){return new window.SVGPathSegCurvetoQuadraticRel(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype,\"x1\",{get:function(){return this._x1},set:function(tA){this._x1=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype,\"y1\",{get:function(){return this._y1},set:function(tA){this._y1=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegArcAbs=function(tA,eA,AA,rA,nA,iA,sA,oA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_ARC_ABS,\"A\",tA),this._x=eA,this._y=AA,this._r1=rA,this._r2=nA,this._angle=iA,this._largeArcFlag=sA,this._sweepFlag=oA},window.SVGPathSegArcAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegArcAbs.prototype.toString=function(){return\"[object SVGPathSegArcAbs]\"},window.SVGPathSegArcAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._r1+\" \"+this._r2+\" \"+this._angle+\" \"+(this._largeArcFlag?\"1\":\"0\")+\" \"+(this._sweepFlag?\"1\":\"0\")+\" \"+this._x+\" \"+this._y},window.SVGPathSegArcAbs.prototype.clone=function(){return new window.SVGPathSegArcAbs(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(window.SVGPathSegArcAbs.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,\"r1\",{get:function(){return this._r1},set:function(tA){this._r1=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,\"r2\",{get:function(){return this._r2},set:function(tA){this._r2=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,\"angle\",{get:function(){return this._angle},set:function(tA){this._angle=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,\"largeArcFlag\",{get:function(){return this._largeArcFlag},set:function(tA){this._largeArcFlag=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcAbs.prototype,\"sweepFlag\",{get:function(){return this._sweepFlag},set:function(tA){this._sweepFlag=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegArcRel=function(tA,eA,AA,rA,nA,iA,sA,oA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_ARC_REL,\"a\",tA),this._x=eA,this._y=AA,this._r1=rA,this._r2=nA,this._angle=iA,this._largeArcFlag=sA,this._sweepFlag=oA},window.SVGPathSegArcRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegArcRel.prototype.toString=function(){return\"[object SVGPathSegArcRel]\"},window.SVGPathSegArcRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._r1+\" \"+this._r2+\" \"+this._angle+\" \"+(this._largeArcFlag?\"1\":\"0\")+\" \"+(this._sweepFlag?\"1\":\"0\")+\" \"+this._x+\" \"+this._y},window.SVGPathSegArcRel.prototype.clone=function(){return new window.SVGPathSegArcRel(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(window.SVGPathSegArcRel.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,\"r1\",{get:function(){return this._r1},set:function(tA){this._r1=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,\"r2\",{get:function(){return this._r2},set:function(tA){this._r2=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,\"angle\",{get:function(){return this._angle},set:function(tA){this._angle=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,\"largeArcFlag\",{get:function(){return this._largeArcFlag},set:function(tA){this._largeArcFlag=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegArcRel.prototype,\"sweepFlag\",{get:function(){return this._sweepFlag},set:function(tA){this._sweepFlag=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoHorizontalAbs=function(tA,eA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS,\"H\",tA),this._x=eA},window.SVGPathSegLinetoHorizontalAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoHorizontalAbs.prototype.toString=function(){return\"[object SVGPathSegLinetoHorizontalAbs]\"},window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x},window.SVGPathSegLinetoHorizontalAbs.prototype.clone=function(){return new window.SVGPathSegLinetoHorizontalAbs(void 0,this._x)},Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoHorizontalRel=function(tA,eA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL,\"h\",tA),this._x=eA},window.SVGPathSegLinetoHorizontalRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoHorizontalRel.prototype.toString=function(){return\"[object SVGPathSegLinetoHorizontalRel]\"},window.SVGPathSegLinetoHorizontalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x},window.SVGPathSegLinetoHorizontalRel.prototype.clone=function(){return new window.SVGPathSegLinetoHorizontalRel(void 0,this._x)},Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoVerticalAbs=function(tA,eA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS,\"V\",tA),this._y=eA},window.SVGPathSegLinetoVerticalAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoVerticalAbs.prototype.toString=function(){return\"[object SVGPathSegLinetoVerticalAbs]\"},window.SVGPathSegLinetoVerticalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._y},window.SVGPathSegLinetoVerticalAbs.prototype.clone=function(){return new window.SVGPathSegLinetoVerticalAbs(void 0,this._y)},Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegLinetoVerticalRel=function(tA,eA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL,\"v\",tA),this._y=eA},window.SVGPathSegLinetoVerticalRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegLinetoVerticalRel.prototype.toString=function(){return\"[object SVGPathSegLinetoVerticalRel]\"},window.SVGPathSegLinetoVerticalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._y},window.SVGPathSegLinetoVerticalRel.prototype.clone=function(){return new window.SVGPathSegLinetoVerticalRel(void 0,this._y)},Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoCubicSmoothAbs=function(tA,eA,AA,rA,nA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,\"S\",tA),this._x=eA,this._y=AA,this._x2=rA,this._y2=nA},window.SVGPathSegCurvetoCubicSmoothAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString=function(){return\"[object SVGPathSegCurvetoCubicSmoothAbs]\"},window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x2+\" \"+this._y2+\" \"+this._x+\" \"+this._y},window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone=function(){return new window.SVGPathSegCurvetoCubicSmoothAbs(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype,\"x2\",{get:function(){return this._x2},set:function(tA){this._x2=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype,\"y2\",{get:function(){return this._y2},set:function(tA){this._y2=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoCubicSmoothRel=function(tA,eA,AA,rA,nA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL,\"s\",tA),this._x=eA,this._y=AA,this._x2=rA,this._y2=nA},window.SVGPathSegCurvetoCubicSmoothRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString=function(){return\"[object SVGPathSegCurvetoCubicSmoothRel]\"},window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x2+\" \"+this._y2+\" \"+this._x+\" \"+this._y},window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone=function(){return new window.SVGPathSegCurvetoCubicSmoothRel(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype,\"x2\",{get:function(){return this._x2},set:function(tA){this._x2=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype,\"y2\",{get:function(){return this._y2},set:function(tA){this._y2=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoQuadraticSmoothAbs=function(tA,eA,AA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,\"T\",tA),this._x=eA,this._y=AA},window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString=function(){return\"[object SVGPathSegCurvetoQuadraticSmoothAbs]\"},window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x+\" \"+this._y},window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone=function(){return new window.SVGPathSegCurvetoQuadraticSmoothAbs(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathSegCurvetoQuadraticSmoothRel=function(tA,eA,AA){window.SVGPathSeg.call(this,window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL,\"t\",tA),this._x=eA,this._y=AA},window.SVGPathSegCurvetoQuadraticSmoothRel.prototype=Object.create(window.SVGPathSeg.prototype),window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString=function(){return\"[object SVGPathSegCurvetoQuadraticSmoothRel]\"},window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+\" \"+this._x+\" \"+this._y},window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone=function(){return new window.SVGPathSegCurvetoQuadraticSmoothRel(void 0,this._x,this._y)},Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype,\"x\",{get:function(){return this._x},set:function(tA){this._x=tA,this._segmentChanged()},enumerable:!0}),Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype,\"y\",{get:function(){return this._y},set:function(tA){this._y=tA,this._segmentChanged()},enumerable:!0}),window.SVGPathElement.prototype.createSVGPathSegClosePath=function(){return new window.SVGPathSegClosePath(void 0)},window.SVGPathElement.prototype.createSVGPathSegMovetoAbs=function(tA,eA){return new window.SVGPathSegMovetoAbs(void 0,tA,eA)},window.SVGPathElement.prototype.createSVGPathSegMovetoRel=function(tA,eA){return new window.SVGPathSegMovetoRel(void 0,tA,eA)},window.SVGPathElement.prototype.createSVGPathSegLinetoAbs=function(tA,eA){return new window.SVGPathSegLinetoAbs(void 0,tA,eA)},window.SVGPathElement.prototype.createSVGPathSegLinetoRel=function(tA,eA){return new window.SVGPathSegLinetoRel(void 0,tA,eA)},window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs=function(tA,eA,AA,rA,nA,iA){return new window.SVGPathSegCurvetoCubicAbs(void 0,tA,eA,AA,rA,nA,iA)},window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel=function(tA,eA,AA,rA,nA,iA){return new window.SVGPathSegCurvetoCubicRel(void 0,tA,eA,AA,rA,nA,iA)},window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs=function(tA,eA,AA,rA){return new window.SVGPathSegCurvetoQuadraticAbs(void 0,tA,eA,AA,rA)},window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel=function(tA,eA,AA,rA){return new window.SVGPathSegCurvetoQuadraticRel(void 0,tA,eA,AA,rA)},window.SVGPathElement.prototype.createSVGPathSegArcAbs=function(tA,eA,AA,rA,nA,iA,sA){return new window.SVGPathSegArcAbs(void 0,tA,eA,AA,rA,nA,iA,sA)},window.SVGPathElement.prototype.createSVGPathSegArcRel=function(tA,eA,AA,rA,nA,iA,sA){return new window.SVGPathSegArcRel(void 0,tA,eA,AA,rA,nA,iA,sA)},window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs=function(tA){return new window.SVGPathSegLinetoHorizontalAbs(void 0,tA)},window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel=function(tA){return new window.SVGPathSegLinetoHorizontalRel(void 0,tA)},window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs=function(tA){return new window.SVGPathSegLinetoVerticalAbs(void 0,tA)},window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel=function(tA){return new window.SVGPathSegLinetoVerticalRel(void 0,tA)},window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs=function(tA,eA,AA,rA){return new window.SVGPathSegCurvetoCubicSmoothAbs(void 0,tA,eA,AA,rA)},window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel=function(tA,eA,AA,rA){return new window.SVGPathSegCurvetoCubicSmoothRel(void 0,tA,eA,AA,rA)},window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs=function(tA,eA){return new window.SVGPathSegCurvetoQuadraticSmoothAbs(void 0,tA,eA)},window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel=function(tA,eA){return new window.SVGPathSegCurvetoQuadraticSmoothRel(void 0,tA,eA)},\"getPathSegAtLength\"in window.SVGPathElement.prototype||(window.SVGPathElement.prototype.getPathSegAtLength=function(tA){if(void 0===tA||!isFinite(tA))throw\"Invalid arguments.\";var eA=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\");eA.setAttribute(\"d\",this.getAttribute(\"d\"));var AA=eA.pathSegList.numberOfItems-1;if(AA<=0)return 0;do{if(eA.pathSegList.removeItem(AA),tA>eA.getTotalLength())break;AA--}while(AA>0);return AA})),\"SVGPathSegList\"in window&&\"appendItem\"in window.SVGPathSegList.prototype||(window.SVGPathSegList=function(tA){this._pathElement=tA,this._list=this._parsePath(this._pathElement.getAttribute(\"d\")),this._mutationObserverConfig={attributes:!0,attributeFilter:[\"d\"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},window.SVGPathSegList.prototype.classname=\"SVGPathSegList\",Object.defineProperty(window.SVGPathSegList.prototype,\"numberOfItems\",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(window.SVGPathSegList.prototype,\"length\",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,\"pathSegList\",{get:function(){return this._pathSegList||(this._pathSegList=new window.SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,\"normalizedPathSegList\",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,\"animatedPathSegList\",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(window.SVGPathElement.prototype,\"animatedNormalizedPathSegList\",{get:function(){return this.pathSegList},enumerable:!0}),window.SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},window.SVGPathSegList.prototype._updateListFromPathMutations=function(tA){if(this._pathElement){var eA=!1;tA.forEach((function(tA){\"d\"==tA.attributeName&&(eA=!0)})),eA&&(this._list=this._parsePath(this._pathElement.getAttribute(\"d\")))}},window.SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute(\"d\",window.SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},window.SVGPathSegList.prototype.segmentChanged=function(tA){this._writeListToPath()},window.SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach((function(tA){tA._owningPathSegList=null})),this._list=[],this._writeListToPath()},window.SVGPathSegList.prototype.initialize=function(tA){return this._checkPathSynchronizedToList(),this._list=[tA],tA._owningPathSegList=this,this._writeListToPath(),tA},window.SVGPathSegList.prototype._checkValidIndex=function(tA){if(isNaN(tA)||tA<0||tA>=this.numberOfItems)throw\"INDEX_SIZE_ERR\"},window.SVGPathSegList.prototype.getItem=function(tA){return this._checkPathSynchronizedToList(),this._checkValidIndex(tA),this._list[tA]},window.SVGPathSegList.prototype.insertItemBefore=function(tA,eA){return this._checkPathSynchronizedToList(),eA>this.numberOfItems&&(eA=this.numberOfItems),tA._owningPathSegList&&(tA=tA.clone()),this._list.splice(eA,0,tA),tA._owningPathSegList=this,this._writeListToPath(),tA},window.SVGPathSegList.prototype.replaceItem=function(tA,eA){return this._checkPathSynchronizedToList(),tA._owningPathSegList&&(tA=tA.clone()),this._checkValidIndex(eA),this._list[eA]=tA,tA._owningPathSegList=this,this._writeListToPath(),tA},window.SVGPathSegList.prototype.removeItem=function(tA){this._checkPathSynchronizedToList(),this._checkValidIndex(tA);var eA=this._list[tA];return this._list.splice(tA,1),this._writeListToPath(),eA},window.SVGPathSegList.prototype.appendItem=function(tA){return this._checkPathSynchronizedToList(),tA._owningPathSegList&&(tA=tA.clone()),this._list.push(tA),tA._owningPathSegList=this,this._writeListToPath(),tA},window.SVGPathSegList._pathSegArrayAsString=function(tA){var eA=\"\",AA=!0;return tA.forEach((function(tA){AA?(AA=!1,eA+=tA._asPathString()):eA+=\" \"+tA._asPathString()})),eA},window.SVGPathSegList.prototype._parsePath=function(tA){if(!tA||0==tA.length)return[];var eA=this,Builder=function(){this.pathSegList=[]};Builder.prototype.appendSegment=function(tA){this.pathSegList.push(tA)};var Source=function(tA){this._string=tA,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=window.SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};Source.prototype._isCurrentSpace=function(){var tA=this._string[this._currentIndex];return tA<=\" \"&&(\" \"==tA||\"\\n\"==tA||\"\\t\"==tA||\"\\r\"==tA||\"\\f\"==tA)},Source.prototype._skipOptionalSpaces=function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex++;return this._currentIndex<this._endIndex},Source.prototype._skipOptionalSpacesOrDelimiter=function(){return!(this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&\",\"!=this._string.charAt(this._currentIndex))&&(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&\",\"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},Source.prototype.hasMoreData=function(){return this._currentIndex<this._endIndex},Source.prototype.peekSegmentType=function(){var tA=this._string[this._currentIndex];return this._pathSegTypeFromChar(tA)},Source.prototype._pathSegTypeFromChar=function(tA){switch(tA){case\"Z\":case\"z\":return window.SVGPathSeg.PATHSEG_CLOSEPATH;case\"M\":return window.SVGPathSeg.PATHSEG_MOVETO_ABS;case\"m\":return window.SVGPathSeg.PATHSEG_MOVETO_REL;case\"L\":return window.SVGPathSeg.PATHSEG_LINETO_ABS;case\"l\":return window.SVGPathSeg.PATHSEG_LINETO_REL;case\"C\":return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;case\"c\":return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;case\"Q\":return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;case\"q\":return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;case\"A\":return window.SVGPathSeg.PATHSEG_ARC_ABS;case\"a\":return window.SVGPathSeg.PATHSEG_ARC_REL;case\"H\":return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;case\"h\":return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;case\"V\":return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;case\"v\":return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;case\"S\":return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;case\"s\":return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;case\"T\":return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;case\"t\":return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;default:return window.SVGPathSeg.PATHSEG_UNKNOWN}},Source.prototype._nextCommandHelper=function(tA,eA){return(\"+\"==tA||\"-\"==tA||\".\"==tA||tA>=\"0\"&&tA<=\"9\")&&eA!=window.SVGPathSeg.PATHSEG_CLOSEPATH?eA==window.SVGPathSeg.PATHSEG_MOVETO_ABS?window.SVGPathSeg.PATHSEG_LINETO_ABS:eA==window.SVGPathSeg.PATHSEG_MOVETO_REL?window.SVGPathSeg.PATHSEG_LINETO_REL:eA:window.SVGPathSeg.PATHSEG_UNKNOWN},Source.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var tA=this.peekSegmentType();return tA==window.SVGPathSeg.PATHSEG_MOVETO_ABS||tA==window.SVGPathSeg.PATHSEG_MOVETO_REL},Source.prototype._parseNumber=function(){var tA=0,eA=0,AA=1,rA=0,nA=1,iA=1,sA=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&\"+\"==this._string.charAt(this._currentIndex)?this._currentIndex++:this._currentIndex<this._endIndex&&\"-\"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,nA=-1),!(this._currentIndex==this._endIndex||(this._string.charAt(this._currentIndex)<\"0\"||this._string.charAt(this._currentIndex)>\"9\")&&\".\"!=this._string.charAt(this._currentIndex))){for(var oA=this._currentIndex;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>=\"0\"&&this._string.charAt(this._currentIndex)<=\"9\";)this._currentIndex++;if(this._currentIndex!=oA)for(var aA=this._currentIndex-1,lA=1;aA>=oA;)eA+=lA*(this._string.charAt(aA--)-\"0\"),lA*=10;if(this._currentIndex<this._endIndex&&\".\"==this._string.charAt(this._currentIndex)){if(this._currentIndex++,this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<\"0\"||this._string.charAt(this._currentIndex)>\"9\")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>=\"0\"&&this._string.charAt(this._currentIndex)<=\"9\";)AA*=10,rA+=(this._string.charAt(this._currentIndex)-\"0\")/AA,this._currentIndex+=1}if(this._currentIndex!=sA&&this._currentIndex+1<this._endIndex&&(\"e\"==this._string.charAt(this._currentIndex)||\"E\"==this._string.charAt(this._currentIndex))&&\"x\"!=this._string.charAt(this._currentIndex+1)&&\"m\"!=this._string.charAt(this._currentIndex+1)){if(this._currentIndex++,\"+\"==this._string.charAt(this._currentIndex)?this._currentIndex++:\"-\"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,iA=-1),this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<\"0\"||this._string.charAt(this._currentIndex)>\"9\")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>=\"0\"&&this._string.charAt(this._currentIndex)<=\"9\";)tA*=10,tA+=this._string.charAt(this._currentIndex)-\"0\",this._currentIndex++}var cA=eA+rA;if(cA*=nA,tA&&(cA*=Math.pow(10,iA*tA)),sA!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),cA}},Source.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var tA=!1,eA=this._string.charAt(this._currentIndex++);if(\"0\"==eA)tA=!1;else{if(\"1\"!=eA)return;tA=!0}return this._skipOptionalSpacesOrDelimiter(),tA}},Source.prototype.parseSegment=function(){var tA=this._string[this._currentIndex],AA=this._pathSegTypeFromChar(tA);if(AA==window.SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==window.SVGPathSeg.PATHSEG_UNKNOWN)return null;if((AA=this._nextCommandHelper(tA,this._previousCommand))==window.SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=AA,AA){case window.SVGPathSeg.PATHSEG_MOVETO_REL:return new window.SVGPathSegMovetoRel(eA,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_MOVETO_ABS:return new window.SVGPathSegMovetoAbs(eA,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_REL:return new window.SVGPathSegLinetoRel(eA,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_ABS:return new window.SVGPathSegLinetoAbs(eA,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new window.SVGPathSegLinetoHorizontalRel(eA,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new window.SVGPathSegLinetoHorizontalAbs(eA,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new window.SVGPathSegLinetoVerticalRel(eA,this._parseNumber());case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new window.SVGPathSegLinetoVerticalAbs(eA,this._parseNumber());case window.SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new window.SVGPathSegClosePath(eA);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var rA={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new window.SVGPathSegCurvetoCubicRel(eA,rA.x,rA.y,rA.x1,rA.y1,rA.x2,rA.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:return rA={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoCubicAbs(eA,rA.x,rA.y,rA.x1,rA.y1,rA.x2,rA.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:return rA={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoCubicSmoothRel(eA,rA.x,rA.y,rA.x2,rA.y2);case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:return rA={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoCubicSmoothAbs(eA,rA.x,rA.y,rA.x2,rA.y2);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:return rA={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoQuadraticRel(eA,rA.x,rA.y,rA.x1,rA.y1);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:return rA={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegCurvetoQuadraticAbs(eA,rA.x,rA.y,rA.x1,rA.y1);case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new window.SVGPathSegCurvetoQuadraticSmoothRel(eA,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new window.SVGPathSegCurvetoQuadraticSmoothAbs(eA,this._parseNumber(),this._parseNumber());case window.SVGPathSeg.PATHSEG_ARC_REL:return rA={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegArcRel(eA,rA.x,rA.y,rA.x1,rA.y1,rA.arcAngle,rA.arcLarge,rA.arcSweep);case window.SVGPathSeg.PATHSEG_ARC_ABS:return rA={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()},new window.SVGPathSegArcAbs(eA,rA.x,rA.y,rA.x1,rA.y1,rA.arcAngle,rA.arcLarge,rA.arcSweep);default:throw\"Unknown path seg type.\"}};var AA=new Builder,rA=new Source(tA);if(!rA.initialCommandIsMoveTo())return[];for(;rA.hasMoreData();){var nA=rA.parseSegment();if(!nA)return[];AA.appendSegment(nA)}return AA.pathSegList}));class Paint{constructor(tA){const eA=tA||{};if(this.alpha=isNaN(eA.alpha)?100:eA.alpha,eA.copy)switch(this.type=eA.copy.type,this.alpha=eA.copy.alpha,this.solidColor=null,this.linearGradient=null,this.radialGradient=null,this.type){case\"none\":break;case\"solidColor\":this.solidColor=eA.copy.solidColor;break;case\"linearGradient\":this.linearGradient=eA.copy.linearGradient.cloneNode(!0);break;case\"radialGradient\":this.radialGradient=eA.copy.radialGradient.cloneNode(!0)}else if(eA.linearGradient)if(this.type=\"linearGradient\",this.solidColor=null,this.radialGradient=null,eA.linearGradient.hasAttribute(\"xlink:href\")){const tA=document.getElementById(eA.linearGradient.getAttribute(\"xlink:href\").substr(1));this.linearGradient=tA.cloneNode(!0)}else this.linearGradient=eA.linearGradient.cloneNode(!0);else if(eA.radialGradient)if(this.type=\"radialGradient\",this.solidColor=null,this.linearGradient=null,eA.radialGradient.hasAttribute(\"xlink:href\")){const tA=document.getElementById(eA.radialGradient.getAttribute(\"xlink:href\").substr(1));this.radialGradient=tA.cloneNode(!0)}else this.radialGradient=eA.radialGradient.cloneNode(!0);else eA.solidColor?(this.type=\"solidColor\",this.solidColor=eA.solidColor):(this.type=\"none\",this.solidColor=null,this.linearGradient=null,this.radialGradient=null)}}\n/**\n * Tools for working with units.\n * @module units\n * @license MIT\n *\n * @copyright 2010 Alexis Deveria, 2010 Jeff Schiller\n */const tA=\"http://www.w3.org/2000/svg\",eA=[\"x\",\"x1\",\"cx\",\"rx\",\"width\"],AA=[\"y\",\"y1\",\"cy\",\"ry\",\"height\"],rA=[\"r\",\"radius\",...eA,...AA];let nA,iA={};const getTypeMap=()=>iA,shortFloat=tA=>{const eA=nA.getRoundDigits();return isNaN(tA)?Array.isArray(tA)?shortFloat(tA[0])+\",\"+shortFloat(tA[1]):Number.parseFloat(tA).toFixed(eA)-0:Number(Number(tA).toFixed(eA))},convertUnit=(tA,eA)=>(eA=eA||nA.getBaseUnit(),shortFloat(tA/iA[eA])),setUnitAttr=(tA,eA,AA)=>{tA.setAttribute(eA,AA)},convertToNum=(tA,rA)=>{if(!isNaN(rA))return rA-0;if(\"%\"===rA.substr(-1)){const iA=rA.substr(0,rA.length-1)/100,sA=nA.getWidth(),oA=nA.getHeight();return eA.includes(tA)?iA*sA:AA.includes(tA)?iA*oA:iA*Math.sqrt(sA*sA+oA*oA)/Math.sqrt(2)}const sA=rA.substr(-2);return rA.substr(0,rA.length-2)*iA[sA]},sA={HTML:\"http://www.w3.org/1999/xhtml\",MATH:\"http://www.w3.org/1998/Math/MathML\",SE:\"http://svg-edit.googlecode.com\",SVG:\"http://www.w3.org/2000/svg\",XLINK:\"http://www.w3.org/1999/xlink\",OI:\"http://www.optimistik.fr/namespace/svg/OIdata\",XML:\"http://www.w3.org/XML/1998/namespace\",XMLNS:\"http://www.w3.org/2000/xmlns/\"},getReverseNS=function(){const tA={};return Object.entries(sA).forEach((([eA,AA])=>{tA[AA]=eA.toLowerCase()})),tA},oA=document.createElementNS(sA.SVG,\"svg\"),transformPoint=function(tA,eA,AA){return{x:AA.a*tA+AA.c*eA+AA.e,y:AA.b*tA+AA.d*eA+AA.f}},isIdentity=function(tA){return 1===tA.a&&0===tA.b&&0===tA.c&&1===tA.d&&0===tA.e&&0===tA.f},matrixMultiply=function(...tA){const eA=tA.reduceRight(((tA,eA)=>eA.multiply(tA)));return Math.abs(eA.a)<1e-14&&(eA.a=0),Math.abs(eA.b)<1e-14&&(eA.b=0),Math.abs(eA.c)<1e-14&&(eA.c=0),Math.abs(eA.d)<1e-14&&(eA.d=0),Math.abs(eA.e)<1e-14&&(eA.e=0),Math.abs(eA.f)<1e-14&&(eA.f=0),eA},hasMatrixTransform=function(tA){if(!tA)return!1;let eA=tA.numberOfItems;for(;eA--;){const AA=tA.getItem(eA);if(1===AA.type&&!isIdentity(AA.matrix))return!0}return!1},transformBox=function(tA,eA,AA,rA,nA){const iA=transformPoint(tA,eA,nA),sA=transformPoint(tA+AA,eA,nA),oA=transformPoint(tA,eA+rA,nA),aA=transformPoint(tA+AA,eA+rA,nA),lA=Math.min(iA.x,sA.x,oA.x,aA.x),cA=Math.max(iA.x,sA.x,oA.x,aA.x),uA=Math.min(iA.y,sA.y,oA.y,aA.y);return{tl:iA,tr:sA,bl:oA,br:aA,aabox:{x:lA,y:uA,width:cA-lA,height:Math.max(iA.y,sA.y,oA.y,aA.y)-uA}}},transformListToTransform=function(tA,eA,AA){if(!tA)return oA.createSVGTransformFromMatrix(oA.createSVGMatrix());if(eA=eA||0,AA=AA||tA.numberOfItems-1,(eA=Number.parseInt(eA))>(AA=Number.parseInt(AA))){const tA=AA;AA=eA,eA=tA}let rA=oA.createSVGMatrix();for(let nA=eA;nA<=AA;++nA){const eA=nA>=0&&nA<tA.numberOfItems?tA.getItem(nA).matrix:oA.createSVGMatrix();rA=matrixMultiply(rA,eA)}return oA.createSVGTransformFromMatrix(rA)},getMatrix=tA=>{const eA=tA.transform.baseVal;return transformListToTransform(eA).matrix},snapToAngle=(tA,eA,AA,rA)=>{const nA=Math.PI/4,iA=AA-tA,sA=rA-eA,oA=Math.atan2(sA,iA),aA=Math.sqrt(iA*iA+sA*sA),lA=Math.round(oA/nA)*nA;return{x:tA+aA*Math.cos(lA),y:eA+aA*Math.sin(lA),a:lA}},rectsIntersect=(tA,eA)=>eA.x<tA.x+tA.width&&eA.x+eA.width>tA.x&&eA.y<tA.y+tA.height&&eA.y+eA.height>tA.y;function isObject$9(tA){return tA&&\"object\"==typeof tA&&!Array.isArray(tA)}function mergeDeep(tA,eA){const AA=Object.assign({},tA);return isObject$9(tA)&&isObject$9(eA)&&Object.keys(eA).forEach((rA=>{isObject$9(eA[rA])?rA in tA?AA[rA]=mergeDeep(tA[rA],eA[rA]):Object.assign(AA,{[rA]:eA[rA]}):Object.assign(AA,{[rA]:eA[rA]})})),AA}function getClosest(tA,eA){const AA=eA.charAt(0),rA=\"classList\"in document.documentElement;let nA,iA;for(\"[\"===AA&&(nA=(eA=eA.substr(1,eA.length-2)).split(\"=\"),nA.length>1&&(iA=!0,nA[1]=nA[1].replace(/\"/g,\"\").replace(/'/g,\"\")));tA&&tA!==document&&1===tA.nodeType;tA=tA.parentNode){if(\".\"===AA)if(rA){if(tA.classList.contains(eA.substr(1)))return tA}else if(new RegExp(\"(^|\\\\s)\"+eA.substr(1)+\"(\\\\s|$)\").test(tA.className))return tA;if(\"#\"===AA&&tA.id===eA.substr(1))return tA;if(\"[\"===AA&&tA.hasAttribute(nA[0])){if(!iA)return tA;if(tA.getAttribute(nA[0])===nA[1])return tA}if(tA.tagName.toLowerCase()===eA)return tA}return null}function getParents(tA,eA){const AA=[],rA=eA?.charAt(0);for(;tA&&tA!==document;tA=tA.parentNode)eA?(\".\"===rA&&tA.classList.contains(eA.substr(1))&&AA.push(tA),\"#\"===rA&&tA.id===eA.substr(1)&&AA.push(tA),\"[\"===rA&&tA.hasAttribute(eA.substr(1,eA.length-1))&&AA.push(tA),tA.tagName.toLowerCase()===eA&&AA.push(tA)):AA.push(tA);return AA.length?AA:null}\n/**\n * Miscellaneous utilities.\n * @module utilities\n * @license MIT\n *\n * @copyright 2010 Alexis Deveria, 2010 Jeff Schiller\n */\nconst aA=\"a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use,clipPath\".split(\",\");let lA=null,cA=null;const toXml=tA=>tA.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#x27;\");function encode64(tA){return tA=encodeUTF8(tA),window.btoa(tA)}function decode64(tA){return function decodeUTF8(tA){return decodeURIComponent(escape(tA))}(window.atob(tA))}const encodeUTF8=tA=>unescape(encodeURIComponent(tA)),createObjectURL=tA=>tA&&\"undefined\"!=typeof URL&&URL.createObjectURL?URL.createObjectURL(tA):\"\",uA=(()=>{if(\"undefined\"==typeof Blob)return\"\";const tA=new Blob([\"<html><head><title>SVG-edit</title></head><body>&nbsp;</body></html>\"],{type:\"text/html\"});return createObjectURL(tA)})(),text2xml=tA=>{let eA,AA;tA.includes(\"<svg:svg\")&&(tA=tA.replace(/<(\\/?)svg:/g,\"<$1\").replace(\"xmlns:svg\",\"xmlns\"));try{AA=new DOMParser,AA.async=!1}catch(tA){throw new Error(\"XML Parser could not be instantiated\")}try{eA=AA.parseFromString(tA,\"text/xml\")}catch(tA){throw new Error(\"Error parsing XML string\")}return eA},walkTree=(tA,eA)=>{if(1===tA?.nodeType){eA(tA);let AA=tA.childNodes.length;for(;AA--;)walkTree(tA.childNodes.item(AA),eA)}},getUrlFromAttr=function(tA){if(tA){if(tA.startsWith('url(\"'))return tA.substring(5,tA.indexOf('\"',6));if(tA.startsWith(\"url('\"))return tA.substring(5,tA.indexOf(\"'\",6));if(tA.startsWith(\"url(\"))return tA.substring(4,tA.indexOf(\")\"))}return null};let getHref=function(tA){return tA.getAttributeNS(sA.XLINK,\"href\")},setHref=function(tA,eA){tA.setAttributeNS(sA.XLINK,\"xlink:href\",eA)};const findDefs=function(){const tA=lA.getSvgContent();let eA=tA.getElementsByTagNameNS(sA.SVG,\"defs\");return eA.length>0?eA=eA[0]:(eA=tA.ownerDocument.createElementNS(sA.SVG,\"defs\"),tA.firstChild?tA.insertBefore(eA,tA.firstChild.nextSibling):tA.append(eA)),eA},getBBox=function(tA){const eA=tA||lA.getSelectedElements()[0];if(1!==tA.nodeType)return null;const AA=eA.nodeName;let rA=null;switch(AA){case\"text\":\"\"===eA.textContent?(eA.textContent=\"a\",rA=eA.getBBox(),eA.textContent=\"\"):eA.getBBox&&(rA=eA.getBBox());break;case\"path\":case\"g\":case\"a\":eA.getBBox&&(rA=eA.getBBox());break;default:if(\"use\"===AA)rA=eA.getBBox();else if(aA.includes(AA))if(eA)try{rA=eA.getBBox()}catch(tA){const AA=eA.getExtentOfChar(0),nA=eA.getComputedTextLength();rA={x:AA.x,y:AA.y,width:nA,height:AA.height}}else{const tA=getClosest(eA.parentNode,\"foreignObject\");tA.length&&tA[0].getBBox&&(rA=tA[0].getBBox())}}return rA&&(rA=(({x:tA,y:eA,width:AA,height:rA})=>({x:tA,y:eA,width:AA,height:rA}))(rA)),rA},getPathDFromSegments=function(tA){let eA=\"\";return tA.forEach((function([tA,AA],rA){eA+=tA;for(let tA=0;tA<AA.length;tA+=2)eA+=AA[tA]+\",\"+AA[tA+1]+\" \"})),eA},getPathDFromElement=function(tA){let eA,AA,rA,nA=1.81;switch(tA.tagName){case\"ellipse\":case\"circle\":{AA=Number(tA.getAttribute(\"rx\")),rA=Number(tA.getAttribute(\"ry\"));const iA=Number(tA.getAttribute(\"cx\")),sA=Number(tA.getAttribute(\"cy\"));\"circle\"===tA.tagName&&tA.hasAttribute(\"r\")&&(rA=Number(tA.getAttribute(\"r\")),AA=rA),eA=getPathDFromSegments([[\"M\",[iA-AA,sA]],[\"C\",[iA-AA,sA-rA/nA,iA-AA/nA,sA-rA,iA,sA-rA]],[\"C\",[iA+AA/nA,sA-rA,iA+AA,sA-rA/nA,iA+AA,sA]],[\"C\",[iA+AA,sA+rA/nA,iA+AA/nA,sA+rA,iA,sA+rA]],[\"C\",[iA-AA/nA,sA+rA,iA-AA,sA+rA/nA,iA-AA,sA]],[\"Z\",[]]]);break}case\"path\":eA=tA.getAttribute(\"d\");break;case\"line\":eA=\"M\"+tA.getAttribute(\"x1\")+\",\"+tA.getAttribute(\"y1\")+\"L\"+tA.getAttribute(\"x2\")+\",\"+tA.getAttribute(\"y2\");break;case\"polyline\":eA=\"M\"+tA.getAttribute(\"points\");break;case\"polygon\":eA=\"M\"+tA.getAttribute(\"points\")+\" Z\";break;case\"rect\":{AA=Number(tA.getAttribute(\"rx\")),rA=Number(tA.getAttribute(\"ry\"));const iA=tA.getBBox(),{x:sA,y:oA}=iA,aA=iA.width,lA=iA.height;nA=4-nA,eA=getPathDFromSegments(AA||rA?[[\"M\",[sA,oA+rA]],[\"C\",[sA,oA+rA/nA,sA+AA/nA,oA,sA+AA,oA]],[\"L\",[sA+aA-AA,oA]],[\"C\",[sA+aA-AA/nA,oA,sA+aA,oA+rA/nA,sA+aA,oA+rA]],[\"L\",[sA+aA,oA+lA-rA]],[\"C\",[sA+aA,oA+lA-rA/nA,sA+aA-AA/nA,oA+lA,sA+aA-AA,oA+lA]],[\"L\",[sA+AA,oA+lA]],[\"C\",[sA+AA/nA,oA+lA,sA,oA+lA-rA/nA,sA,oA+lA-rA]],[\"L\",[sA,oA+rA]],[\"Z\",[]]]:[[\"M\",[sA,oA]],[\"L\",[sA+aA,oA]],[\"L\",[sA+aA,oA+lA]],[\"L\",[sA,oA+lA]],[\"L\",[sA,oA]],[\"Z\",[]]]);break}}return eA},getExtraAttributesForConvertToPath=function(tA){const eA={};return[\"marker-start\",\"marker-end\",\"marker-mid\",\"filter\",\"clip-path\"].forEach((function(AA){const rA=tA.getAttribute(AA);rA&&(eA[AA]=rA)})),eA},getBBoxOfElementAsPath=function(tA,eA,AA){const rA=eA({element:\"path\",attr:getExtraAttributesForConvertToPath(tA)}),nA=tA.getAttribute(\"transform\");nA&&rA.setAttribute(\"transform\",nA);const{parentNode:iA}=tA;tA.nextSibling?tA.before(rA):iA.append(rA);const sA=getPathDFromElement(tA);sA?rA.setAttribute(\"d\",sA):rA.remove(),AA.resetOrientation(rA);let oA=!1;try{oA=rA.getBBox()}catch(tA){}return rA.remove(),oA};const getBBoxWithTransform=function(tA,eA,AA){let rA=getBBox(tA);if(!rA)return null;const nA=tA.transform.baseVal,iA=getRotationAngleFromTransformList(nA),sA=hasMatrixTransform(nA);if(iA||sA){let oA=!1;if(function bBoxCanBeOptimizedOverNativeGetBBox(tA,eA){const AA=tA%90;return eA||!(AA>-.001&&AA<.001||AA<-89.99||AA>89.99)}(iA,sA)){if([\"ellipse\",\"path\",\"line\",\"polyline\",\"polygon\"].includes(tA.tagName))oA=getBBoxOfElementAsPath(tA,eA,AA),rA=oA;else if(\"rect\"===tA.tagName){const nA=Number(tA.getAttribute(\"rx\")),iA=Number(tA.getAttribute(\"ry\"));(nA||iA)&&(oA=getBBoxOfElementAsPath(tA,eA,AA),rA=oA)}}if(!oA){const{matrix:tA}=transformListToTransform(nA);rA=transformBox(rA.x,rA.y,rA.width,rA.height,tA).aabox}}return rA},getStrokeOffsetForBBox=tA=>{const eA=tA.getAttribute(\"stroke-width\");return isNaN(eA)||\"none\"===tA.getAttribute(\"stroke\")?0:eA/2},getStrokedBBox=(tA,eA,AA)=>{if(!tA||!tA.length)return!1;let rA;if(tA.forEach((tA=>{rA||tA.parentNode&&(rA=getBBoxWithTransform(tA,eA,AA))})),!rA)return null;let nA=rA.x+rA.width,iA=rA.y+rA.height,sA=rA.x,oA=rA.y;if(1===tA.length){const eA=getStrokeOffsetForBBox(tA[0]);sA-=eA,oA-=eA,nA+=eA,iA+=eA}else tA.forEach((tA=>{const rA=getBBoxWithTransform(tA,eA,AA);if(rA){const eA=getStrokeOffsetForBBox(tA);sA=Math.min(sA,rA.x-eA),oA=Math.min(oA,rA.y-eA),1===tA.nodeType&&(nA=Math.max(nA,rA.x+rA.width+eA),iA=Math.max(iA,rA.y+rA.height+eA))}}));return rA.x=sA,rA.y=oA,rA.width=nA-sA,rA.height=iA-oA,rA},getVisibleElements=tA=>{if(!tA){tA=lA.getSvgContent().children[0]}const eA=[],AA=tA.children;return Array.from(AA,(tA=>{tA.getBBox&&eA.push(tA)})),eA.reverse()},getStrokedBBoxDefaultVisible=tA=>(tA||(tA=getVisibleElements()),getStrokedBBox(tA,lA.addSVGElementsFromJson,lA.pathActions)),getRotationAngleFromTransformList=(tA,eA)=>{if(!tA)return 0;for(let AA=0;AA<tA.numberOfItems;++AA){const rA=tA.getItem(AA);if(4===rA.type)return eA?rA.angle*Math.PI/180:rA.angle}return 0};let getRotationAngle=(tA,eA)=>{const AA=(tA||lA.getSelectedElements()[0]).transform?.baseVal;return getRotationAngleFromTransformList(AA,eA)};const getRefElem=tA=>getElement(getUrlFromAttr(tA).substr(1)),getFeGaussianBlur=tA=>{if(\"feGaussianBlur\"===tA?.firstChild?.tagName)return tA.firstChild;{const eA=tA.children;for(const[tA,AA]of Object.entries(eA))if(\"feGaussianBlur\"===AA.tagName)return AA}return null},getElement=tA=>cA.querySelector(\"#\"+tA),assignAttributes=(tA,eA,AA,rA)=>{for(const[AA,nA]of Object.entries(eA)){const eA=\"xml:\"===AA.substr(0,4)?sA.XML:\"xlink:\"===AA.substr(0,6)?sA.XLINK:null;void 0!==nA?eA?tA.setAttributeNS(eA,AA,nA):rA?setUnitAttr(tA,AA,nA):tA.setAttribute(AA,nA):eA?tA.removeAttributeNS(eA,AA):tA.removeAttribute(AA)}},cleanupElement=tA=>{const eA={\"fill-opacity\":1,\"stop-opacity\":1,opacity:1,stroke:\"none\",\"stroke-dasharray\":\"none\",\"stroke-linejoin\":\"miter\",\"stroke-linecap\":\"butt\",\"stroke-opacity\":1,\"stroke-width\":1,rx:0,ry:0};\"ellipse\"===tA.nodeName&&(delete eA.rx,delete eA.ry),Object.entries(eA).forEach((([eA,AA])=>{tA.getAttribute(eA)===String(AA)&&tA.removeAttribute(eA)}))},snapToGrid=tA=>{const eA=lA.getBaseUnit();let AA=lA.getSnappingStep();return\"px\"!==eA&&(AA*=getTypeMap()[eA]),tA=Math.round(tA/AA)*AA},preventClickDefault=tA=>{$click(tA,(tA=>{tA.preventDefault()}))},stringToHTML=tA=>(new DOMParser).parseFromString(tA,\"text/html\").body.firstChild,insertChildAtIndex=(tA,eA,AA=0)=>{const rA=stringToHTML(eA);AA>=tA.children.length?tA.appendChild(rA):tA.insertBefore(rA,tA.children[AA])},$id=tA=>document.getElementById(tA),$qq=tA=>document.querySelector(tA),$qa=tA=>[...document.querySelectorAll(tA)],$click=(tA,eA)=>{tA.addEventListener(\"click\",eA),tA.addEventListener(\"touchend\",eA)},hA={BEFORE_APPLY:\"before_apply\",AFTER_APPLY:\"after_apply\",BEFORE_UNAPPLY:\"before_unapply\",AFTER_UNAPPLY:\"after_unapply\"};class Command{getText(){return this.text}apply(tA,eA){tA&&tA.handleHistoryEvent(hA.BEFORE_APPLY,this),eA(tA),tA&&tA.handleHistoryEvent(hA.AFTER_APPLY,this)}unapply(tA,eA){tA&&tA.handleHistoryEvent(hA.BEFORE_UNAPPLY,this),eA(),tA&&tA.handleHistoryEvent(hA.AFTER_UNAPPLY,this)}elements(){return[this.elem]}type(){return this.constructor.name}}class MoveElementCommand$1 extends Command{constructor(tA,eA,AA,rA){super(),this.elem=tA,this.text=rA?\"Move \"+tA.tagName+\" to \"+rA:\"Move \"+tA.tagName,this.oldNextSibling=eA,this.oldParent=AA,this.newNextSibling=tA.nextSibling,this.newParent=tA.parentNode}apply(tA){super.apply(tA,(()=>{this.elem=this.newParent.insertBefore(this.elem,this.newNextSibling)}))}unapply(tA){super.unapply(tA,(()=>{this.elem=this.oldParent.insertBefore(this.elem,this.oldNextSibling)}))}}class InsertElementCommand$4 extends Command{constructor(tA,eA){super(),this.elem=tA,this.text=eA||\"Create \"+tA.tagName,this.parent=tA.parentNode,this.nextSibling=this.elem.nextSibling}apply(tA){super.apply(tA,(()=>{this.elem=this.parent.insertBefore(this.elem,this.nextSibling)}))}unapply(tA){super.unapply(tA,(()=>{this.parent=this.elem.parentNode,this.elem.remove()}))}}class RemoveElementCommand$2 extends Command{constructor(tA,eA,AA,rA){super(),this.elem=tA,this.text=rA||\"Delete \"+tA.tagName,this.nextSibling=eA,this.parent=AA}apply(tA){super.apply(tA,(()=>{this.parent=this.elem.parentNode,this.elem.remove()}))}unapply(tA){super.unapply(tA,(()=>{this.nextSibling||console.error(\"Reference element was lost\"),this.parent.insertBefore(this.elem,this.nextSibling)}))}}class ChangeElementCommand$2 extends Command{constructor(tA,eA,AA){super(),this.elem=tA,this.text=AA?\"Change \"+tA.tagName+\" \"+AA:\"Change \"+tA.tagName,this.newValues={},this.oldValues=eA;for(const AA in eA)this.newValues[AA]=\"#text\"===AA?tA?tA.textContent:\"\":\"#href\"===AA?getHref(tA):tA.getAttribute(AA)}apply(tA){super.apply(tA,(()=>{let tA=!1;if(Object.entries(this.newValues).forEach((([eA,AA])=>{AA?\"#text\"===eA?this.elem.textContent=AA:\"#href\"===eA?setHref(this.elem,AA):this.elem.setAttribute(eA,AA):\"#text\"===eA?this.elem.textContent=\"\":(this.elem.setAttribute(eA,\"\"),this.elem.removeAttribute(eA)),\"transform\"===eA&&(tA=!0)})),!tA){const tA=getRotationAngle(this.elem);if(tA){const eA=getBBox(this.elem),AA=[\"rotate(\",tA,\" \",eA.x+eA.width/2,\",\",eA.y+eA.height/2,\")\"].join(\"\");AA!==this.elem.getAttribute(\"transform\")&&this.elem.setAttribute(\"transform\",AA)}}}))}unapply(tA){super.unapply(tA,(()=>{let tA=!1;if(Object.entries(this.oldValues).forEach((([eA,AA])=>{AA?\"#text\"===eA?this.elem.textContent=AA:\"#href\"===eA?setHref(this.elem,AA):this.elem.setAttribute(eA,AA):\"#text\"===eA?this.elem.textContent=\"\":this.elem.removeAttribute(eA),\"transform\"===eA&&(tA=!0)})),!tA){const tA=getRotationAngle(this.elem);if(tA){const eA=getBBox(this.elem),AA=[\"rotate(\",tA,\" \",eA.x+eA.width/2,\",\",eA.y+eA.height/2,\")\"].join(\"\");AA!==this.elem.getAttribute(\"transform\")&&this.elem.setAttribute(\"transform\",AA)}}}))}}class BatchCommand$4 extends Command{constructor(tA){super(),this.text=tA||\"Batch Command\",this.stack=[]}apply(tA){super.apply(tA,(()=>{this.stack.forEach((eA=>{console.assert(eA,\"stack item should not be null\"),eA&&eA.apply(tA)}))}))}unapply(tA){super.unapply(tA,(()=>{this.stack.reverse().forEach((eA=>{console.assert(eA,\"stack item should not be null\"),eA&&eA.unapply(tA)}))}))}elements(){const tA=[];let eA=this.stack.length;for(;eA--;){if(!this.stack[eA])continue;const AA=this.stack[eA].elements();let rA=AA.length;for(;rA--;)tA.includes(AA[rA])||tA.push(AA[rA])}return tA}addSubCommand(tA){console.assert(null!==tA,\"cmd should not be null\"),this.stack.push(tA)}isEmpty(){return!this.stack.length}}var dA=Object.freeze({__proto__:null,HistoryEventTypes:hA,Command:Command,MoveElementCommand:MoveElementCommand$1,InsertElementCommand:InsertElementCommand$4,RemoveElementCommand:RemoveElementCommand$2,ChangeElementCommand:ChangeElementCommand$2,BatchCommand:BatchCommand$4,UndoManager:class UndoManager$1{constructor(tA){this.handler_=tA||null,this.undoStackPointer=0,this.undoStack=[],this.undoChangeStackPointer=-1,this.undoableChangeStack=[]}resetUndoStack(){this.undoStack=[],this.undoStackPointer=0}getUndoStackSize(){return this.undoStackPointer}getRedoStackSize(){return this.undoStack.length-this.undoStackPointer}getNextUndoCommandText(){return this.undoStackPointer>0?this.undoStack[this.undoStackPointer-1].getText():\"\"}getNextRedoCommandText(){return this.undoStackPointer<this.undoStack.length?this.undoStack[this.undoStackPointer].getText():\"\"}undo(){if(this.undoStackPointer>0){this.undoStack[--this.undoStackPointer].unapply(this.handler_)}}redo(){if(this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0){this.undoStack[this.undoStackPointer++].apply(this.handler_)}}addCommandToHistory(tA){this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0&&(this.undoStack=this.undoStack.splice(0,this.undoStackPointer)),this.undoStack.push(tA),this.undoStackPointer=this.undoStack.length}beginUndoableChange(tA,eA){const AA=++this.undoChangeStackPointer;let rA=eA.length;const nA=new Array(rA),iA=new Array(rA);for(;rA--;){const AA=eA[rA];AA&&(iA[rA]=AA,nA[rA]=AA.getAttribute(tA))}this.undoableChangeStack[AA]={attrName:tA,oldValues:nA,elements:iA}}finishUndoableChange(){const tA=this.undoChangeStackPointer--,eA=this.undoableChangeStack[tA],{attrName:AA}=eA,rA=new BatchCommand$4(\"Change \"+AA);let nA=eA.elements.length;for(;nA--;){const tA=eA.elements[nA];if(!tA)continue;const iA={};iA[AA]=eA.oldValues[nA],iA[AA]!==tA.getAttribute(AA)&&rA.addSubCommand(new ChangeElementCommand$2(tA,iA,AA))}return this.undoableChangeStack[tA]=null,rA}}});\n/**\n * Path functionality.\n * @module path\n * @license MIT\n *\n * @copyright 2011 Alexis Deveria, 2011 Jeff Schiller\n */let fA=null;const ptObjToArrMethod=function(tA,eA){return fA.getSegData()[tA].map((tA=>eA[tA]))},getGripPtMethod=function(tA,eA){const{path:AA}=tA;let rA={x:eA?eA.x:tA.item.x,y:eA?eA.y:tA.item.y};if(AA.matrix){rA=transformPoint(rA.x,rA.y,AA.matrix)}const nA=fA.getZoom();return rA.x*=nA,rA.y*=nA,rA},getPointFromGripMethod=function(tA,eA){const AA={x:tA.x,y:tA.y};eA.matrix&&(tA=transformPoint(AA.x,AA.y,eA.imatrix),AA.x=tA.x,AA.y=tA.y);const rA=fA.getZoom();return AA.x/=rA,AA.y/=rA,AA},getGripContainerMethod=function(){let tA=getElement(\"pathpointgrip_container\");if(!tA){const eA=getElement(\"selectorParentGroup\");tA=document.createElementNS(sA.SVG,\"g\"),eA.append(tA),tA.id=\"pathpointgrip_container\"}return tA},addPointGripMethod=function(tA,eA,AA){const rA=getGripContainerMethod();let nA=getElement(\"pathpointgrip_\"+tA);if(!nA){nA=document.createElementNS(sA.SVG,\"circle\");const eA={id:\"pathpointgrip_\"+tA,display:\"none\",r:4,fill:\"#0FF\",stroke:\"#00F\",\"stroke-width\":2,cursor:\"move\",style:\"pointer-events:all\"},AA=fA.getUIStrings();\"pathNodeTooltip\"in AA&&(eA[\"xlink:title\"]=AA.pathNodeTooltip),assignAttributes(nA,eA),rA.append(nA);document.getElementById(\"pathpointgrip_\"+tA)?.addEventListener(\"dblclick\",(()=>{const tA=fA.getPathObj();tA&&tA.setSegType()}))}return eA&&AA&&assignAttributes(nA,{cx:eA,cy:AA,display:\"inline\"}),nA},addCtrlGripMethod=function(tA){let eA=getElement(\"ctrlpointgrip_\"+tA);if(eA)return eA;eA=document.createElementNS(sA.SVG,\"circle\");const AA={id:\"ctrlpointgrip_\"+tA,display:\"none\",r:4,fill:\"#0FF\",stroke:\"#55F\",\"stroke-width\":1,cursor:\"move\",style:\"pointer-events:all\"},rA=fA.getUIStrings();return\"pathCtrlPtTooltip\"in rA&&(AA[\"xlink:title\"]=rA.pathCtrlPtTooltip),assignAttributes(eA,AA),getGripContainerMethod().append(eA),eA},getCtrlLineMethod=function(tA){let eA=getElement(\"ctrlLine_\"+tA);return eA||(eA=document.createElementNS(sA.SVG,\"line\"),assignAttributes(eA,{id:\"ctrlLine_\"+tA,stroke:\"#555\",\"stroke-width\":1,style:\"pointer-events:none\"}),getGripContainerMethod().append(eA),eA)},getPointGripMethod=function(tA,eA){const{index:AA}=tA,rA=addPointGripMethod(AA);if(eA){const eA=getGripPtMethod(tA);assignAttributes(rA,{cx:eA.x,cy:eA.y,display:\"inline\"})}return rA},getControlPointsMethod=function(tA){const{item:eA,index:AA}=tA;if(!(\"x1\"in eA)||!(\"x2\"in eA))return null;const rA={};getGripContainerMethod();const nA=[fA.getPathObj().segs[AA-1].item,eA];for(let iA=1;iA<3;iA++){const sA=AA+\"c\"+iA,oA=rA[\"c\"+iA+\"_line\"]=getCtrlLineMethod(sA),aA=getGripPtMethod(tA,{x:eA[\"x\"+iA],y:eA[\"y\"+iA]}),lA=getGripPtMethod(tA,{x:nA[iA-1].x,y:nA[iA-1].y});assignAttributes(oA,{x1:aA.x,y1:aA.y,x2:lA.x,y2:lA.y,display:\"inline\"}),rA[\"c\"+iA+\"_line\"]=oA;const cA=rA[\"c\"+iA]=addCtrlGripMethod(sA);assignAttributes(cA,{cx:aA.x,cy:aA.y,display:\"inline\"}),rA[\"c\"+iA]=cA}return rA},replacePathSegMethod=function(tA,eA,AA,rA){const nA=fA.getPathObj(),iA=rA||nA.elem,sA=iA[\"createSVGPathSeg\"+fA.getPathFuncs()[tA]](...AA);iA.pathSegList.replaceItem(sA,eA)},getSegSelectorMethod=function(tA,eA){const{index:AA}=tA;let rA=getElement(\"segline_\"+AA);if(!rA){const tA=getGripContainerMethod();rA=document.createElementNS(sA.SVG,\"path\"),assignAttributes(rA,{id:\"segline_\"+AA,display:\"none\",fill:\"none\",stroke:\"#0FF\",\"stroke-width\":2,style:\"pointer-events:none\",d:\"M0,0 0,0\"}),tA.append(rA)}if(eA){const{prev:eA}=tA;if(!eA)return rA.setAttribute(\"display\",\"none\"),rA;const AA=getGripPtMethod(eA);replacePathSegMethod(2,0,[AA.x,AA.y],rA);const nA=ptObjToArrMethod(tA.type,tA.item);for(let eA=0;eA<nA.length;eA+=2){const AA=getGripPtMethod(tA,{x:nA[eA],y:nA[eA+1]});nA[eA]=AA.x,nA[eA+1]=AA.y}replacePathSegMethod(tA.type,1,nA,rA)}return rA};class Segment{constructor(tA,eA){this.selected=!1,this.index=tA,this.item=eA,this.type=eA.pathSegType,this.ctrlpts=[],this.ptgrip=null,this.segsel=null}showCtrlPts(tA){for(const eA in this.ctrlpts)({}).hasOwnProperty.call(this.ctrlpts,eA)&&this.ctrlpts[eA].setAttribute(\"display\",tA?\"inline\":\"none\")}selectCtrls(tA){document.getElementById(\"ctrlpointgrip_\"+this.index+\"c1\").setAttribute(\"fill\",tA?\"#0FF\":\"#EEE\"),document.getElementById(\"ctrlpointgrip_\"+this.index+\"c2\").setAttribute(\"fill\",tA?\"#0FF\":\"#EEE\")}show(tA){this.ptgrip&&(this.ptgrip.setAttribute(\"display\",tA?\"inline\":\"none\"),this.segsel.setAttribute(\"display\",tA?\"inline\":\"none\"),this.showCtrlPts(tA))}select(tA){this.ptgrip&&(this.ptgrip.setAttribute(\"stroke\",tA?\"#0FF\":\"#00F\"),this.segsel.setAttribute(\"display\",tA?\"inline\":\"none\"),this.ctrlpts&&this.selectCtrls(tA),this.selected=tA)}addGrip(){this.ptgrip=getPointGripMethod(this,!0),this.ctrlpts=getControlPointsMethod(this),this.segsel=getSegSelectorMethod(this,!0)}update(tA){if(this.ptgrip){const eA=getGripPtMethod(this);if(assignAttributes(this.ptgrip,{cx:eA.x,cy:eA.y}),getSegSelectorMethod(this,!0),this.ctrlpts){if(tA){const tA=fA.getPathObj();this.item=tA.elem.pathSegList.getItem(this.index),this.type=this.item.pathSegType}getControlPointsMethod(this)}}}move(tA,eA){const{item:AA}=this,rA=this.ctrlpts?[AA.x+=tA,AA.y+=eA,AA.x1,AA.y1,AA.x2+=tA,AA.y2+=eA]:[AA.x+=tA,AA.y+=eA];if(replacePathSegMethod(this.type,this.index,10===this.type?ptObjToArrMethod(this.type,AA):rA),this.next?.ctrlpts){const AA=this.next.item,rA=[AA.x,AA.y,AA.x1+=tA,AA.y1+=eA,AA.x2,AA.y2];replacePathSegMethod(this.next.type,this.next.index,rA)}if(this.mate){const{item:AA}=this.mate,rA=[AA.x+=tA,AA.y+=eA];replacePathSegMethod(this.mate.type,this.mate.index,rA)}this.update(!0),this.next&&this.next.update(!0)}setLinked(tA){let eA,AA,rA;if(2===tA){if(AA=1,eA=this.next,!eA)return;rA=this.item}else{if(AA=2,eA=this.prev,!eA)return;rA=eA.item}const{item:nA}=eA;nA[\"x\"+AA]=rA.x+(rA.x-this.item[\"x\"+tA]),nA[\"y\"+AA]=rA.y+(rA.y-this.item[\"y\"+tA]);const iA=[nA.x,nA.y,nA.x1,nA.y1,nA.x2,nA.y2];replacePathSegMethod(eA.type,eA.index,iA),eA.update(!0)}moveCtrl(tA,eA,AA){const{item:rA}=this;rA[\"x\"+tA]+=eA,rA[\"y\"+tA]+=AA;const nA=[rA.x,rA.y,rA.x1,rA.y1,rA.x2,rA.y2];replacePathSegMethod(this.type,this.index,nA),this.update(!0)}setType(tA,eA){replacePathSegMethod(tA,this.index,eA),this.type=tA;const AA=fA.getPathObj();this.item=AA.elem.pathSegList.getItem(this.index),this.showCtrlPts(6===tA),this.ctrlpts=getControlPointsMethod(this),this.update(!0)}}class Path$1{constructor(tA){if(!tA||\"path\"!==tA.tagName)throw new Error(\"svgedit.path.Path constructed without a <path> element\");this.elem=tA,this.segs=[],this.selected_pts=[],fA.setPathObj(this),this.init()}setPathContext(){fA.setPathObj(this)}init(){const tA=getGripContainerMethod().querySelectorAll(\"*\");Array.prototype.forEach.call(tA,(function(tA){tA.setAttribute(\"display\",\"none\")}));const eA=this.elem.pathSegList,AA=eA.numberOfItems;this.segs=[],this.selected_pts=[],this.first_seg=null;for(let tA=0;tA<AA;tA++){const AA=eA.getItem(tA),rA=new Segment(tA,AA);rA.path=this,this.segs.push(rA)}const{segs:rA}=this;let nA=null;for(let tA=0;tA<AA;tA++){const eA=rA[tA],iA=tA+1>=AA?null:rA[tA+1],sA=tA-1<0?null:rA[tA-1];if(2===eA.type){if(sA&&1!==sA.type){const tA=rA[nA];tA.next=rA[nA+1],tA.next.prev=tA,tA.addGrip()}nA=tA}else if(1===iA?.type)eA.next=rA[nA+1],eA.next.prev=eA,eA.mate=rA[nA],eA.addGrip(),this.first_seg||(this.first_seg=eA);else if(iA)1!==eA.type&&(eA.addGrip(),iA&&2!==iA.type&&(eA.next=iA,eA.next.prev=eA));else if(1!==eA.type){const tA=rA[nA];tA.next=rA[nA+1],tA.next.prev=tA,tA.addGrip(),eA.addGrip(),this.first_seg||(this.first_seg=rA[nA])}}return this}eachSeg(tA){const eA=this.segs.length;for(let AA=0;AA<eA;AA++){if(!1===tA.call(this.segs[AA],AA))break}}addSeg(tA){const eA=this.segs[tA];if(!eA.prev)return;const{prev:AA}=eA;let rA,nA,iA;switch(eA.item.pathSegType){case 4:nA=(eA.item.x+AA.item.x)/2,iA=(eA.item.y+AA.item.y)/2,rA=this.elem.createSVGPathSegLinetoAbs(nA,iA);break;case 6:{const sA=(AA.item.x+eA.item.x1)/2,oA=(eA.item.x1+eA.item.x2)/2,aA=(eA.item.x2+eA.item.x)/2,lA=(sA+oA)/2,cA=(oA+aA)/2;nA=(lA+cA)/2;const uA=(AA.item.y+eA.item.y1)/2,hA=(eA.item.y1+eA.item.y2)/2,dA=(eA.item.y2+eA.item.y)/2,fA=(uA+hA)/2,gA=(hA+dA)/2;iA=(fA+gA)/2,rA=this.elem.createSVGPathSegCurvetoCubicAbs(nA,iA,sA,uA,lA,fA);const pA=[eA.item.x,eA.item.y,cA,gA,aA,dA];replacePathSegMethod(eA.type,tA,pA);break}}this.elem.pathSegList.insertItemBefore(rA,tA)}deleteSeg(tA){const eA=this.segs[tA],AA=this.elem.pathSegList;eA.show(!1);const{next:rA}=eA;if(eA.mate){const tA=[rA.item.x,rA.item.y];replacePathSegMethod(2,rA.index,tA),replacePathSegMethod(4,eA.index,tA),AA.removeItem(eA.mate.index)}else if(eA.prev)AA.removeItem(tA);else{const nA=[rA.item.x,rA.item.y];replacePathSegMethod(2,eA.next.index,nA),AA.removeItem(tA)}}removePtFromSelection(tA){const eA=this.selected_pts.indexOf(tA);-1!==eA&&(this.segs[tA].select(!1),this.selected_pts.splice(eA,1))}clearSelection(){this.eachSeg((function(){this.select(!1)})),this.selected_pts=[]}storeD(){this.last_d=this.elem.getAttribute(\"d\")}show(tA){return this.eachSeg((function(){this.show(tA)})),tA&&this.selectPt(this.first_seg.index),this}movePts(tA,eA){let AA=this.selected_pts.length;for(;AA--;){this.segs[this.selected_pts[AA]].move(tA,eA)}}moveCtrl(tA,eA){const AA=this.segs[this.selected_pts[0]];AA.moveCtrl(this.dragctrl,tA,eA),fA.getLinkControlPts()&&AA.setLinked(this.dragctrl)}setSegType(tA){this.storeD();let eA,AA=this.selected_pts.length;for(;AA--;){const rA=this.selected_pts[AA],nA=this.segs[rA],{prev:iA}=nA;if(!iA)continue;if(!tA){eA=\"Toggle Path Segment Type\";tA=6===nA.type?4:6}tA=Number(tA);const sA=nA.item.x,oA=nA.item.y,aA=iA.item.x,lA=iA.item.y;let cA;switch(tA){case 6:if(nA.olditem){const tA=nA.olditem;cA=[sA,oA,tA.x1,tA.y1,tA.x2,tA.y2]}else{const tA=sA-aA,eA=oA-lA;cA=[sA,oA,aA+tA/3,lA+eA/3,sA-tA/3,oA-eA/3]}break;case 4:cA=[sA,oA],nA.olditem=nA.item}nA.setType(tA,cA)}fA.getPathObj().endChanges(eA)}selectPt(tA,eA){this.clearSelection(),tA||this.eachSeg((function(eA){this.prev&&(tA=eA)})),this.addPtsToSelection(tA),eA&&(this.dragctrl=eA,fA.getLinkControlPts()&&this.segs[tA].setLinked(eA))}update(){const{elem:tA}=this;return getRotationAngle(tA)?(this.matrix=getMatrix(tA),this.imatrix=this.matrix.inverse()):(this.matrix=null,this.imatrix=null),this.eachSeg((function(eA){this.item=tA.pathSegList.getItem(eA),this.update()})),this}endChanges(tA){const eA=new ChangeElementCommand$2(this.elem,{d:this.last_d},tA);fA.endChanges({cmd:eA,elem:this.elem})}addPtsToSelection(tA){Array.isArray(tA)||(tA=[tA]),tA.forEach((tA=>{this.segs[tA].ptgrip&&!this.selected_pts.includes(tA)&&tA>=0&&this.selected_pts.push(tA)})),this.selected_pts.sort();let eA=this.selected_pts.length;const AA=[];for(AA.length=eA;eA--;){const tA=this.selected_pts[eA],rA=this.segs[tA];rA.select(!0),AA[eA]=rA.ptgrip}const rA=Path$1.subpathIsClosed(this.selected_pts[0]);fA.addPtsToSelection({grips:AA,closedSubpath:rA})}static subpathIsClosed(tA){let eA=!1;return fA.getPathObj().eachSeg((function(AA){return AA<=tA||2!==this.type&&(1!==this.type||(eA=!0,!1))})),eA}}\n/**\n * Path functionality.\n * @module path\n * @license MIT\n *\n * @copyright 2011 Alexis Deveria, 2011 Jeff Schiller\n */let gA=null,pA=null;const convertPath$1=function(tA,eA){const{pathSegList:AA}=tA,rA=AA.numberOfItems;let nA=0,iA=0,sA=\"\",oA=null;for(let tA=0;tA<rA;++tA){const rA=AA.getItem(tA);let aA=rA.x||0,lA=rA.y||0,cA=rA.x1||0,uA=rA.y1||0,hA=rA.x2||0,dA=rA.y2||0,fA=rA.pathSegTypeAsLetter;switch(fA){case\"z\":case\"Z\":sA+=\"z\",oA&&!eA&&(nA=oA[0],iA=oA[1]);break;case\"H\":aA-=nA;case\"h\":eA?(lA=0,nA+=aA,fA=\"l\"):(lA=iA,aA+=nA,nA=aA,fA=\"L\"),sA+=pathDSegment$1(fA,[[aA,lA]]);break;case\"V\":lA-=iA;case\"v\":eA?(aA=0,iA+=lA,fA=\"l\"):(aA=nA,lA+=iA,iA=lA,fA=\"L\"),sA+=pathDSegment$1(fA,[[aA,lA]]);break;case\"M\":case\"L\":case\"T\":aA-=nA,lA-=iA;case\"l\":case\"m\":case\"t\":eA?(nA+=aA,iA+=lA,fA=fA.toLowerCase()):(aA+=nA,lA+=iA,nA=aA,iA=lA,fA=fA.toUpperCase()),\"m\"!==fA&&\"M\"!==fA||(oA=[nA,iA]),sA+=pathDSegment$1(fA,[[aA,lA]]);break;case\"C\":aA-=nA,cA-=nA,hA-=nA,lA-=iA,uA-=iA,dA-=iA;case\"c\":eA?(nA+=aA,iA+=lA,fA=\"c\"):(aA+=nA,cA+=nA,hA+=nA,lA+=iA,uA+=iA,dA+=iA,nA=aA,iA=lA,fA=\"C\"),sA+=pathDSegment$1(fA,[[cA,uA],[hA,dA],[aA,lA]]);break;case\"Q\":aA-=nA,cA-=nA,lA-=iA,uA-=iA;case\"q\":eA?(nA+=aA,iA+=lA,fA=\"q\"):(aA+=nA,cA+=nA,lA+=iA,uA+=iA,nA=aA,iA=lA,fA=\"Q\"),sA+=pathDSegment$1(fA,[[cA,uA],[aA,lA]]);break;case\"A\":aA-=nA,lA-=iA;case\"a\":eA?(nA+=aA,iA+=lA,fA=\"a\"):(aA+=nA,lA+=iA,nA=aA,iA=lA,fA=\"A\"),sA+=pathDSegment$1(fA,[[rA.r1,rA.r2]],[rA.angle,rA.largeArcFlag?1:0,rA.sweepFlag?1:0],[aA,lA]);break;case\"S\":aA-=nA,hA-=nA,lA-=iA,dA-=iA;case\"s\":eA?(nA+=aA,iA+=lA,fA=\"s\"):(aA+=nA,hA+=nA,lA+=iA,dA+=iA,nA=aA,iA=lA,fA=\"S\"),sA+=pathDSegment$1(fA,[[hA,dA],[aA,lA]])}}return sA};function pathDSegment$1(tA,eA,AA,rA){eA.forEach((function(tA,AA){eA[AA]=shortFloat(tA)}));let nA=tA+eA.join(\" \");return AA&&(nA+=\" \"+AA.join(\" \")),rA&&(nA+=\" \"+shortFloat(rA)),nA}const mA=function(){let tA,eA,AA=!1,rA=null,nA=!1;return{mouseDown(eA,rA,nA,iA){let oA,aA;if(\"path\"!==gA.getCurrentMode()){if(pA){if(pA.storeD(),({id:oA}=eA.target),\"pathpointgrip_\"===oA.substr(0,14)){aA=pA.cur_pt=Number.parseInt(oA.substr(14)),pA.dragging=[nA,iA];const tA=pA.segs[aA];eA.shiftKey?tA.selected?pA.removePtFromSelection(aA):pA.addPtsToSelection(aA):((pA.selected_pts.length<=1||!tA.selected)&&pA.clearSelection(),pA.addPtsToSelection(aA))}else if(oA.startsWith(\"ctrlpointgrip_\")){pA.dragging=[nA,iA];const tA=oA.split(\"_\")[1].split(\"c\");aA=Number(tA[0]);const eA=Number(tA[1]);pA.selectPt(aA,eA)}if(!pA.dragging){let tA=gA.getRubberBox();tA||(tA=gA.setRubberBox(gA.selectorManager.getRubberBandBox()));const eA=gA.getZoom();assignAttributes(tA,{x:nA*eA,y:iA*eA,width:0,height:0,display:\"inline\"})}}}else{let rA=nA,aA=iA;const lA=gA.getZoom();let cA=rA/lA,uA=aA/lA,hA=getElement(\"path_stretch_line\");tA=[cA,uA],gA.getGridSnapping()&&(cA=snapToGrid(cA),uA=snapToGrid(uA),rA=snapToGrid(rA),aA=snapToGrid(aA)),hA||(hA=document.createElementNS(sA.SVG,\"path\"),assignAttributes(hA,{id:\"path_stretch_line\",stroke:\"#22C\",\"stroke-width\":\"0.5\",fill:\"none\"}),getElement(\"selectorParentGroup\").append(hA)),hA.setAttribute(\"display\",\"inline\");let dA,fA=null;const wA=gA.getDrawnPath();if(wA){const tA=wA.pathSegList;let rA=tA.numberOfItems;const nA=6/lA;let iA=!1;for(;rA;){rA--;const eA=tA.getItem(rA),AA=eA.x,sA=eA.y;if(cA>=AA-nA&&cA<=AA+nA&&uA>=sA-nA&&uA<=sA+nA){iA=!0;break}}oA=gA.getId(),gA.removePath_(oA);const sA=getElement(oA);let aA,yA;const BA=tA.numberOfItems;if(iA){if(rA<=1&&BA>=2){const eA=tA.getItem(0).x,AA=tA.getItem(0).y;yA=hA.pathSegList.getItem(1),aA=4===yA.pathSegType?wA.createSVGPathSegLinetoAbs(eA,AA):wA.createSVGPathSegCurvetoCubicAbs(eA,AA,yA.x1/lA,yA.y1/lA,eA,AA);const rA=wA.createSVGPathSegClosePath();tA.appendItem(aA),tA.appendItem(rA)}else if(BA<3)return fA=!1,fA;if(hA.remove(),gA.setDrawnPath(null),gA.setStarted(!1),AA){pA.matrix&&gA.remapElement(sA,{},pA.matrix.inverse());const tA=sA.getAttribute(\"d\"),eA=pA.elem.getAttribute(\"d\");return pA.elem.setAttribute(\"d\",eA+tA),sA.parentNode.removeChild(sA),pA.matrix&&gA.recalcRotatedPath(),mA.toEditMode(pA.elem),pA.selectPt(),!1}}else{if(gA.getContainer()===gA.getMouseTarget(eA)||!gA.getContainer().contains(gA.getMouseTarget(eA)))return!1;const tA=wA.pathSegList.numberOfItems,rA=wA.pathSegList.getItem(tA-1),nA=rA.x,iA=rA.y;if(eA.shiftKey){const tA=snapToAngle(nA,iA,cA,uA);({x:cA,y:uA}=tA)}yA=hA.pathSegList.getItem(1),aA=4===yA.pathSegType?wA.createSVGPathSegLinetoAbs(gA.round(cA),gA.round(uA)):wA.createSVGPathSegCurvetoCubicAbs(gA.round(cA),gA.round(uA),yA.x1/lA,yA.y1/lA,yA.x2/lA,yA.y2/lA),wA.pathSegList.appendItem(aA),cA*=lA,uA*=lA,hA.setAttribute(\"d\",[\"M\",cA,uA,cA,uA].join(\" \")),dA=tA,AA&&(dA+=pA.segs.length),gA.addPointGrip(dA,cA,uA)}}else{const tA=\"M\"+cA+\",\"+uA+\" \";gA.setDrawnPath(gA.addSVGElementsFromJson({element:\"path\",curStyles:!0,attr:{d:tA,id:gA.getNextId(),opacity:gA.getOpacity()/2}})),hA.setAttribute(\"d\",[\"M\",rA,aA,rA,aA].join(\" \")),dA=AA?pA.segs.length:0,gA.addPointGrip(dA,rA,aA)}}},mouseMove(AA,rA){const iA=gA.getZoom();nA=!0;const sA=gA.getDrawnPath();if(\"path\"!==gA.getCurrentMode())if(pA.dragging){const tA=gA.getPointFromGrip({x:pA.dragging[0],y:pA.dragging[1]},pA),eA=gA.getPointFromGrip({x:AA,y:rA},pA),nA=eA.x-tA.x,iA=eA.y-tA.y;pA.dragging=[AA,rA],pA.dragctrl?pA.moveCtrl(nA,iA):pA.movePts(nA,iA)}else pA.selected_pts=[],pA.eachSeg((function(tA){const eA=this;if(!eA.next&&!eA.prev)return;const AA=gA.getRubberBox(),rA=getBBox(AA),nA=gA.getGripPt(eA),iA={x:nA.x,y:nA.y,width:0,height:0},sA=rectsIntersect(rA,iA);this.select(sA),sA&&pA.selected_pts.push(eA.index)}));else{if(!sA)return;const nA=sA.pathSegList,oA=nA.numberOfItems-1;if(tA){const aA=gA.addCtrlGrip(\"1c1\"),lA=gA.addCtrlGrip(\"0c2\");aA.setAttribute(\"cx\",AA),aA.setAttribute(\"cy\",rA),aA.setAttribute(\"display\",\"inline\");const cA=tA[0],uA=tA[1],hA=cA+(cA-AA/iA),dA=uA+(uA-rA/iA);lA.setAttribute(\"cx\",hA*iA),lA.setAttribute(\"cy\",dA*iA),lA.setAttribute(\"display\",\"inline\");const fA=gA.getCtrlLine(1);if(assignAttributes(fA,{x1:AA,y1:rA,x2:hA*iA,y2:dA*iA,display:\"inline\"}),0===oA)eA=[AA,rA];else{const tA=nA.getItem(oA-1);let AA=tA.x,rA=tA.y;6===tA.pathSegType?(AA+=AA-tA.x2,rA+=rA-tA.y2):eA&&(AA=eA[0]/iA,rA=eA[1]/iA),gA.replacePathSeg(6,oA,[cA,uA,AA,rA,hA,dA],sA)}}else{const tA=getElement(\"path_stretch_line\");if(tA){const sA=nA.getItem(oA);if(6===sA.pathSegType){const eA=sA.x+(sA.x-sA.x2),nA=sA.y+(sA.y-sA.y2);gA.replacePathSeg(6,1,[AA,rA,eA*iA,nA*iA,AA,rA],tA)}else eA?gA.replacePathSeg(6,1,[AA,rA,eA[0],eA[1],AA,rA],tA):gA.replacePathSeg(4,1,[AA,rA],tA)}}}},mouseUp(AA,rA,iA,sA){const oA=gA.getDrawnPath();if(\"path\"===gA.getCurrentMode())return tA=null,oA||(rA=getElement(gA.getId()),gA.setStarted(!1),eA=null),{keep:!0,element:rA};const aA=gA.getRubberBox();if(pA.dragging){const tA=pA.cur_pt;pA.dragging=!1,pA.dragctrl=!1,pA.update(),nA&&pA.endChanges(\"Move path point(s)\"),AA.shiftKey||nA||pA.selectPt(tA)}else\"none\"!==aA?.getAttribute(\"display\")?(aA.setAttribute(\"display\",\"none\"),aA.getAttribute(\"width\")<=2&&aA.getAttribute(\"height\")<=2&&mA.toSelectMode(AA.target)):mA.toSelectMode(AA.target);nA=!1},toEditMode(tA){pA=gA.getPath_(tA),gA.setCurrentMode(\"pathedit\"),gA.clearSelection(),pA.setPathContext(),pA.show(!0).update(),pA.oldbbox=getBBox(pA.elem),AA=!1},toSelectMode(tA){const eA=tA===pA.elem;gA.setCurrentMode(\"select\"),pA.setPathContext(),pA.show(!1),rA=!1,gA.clearSelection(),pA.matrix&&gA.recalcRotatedPath(),eA&&(gA.call(\"selected\",[tA]),gA.addToSelection([tA],!0))},addSubPath(tA){tA?(gA.setCurrentMode(\"path\"),AA=!0):(mA.clear(!0),mA.toEditMode(pA.elem))},select(tA){rA===tA?(mA.toEditMode(tA),gA.setCurrentMode(\"pathedit\")):rA=tA},reorient(){const tA=gA.getSelectedElements()[0];if(!tA)return;if(0===getRotationAngle(tA))return;const eA=new BatchCommand$4(\"Reorient path\"),AA={d:tA.getAttribute(\"d\"),transform:tA.getAttribute(\"transform\")};eA.addSubCommand(new ChangeElementCommand$2(tA,AA)),gA.clearSelection(),this.resetOrientation(tA),gA.addCommandToHistory(eA),gA.getPath_(tA).show(!1).matrix=null,this.clear(),gA.addToSelection([tA],!0),gA.call(\"changed\",gA.getSelectedElements())},clear(){const tA=gA.getDrawnPath();if(rA=null,tA){const tA=getElement(gA.getId()),AA=getElement(\"path_stretch_line\");AA.parentNode.removeChild(AA),tA.parentNode.removeChild(tA);const rA=getElement(\"pathpointgrip_container\").querySelectorAll(\"*\");Array.prototype.forEach.call(rA,(function(tA){tA.setAttribute(\"display\",\"none\")})),eA=null,gA.setDrawnPath(null),gA.setStarted(!1)}else\"pathedit\"===gA.getCurrentMode()&&this.toSelectMode();pA&&pA.init().show(!1)},resetOrientation(tA){if(\"path\"!==tA?.nodeName)return!1;const eA=tA.transform.baseVal,AA=transformListToTransform(eA).matrix;eA.clear(),tA.removeAttribute(\"transform\");const rA=tA.pathSegList,nA=rA.numberOfItems;for(let eA=0;eA<nA;++eA){const nA=rA.getItem(eA),iA=nA.pathSegType;if(1===iA)continue;const sA=[];[\"\",1,2].forEach((function(tA){const eA=nA[\"x\"+tA],rA=nA[\"y\"+tA];if(void 0!==eA&&void 0!==rA){const tA=transformPoint(eA,rA,AA);sA.splice(sA.length,0,tA.x,tA.y)}})),gA.replacePathSeg(iA,eA,sA,tA)}gA.reorientGrads(tA,AA)},zoomChange(){\"pathedit\"===gA.getCurrentMode()&&pA.update()},getNodePoint(){const tA=pA.selected_pts.length?pA.selected_pts[0]:1,eA=pA.segs[tA];return{x:eA.item.x,y:eA.item.y,type:eA.type}},linkControlPoints(tA){gA.setLinkControlPoints(tA)},clonePathNode(){pA.storeD();const tA=pA.selected_pts;let eA=tA.length;const AA=[];for(;eA--;){const rA=tA[eA];pA.addSeg(rA),AA.push(rA+eA),AA.push(rA+eA+1)}pA.init().addPtsToSelection(AA),pA.endChanges(\"Clone path node(s)\")},opencloseSubPath(){const tA=pA.selected_pts;if(1!==tA.length)return;const{elem:eA}=pA,AA=eA.pathSegList,rA=tA[0];let nA=null,iA=null;if(pA.eachSeg((function(tA){return 2===this.type&&tA<=rA&&(iA=this.item),tA<=rA||(2===this.type?(nA=tA,!1):1!==this.type||(nA=!1,!1))})),nA||(nA=pA.segs.length-1),!1!==nA){const tA=eA.createSVGPathSegLinetoAbs(iA.x,iA.y),rA=eA.createSVGPathSegClosePath();return nA===pA.segs.length-1?(AA.appendItem(tA),AA.appendItem(rA)):(AA.insertItemBefore(rA,nA),AA.insertItemBefore(tA,nA)),void pA.init().selectPt(nA+1)}if(pA.segs[rA].mate)return AA.removeItem(rA),AA.removeItem(rA),void pA.init().selectPt(rA-1);let sA,oA;for(let tA=0;tA<AA.numberOfItems;tA++){const eA=AA.getItem(tA);if(2===eA.pathSegType)sA=tA;else if(tA===rA)AA.removeItem(sA);else if(1===eA.pathSegType&&rA<tA){oA=tA-1,AA.removeItem(tA);break}}let aA=rA-sA-1;for(;aA--;)AA.insertItemBefore(AA.getItem(sA),oA);const lA=AA.getItem(sA);gA.replacePathSeg(2,sA,[lA.x,lA.y]),pA.init().selectPt(0)},deletePathNode(){if(!mA.canDeleteNodes)return;pA.storeD();const tA=pA.selected_pts;let eA=tA.length;for(;eA--;){const AA=tA[eA];pA.deleteSeg(AA)}const cleanup=function(){const tA=pA.elem.pathSegList;let eA=tA.numberOfItems;const remItems=function(eA,AA){for(;AA--;)tA.removeItem(eA)};if(eA<=1)return!0;for(;eA--;){const AA=tA.getItem(eA);if(1===AA.pathSegType){const AA=tA.getItem(eA-1),rA=tA.getItem(eA-2);if(2===AA.pathSegType){remItems(eA-1,2),cleanup();break}if(2===rA.pathSegType){remItems(eA-2,3),cleanup();break}}else if(2===AA.pathSegType&&eA>0){const AA=tA.getItem(eA-1).pathSegType;if(2===AA){remItems(eA-1,1),cleanup();break}if(1===AA&&tA.numberOfItems-1===eA){remItems(eA,1),cleanup();break}}}return!1};if(cleanup(),pA.elem.pathSegList.numberOfItems<=1)return mA.toSelectMode(pA.elem),void gA.canvas.deleteSelectedElements();pA.init(),pA.clearSelection(),window.opera&&pA.elem.setAttribute(\"d\",pA.elem.getAttribute(\"d\")),pA.endChanges(\"Delete path node(s)\")},smoothPolylineIntoPath:function(tA){let eA;const{points:AA}=tA,rA=AA.numberOfItems;if(rA>=4){let nA=AA.getItem(0),iA=null,sA=[];for(sA.push([\"M\",nA.x,\",\",nA.y,\" C\"].join(\"\")),eA=1;eA<=rA-4;eA+=3){let tA=AA.getItem(eA);const rA=AA.getItem(eA+1),oA=AA.getItem(eA+2);if(iA){const eA=gA.smoothControlPoints(iA,tA,nA);if(2===eA?.length){const AA=sA[sA.length-1].split(\",\");AA[2]=eA[0].x,AA[3]=eA[0].y,sA[sA.length-1]=AA.join(\",\"),tA=eA[1]}}sA.push([tA.x,tA.y,rA.x,rA.y,oA.x,oA.y].join(\",\")),nA=oA,iA=rA}for(sA.push(\"L\");eA<rA;){const tA=AA.getItem(eA);sA.push([tA.x,tA.y].join(\",\")),eA++}sA=sA.join(\" \"),tA=gA.addSVGElementsFromJson({element:\"path\",curStyles:!0,attr:{id:gA.getId(),d:sA,fill:\"none\"}})}return tA},setSegType(tA){pA?.setSegType(tA)},moveNode(tA,eA){const AA=pA.selected_pts;if(!AA.length)return;pA.storeD();const rA=pA.segs[AA[0]],nA={x:0,y:0};nA[tA]=eA-rA.item[tA],rA.move(nA.x,nA.y),pA.endChanges(\"Move path point\")},fixEnd(tA){const eA=tA.pathSegList,AA=eA.numberOfItems;let rA;for(let nA=0;nA<AA;++nA){const AA=eA.getItem(nA);if(2===AA.pathSegType&&(rA=AA),1===AA.pathSegType){const AA=eA.getItem(nA-1);if(AA.x!==rA.x||AA.y!==rA.y){const AA=tA.createSVGPathSegLinetoAbs(rA.x,rA.y);eA.insertItemBefore(AA,nA),mA.fixEnd(tA);break}}}},convertPath:convertPath$1}}(),wA={2:[\"x\",\"y\"],4:[\"x\",\"y\"],6:[\"x\",\"y\",\"x1\",\"y1\",\"x2\",\"y2\"],8:[\"x\",\"y\",\"x1\",\"y1\"],10:[\"x\",\"y\",\"r1\",\"r2\",\"angle\",\"largeArcFlag\",\"sweepFlag\"],12:[\"x\"],14:[\"y\"],16:[\"x\",\"y\",\"x2\",\"y2\"],18:[\"x\",\"y\"]};\n/**\n * Path functionality.\n * @module path\n * @license MIT\n *\n * @copyright 2011 Alexis Deveria, 2011 Jeff Schiller\n */let yA;const BA={},setUiStrings=tA=>{Object.assign(BA,tA.ui)};let bA=[],vA=!0,CA={};const setLinkControlPoints=tA=>{vA=tA};let SA=null;const init$g=tA=>{yA=tA,yA.replacePathSeg=replacePathSegMethod,yA.addPointGrip=addPointGripMethod,yA.removePath_=removePath_,yA.getPath_=getPath_,yA.addCtrlGrip=addCtrlGripMethod,yA.getCtrlLine=getCtrlLineMethod,yA.getGripPt=FA,yA.getPointFromGrip=getPointFromGripMethod,yA.setLinkControlPoints=setLinkControlPoints,yA.reorientGrads=reorientGrads,yA.getSegData=()=>wA,yA.getUIStrings=()=>BA,yA.getPathObj=()=>SA,yA.setPathObj=tA=>{SA=tA},yA.getPathFuncs=()=>bA,yA.getLinkControlPts=()=>vA,bA=[0,\"ClosePath\"];[\"Moveto\",\"Lineto\",\"CurvetoCubic\",\"CurvetoQuadratic\",\"Arc\",\"LinetoHorizontal\",\"LinetoVertical\",\"CurvetoCubicSmooth\",\"CurvetoQuadraticSmooth\"].forEach((tA=>{bA.push(tA+\"Abs\"),bA.push(tA+\"Rel\")})),(tA=>{gA=tA})(yA),(tA=>{fA=tA})(yA)},xA=ptObjToArrMethod,FA=getGripPtMethod,EA=getPointFromGripMethod,QA=addPointGripMethod,UA=getGripContainerMethod,PA=addCtrlGripMethod,_A=getCtrlLineMethod,LA=getPointGripMethod,IA=getControlPointsMethod,NA=replacePathSegMethod,TA=getSegSelectorMethod,smoothControlPoints=(tA,eA,AA)=>{const rA=tA.x-AA.x,nA=tA.y-AA.y,iA=eA.x-AA.x,sA=eA.y-AA.y;if(!(0===rA&&0===nA||0===iA&&0===sA)){const tA=Math.sqrt(rA*rA+nA*nA),eA=Math.sqrt(iA*iA+sA*sA),oA=yA.getSvgRoot().createSVGPoint(),aA=yA.getSvgRoot().createSVGPoint();let lA=Math.atan2(nA,rA),cA=Math.atan2(sA,iA);lA<0&&(lA+=2*Math.PI),cA<0&&(cA+=2*Math.PI);const uA=Math.abs(lA-cA),hA=Math.abs(Math.PI-uA)/2;let dA,fA;return lA-cA>0?(dA=uA<Math.PI?lA+hA:lA-hA,fA=uA<Math.PI?cA-hA:cA+hA):(dA=uA<Math.PI?lA-hA:lA+hA,fA=uA<Math.PI?cA+hA:cA-hA),oA.x=tA*Math.cos(dA)+AA.x,oA.y=tA*Math.sin(dA)+AA.y,aA.x=eA*Math.cos(fA)+AA.x,aA.y=eA*Math.sin(fA)+AA.y,[oA,aA]}},getPath_=tA=>{let eA=CA[tA.id];return eA||(eA=CA[tA.id]=new Path$1(tA)),eA},removePath_=tA=>{tA in CA&&delete CA[tA]};let kA,MA,OA,HA,DA;const getRotVals=(tA,eA)=>{let AA=tA-OA,rA=eA-HA,nA=Math.sqrt(AA*AA+rA*rA),iA=Math.atan2(rA,AA)+DA;return AA=nA*Math.cos(iA)+OA,rA=nA*Math.sin(iA)+HA,AA-=kA,rA-=MA,nA=Math.sqrt(AA*AA+rA*rA),iA=Math.atan2(rA,AA)-DA,{x:nA*Math.cos(iA)+kA,y:nA*Math.sin(iA)+MA}},clearData=()=>{CA={}},reorientGrads=(tA,eA)=>{const AA=getBBox(tA);for(let rA=0;rA<2;rA++){const nA=0===rA?\"fill\":\"stroke\",iA=tA.getAttribute(nA);if(iA&&iA.startsWith(\"url(\")){const rA=getRefElem(iA);if(\"linearGradient\"===rA.tagName){let iA=rA.getAttribute(\"x1\")||0,sA=rA.getAttribute(\"y1\")||0,oA=rA.getAttribute(\"x2\")||1,aA=rA.getAttribute(\"y2\")||0;iA=AA.width*iA+AA.x,sA=AA.height*sA+AA.y,oA=AA.width*oA+AA.x,aA=AA.height*aA+AA.y;const lA=transformPoint(iA,sA,eA),cA=transformPoint(oA,aA,eA),uA={x1:(lA.x-AA.x)/AA.width,y1:(lA.y-AA.y)/AA.height,x2:(cA.x-AA.x)/AA.width,y2:(cA.y-AA.y)/AA.height},hA=rA.cloneNode(!0);for(const[tA,eA]of Object.entries(uA))hA.setAttribute(tA,eA);hA.id=yA.getNextId(),findDefs().append(hA),tA.setAttribute(nA,\"url(#\"+hA.id+\")\")}}}},RA=[0,\"z\",\"M\",\"m\",\"L\",\"l\",\"C\",\"c\",\"Q\",\"q\",\"A\",\"a\",\"H\",\"h\",\"V\",\"v\",\"S\",\"s\",\"T\",\"t\"],pathDSegment=(tA,eA,AA,rA)=>{eA.forEach(((tA,AA)=>{eA[AA]=shortFloat(tA)}));let nA=tA+eA.join(\" \");return AA&&(nA+=\" \"+AA.join(\" \")),rA&&(nA+=\" \"+shortFloat(rA)),nA},VA=mA;var GA=Object.freeze({__proto__:null,setUiStrings:setUiStrings,setLinkControlPoints:setLinkControlPoints,get path(){return SA},init:init$g,ptObjToArr:xA,getGripPt:FA,getPointFromGrip:EA,addPointGrip:QA,getGripContainer:UA,addCtrlGrip:PA,getCtrlLine:_A,getPointGrip:LA,getControlPoints:IA,replacePathSeg:NA,getSegSelector:TA,smoothControlPoints:smoothControlPoints,getPath_:getPath_,removePath_:removePath_,recalcRotatedPath:()=>{const tA=SA.elem;if(DA=getRotationAngle(tA,!0),!DA)return;const eA=SA.oldbbox;OA=eA.x+eA.width/2,HA=eA.y+eA.height/2;const AA=getBBox(tA);kA=AA.x+AA.width/2,MA=AA.y+AA.height/2;const rA=kA-OA,nA=MA-HA,iA=Math.sqrt(rA*rA+nA*nA),sA=Math.atan2(nA,rA)+DA;kA=iA*Math.cos(sA)+OA,MA=iA*Math.sin(sA)+HA;const oA=tA.pathSegList;let aA=oA.numberOfItems;for(;aA;){aA-=1;const tA=oA.getItem(aA),eA=tA.pathSegType;if(1===eA)continue;const AA=getRotVals(tA.x,tA.y),rA=[AA.x,AA.y];if(tA.x1&&tA.x2){const eA=getRotVals(tA.x1,tA.y1),AA=getRotVals(tA.x2,tA.y2);rA.splice(rA.length,0,eA.x,eA.y,AA.x,AA.y)}NA(eA,aA,rA)}getBBox(tA);const lA=yA.getSvgRoot().createSVGTransform(),cA=tA.transform.baseVal;lA.setRotate(180*DA/Math.PI,kA,MA),cA.replaceItem(lA,0)},clearData:clearData,reorientGrads:reorientGrads,convertPath:(tA,eA)=>{const{pathSegList:AA}=tA,rA=AA.numberOfItems;let nA=0,iA=0,sA=\"\",oA=null;for(let tA=0;tA<rA;++tA){const rA=AA.getItem(tA);let aA=rA.x||0,lA=rA.y||0,cA=rA.x1||0,uA=rA.y1||0,hA=rA.x2||0,dA=rA.y2||0;const fA=rA.pathSegType;let gA=RA[fA][eA?\"toLowerCase\":\"toUpperCase\"]();switch(fA){case 1:sA+=\"z\",oA&&!eA&&(nA=oA[0],iA=oA[1]);break;case 12:aA-=nA;case 13:eA?(lA=0,nA+=aA,gA=\"l\"):(lA=iA,aA+=nA,nA=aA,gA=\"L\"),sA+=pathDSegment(gA,[[aA,lA]]);break;case 14:lA-=iA;case 15:eA?(aA=0,iA+=lA,gA=\"l\"):(aA=nA,lA+=iA,iA=lA,gA=\"L\"),sA+=pathDSegment(gA,[[aA,lA]]);break;case 2:case 4:case 18:case 10:aA-=nA,lA-=iA;case 5:case 3:case 19:eA?(nA+=aA,iA+=lA):(aA+=nA,lA+=iA,nA=aA,iA=lA),2!==fA&&3!==fA||(oA=[nA,iA]),sA+=pathDSegment(gA,[[aA,lA]]);break;case 6:aA-=nA,cA-=nA,hA-=nA,lA-=iA,uA-=iA,dA-=iA;case 7:eA?(nA+=aA,iA+=lA):(aA+=nA,cA+=nA,hA+=nA,lA+=iA,uA+=iA,dA+=iA,nA=aA,iA=lA),sA+=pathDSegment(gA,[[cA,uA],[hA,dA],[aA,lA]]);break;case 8:aA-=nA,cA-=nA,lA-=iA,uA-=iA;case 9:eA?(nA+=aA,iA+=lA):(aA+=nA,cA+=nA,lA+=iA,uA+=iA,nA=aA,iA=lA),sA+=pathDSegment(gA,[[cA,uA],[aA,lA]]);break;case 11:eA?(nA+=aA,iA+=lA):(aA+=nA,lA+=iA,nA=aA,iA=lA),sA+=pathDSegment(gA,[[rA.r1,rA.r2]],[rA.angle,rA.largeArcFlag?1:0,rA.sweepFlag?1:0],[aA,lA]);break;case 16:aA-=nA,hA-=nA,lA-=iA,dA-=iA;case 17:eA?(nA+=aA,iA+=lA):(aA+=nA,hA+=nA,lA+=iA,dA+=iA,nA=aA,iA=lA),sA+=pathDSegment(gA,[[hA,dA],[aA,lA]])}}return sA},pathActions:VA});\n/**\n * Provides tools for the layer concept.\n * @module layer\n * @license MIT\n *\n * @copyright 2011 Jeff Schiller, 2016 Flint O'Brien\n */class Layer{constructor(tA,eA,AA){if(this.name_=tA,this.group_=AA?null:eA,AA){const rA=AA.ownerDocument;this.group_=rA.createElementNS(sA.SVG,\"g\");const nA=rA.createElementNS(sA.SVG,\"title\");nA.textContent=tA,this.group_.append(nA),eA?eA.insertAdjacentElement(\"afterend\",this.group_):AA.append(this.group_)}!function addLayerClass(tA){const eA=tA.getAttribute(\"class\");eA&&eA.length?Layer.CLASS_REGEX.test(eA)||tA.setAttribute(\"class\",eA+\" \"+Layer.CLASS_NAME):tA.setAttribute(\"class\",Layer.CLASS_NAME)}\n/**\n * HistoryRecordingService component of history.\n * @module history\n * @license MIT\n * @copyright 2016 Flint O'Brien\n */(this.group_),walkTree(this.group_,(function(tA){tA.setAttribute(\"style\",\"pointer-events:inherit\")})),this.group_.setAttribute(\"style\",AA?\"pointer-events:all\":\"pointer-events:none\")}getName(){return this.name_}getGroup(){return this.group_}activate(){this.group_.setAttribute(\"style\",\"pointer-events:all\")}deactivate(){this.group_.setAttribute(\"style\",\"pointer-events:none\")}setVisible(tA){const eA=void 0===tA||tA?\"inline\":\"none\";this.group_.getAttribute(\"display\")!==eA&&this.group_.setAttribute(\"display\",eA)}isVisible(){return\"none\"!==this.group_.getAttribute(\"display\")}getOpacity(){const tA=this.group_.getAttribute(\"opacity\");return tA?Number.parseFloat(tA):1}setOpacity(tA){\"number\"==typeof tA&&tA>=0&&tA<=1&&this.group_.setAttribute(\"opacity\",tA)}appendChildren(tA){for(const eA of tA)this.group_.append(eA)}getTitleElement(){const tA=this.group_.childNodes.length;for(let eA=0;eA<tA;++eA){const tA=this.group_.childNodes.item(eA);if(\"title\"===tA?.tagName)return tA}return null}setName(tA,eA){const AA=this.name_;tA=toXml(tA);const rA=this.getTitleElement();if(rA){for(;rA.firstChild;)rA.removeChild(rA.firstChild);return rA.textContent=tA,this.name_=tA,eA&&eA.changeElement(rA,{\"#text\":AA}),this.name_}return null}removeGroup(){const tA=this.group_;return this.group_.remove(),this.group_=void 0,tA}static isLayer(tA){return tA&&\"g\"===tA.tagName&&Layer.CLASS_REGEX.test(tA.getAttribute(\"class\"))}}Layer.CLASS_NAME=\"layer\",Layer.CLASS_REGEX=new RegExp(\"(\\\\s|^)\"+Layer.CLASS_NAME+\"(\\\\s|$)\");class HistoryRecordingService{constructor(tA){this.undoManager_=tA,this.currentBatchCommand_=null,this.batchCommandStack_=[]}startBatchCommand(tA){return this.undoManager_?(this.currentBatchCommand_=new BatchCommand$4(tA),this.batchCommandStack_.push(this.currentBatchCommand_),this):this}endBatchCommand(){if(!this.undoManager_)return this;if(this.currentBatchCommand_){const tA=this.currentBatchCommand_;this.batchCommandStack_.pop();const{length:eA}=this.batchCommandStack_;this.currentBatchCommand_=eA?this.batchCommandStack_[eA-1]:null,this.addCommand_(tA)}return this}moveElement(tA,eA,AA,rA){return this.undoManager_?(this.addCommand_(new MoveElementCommand$1(tA,eA,AA,rA)),this):this}insertElement(tA,eA){return this.undoManager_?(this.addCommand_(new InsertElementCommand$4(tA,eA)),this):this}removeElement(tA,eA,AA,rA){return this.undoManager_?(this.addCommand_(new RemoveElementCommand$2(tA,eA,AA,rA)),this):this}changeElement(tA,eA,AA){return this.undoManager_?(this.addCommand_(new ChangeElementCommand$2(tA,eA,AA)),this):this}addCommand_(tA){if(!this.undoManager_)return this;this.currentBatchCommand_?this.currentBatchCommand_.addSubCommand(tA):this.undoManager_.addCommandToHistory(tA)}}HistoryRecordingService.NO_HISTORY=new HistoryRecordingService;const copyElem=function(tA,eA){const AA=document.createElementNS(tA.namespaceURI,tA.nodeName);if(Object.values(tA.attributes).forEach((tA=>{AA.setAttributeNS(tA.namespaceURI,tA.nodeName,tA.value)})),AA.removeAttribute(\"id\"),AA.id=eA(),tA.childNodes.forEach((function(tA){switch(tA.nodeType){case 1:AA.append(copyElem(tA,eA));break;case 3:AA.textContent=tA.nodeValue}})),tA.dataset.gsvg)AA.dataset.gsvg=AA.firstChild;else if(tA.dataset.symbol){const eA=tA.dataset.symbol;AA.dataset.ref=eA,AA.dataset.symbol=eA}else\"image\"===AA.tagName&&preventClickDefault(AA);return AA},jA=\"a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use\".split(\",\"),KA=1,qA=2;\n/**\n * Tools for drawing.\n * @module draw\n * @license MIT\n * @copyright 2011 Jeff Schiller\n */let zA=0,XA=[];function historyRecordingService(tA){return tA||new HistoryRecordingService(WA.undoMgr)}function findLayerNameInGroup(tA){const eA=tA.querySelector(\"title\");return eA?eA.textContent:\"\"}function getNewLayerName(tA){let eA=1;for(;tA.includes(\"Layer \"+eA);)eA++;return\"Layer \"+eA}class Drawing{constructor(tA,eA){if(!tA||!tA.tagName||!tA.namespaceURI||\"svg\"!==tA.tagName||tA.namespaceURI!==sA.SVG)throw new Error(\"Error: svgedit.draw.Drawing instance initialized without a <svg> element\");this.svgElem_=tA,this.obj_num=0,this.idPrefix=eA||\"svg_\",this.releasedNums=[],this.all_layers=[],this.layer_map={},this.current_layer=null,this.nonce_=\"\";const AA=this.svgElem_.getAttributeNS(sA.SE,\"nonce\");AA&&zA!==qA?this.nonce_=AA:zA===KA&&this.setNonce(Math.floor(100001*Math.random()))}getElem_(tA){return this.svgElem_.querySelector?this.svgElem_.querySelector(\"#\"+tA):this.svgElem_.querySelector(\"[id=\"+tA+\"]\")}getSvgElem(){return this.svgElem_}getNonce(){return this.nonce_}setNonce(tA){this.svgElem_.setAttributeNS(sA.XMLNS,\"xmlns:se\",sA.SE),this.svgElem_.setAttributeNS(sA.SE,\"se:nonce\",tA),this.nonce_=tA}clearNonce(){this.nonce_=\"\"}getId(){return this.nonce_?this.idPrefix+this.nonce_+\"_\"+this.obj_num:this.idPrefix+this.obj_num}getNextId(){const tA=this.obj_num;let eA=!1;this.releasedNums.length>0?(this.obj_num=this.releasedNums.pop(),eA=!0):this.obj_num++;let AA=this.getId();for(;this.getElem_(AA);)eA&&(this.obj_num=tA,eA=!1),this.obj_num++,AA=this.getId();return eA&&(this.obj_num=tA),AA}releaseId(tA){const eA=this.idPrefix+(this.nonce_?this.nonce_+\"_\":\"\");if(\"string\"!=typeof tA||!tA.startsWith(eA))return!1;const AA=Number.parseInt(tA.substr(eA.length));return!(\"number\"!=typeof AA||AA<=0||this.releasedNums.includes(AA))&&(this.releasedNums.push(AA),!0)}getNumLayers(){return this.all_layers.length}hasLayer(tA){return void 0!==this.layer_map[tA]}getLayerName(tA){return tA>=0&&tA<this.getNumLayers()?this.all_layers[tA].getName():\"\"}getCurrentLayer(){return this.current_layer?this.current_layer.getGroup():null}getLayerByName(tA){const eA=this.layer_map[tA];return eA?eA.getGroup():null}getCurrentLayerName(){return this.current_layer?this.current_layer.getName():\"\"}setCurrentLayerName(tA,eA){let AA=null;if(this.current_layer){const rA=this.current_layer.getName();AA=this.current_layer.setName(tA,eA),AA&&(delete this.layer_map[rA],this.layer_map[AA]=this.current_layer)}return AA}setCurrentLayerPosition(tA){const eA=this.getNumLayers();if(!this.current_layer||tA<0||tA>=eA)return null;const AA=this.indexCurrentLayer();if(-1===AA||AA===tA)return null;const rA=this.current_layer.getGroup(),nA=rA.nextSibling;let iA=null;return tA>AA?tA<eA-1&&(iA=this.all_layers[tA+1].getGroup()):iA=this.all_layers[tA].getGroup(),this.svgElem_.insertBefore(rA,iA),this.identifyLayers(),this.setCurrentLayer(this.getLayerName(tA)),{currentGroup:rA,oldNextSibling:nA}}mergeLayer(tA){const eA=this.current_layer.getGroup(),AA=eA.previousElementSibling;if(!AA)return;tA.startBatchCommand(\"Merge Layer\");const rA=eA.nextSibling;for(tA.removeElement(eA,rA,this.svgElem_);eA.firstChild;){const rA=eA.firstChild;if(\"title\"===rA.localName){tA.removeElement(rA,rA.nextSibling,eA),rA.remove();continue}const nA=rA.nextSibling;AA.append(rA),tA.moveElement(rA,nA,eA)}this.current_layer.removeGroup();const nA=this.indexCurrentLayer();if(nA>0){const tA=this.current_layer.getName();this.current_layer=this.all_layers[nA-1],this.all_layers.splice(nA,1),delete this.layer_map[tA]}tA.endBatchCommand()}mergeAllLayers(tA){for(this.current_layer=this.all_layers[this.all_layers.length-1],tA.startBatchCommand(\"Merge all Layers\");this.all_layers.length>1;)this.mergeLayer(tA);tA.endBatchCommand()}setCurrentLayer(tA){const eA=this.layer_map[tA];return!!eA&&(this.current_layer&&this.current_layer.deactivate(),this.current_layer=eA,this.current_layer.activate(),!0)}indexCurrentLayer(){return this.all_layers.indexOf(this.current_layer)}deleteCurrentLayer(){if(this.current_layer&&this.getNumLayers()>1){const tA=this.current_layer.removeGroup();return this.identifyLayers(),tA}return null}identifyLayers(){this.all_layers=[],this.layer_map={};const tA=this.svgElem_.childNodes.length,eA=[],AA=[];let rA=null,nA=!1;for(let iA=0;iA<tA;++iA){const tA=this.svgElem_.childNodes.item(iA);if(1===tA?.nodeType)if(\"g\"===tA.tagName){nA=!0;const iA=findLayerNameInGroup(tA);iA?(AA.push(iA),rA=new Layer(iA,tA),this.all_layers.push(rA),this.layer_map[iA]=rA):eA.push(tA)}else jA.includes(tA.nodeName)&&eA.push(tA)}eA.length>0||!nA?(rA=new Layer(getNewLayerName(AA),null,this.svgElem_),rA.appendChildren(eA),this.all_layers.push(rA),this.layer_map[name]=rA):rA.activate(),this.current_layer=rA}createLayer(tA,eA){this.current_layer&&this.current_layer.deactivate(),(null==tA||\"\"===tA||this.layer_map[tA])&&(tA=getNewLayerName(Object.keys(this.layer_map)));const AA=new Layer(tA,null,this.svgElem_);return eA&&(eA.startBatchCommand(\"Create Layer\"),eA.insertElement(AA.getGroup()),eA.endBatchCommand()),this.all_layers.push(AA),this.layer_map[tA]=AA,this.current_layer=AA,AA.getGroup()}cloneLayer(tA,eA){if(!this.current_layer)return null;this.current_layer.deactivate(),(null==tA||\"\"===tA||this.layer_map[tA])&&(tA=getNewLayerName(Object.keys(this.layer_map)));const AA=this.current_layer.getGroup(),rA=new Layer(tA,AA,this.svgElem_),nA=rA.getGroup();[...AA.childNodes].forEach((tA=>{\"title\"!==tA.localName&&nA.append(this.copyElem(tA))})),eA&&(eA.startBatchCommand(\"Duplicate Layer\"),eA.insertElement(nA),eA.endBatchCommand());const iA=this.indexCurrentLayer();return iA>=0?this.all_layers.splice(iA+1,0,rA):this.all_layers.push(rA),this.layer_map[tA]=rA,this.current_layer=rA,nA}getLayerVisibility(tA){const eA=this.layer_map[tA];return!!eA&&eA.isVisible()}setLayerVisibility(tA,eA){if(\"boolean\"!=typeof eA)return null;const AA=this.layer_map[tA];return AA?(AA.setVisible(eA),AA.getGroup()):null}getLayerOpacity(tA){const eA=this.layer_map[tA];return eA?eA.getOpacity():null}setLayerOpacity(tA,eA){if(\"number\"!=typeof eA||eA<0||eA>1)return;const AA=this.layer_map[tA];AA&&AA.setOpacity(eA)}copyElem(tA){const eA=this;return copyElem(tA,(function(){return eA.getNextId()}))}}const randomizeIds=function(tA,eA){zA=!1===tA?qA:KA,zA!==KA||eA.getNonce()?zA===qA&&eA.getNonce()&&eA.clearNonce():eA.setNonce(Math.floor(100001*Math.random()))};let WA;const identifyLayers=()=>{leaveContext(),WA.getCurrentDrawing().identifyLayers()},indexCurrentLayer=()=>WA.getCurrentDrawing().indexCurrentLayer(),createLayer=(tA,eA)=>{const AA=WA.getCurrentDrawing().createLayer(tA,historyRecordingService(eA));WA.clearSelection(),WA.call(\"changed\",[AA])},cloneLayer=(tA,eA)=>{const AA=WA.getCurrentDrawing().cloneLayer(tA,historyRecordingService(eA));WA.clearSelection(),leaveContext(),WA.call(\"changed\",[AA])},deleteCurrentLayer=()=>{const{BatchCommand:tA,RemoveElementCommand:eA}=WA.history;let AA=WA.getCurrentDrawing().getCurrentLayer();const{nextSibling:rA}=AA,nA=AA.parentNode;if(AA=WA.getCurrentDrawing().deleteCurrentLayer(),AA){const iA=new tA(\"Delete Layer\");return iA.addSubCommand(new eA(AA,rA,nA)),WA.addCommandToHistory(iA),WA.clearSelection(),WA.call(\"changed\",[nA]),!0}return!1},setCurrentLayer=tA=>{const eA=WA.getCurrentDrawing().setCurrentLayer(toXml(tA));return eA&&WA.clearSelection(),eA},renameCurrentLayer=tA=>{const eA=WA.getCurrentDrawing(),AA=eA.getCurrentLayer();if(AA){if(eA.setCurrentLayerName(tA,historyRecordingService()))return WA.call(\"changed\",[AA]),!0}return!1},setCurrentLayerPosition=tA=>{const{MoveElementCommand:eA}=WA.history,AA=WA.getCurrentDrawing().setCurrentLayerPosition(tA);return!!AA&&(WA.addCommandToHistory(new eA(AA.currentGroup,AA.oldNextSibling,WA.getSvgContent())),!0)},setLayerVisibility=(tA,eA)=>{const{ChangeElementCommand:AA}=WA.history,rA=WA.getCurrentDrawing(),nA=rA.getLayerVisibility(tA),iA=rA.setLayerVisibility(tA,eA);if(!iA)return!1;{const tA=nA?\"inline\":\"none\";WA.addCommandToHistory(new AA(iA,{display:tA},\"Layer Visibility\"))}return iA===rA.getCurrentLayer()&&(WA.clearSelection(),WA.pathActions.clear()),!0},moveSelectedToLayer=tA=>{const{BatchCommand:eA,MoveElementCommand:AA}=WA.history,rA=WA.getCurrentDrawing().getLayerByName(tA);if(!rA)return!1;const nA=new eA(\"Move Elements to Layer\"),iA=WA.getSelectedElements();let sA=iA.length;for(;sA--;){const tA=iA[sA];if(!tA)continue;const eA=tA.nextSibling,oA=tA.parentNode;rA.append(tA),nA.addSubCommand(new AA(tA,eA,oA))}return WA.addCommandToHistory(nA),!0},mergeLayer=tA=>{WA.getCurrentDrawing().mergeLayer(historyRecordingService(tA)),WA.clearSelection(),leaveContext(),WA.changeSvgContent()},mergeAllLayers=tA=>{WA.getCurrentDrawing().mergeAllLayers(historyRecordingService(tA)),WA.clearSelection(),leaveContext(),WA.changeSvgContent()},leaveContext=()=>{const tA=XA.length,eA=WA.getDataStorage();if(tA){for(let AA=0;AA<tA;AA++){const tA=XA[AA],rA=eA.get(tA,\"orig_opac\");1!==rA?tA.setAttribute(\"opacity\",rA):tA.removeAttribute(\"opacity\"),tA.setAttribute(\"style\",\"pointer-events: inherit\")}XA=[],WA.clearSelection(!0),WA.call(\"contextset\",null)}WA.setCurrentGroup(null)},setContext=tA=>{const eA=WA.getDataStorage();leaveContext(),\"string\"==typeof tA&&(tA=getElement(tA)),WA.setCurrentGroup(tA);const AA=function getParentsUntil(tA,eA,AA){const rA=[],nA=eA?.charAt(0),iA=AA?.selector.charAt(0);for(;tA&&tA!==document;tA=tA.parentNode){if(eA){if(\".\"===nA&&tA.classList.contains(eA.substr(1)))break;if(\"#\"===nA&&tA.id===eA.substr(1))break;if(\"[\"===nA&&tA.hasAttribute(eA.substr(1,eA.length-1)))break;if(tA.tagName.toLowerCase()===eA)break}AA?(\".\"===iA&&tA.classList.contains(AA.substr(1))&&rA.push(tA),\"#\"===iA&&tA.id===AA.substr(1)&&rA.push(tA),\"[\"===iA&&tA.hasAttribute(AA.substr(1,AA.length-1))&&rA.push(tA),tA.tagName.toLowerCase()===AA&&rA.push(tA)):rA.push(tA)}return rA.length?rA:null}(tA,\"#svgcontent\"),rA=[];AA.forEach((function(tA){Array.prototype.filter.call(tA.parentNode.children,(function(eA){return eA!==tA})).forEach((function(tA){rA.push(tA)}))})),rA.forEach((function(tA){const AA=tA.getAttribute(\"opacity\")||1;eA.put(tA,\"orig_opac\",AA),tA.setAttribute(\"opacity\",.33*AA),tA.setAttribute(\"style\",\"pointer-events: none\"),XA.push(tA)})),WA.clearSelection(),WA.call(\"contextset\",WA.getCurrentGroup())},{InsertElementCommand:YA,BatchCommand:JA}=dA;let ZA=null;const pasteElementsMethod=function(tA,eA,AA){let rA=JSON.parse(sessionStorage.getItem(ZA.getClipboardID()));if(!rA)return;let nA=rA.length;if(!nA)return;const iA=[],sA=new JA(\"Paste elements\"),oA={};function checkIDs(tA){tA.attr?.id&&(oA[tA.attr.id]=ZA.getNextId(),tA.attr.id=oA[tA.attr.id]),tA.children&&tA.children.forEach((tA=>checkIDs(tA)))}for(rA.forEach((tA=>checkIDs(tA))),ZA.runExtensions(\"IDsUpdated\",{elems:rA,changes:oA},!0).forEach((function(tA){tA&&\"remove\"in tA&&tA.remove.forEach((function(tA){rA=rA.filter((function(eA){return eA.attr.id!==tA}))}))}));nA--;){const tA=rA[nA];if(!tA)continue;const eA=ZA.addSVGElementsFromJson(tA);iA.push(eA),sA.addSubCommand(new YA(eA)),ZA.restoreRefElements(eA)}if(ZA.selectOnly(iA),\"in_place\"!==tA){let rA,nA;tA?\"point\"===tA&&(rA=eA,nA=AA):(rA=ZA.getLastClickPoint(\"x\"),nA=ZA.getLastClickPoint(\"y\"));const oA=getStrokedBBoxDefaultVisible(iA),aA=rA-(oA.x+oA.width/2),lA=nA-(oA.y+oA.height/2),cA=[],uA=[];iA.forEach((function(tA){cA.push(aA),uA.push(lA)}));const hA=ZA.moveSelectedElements(cA,uA,!1);hA&&sA.addSubCommand(hA)}ZA.addCommandToHistory(sA),ZA.call(\"changed\",iA)},touchHandler=tA=>{tA.preventDefault();const{changedTouches:eA}=tA,AA=eA[0];let rA=\"\";switch(tA.type){case\"touchstart\":rA=\"mousedown\";break;case\"touchmove\":rA=\"mousemove\";break;case\"touchend\":rA=\"mouseup\";break;default:return}const{screenX:nA,screenY:iA,clientX:sA,clientY:oA}=AA,aA=new MouseEvent(rA,{bubbles:!0,cancelable:!0,view:window,detail:1,screenX:nA,screenY:iA,clientX:sA,clientY:oA,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});eA.length<2&&AA.target.dispatchEvent(aA)},$A=\"http://www.w3.org/2000/svg\",{userAgent:Qr}=navigator,Ur=Qr.includes(\"AppleWebKit\"),Tr=Qr.includes(\"Gecko/\"),Hr=Qr.includes(\"Chrome/\");Qr.includes(\"Macintosh\");const Dr=function(){const tA=document.createElementNS($A,\"svg\"),eA=document.createElementNS($A,\"svg\");document.documentElement.append(tA),eA.setAttribute(\"x\",5),tA.append(eA);const AA=document.createElementNS($A,\"text\");AA.textContent=\"a\",eA.append(AA);try{return 0===AA.getStartPositionOfChar(0).x}catch(tA){return!1}finally{tA.remove()}}(),isWebkit=()=>Ur,isGecko=()=>Tr,{UndoManager:Rr,HistoryEventTypes:Vr}=dA;let Gr=null;const getUndoManager=()=>new Rr({handleHistoryEvent(tA,eA){const AA=Vr;if(tA===AA.BEFORE_UNAPPLY||tA===AA.BEFORE_APPLY)Gr.clearSelection();else if(tA===AA.AFTER_APPLY||tA===AA.AFTER_UNAPPLY){const rA=eA.elements();Gr.pathActions.clear(),Gr.call(\"changed\",rA);const nA=eA.type(),iA=tA===AA.AFTER_APPLY;if(\"MoveElementCommand\"===nA){(iA?eA.newParent:eA.oldParent)===Gr.getSvgContent()&&identifyLayers()}else if(\"InsertElementCommand\"===nA||\"RemoveElementCommand\"===nA)eA.parent===Gr.getSvgContent()&&identifyLayers(),\"InsertElementCommand\"===nA?iA&&Gr.restoreRefElements(eA.elem):iA||Gr.restoreRefElements(eA.elem),\"use\"===eA.elem?.tagName&&Gr.setUseData(eA.elem);else if(\"ChangeElementCommand\"===nA){\"title\"===eA.elem.tagName&&eA.elem.parentNode.parentNode===Gr.getSvgContent()&&identifyLayers();const rA=iA?eA.newValues:eA.oldValues;if(rA.stdDeviation&&Gr.setBlurOffsets(eA.elem.parentNode,rA.stdDeviation),\"text\"===eA.elem.tagName){const[rA,nA]=[eA.newValues.x-eA.oldValues.x,eA.newValues.y-eA.oldValues.y],iA=eA.elem.children;for(let eA=0;eA<iA.length;eA++){let sA=Number(iA[eA].getAttribute(\"x\")),oA=Number(iA[eA].getAttribute(\"y\"));const aA=tA===AA.AFTER_UNAPPLY;sA=aA?sA-rA:sA+rA,oA=aA?oA-nA:oA+nA,iA[eA].setAttribute(\"x\",sA),iA[eA].setAttribute(\"y\",oA)}}}}}}),ffClone=function(tA){if(!isGecko())return tA;const eA=tA.cloneNode(!0);return tA.before(eA),tA.remove(),Gr.selectorManager.releaseSelector(tA),Gr.setSelectedElements(0,eA),Gr.selectorManager.requestSelector(eA).showGrips(!0),eA},changeSelectedAttributeNoUndoMethod=(tA,eA,AA)=>{if(\"id\"===tA){const tA=AA[0],rA=tA.id;return void(rA!==eA&&(Gr.clearSelection(),tA.id=eA,Gr.addToSelection([tA],!0),Gr.call(\"elementRenamed\",{elem:tA,oldId:rA,newId:eA})))}const rA=Gr.getSelectedElements(),nA=Gr.getZoom();\"pathedit\"===Gr.getCurrentMode()&&Gr.pathActions.moveNode(tA,eA);let iA=(AA=AA??rA).length;const sA=[\"g\",\"polyline\",\"path\"];for(;iA--;){let oA=AA[iA];if(!oA)continue;if((\"x\"===tA||\"y\"===tA)&&sA.includes(oA.tagName)){const AA=getStrokedBBoxDefaultVisible([oA]),rA=\"x\"===tA?eA-AA.x:0,iA=\"y\"===tA?eA-AA.y:0;Gr.moveSelectedElements(rA*nA,iA*nA,!0);continue}let aA=\"#text\"===tA?oA.textContent:oA.getAttribute(tA);if(aA||(aA=\"\"),aA!==String(eA)){\"#text\"===tA?(oA.textContent=eA,/rotate/.test(oA.getAttribute(\"transform\"))&&(oA=ffClone(oA))):\"#href\"===tA?setHref(oA,eA):eA||\"number\"==typeof eA?oA.setAttribute(tA,eA):oA.removeAttribute(tA),\"textedit\"===Gr.getCurrentMode()&&\"#text\"!==tA&&oA.textContent.length&&Gr.textActions.toSelectMode(oA),isGecko()&&\"text\"===oA.nodeName&&/rotate/.test(oA.getAttribute(\"transform\"))&&(String(eA).startsWith(\"url\")||[\"font-size\",\"font-family\",\"x\",\"y\"].includes(tA)&&oA.textContent)&&(oA=ffClone(oA)),rA.includes(oA)&&setTimeout((function(){oA.parentNode&&Gr.selectorManager.requestSelector(oA).resize()}),0);const AA=getRotationAngle(oA);if(0!==AA&&\"transform\"!==tA){const tA=oA.transform?.baseVal;let eA=tA.numberOfItems;for(;eA--;){if(4===tA.getItem(eA).type){tA.removeItem(eA);const rA=getBBox(oA),nA=transformPoint(rA.x+rA.width/2,rA.y+rA.height/2,transformListToTransform(tA).matrix),iA=nA.x,sA=nA.y,aA=Gr.getSvgRoot().createSVGTransform();aA.setRotate(AA,iA,sA),tA.insertItemBefore(aA,eA);break}}}}}},changeSelectedAttributeMethod=function(tA,eA,AA){const rA=Gr.getSelectedElements();AA=AA||rA,Gr.undoMgr.beginUndoableChange(tA,AA),changeSelectedAttributeNoUndoMethod(tA,eA,AA);const nA=Gr.undoMgr.finishUndoableChange();nA.isEmpty()||Gr.undoMgr.addCommandToHistory(nA)},{BatchCommand:Kr}=dA;let zr=null;const clearSelectionMethod=tA=>{zr.getSelectedElements().forEach((tA=>{tA&&zr.selectorManager.releaseSelector(tA)})),zr?.setEmptySelectedElements(),tA||zr.call(\"selected\",zr.getSelectedElements())},addToSelectionMethod=(tA,eA)=>{const AA=zr.getSelectedElements();if(!tA.length)return;let rA=0;for(;rA<AA.length&&null!==AA[rA];)++rA;let nA=tA.length;for(;nA--;){let eA=tA[nA];if(eA&&eA.getBBox&&(\"a\"===eA.tagName&&1===eA.childNodes.length&&(eA=eA.firstChild),!AA.includes(eA))){AA[rA]=eA,rA++;const tA=zr.selectorManager.requestSelector(eA);AA.length>1&&tA.showGrips(!1)}}if(AA.length)for(zr.call(\"selected\",AA),1===AA.length&&zr.selectorManager.requestSelector(AA[0]).showGrips(eA),AA.sort(((tA,eA)=>tA&&eA&&tA.compareDocumentPosition?3-(6&eA.compareDocumentPosition(tA)):tA?0:1));!AA[0];)AA.shift(0)},getMouseTargetMethod=tA=>{if(!tA)return null;let eA=tA.target;if(eA.correspondingUseElement&&(eA=eA.correspondingUseElement),[sA.MATH,sA.HTML].includes(eA.namespaceURI)&&\"svgcanvas\"!==eA.id)for(;\"foreignObject\"!==eA.nodeName;)if(eA=eA.parentNode,!eA)return zr.getSvgRoot();const AA=zr.getCurrentDrawing().getCurrentLayer();if([zr.getSvgRoot(),zr.getDOMContainer(),zr.getSvgContent(),AA].includes(eA))return zr.getSvgRoot();if(getClosest(eA.parentNode,\"#selectorParentGroup\"))return zr.selectorManager.selectorParentGroup;for(;!eA?.parentNode?.isSameNode(zr.getCurrentGroup()||AA);)eA=eA.parentNode;return eA},runExtensionsMethod=(tA,eA,AA)=>{let rA=!!AA&&[];for(const[nA,iA]of Object.entries(zr.getExtensions()))if(\"function\"==typeof eA&&(eA=eA(nA)),iA.eventBased){const AA=new CustomEvent(\"svgedit\",{detail:{action:tA,vars:eA}});document.dispatchEvent(AA)}else iA[tA]&&(AA?rA.push(iA[tA](eA)):rA=iA[tA](eA));return rA},getIntersectionListMethod=tA=>{const eA=zr.getZoom();if(!zr.getRubberBox())return null;const AA=zr.getCurrentGroup()||zr.getCurrentDrawing().getCurrentLayer();let rA;if(tA)rA=zr.getSvgContent().createSVGRect(),rA.x=tA.x,rA.y=tA.y,rA.width=tA.width,rA.height=tA.height;else{rA=getBBox(zr.getRubberBox());const tA=zr.getSvgContent().createSVGRect();[\"x\",\"y\",\"width\",\"height\",\"top\",\"right\",\"bottom\",\"left\"].forEach((AA=>{tA[AA]=rA[AA]/eA})),rA=tA}const nA=[];0===zr.getCurBBoxes().length&&zr.setCurBBoxes((tA=>{tA||(tA=zr.getSvgContent().children);const eA=[],AA=tA.children;return Array.from(AA).forEach((tA=>{tA.getBBox&&eA.push({elem:tA,bbox:getStrokedBBoxDefaultVisible([tA])})})),eA.reverse()})(AA));let iA=zr.getCurBBoxes().length;for(;iA--;){const tA=zr.getCurBBoxes();rA.width&&(rectsIntersect(rA,tA[iA].bbox)&&nA.push(tA[iA].elem))}return nA},groupSvgElem=tA=>{const eA=zr.getDataStorage(),AA=document.createElementNS(sA.SVG,\"g\");tA.replaceWith(AA),AA.appendChild(tA),eA.put(AA,\"gsvg\",tA),AA.id=zr.getNextId()},prepareSvg=tA=>{zr.sanitizeSvg(tA.documentElement);[...tA.getElementsByTagNameNS(sA.SVG,\"path\")].forEach((tA=>{const eA=zr.pathActions.convertPath(tA);tA.setAttribute(\"d\",eA),zr.pathActions.fixEnd(tA)}))},setRotationAngle=(tA,eA)=>{const AA=zr.getSelectedElements();tA=Number.parseFloat(tA);const rA=AA[0],nA=rA.getAttribute(\"transform\"),iA=getBBox(rA),sA=iA.x+iA.width/2,oA=iA.y+iA.height/2,aA=rA.transform.baseVal;if(aA.numberOfItems>0){4===aA.getItem(0).type&&aA.removeItem(0)}if(0!==tA){const eA=transformPoint(sA,oA,transformListToTransform(aA).matrix),AA=zr.getSvgRoot().createSVGTransform();AA.setRotate(tA,eA.x,eA.y),aA.numberOfItems?aA.insertItemBefore(AA,0):aA.appendItem(AA)}else 0===aA.numberOfItems&&rA.removeAttribute(\"transform\");if(!eA){let tA=rA.getAttribute(\"transform\");if(tA){const eA=tA.split(\" \"),AA=(tA=>Math.round(Number(tA)+Number.EPSILON))(eA[1]);tA=`${eA[0]} ${AA} ${eA[2]}`}nA?rA.setAttribute(\"transform\",nA):rA.removeAttribute(\"transform\"),zr.changeSelectedAttribute(\"transform\",tA,AA),zr.call(\"changed\",AA)}zr.selectorManager.requestSelector(AA[0]).resize(),zr.getSelector().updateGripCursors(tA)},recalculateAllSelectedDimensions=()=>{const tA=\"none\"===zr.getCurrentResizeMode()?\"position\":\"size\",eA=new Kr(tA),AA=zr.getSelectedElements();AA.forEach((tA=>{const AA=zr.recalculateDimensions(tA);AA&&eA.addSubCommand(AA)})),eA.isEmpty()||(zr.addCommandToHistory(eA),zr.call(\"changed\",AA))};\n/**\n * @module text-actions Tools for Text edit functions\n * @license MIT\n *\n * @copyright 2010 Alexis Deveria, 2010 Jeff Schiller\n */\nlet Xr=null;const Wr=function(){let tA,eA,AA,rA,nA,iA,oA,aA,lA,cA,uA=[];function setCursor(tA){const oA=\"\"===eA.value;if(eA.focus(),!arguments.length)if(oA)tA=0;else{if(eA.selectionEnd!==eA.selectionStart)return;tA=eA.selectionEnd}const aA=uA[tA];oA||eA.setSelectionRange(tA,tA),AA=getElement(\"text_cursor\"),AA||(AA=document.createElementNS(sA.SVG,\"line\"),assignAttributes(AA,{id:\"text_cursor\",stroke:\"#333\",\"stroke-width\":1}),getElement(\"selectorParentGroup\").append(AA)),nA||(nA=setInterval((function(){const tA=\"none\"===AA.getAttribute(\"display\");AA.setAttribute(\"display\",tA?\"inline\":\"none\")}),600));const lA=ptToScreen(aA.x,iA.y),cA=ptToScreen(aA.x,iA.y+iA.height);assignAttributes(AA,{x1:lA.x,y1:lA.y,x2:cA.x,y2:cA.y,visibility:\"visible\",display:\"inline\"}),rA&&rA.setAttribute(\"d\",\"\")}function setSelection(tA,nA,oA){if(tA===nA)return void setCursor(nA);oA||eA.setSelectionRange(tA,nA),rA=getElement(\"text_selectblock\"),rA||(rA=document.createElementNS(sA.SVG,\"path\"),assignAttributes(rA,{id:\"text_selectblock\",fill:\"green\",opacity:.5,style:\"pointer-events:none\"}),getElement(\"selectorParentGroup\").append(rA));const aA=uA[tA],lA=uA[nA];AA.setAttribute(\"visibility\",\"hidden\");const cA=ptToScreen(aA.x,iA.y),hA=ptToScreen(aA.x+(lA.x-aA.x),iA.y),dA=ptToScreen(aA.x,iA.y+iA.height),fA=ptToScreen(aA.x+(lA.x-aA.x),iA.y+iA.height),gA=\"M\"+cA.x+\",\"+cA.y+\" L\"+hA.x+\",\"+hA.y+\" \"+fA.x+\",\"+fA.y+\" \"+dA.x+\",\"+dA.y+\"z\";assignAttributes(rA,{d:gA,display:\"inline\"})}function getIndexFromPoint(eA,AA){const rA=Xr.getSvgRoot().createSVGPoint();if(rA.x=eA,rA.y=AA,1===uA.length)return 0;let nA=tA.getCharNumAtPosition(rA);nA<0?(nA=uA.length-2,eA<=uA[0].x&&(nA=0)):nA>=uA.length-2&&(nA=uA.length-2);const iA=uA[nA];return eA>iA.x+iA.width/2&&nA++,nA}function setCursorFromPoint(tA,eA){setCursor(getIndexFromPoint(tA,eA))}function setEndSelectionFromPoint(tA,AA,rA){const nA=eA.selectionStart,iA=getIndexFromPoint(tA,AA);setSelection(Math.min(nA,iA),Math.max(nA,iA),!rA)}function screenToPt(tA,eA){const AA={x:tA,y:eA},rA=Xr.getZoom();if(AA.x/=rA,AA.y/=rA,oA){const tA=transformPoint(AA.x,AA.y,oA.inverse());AA.x=tA.x,AA.y=tA.y}return AA}function ptToScreen(tA,eA){const AA={x:tA,y:eA};if(oA){const tA=transformPoint(AA.x,AA.y,oA);AA.x=tA.x,AA.y=tA.y}const rA=Xr.getZoom();return AA.x*=rA,AA.y*=rA,AA}function selectAll(eA){setSelection(0,tA.textContent.length),eA.target.removeEventListener(\"click\",selectAll)}function selectWord(eA){if(!cA||!tA)return;const AA=Xr.getZoom(),rA=transformPoint(eA.pageX,eA.pageY,Xr.getrootSctm()),nA=screenToPt(rA.x*AA,rA.y*AA),iA=getIndexFromPoint(nA.x,nA.y),sA=tA.textContent,oA=sA.substr(0,iA).replace(/[a-z\\d]+$/i,\"\").length,aA=sA.substr(iA).match(/^[a-z\\d]+/i);setSelection(oA,(aA?aA[0].length:0)+iA),Xr.$click(eA.target,selectAll),setTimeout((function(){eA.target.removeEventListener(\"click\",selectAll)}),300)}return{select(eA,AA,rA){tA=eA,Xr.textActions.toEditMode(AA,rA)},start(eA){tA=eA,Xr.textActions.toEditMode()},mouseDown(tA,AA,rA,nA){const iA=screenToPt(rA,nA);eA.focus(),setCursorFromPoint(iA.x,iA.y),aA=rA,lA=nA},mouseMove(tA,eA){const AA=screenToPt(tA,eA);setEndSelectionFromPoint(AA.x,AA.y)},mouseUp(eA,AA,rA){const nA=screenToPt(AA,rA);setEndSelectionFromPoint(nA.x,nA.y,!0),eA.target!==tA&&AA<aA+2&&AA>aA-2&&rA<lA+2&&rA>lA-2&&Xr.textActions.toSelectMode(!0)},setCursor:setCursor,toEditMode(eA,AA){if(cA=!1,Xr.setCurrentMode(\"textedit\"),Xr.selectorManager.requestSelector(tA).showGrips(!1),Xr.selectorManager.requestSelector(tA),Xr.textActions.init(),tA.style.cursor=\"text\",arguments.length){const tA=screenToPt(eA,AA);setCursorFromPoint(tA.x,tA.y)}else setCursor();setTimeout((function(){cA=!0}),300)},toSelectMode(iA){Xr.setCurrentMode(\"select\"),clearInterval(nA),nA=null,rA&&rA.setAttribute(\"display\",\"none\"),AA&&AA.setAttribute(\"visibility\",\"hidden\"),tA.style.cursor=\"move\",iA&&(Xr.clearSelection(),tA.style.cursor=\"move\",Xr.call(\"selected\",[tA]),Xr.addToSelection([tA],!0)),tA?.textContent.length||Xr.deleteSelectedElements(),eA.blur(),tA=!1},setInputElem(tA){eA=tA},clear(){\"textedit\"===Xr.getCurrentMode()&&Xr.textActions.toSelectMode()},init(AA){if(!tA)return;let rA,nA;if(!tA.parentNode){const eA=Xr.getSelectedElements();tA=eA[0],Xr.selectorManager.requestSelector(tA).showGrips(!1)}const sA=tA.textContent.length,aA=tA.getAttribute(\"transform\");for(iA=getBBox(tA),oA=aA?getMatrix(tA):null,uA=[],uA.length=sA,eA.focus(),tA.removeEventListener(\"dblclick\",selectWord),tA.addEventListener(\"dblclick\",selectWord),sA||(nA={x:iA.x+iA.width/2,width:0}),rA=0;rA<sA;rA++){const eA=tA.getStartPositionOfChar(rA);if(nA=tA.getEndPositionOfChar(rA),!Dr){const tA=Xr.getZoom(),AA=Xr.contentW*tA;eA.x-=AA,nA.x-=AA,eA.x/=tA,nA.x/=tA}uA[rA]={x:eA.x,y:iA.y,width:nA.x-eA.x,height:iA.height}}uA.push({x:nA.x,width:0}),setSelection(eA.selectionStart,eA.selectionEnd,!0)}}}(),{InsertElementCommand:Yr}=dA;let Jr=null;const getBsplinePoint=tA=>{const eA={x:0,y:0},AA=Jr.getControllPoint2(\"x\"),rA=Jr.getControllPoint2(\"y\"),nA=Jr.getControllPoint1(\"x\"),iA=Jr.getControllPoint1(\"y\"),sA=Jr.getStart(\"x\"),oA=Jr.getStart(\"y\"),aA=Jr.getEnd(\"x\"),lA=Jr.getEnd(\"y\"),cA=1/6,uA=tA*tA,hA=uA*tA,dA=[[-1,3,-3,1],[3,-6,3,0],[-3,0,3,0],[1,4,1,0]];return eA.x=cA*((AA*dA[0][0]+nA*dA[0][1]+sA*dA[0][2]+aA*dA[0][3])*hA+(AA*dA[1][0]+nA*dA[1][1]+sA*dA[1][2]+aA*dA[1][3])*uA+(AA*dA[2][0]+nA*dA[2][1]+sA*dA[2][2]+aA*dA[2][3])*tA+(AA*dA[3][0]+nA*dA[3][1]+sA*dA[3][2]+aA*dA[3][3])),eA.y=cA*((rA*dA[0][0]+iA*dA[0][1]+oA*dA[0][2]+lA*dA[0][3])*hA+(rA*dA[1][0]+iA*dA[1][1]+oA*dA[1][2]+lA*dA[1][3])*uA+(rA*dA[2][0]+iA*dA[2][1]+oA*dA[2][2]+lA*dA[2][3])*tA+(rA*dA[3][0]+iA*dA[3][1]+oA*dA[3][2]+lA*dA[3][3])),{x:eA.x,y:eA.y}},mouseMoveEvent=tA=>{if(!Jr.getStarted())return;if(1===tA.button||Jr.spaceKey)return;Jr.textActions.init(),tA.preventDefault();const eA=Jr.getSelectedElements(),AA=Jr.getZoom(),rA=Jr.getSvgRoot(),nA=eA[0];let iA,sA,oA,aA,lA,cA,uA,hA,dA;const fA=transformPoint(tA.clientX,tA.clientY,Jr.getrootSctm()),gA=fA.x*AA,pA=fA.y*AA,mA=getElement(Jr.getId());let wA,yA=gA/AA,BA=yA,bA=pA/AA,vA=bA;switch(Jr.getCurConfig().gridSnapping&&(BA=snapToGrid(BA),vA=snapToGrid(vA)),Jr.getCurrentMode()){case\"select\":nA&&(lA=BA-Jr.getStartX(),cA=vA-Jr.getStartY(),Jr.getCurConfig().gridSnapping&&(lA=snapToGrid(lA),cA=snapToGrid(cA)),(lA||cA)&&(eA.forEach((tA=>{tA&&(((tA,eA,AA,rA)=>{const nA=tA.createSVGTransform();nA.setTranslate(AA,rA);const iA=eA.transform?.baseVal;iA.numberOfItems?2===iA.getItem(0).type?iA.replaceItem(nA,0):iA.insertItemBefore(nA,0):iA.appendItem(nA)})(rA,tA,lA,cA),Jr.selectorManager.requestSelector(tA).resize())})),Jr.call(\"transition\",eA)));break;case\"multiselect\":{yA*=AA,bA*=AA,assignAttributes(Jr.getRubberBox(),{x:Math.min(Jr.getRStartX(),yA),y:Math.min(Jr.getRStartY(),bA),width:Math.abs(yA-Jr.getRStartX()),height:Math.abs(bA-Jr.getRStartY())});const tA=eA.slice(),rA=[],nA=Jr.getIntersectionList();for(uA=nA.length,iA=0;iA<uA;++iA){const AA=nA[iA];eA.includes(AA)||rA.push(AA);const sA=tA.indexOf(AA);-1!==sA&&tA.splice(sA,1)}tA.length>0&&Jr.removeFromSelection(tA),rA.length>0&&Jr.addToSelection(rA);break}case\"resize\":{wA=nA.transform.baseVal;const AA=hasMatrixTransform(wA);dA=AA?Jr.getInitBbox():getBBox(nA);let iA=dA.x,sA=dA.y,{width:oA,height:aA}=dA;if(lA=BA-Jr.getStartX(),cA=vA-Jr.getStartY(),Jr.getCurConfig().gridSnapping&&(lA=snapToGrid(lA),cA=snapToGrid(cA),aA=snapToGrid(aA),oA=snapToGrid(oA)),hA=getRotationAngle(nA),hA){const tA=Math.sqrt(lA*lA+cA*cA),eA=Math.atan2(cA,lA)-hA*Math.PI/180;lA=tA*Math.cos(eA),cA=tA*Math.sin(eA)}Jr.getCurrentResizeMode().includes(\"n\")||Jr.getCurrentResizeMode().includes(\"s\")||(cA=0),Jr.getCurrentResizeMode().includes(\"e\")||Jr.getCurrentResizeMode().includes(\"w\")||(lA=0);let uA=0,fA=0,gA=aA?(aA+cA)/aA:1,pA=oA?(oA+lA)/oA:1;Jr.getCurrentResizeMode().includes(\"n\")&&(gA=aA?(aA-cA)/aA:1,fA=aA),Jr.getCurrentResizeMode().includes(\"w\")&&(pA=oA?(oA-lA)/oA:1,uA=oA);const mA=rA.createSVGTransform(),yA=rA.createSVGTransform(),bA=rA.createSVGTransform();if(Jr.getCurConfig().gridSnapping&&(iA=snapToGrid(iA),uA=snapToGrid(uA),sA=snapToGrid(sA),fA=snapToGrid(fA)),mA.setTranslate(-(iA+uA),-(sA+fA)),tA.shiftKey&&(1===pA?pA=gA:gA=pA),yA.setScale(pA,gA),bA.setTranslate(iA+uA,sA+fA),AA){const tA=hA?1:0;wA.replaceItem(mA,2+tA),wA.replaceItem(yA,1+tA),wA.replaceItem(bA,Number(tA))}else{const tA=wA.numberOfItems;wA.replaceItem(bA,tA-3),wA.replaceItem(yA,tA-2),wA.replaceItem(mA,tA-1)}Jr.selectorManager.requestSelector(nA).resize(),Jr.call(\"transition\",eA);break}case\"zoom\":yA*=AA,bA*=AA,assignAttributes(Jr.getRubberBox(),{x:Math.min(Jr.getRStartX()*AA,yA),y:Math.min(Jr.getRStartY()*AA,bA),width:Math.abs(yA-Jr.getRStartX()*AA),height:Math.abs(bA-Jr.getRStartY()*AA)});break;case\"text\":assignAttributes(mA,{x:BA,y:vA});break;case\"line\":{Jr.getCurConfig().gridSnapping&&(BA=snapToGrid(BA),vA=snapToGrid(vA));let eA=BA,AA=vA;tA.shiftKey&&(sA=snapToAngle(Jr.getStartX(),Jr.getStartY(),eA,AA),eA=sA.x,AA=sA.y),mA.setAttribute(\"x2\",eA),mA.setAttribute(\"y2\",AA);break}case\"foreignObject\":case\"square\":case\"rect\":case\"image\":{const eA=\"square\"===Jr.getCurrentMode()||tA.shiftKey;let AA,rA,nA=Math.abs(BA-Jr.getStartX()),iA=Math.abs(vA-Jr.getStartY());eA?(nA=iA=Math.max(nA,iA),AA=Jr.getStartX()<BA?Jr.getStartX():Jr.getStartX()-nA,rA=Jr.getStartY()<vA?Jr.getStartY():Jr.getStartY()-iA):(AA=Math.min(Jr.getStartX(),BA),rA=Math.min(Jr.getStartY(),vA)),Jr.getCurConfig().gridSnapping&&(nA=snapToGrid(nA),iA=snapToGrid(iA),AA=snapToGrid(AA),rA=snapToGrid(rA)),assignAttributes(mA,{width:nA,height:iA,x:AA,y:rA});break}case\"circle\":{oA=Number(mA.getAttribute(\"cx\")),aA=Number(mA.getAttribute(\"cy\"));let tA=Math.sqrt((BA-oA)*(BA-oA)+(vA-aA)*(vA-aA));Jr.getCurConfig().gridSnapping&&(tA=snapToGrid(tA)),mA.setAttribute(\"r\",tA);break}case\"ellipse\":{oA=Number(mA.getAttribute(\"cx\")),aA=Number(mA.getAttribute(\"cy\")),Jr.getCurConfig().gridSnapping&&(BA=snapToGrid(BA),oA=snapToGrid(oA),vA=snapToGrid(vA),aA=snapToGrid(aA)),mA.setAttribute(\"rx\",Math.abs(BA-oA));const eA=Math.abs(tA.shiftKey?BA-oA:vA-aA);mA.setAttribute(\"ry\",eA);break}case\"fhellipse\":case\"fhrect\":Jr.setFreehand(\"minx\",Math.min(yA,Jr.getFreehand(\"minx\"))),Jr.setFreehand(\"maxx\",Math.max(yA,Jr.getFreehand(\"maxx\"))),Jr.setFreehand(\"miny\",Math.min(bA,Jr.getFreehand(\"miny\"))),Jr.setFreehand(\"maxy\",Math.max(bA,Jr.getFreehand(\"maxy\")));case\"fhpath\":if(Jr.setEnd(\"x\",yA),Jr.setEnd(\"y\",bA),Jr.getControllPoint2(\"x\")&&Jr.getControllPoint2(\"y\"))for(iA=0;iA<Jr.getStepCount()-1;iA++)if(Jr.setParameter(iA/Jr.getStepCount()),Jr.setNextParameter((iA+1)/Jr.getStepCount()),Jr.setbSpline(getBsplinePoint(Jr.getNextParameter())),Jr.setNextPos({x:Jr.getbSpline(\"x\"),y:Jr.getbSpline(\"y\")}),Jr.setbSpline(getBsplinePoint(Jr.getParameter())),Jr.setSumDistance(Jr.getSumDistance()+Math.sqrt((Jr.getNextPos(\"x\")-Jr.getbSpline(\"x\"))*(Jr.getNextPos(\"x\")-Jr.getbSpline(\"x\"))+(Jr.getNextPos(\"y\")-Jr.getbSpline(\"y\"))*(Jr.getNextPos(\"y\")-Jr.getbSpline(\"y\")))),Jr.getSumDistance()>Jr.getThreSholdDist()){Jr.setSumDistance(Jr.getSumDistance()-Jr.getThreSholdDist());const tA=Jr.getSvgContent().createSVGPoint();tA.x=Jr.getbSpline(\"x\"),tA.y=Jr.getbSpline(\"y\"),mA.points.appendItem(tA)}Jr.setControllPoint2(\"x\",Jr.getControllPoint1(\"x\")),Jr.setControllPoint2(\"y\",Jr.getControllPoint1(\"y\")),Jr.setControllPoint1(\"x\",Jr.getStart(\"x\")),Jr.setControllPoint1(\"y\",Jr.getStart(\"y\")),Jr.setStart({x:Jr.getEnd(\"x\"),y:Jr.getEnd(\"y\")});break;case\"path\":case\"pathedit\":if(BA*=AA,vA*=AA,Jr.getCurConfig().gridSnapping&&(BA=snapToGrid(BA),vA=snapToGrid(vA),Jr.setStartX(snapToGrid(Jr.getStartX())),Jr.setStartY(snapToGrid(Jr.getStartY()))),tA.shiftKey){const{path:tA}=GA;let eA,AA;tA?(eA=tA.dragging?tA.dragging[0]:Jr.getStartX(),AA=tA.dragging?tA.dragging[1]:Jr.getStartY()):(eA=Jr.getStartX(),AA=Jr.getStartY()),sA=snapToAngle(eA,AA,BA,vA),({x:BA,y:vA}=sA)}\"none\"!==Jr.getRubberBox()?.getAttribute(\"display\")&&(yA*=AA,bA*=AA,assignAttributes(Jr.getRubberBox(),{x:Math.min(Jr.getRStartX()*AA,yA),y:Math.min(Jr.getRStartY()*AA,bA),width:Math.abs(yA-Jr.getRStartX()*AA),height:Math.abs(bA-Jr.getRStartY()*AA)})),Jr.pathActions.mouseMove(BA,vA);break;case\"textedit\":BA*=AA,vA*=AA,Jr.textActions.mouseMove(gA,pA);break;case\"rotate\":{dA=getBBox(nA),oA=dA.x+dA.width/2,aA=dA.y+dA.height/2;const AA=getMatrix(nA),rA=transformPoint(oA,aA,AA);if(oA=rA.x,aA=rA.y,hA=(Math.atan2(aA-vA,oA-BA)*(180/Math.PI)-90)%360,Jr.getCurConfig().gridSnapping&&(hA=snapToGrid(hA)),tA.shiftKey){const tA=45;hA=Math.round(hA/tA)*tA}Jr.setRotationAngle(hA<-180?360+hA:hA,!0),Jr.call(\"transition\",eA);break}}Jr.runExtensions(\"mouseMove\",{event:tA,mouse_x:gA,mouse_y:pA,selected:nA})},mouseOutEvent=()=>{const{$id:tA}=Jr;if(\"select\"!==Jr.getCurrentMode()&&Jr.getStarted()){const eA=new Event(\"mouseup\");tA(\"svgcanvas\").dispatchEvent(eA)}},mouseUpEvent=tA=>{if(2===tA.button)return;if(!Jr.getStarted())return;Jr.textActions.init();const eA=Jr.getSelectedElements(),AA=Jr.getZoom(),rA=Jr.getJustSelected();Jr.setJustSelected(null);const nA=transformPoint(tA.clientX,tA.clientY,Jr.getrootSctm()),iA=nA.x*AA,sA=nA.y*AA,oA=iA/AA,aA=sA/AA;let lA=getElement(Jr.getId()),cA=!1;const uA=oA,hA=aA;let dA;switch(Jr.setStarted(!1),Jr.getCurrentMode()){case\"resize\":case\"multiselect\":Jr.getRubberBox()&&(Jr.getRubberBox().setAttribute(\"display\",\"none\"),Jr.setCurBBoxes([])),Jr.setCurrentMode(\"select\");case\"select\":if(eA[0]){if(!eA[1]){const tA=eA[0];switch(tA.tagName){case\"g\":case\"use\":case\"image\":case\"foreignObject\":break;case\"text\":Jr.setCurText(\"font_size\",tA.getAttribute(\"font-size\")),Jr.setCurText(\"font_family\",tA.getAttribute(\"font-family\"));default:Jr.setCurProperties(\"fill\",tA.getAttribute(\"fill\")),Jr.setCurProperties(\"fill_opacity\",tA.getAttribute(\"fill-opacity\")),Jr.setCurProperties(\"stroke\",tA.getAttribute(\"stroke\")),Jr.setCurProperties(\"stroke_opacity\",tA.getAttribute(\"stroke-opacity\")),Jr.setCurProperties(\"stroke_width\",tA.getAttribute(\"stroke-width\")),Jr.setCurProperties(\"stroke_dasharray\",tA.getAttribute(\"stroke-dasharray\")),Jr.setCurProperties(\"stroke_linejoin\",tA.getAttribute(\"stroke-linejoin\")),Jr.setCurProperties(\"stroke_linecap\",tA.getAttribute(\"stroke-linecap\"))}Jr.selectorManager.requestSelector(tA).showGrips(!0)}if(Jr.recalculateAllSelectedDimensions(),uA!==Jr.getRStartX()||hA!==Jr.getRStartY()){const tA=eA.length;for(let AA=0;AA<tA&&eA[AA];++AA)Jr.selectorManager.requestSelector(eA[AA]).resize()}else dA=tA.target,\"path\"!==eA[0].nodeName||eA[1]?tA.shiftKey&&rA!==dA&&Jr.removeFromSelection([dA]):Jr.pathActions.select(eA[0]);const AA=eA[0];AA&&(AA.removeAttribute(\"style\"),walkTree(AA,(tA=>{tA.removeAttribute(\"style\")})))}return;case\"zoom\":{Jr.getRubberBox()?.setAttribute(\"display\",\"none\");const eA=tA.shiftKey?.5:2;return void Jr.call(\"zoomed\",{x:Math.min(Jr.getRStartX(),uA),y:Math.min(Jr.getRStartY(),hA),width:Math.abs(uA-Jr.getRStartX()),height:Math.abs(hA-Jr.getRStartY()),factor:eA})}case\"fhpath\":{Jr.setSumDistance(0),Jr.setControllPoint2(\"x\",0),Jr.setControllPoint2(\"y\",0),Jr.setControllPoint1(\"x\",0),Jr.setControllPoint1(\"y\",0),Jr.setStart({x:0,y:0}),Jr.setEnd(\"x\",0),Jr.setEnd(\"y\",0);const tA=lA.getAttribute(\"points\"),eA=tA.indexOf(\",\");cA=eA>=0?tA.includes(\",\",eA+1):tA.includes(\" \",tA.indexOf(\" \")+1),cA&&(lA=Jr.pathActions.smoothPolylineIntoPath(lA));break}case\"line\":{const tA=lA.getAttribute(\"x1\"),eA=lA.getAttribute(\"y1\"),AA=lA.getAttribute(\"x2\"),rA=lA.getAttribute(\"y2\");cA=tA!==AA||eA!==rA}break;case\"foreignObject\":case\"square\":case\"rect\":case\"image\":{const tA=lA.getAttribute(\"width\"),eA=lA.getAttribute(\"height\");cA=tA||eA||\"image\"===Jr.getCurrentMode()}break;case\"circle\":cA=\"0\"!==lA.getAttribute(\"r\");break;case\"ellipse\":{const tA=Number(lA.getAttribute(\"rx\")),eA=Number(lA.getAttribute(\"ry\"));cA=tA||eA}break;case\"fhellipse\":Jr.getFreehand(\"maxx\")-Jr.getFreehand(\"minx\")>0&&Jr.getFreehand(\"maxy\")-Jr.getFreehand(\"miny\")>0&&(lA=Jr.addSVGElementsFromJson({element:\"ellipse\",curStyles:!0,attr:{cx:(Jr.getFreehand(\"minx\")+Jr.getFreehand(\"maxx\"))/2,cy:(Jr.getFreehand(\"miny\")+Jr.getFreehand(\"maxy\"))/2,rx:(Jr.getFreehand(\"maxx\")-Jr.getFreehand(\"minx\"))/2,ry:(Jr.getFreehand(\"maxy\")-Jr.getFreehand(\"miny\"))/2,id:Jr.getId()}}),Jr.call(\"changed\",[lA]),cA=!0);break;case\"fhrect\":Jr.getFreehand(\"maxx\")-Jr.getFreehand(\"minx\")>0&&Jr.getFreehand(\"maxy\")-Jr.getFreehand(\"miny\")>0&&(lA=Jr.addSVGElementsFromJson({element:\"rect\",curStyles:!0,attr:{x:Jr.getFreehand(\"minx\"),y:Jr.getFreehand(\"miny\"),width:Jr.getFreehand(\"maxx\")-Jr.getFreehand(\"minx\"),height:Jr.getFreehand(\"maxy\")-Jr.getFreehand(\"miny\"),id:Jr.getId()}}),Jr.call(\"changed\",[lA]),cA=!0);break;case\"text\":cA=!0,Jr.selectOnly([lA]),Jr.textActions.start(lA);break;case\"path\":{lA=null,Jr.setStarted(!0);const eA=Jr.pathActions.mouseUp(tA,lA,iA,sA);({element:lA}=eA),({keep:cA}=eA);break}case\"pathedit\":cA=!0,lA=null,Jr.pathActions.mouseUp(tA);break;case\"textedit\":cA=!1,lA=null,Jr.textActions.mouseUp(tA,iA,sA);break;case\"rotate\":{cA=!0,lA=null,Jr.setCurrentMode(\"select\");const tA=Jr.undoMgr.finishUndoableChange();tA.isEmpty()||Jr.addCommandToHistory(tA),Jr.recalculateAllSelectedDimensions(),Jr.call(\"changed\",eA);break}}if(Jr.runExtensions(\"mouseUp\",{event:tA,mouse_x:iA,mouse_y:sA},!0).forEach((tA=>{tA&&(cA=tA.keep||cA,({element:lA}=tA),Jr.setStarted(tA.started||Jr.getStarted()))})),!cA&&lA){for(Jr.getCurrentDrawing().releaseId(Jr.getId()),lA.remove(),lA=null,dA=tA.target;\"g\"===dA?.parentNode?.parentNode?.tagName;)dA=dA.parentNode;\"path\"===Jr.getCurrentMode()&&Jr.getDrawnPath()||!dA||\"selectorParentGroup\"===dA.parentNode?.id||\"svgcanvas\"===dA.id||\"svgroot\"===dA.id||(Jr.setMode(\"select\"),Jr.selectOnly([dA],!0))}else if(lA){Jr.addedNew=!0;let tA,eA=.2;const AA=Jr.getStyle(),rA=Jr.getOpacAni();if(rA.beginElement&&Number.parseFloat(lA.getAttribute(\"opacity\"))!==AA.opacity){tA=rA.cloneNode(!0),tA.setAttribute(\"to\",AA.opacity),tA.setAttribute(\"dur\",eA),lA.appendChild(tA);try{tA.beginElement()}catch(tA){}}else eA=0;setTimeout((()=>{if(tA&&tA.remove(),lA.setAttribute(\"opacity\",AA.opacity),lA.setAttribute(\"style\",\"pointer-events:inherit\"),cleanupElement(lA),\"path\"===Jr.getCurrentMode())Jr.pathActions.toEditMode(lA);else if(Jr.getCurConfig().selectNew){-1!==[\"circle\",\"ellipse\",\"square\",\"rect\",\"fhpath\",\"line\",\"fhellipse\",\"fhrect\",\"star\",\"polygon\"].indexOf(Jr.getCurrentMode())&&Jr.setMode(\"select\"),Jr.selectOnly([lA],!0)}Jr.addCommandToHistory(new Yr(lA)),Jr.call(\"changed\",[lA])}),1e3*eA)}Jr.setStartTransform(null)},dblClickEvent=tA=>{const eA=Jr.getSelectedElements(),AA=tA.target.parentNode;let rA=Jr.getMouseTarget(tA);const{tagName:nA}=rA;if(\"text\"===nA&&\"textedit\"!==Jr.getCurrentMode()){const eA=transformPoint(tA.clientX,tA.clientY,Jr.getrootSctm());Jr.textActions.select(rA,eA.x,eA.y)}AA!==Jr.getCurrentGroup()&&(\"g\"!==nA&&\"a\"!==nA||!getRotationAngle(rA)||(Jr.pushGroupProperties(rA),rA=eA[0],Jr.clearSelection(!0)),Jr.getCurrentGroup()&&leaveContext(),\"g\"!==AA.tagName&&\"a\"!==AA.tagName||AA===Jr.getCurrentDrawing().getCurrentLayer()||rA===Jr.selectorManager.selectorParentGroup||setContext(rA))},mouseDownEvent=tA=>{const eA=Jr.getDataStorage(),AA=Jr.getSelectedElements(),rA=Jr.getZoom(),nA=Jr.getStyle(),iA=Jr.getSvgRoot(),{$id:sA}=Jr;if(Jr.spaceKey||1===tA.button)return;const oA=2===tA.button;tA.altKey&&Jr.cloneSelectedElements(0,0),Jr.setRootSctm(sA(\"svgcontent\").querySelector(\"g\").getScreenCTM().inverse());const aA=transformPoint(tA.clientX,tA.clientY,Jr.getrootSctm()),lA=aA.x*rA,cA=aA.y*rA;if(tA.preventDefault(),oA){if(\"path\"===Jr.getCurrentMode())return;Jr.setCurrentMode(\"select\"),Jr.setLastClickPoint(aA)}let uA=lA/rA,hA=cA/rA,dA=Jr.getMouseTarget(tA);\"a\"===dA.tagName&&1===dA.childNodes.length&&(dA=dA.firstChild);const fA=uA;Jr.setStartX(uA),Jr.setRStartX(uA);const gA=hA;if(Jr.setStartY(hA),Jr.setRStartY(hA),Jr.getCurConfig().gridSnapping&&(uA=snapToGrid(uA),hA=snapToGrid(hA),Jr.setStartX(snapToGrid(Jr.getStartX())),Jr.setStartY(snapToGrid(Jr.getStartY()))),dA===Jr.selectorManager.selectorParentGroup&&AA[0]){const rA=tA.target,nA=eA.get(rA,\"type\");\"rotate\"===nA?Jr.setCurrentMode(\"rotate\"):\"resize\"===nA&&(Jr.setCurrentMode(\"resize\"),Jr.setCurrentResizeMode(eA.get(rA,\"dir\"))),dA=AA[0]}Jr.setStartTransform(dA.getAttribute(\"transform\"));const pA=dA.transform.baseVal;if(pA.numberOfItems>1){const tA=pA.getItem(0);pA.removeItem(0),pA.consolidate(),pA.insertItemBefore(tA,0)}switch(Jr.getCurrentMode()){case\"select\":if(Jr.setStarted(!0),Jr.setCurrentResizeMode(\"none\"),oA&&Jr.setStarted(!1),dA!==iA){if(AA.includes(dA)||(tA.shiftKey||Jr.clearSelection(!0),Jr.addToSelection([dA]),Jr.setJustSelected(dA),Jr.pathActions.clear()),!oA)for(const tA of AA){if(!tA)continue;const eA=tA.transform?.baseVal;eA.numberOfItems?eA.insertItemBefore(iA.createSVGTransform(),0):eA.appendItem(iA.createSVGTransform())}}else oA||(Jr.clearSelection(),Jr.setCurrentMode(\"multiselect\"),Jr.getRubberBox()||Jr.setRubberBox(Jr.selectorManager.getRubberBandBox()),Jr.setRStartX(Jr.getRStartX()*rA),Jr.setRStartY(Jr.getRStartY()*rA),assignAttributes(Jr.getRubberBox(),{x:Jr.getRStartX(),y:Jr.getRStartY(),width:0,height:0,display:\"inline\"}));break;case\"zoom\":Jr.setStarted(!0),Jr.getRubberBox()||Jr.setRubberBox(Jr.selectorManager.getRubberBandBox()),assignAttributes(Jr.getRubberBox(),{x:fA*rA,y:fA*rA,width:0,height:0,display:\"inline\"});break;case\"resize\":{Jr.setStarted(!0),Jr.setStartX(uA),Jr.setStartY(hA),Jr.setInitBbox(getBBox(sA(\"selectedBox0\")));const tA={};for(const[eA,AA]of Object.entries(Jr.getInitBbox()))tA[eA]=AA/rA;Jr.setInitBbox(tA);const eA=getRotationAngle(dA)?1:0;hasMatrixTransform(pA)?(pA.insertItemBefore(iA.createSVGTransform(),eA),pA.insertItemBefore(iA.createSVGTransform(),eA),pA.insertItemBefore(iA.createSVGTransform(),eA)):(pA.appendItem(iA.createSVGTransform()),pA.appendItem(iA.createSVGTransform()),pA.appendItem(iA.createSVGTransform()));break}case\"fhellipse\":case\"fhrect\":case\"fhpath\":Jr.setStart({x:fA,y:gA}),Jr.setControllPoint1(\"x\",0),Jr.setControllPoint1(\"y\",0),Jr.setControllPoint2(\"x\",0),Jr.setControllPoint2(\"y\",0),Jr.setStarted(!0),Jr.setDAttr(fA+\",\"+gA+\" \"),Jr.addSVGElementsFromJson({element:\"polyline\",curStyles:!0,attr:{points:Jr.getDAttr(),id:Jr.getNextId(),fill:\"none\",opacity:nA.opacity/2,\"stroke-linecap\":\"round\",style:\"pointer-events:none\"}}),Jr.setFreehand(\"minx\",fA),Jr.setFreehand(\"maxx\",fA),Jr.setFreehand(\"miny\",gA),Jr.setFreehand(\"maxy\",gA);break;case\"image\":{Jr.setStarted(!0);const tA=Jr.addSVGElementsFromJson({element:\"image\",attr:{x:uA,y:hA,width:0,height:0,id:Jr.getNextId(),opacity:nA.opacity/2,style:\"pointer-events:inherit\"}});setHref(tA,Jr.getLastGoodImgUrl()),preventClickDefault(tA);break}case\"square\":case\"rect\":Jr.setStarted(!0),Jr.setStartX(uA),Jr.setStartY(hA),Jr.addSVGElementsFromJson({element:\"rect\",curStyles:!0,attr:{x:uA,y:hA,width:0,height:0,id:Jr.getNextId(),opacity:nA.opacity/2}});break;case\"line\":{Jr.setStarted(!0);const tA=0===Number(nA.stroke_width)?1:nA.stroke_width;Jr.addSVGElementsFromJson({element:\"line\",curStyles:!0,attr:{x1:uA,y1:hA,x2:uA,y2:hA,id:Jr.getNextId(),stroke:nA.stroke,\"stroke-width\":tA,\"stroke-dasharray\":nA.stroke_dasharray,\"stroke-linejoin\":nA.stroke_linejoin,\"stroke-linecap\":nA.stroke_linecap,\"stroke-opacity\":nA.stroke_opacity,fill:\"none\",opacity:nA.opacity/2,style:\"pointer-events:none\"}});break}case\"circle\":Jr.setStarted(!0),Jr.addSVGElementsFromJson({element:\"circle\",curStyles:!0,attr:{cx:uA,cy:hA,r:0,id:Jr.getNextId(),opacity:nA.opacity/2}});break;case\"ellipse\":Jr.setStarted(!0),Jr.addSVGElementsFromJson({element:\"ellipse\",curStyles:!0,attr:{cx:uA,cy:hA,rx:0,ry:0,id:Jr.getNextId(),opacity:nA.opacity/2}});break;case\"text\":Jr.setStarted(!0),Jr.addSVGElementsFromJson({element:\"text\",curStyles:!0,attr:{x:uA,y:hA,id:Jr.getNextId(),fill:Jr.getCurText(\"fill\"),\"stroke-width\":Jr.getCurText(\"stroke_width\"),\"font-size\":Jr.getCurText(\"font_size\"),\"font-family\":Jr.getCurText(\"font_family\"),\"text-anchor\":\"middle\",\"xml:space\":\"preserve\",opacity:nA.opacity}});break;case\"path\":case\"pathedit\":Jr.setStartX(Jr.getStartX()*rA),Jr.setStartY(Jr.getStartY()*rA),Jr.pathActions.mouseDown(tA,dA,Jr.getStartX(),Jr.getStartY()),Jr.setStarted(!0);break;case\"textedit\":Jr.setStartX(Jr.getStartX()*rA),Jr.setStartY(Jr.getStartY()*rA),Jr.textActions.mouseDown(tA,dA,Jr.getStartX(),Jr.getStartY()),Jr.setStarted(!0);break;case\"rotate\":Jr.setStarted(!0),Jr.undoMgr.beginUndoableChange(\"transform\",AA)}Jr.runExtensions(\"mouseDown\",{event:tA,start_x:Jr.getStartX(),start_y:Jr.getStartY(),selectedElements:AA},!0).forEach((tA=>{tA?.started&&Jr.setStarted(!0)}))},DOMMouseScrollEvent=tA=>{const eA=Jr.getZoom(),{$id:AA}=Jr;if(!tA.shiftKey)return;tA.preventDefault(),Jr.setRootSctm(AA(\"svgcontent\").querySelector(\"g\").getScreenCTM().inverse());const rA=document.getElementById(\"workarea\"),nA=Jr.getCurConfig().showRulers?16:0,iA=transformPoint(tA.clientX,tA.clientY,Jr.getrootSctm()),sA=parseFloat(getComputedStyle(rA,null).width.replace(\"px\",\"\")),oA=parseFloat(getComputedStyle(rA,null).height.replace(\"px\",\"\")),aA=sA-15-nA,lA=oA-15-nA,cA=aA*Jr.getrootSctm().a,uA=lA*Jr.getrootSctm().d,hA=function findPos(tA){let eA=0,AA=0;if(tA.offsetParent){do{eA+=tA.offsetLeft,AA+=tA.offsetTop}while(tA=tA.offsetParent);return{left:eA,top:AA}}return{left:eA,top:AA}}(rA),dA=hA.left+nA,fA=hA.top+nA,gA=tA.wheelDelta?tA.wheelDelta:tA.detail?-tA.detail:0;if(!gA)return;let pA,mA,wA=Math.max(3/4,Math.min(4/3,gA));wA>1?(pA=Math.ceil(aA/cA*wA*100)/100,mA=Math.ceil(lA/uA*wA*100)/100):(pA=Math.floor(aA/cA*wA*100)/100,mA=Math.floor(lA/uA*wA*100)/100);let yA=Math.min(pA,mA);if(yA=Math.min(10,Math.max(.01,yA)),yA===eA)return;wA=yA/eA;const BA=transformPoint(dA,fA,Jr.getrootSctm()),bA={x:(iA.x-(iA.x-BA.x)/wA)*yA-nA+sA/2,y:(iA.y-(iA.y-BA.y)/wA)*yA-nA+oA/2};Jr.setZoom(yA),document.getElementById(\"zoom\").value=(100*yA).toFixed(1),Jr.call(\"updateCanvas\",{center:!1,newCtr:bA}),Jr.call(\"zoomDone\")};\n/**\n * Tools for SVG handle on JSON format.\n * @module svgcanvas\n * @license MIT\n *\n * @copyright 2010 Alexis Deveria, 2010 Jeff Schiller\n */\nlet Zr=null,$r=null;const getJsonFromSvgElements=tA=>{if(3===tA.nodeType)return tA.nodeValue;const eA={element:tA.tagName,attr:{},children:[]};for(let AA,rA=0;AA=tA.attributes[rA];rA++)eA.attr[AA.name]=AA.value;for(let AA,rA=0;AA=tA.childNodes[rA];rA++)eA.children[rA]=getJsonFromSvgElements(AA);return eA},addSVGElementsFromJson=tA=>{if(\"string\"==typeof tA)return $r.createTextNode(tA);let eA=getElement(tA.attr.id);const AA=Zr.getDrawing().getCurrentLayer();if(eA&&tA.element!==eA.tagName&&(eA.remove(),eA=null),!eA){const rA=tA.namespace||sA.SVG;eA=$r.createElementNS(rA,tA.element),AA&&(Zr.getCurrentGroup()||AA).append(eA)}const rA=Zr.getCurShape();return tA.curStyles&&assignAttributes(eA,{fill:rA.fill,stroke:rA.stroke,\"stroke-width\":rA.strokeWidth,\"stroke-dasharray\":rA.stroke_dasharray,\"stroke-linejoin\":rA.stroke_linejoin,\"stroke-linecap\":rA.stroke_linecap,\"stroke-opacity\":rA.stroke_opacity,\"fill-opacity\":rA.fill_opacity,opacity:rA.opacity/2,style:\"pointer-events:inherit\"}),assignAttributes(eA,tA.attr),cleanupElement(eA),tA.children&&tA.children.forEach((tA=>{eA.append(addSVGElementsFromJson(tA))})),eA};\n/**\n * @module elem-get-set get and set methods.\n * @license MIT\n * @copyright 2011 Jeff Schiller\n */\nlet tn=null;const getResolutionMethod=()=>{const tA=tn.getZoom();return{w:tn.getSvgContent().getAttribute(\"width\")/tA,h:tn.getSvgContent().getAttribute(\"height\")/tA,zoom:tA}},getTitleMethod=tA=>{const eA=tn.getSelectedElements(),AA=tn.getDataStorage();if(!(tA=tA||eA[0]))return;AA.has(tA,\"gsvg\")?tA=AA.get(tA,\"gsvg\"):AA.has(tA,\"symbol\")&&(tA=AA.get(tA,\"symbol\"));const rA=tA.childNodes;for(const tA of rA)if(\"title\"===tA.nodeName)return tA.textContent;return\"\"},setGroupTitleMethod=tA=>{const{InsertElementCommand:eA,RemoveElementCommand:AA,ChangeElementCommand:rA,BatchCommand:nA}=tn.history,iA=tn.getSelectedElements(),oA=tn.getDataStorage();let aA=iA[0];oA.has(aA,\"gsvg\")&&(aA=oA.get(aA,\"gsvg\"));const lA=aA.querySelectorAll(\"title\"),cA=new nA(\"Set Label\");let uA;if(0===tA.length){const tA=lA.nextSibling;cA.addSubCommand(new AA(lA[0],tA,aA)),lA.remove()}else lA.length?(uA=lA[0],cA.addSubCommand(new rA(uA,{\"#text\":uA.textContent})),uA.textContent=tA):(uA=tn.getDOMDocument().createElementNS(sA.SVG,\"title\"),uA.textContent=tA,aA.insertBefore(uA,aA.firstChild),cA.addSubCommand(new eA(uA)));tn.addCommandToHistory(cA)},setDocumentTitleMethod=tA=>{const{ChangeElementCommand:eA,BatchCommand:AA}=tn.history,rA=tn.getSvgContent().childNodes;let nA=!1,iA=\"\";const oA=new AA(\"Change Image Title\");for(const tA of rA)if(\"title\"===tA.nodeName){nA=tA,iA=nA.textContent;break}nA||(nA=tn.getDOMDocument().createElementNS(sA.SVG,\"title\"),tn.getSvgContent().insertBefore(nA,tn.getSvgContent().firstChild)),tA.length?nA.textContent=tA:nA.remove(),oA.addSubCommand(new eA(nA,{\"#text\":iA})),tn.addCommandToHistory(oA)},setResolutionMethod=(tA,eA)=>{const{ChangeElementCommand:AA,BatchCommand:rA}=tn.history,nA=tn.getZoom(),iA=tn.getResolution(),{w:sA,h:oA}=iA;let aA;if(\"fit\"===tA){const AA=getStrokedBBoxDefaultVisible();if(!AA)return!1;{aA=new rA(\"Fit Canvas to Content\");const nA=getVisibleElements();tn.addToSelection(nA);const iA=[],sA=[];nA.forEach(((tA,eA)=>{iA.push(-1*AA.x),sA.push(-1*AA.y)}));const oA=tn.moveSelectedElements(iA,sA,!0);aA.addSubCommand(oA),tn.clearSelection(),tA=Math.round(AA.width),eA=Math.round(AA.height)}}return tA===sA&&eA===oA||(aA||(aA=new rA(\"Change Image Dimensions\")),tA=convertToNum(\"width\",tA),eA=convertToNum(\"height\",eA),tn.getSvgContent().setAttribute(\"width\",tA),tn.getSvgContent().setAttribute(\"height\",eA),tn.contentW=tA,tn.contentH=eA,aA.addSubCommand(new AA(tn.getSvgContent(),{width:sA,height:oA})),tn.getSvgContent().setAttribute(\"viewBox\",[0,0,tA/nA,eA/nA].join(\" \")),aA.addSubCommand(new AA(tn.getSvgContent(),{viewBox:[\"0 0\",sA,oA].join(\" \")})),tn.addCommandToHistory(aA),tn.call(\"changed\",[tn.getSvgContent()])),!0},getEditorNSMethod=tA=>(tA&&tn.getSvgContent().setAttribute(\"xmlns:se\",sA.SE),sA.SE),setBBoxZoomMethod=(tA,eA,AA)=>{const rA=tn.getZoom(),nA=tn.getSelectedElements();let iA,sA=.85;const calcZoom=tA=>{if(!tA)return!1;const rA=Math.round(eA/tA.width*100*sA)/100,nA=Math.round(AA/tA.height*100*sA)/100,iA=Math.min(rA,nA);return tn.setZoom(iA),{zoom:iA,bbox:tA}};if(\"object\"==typeof tA){if(iA=tA,0===iA.width||0===iA.height){const tA=iA.zoom?iA.zoom:rA*iA.factor;return tn.setZoom(tA),{zoom:rA,bbox:iA}}return calcZoom(iA)}switch(tA){case\"selection\":{if(!nA[0])return;const tA=nA.map(((tA,eA)=>{if(tA)return tA}));iA=getStrokedBBoxDefaultVisible(tA);break}case\"canvas\":{const tA=tn.getResolution();sA=.95,iA={width:tA.w,height:tA.h,x:0,y:0};break}case\"content\":iA=getStrokedBBoxDefaultVisible();break;case\"layer\":iA=getStrokedBBoxDefaultVisible(getVisibleElements(tn.getCurrentDrawing().getCurrentLayer()));break;default:return}return calcZoom(iA)},setZoomMethod=tA=>{const eA=tn.getSelectedElements(),AA=tn.getResolution();tn.getSvgContent().setAttribute(\"viewBox\",\"0 0 \"+AA.w/tA+\" \"+AA.h/tA),tn.setZoom(tA),eA.forEach((tA=>{tA&&tn.selectorManager.requestSelector(tA).resize()})),tn.pathActions.zoomChange(),tn.runExtensions(\"zoomChanged\",tA)},setColorMethod=(tA,eA,AA)=>{const rA=tn.getSelectedElements();tn.setCurShape(tA,eA),tn.setCurProperties(tA+\"_paint\",{type:\"solidColor\"});const nA=[],addNonG=tA=>{\"g\"!==tA.nodeName&&nA.push(tA)};let iA=rA.length;for(;iA--;){const eA=rA[iA];eA&&(\"g\"===eA.tagName?walkTree(eA,addNonG):\"fill\"===tA?\"polyline\"!==eA.tagName&&\"line\"!==eA.tagName&&nA.push(eA):nA.push(eA))}nA.length>0&&(AA?tn.changeSelectedAttributeNoUndo(tA,eA,nA):(tn.changeSelectedAttribute(tA,eA,nA),tn.call(\"changed\",nA)))},setGradientMethod=tA=>{if(!tn.getCurProperties(tA+\"_paint\")||\"solidColor\"===tn.getCurProperties(tA+\"_paint\").type)return;let eA=tn[tA+\"Grad\"];const AA=findDuplicateGradient(eA),rA=findDefs();AA?eA=AA:(eA=tn.getDOMDocument().importNode(eA,!0),rA.append(eA),eA.id=tn.getNextId()),tn.setColor(tA,\"url(#\"+eA.id+\")\")},findDuplicateGradient=tA=>{const eA=findDefs().querySelectorAll(\"linearGradient, radialGradient\");let AA=eA.length;const rA=[\"r\",\"cx\",\"cy\",\"fx\",\"fy\"];for(;AA--;){const nA=eA[AA];if(\"linearGradient\"===tA.tagName){if(tA.getAttribute(\"x1\")!==nA.getAttribute(\"x1\")||tA.getAttribute(\"y1\")!==nA.getAttribute(\"y1\")||tA.getAttribute(\"x2\")!==nA.getAttribute(\"x2\")||tA.getAttribute(\"y2\")!==nA.getAttribute(\"y2\"))continue}else{const eA={r:Number(tA.getAttribute(\"r\")),cx:Number(tA.getAttribute(\"cx\")),cy:Number(tA.getAttribute(\"cy\")),fx:Number(tA.getAttribute(\"fx\")),fy:Number(tA.getAttribute(\"fy\"))},AA={r:Number(nA.getAttribute(\"r\")),cx:Number(nA.getAttribute(\"cx\")),cy:Number(nA.getAttribute(\"cy\")),fx:Number(nA.getAttribute(\"fx\")),fy:Number(nA.getAttribute(\"fy\"))};let iA=!1;if(rA.forEach((tA=>{eA[tA]!==AA[tA]&&(iA=!0)})),iA)continue}const iA=tA.getElementsByTagNameNS(sA.SVG,\"stop\"),oA=nA.getElementsByTagNameNS(sA.SVG,\"stop\");if(iA.length!==oA.length)continue;let aA=iA.length;for(;aA--;){const tA=iA[aA],eA=oA[aA];if(tA.getAttribute(\"offset\")!==eA.getAttribute(\"offset\")||tA.getAttribute(\"stop-opacity\")!==eA.getAttribute(\"stop-opacity\")||tA.getAttribute(\"stop-color\")!==eA.getAttribute(\"stop-color\"))break}if(-1===aA)return nA}return null},setPaintMethod=(tA,eA)=>{const AA=new Paint(eA);switch(tn.setPaintOpacity(tA,AA.alpha/100,!0),tn.setCurProperties(tA+\"_paint\",AA),AA.type){case\"solidColor\":tn.setColor(tA,\"none\"!==AA.solidColor?\"#\"+AA.solidColor:\"none\");break;case\"linearGradient\":case\"radialGradient\":tn.setCanvas(tA+\"Grad\",AA[AA.type]),tn.setGradient(tA)}},setStrokeWidthMethod=tA=>{const eA=tn.getSelectedElements();if(0===tA&&[\"line\",\"path\"].includes(tn.getMode()))return void tn.setStrokeWidth(1);tn.setCurProperties(\"stroke_width\",tA);const AA=[],addNonG=tA=>{\"g\"!==tA.nodeName&&AA.push(tA)};let rA=eA.length;for(;rA--;){const tA=eA[rA];tA&&(\"g\"===tA.tagName?walkTree(tA,addNonG):AA.push(tA))}AA.length>0&&(tn.changeSelectedAttribute(\"stroke-width\",tA,AA),tn.call(\"changed\",eA))},setStrokeAttrMethod=(tA,eA)=>{const AA=tn.getSelectedElements();tn.setCurShape(tA.replace(\"-\",\"_\"),eA);const rA=[];let nA=AA.length;for(;nA--;){const tA=AA[nA];tA&&(\"g\"===tA.tagName?walkTree(tA,(tA=>{\"g\"!==tA.nodeName&&rA.push(tA)})):rA.push(tA))}rA.length>0&&(tn.changeSelectedAttribute(tA,eA,rA),tn.call(\"changed\",AA))},getBoldMethod=()=>{const tA=tn.getSelectedElements(),eA=tA[0];return\"text\"===eA?.tagName&&!tA[1]&&\"bold\"===eA.getAttribute(\"font-weight\")},setBoldMethod=tA=>{const eA=tn.getSelectedElements();\"text\"!==eA[0]?.tagName||eA[1]||tn.changeSelectedAttribute(\"font-weight\",tA?\"bold\":\"normal\"),eA[0].textContent||tn.textActions.setCursor()},hasTextDecorationMethod=tA=>{const eA=tn.getSelectedElements(),AA=eA[0];if(\"text\"===AA?.tagName&&!eA[1]){return(AA.getAttribute(\"text-decoration\")||\"\").includes(tA)}return!1},addTextDecorationMethod=tA=>{const eA=tn.getSelectedElements(),AA=eA[0];if(\"text\"===AA?.tagName&&!eA[1]){const eA=AA.getAttribute(\"text-decoration\")||\"\";tn.changeSelectedAttribute(\"text-decoration\",(eA+\" \"+tA).trim())}eA.length>0&&!eA[0].textContent&&tn.textActions.setCursor()},removeTextDecorationMethod=tA=>{const eA=tn.getSelectedElements(),AA=eA[0];if(\"text\"===AA?.tagName&&!eA[1]){const eA=AA.getAttribute(\"text-decoration\")||\"\";tn.changeSelectedAttribute(\"text-decoration\",eA.replace(tA,\"\").trim())}eA.length>0&&!eA[0].textContent&&tn.textActions.setCursor()},getItalicMethod=()=>{const tA=tn.getSelectedElements(),eA=tA[0];return\"text\"===eA?.tagName&&!tA[1]&&\"italic\"===eA.getAttribute(\"font-style\")},setItalicMethod=tA=>{const eA=tn.getSelectedElements();\"text\"!==eA[0]?.tagName||eA[1]||tn.changeSelectedAttribute(\"font-style\",tA?\"italic\":\"normal\"),eA[0].textContent||tn.textActions.setCursor()},setTextAnchorMethod=tA=>{const eA=tn.getSelectedElements();\"text\"!==eA[0]?.tagName||eA[1]||tn.changeSelectedAttribute(\"text-anchor\",tA),eA.length>0&&!eA[0].textContent&&tn.textActions.setCursor()},setLetterSpacingMethod=tA=>{const eA=tn.getSelectedElements();\"text\"!==eA[0]?.tagName||eA[1]||tn.changeSelectedAttribute(\"letter-spacing\",tA),eA.length>0&&!eA[0].textContent&&tn.textActions.setCursor()},setWordSpacingMethod=tA=>{const eA=tn.getSelectedElements();\"text\"!==eA[0]?.tagName||eA[1]||tn.changeSelectedAttribute(\"word-spacing\",tA),eA.length>0&&!eA[0].textContent&&tn.textActions.setCursor()},setTextLengthMethod=tA=>{const eA=tn.getSelectedElements();\"text\"!==eA[0]?.tagName||eA[1]||tn.changeSelectedAttribute(\"textLength\",tA),eA.length>0&&!eA[0].textContent&&tn.textActions.setCursor()},setLengthAdjustMethod=tA=>{const eA=tn.getSelectedElements();\"text\"!==eA[0]?.tagName||eA[1]||tn.changeSelectedAttribute(\"lengthAdjust\",tA),eA.length>0&&!eA[0].textContent&&tn.textActions.setCursor()},getFontFamilyMethod=()=>tn.getCurText(\"font_family\"),setFontFamilyMethod=tA=>{const eA=tn.getSelectedElements();tn.setCurText(\"font_family\",tA),tn.changeSelectedAttribute(\"font-family\",tA),eA[0]?.textContent||tn.textActions.setCursor()},setFontColorMethod=tA=>{tn.setCurText(\"fill\",tA),tn.changeSelectedAttribute(\"fill\",tA)},getFontColorMethod=()=>tn.getCurText(\"fill\"),getFontSizeMethod=()=>tn.getCurText(\"font_size\"),setFontSizeMethod=tA=>{const eA=tn.getSelectedElements();tn.setCurText(\"font_size\",tA),tn.changeSelectedAttribute(\"font-size\",tA),eA[0]?.textContent||tn.textActions.setCursor()},getTextMethod=()=>{const tA=tn.getSelectedElements()[0];return tA?tA.textContent:\"\"},setTextContentMethod=tA=>{tn.changeSelectedAttribute(\"#text\",tA),tn.textActions.init(tA),tn.textActions.setCursor()},setImageURLMethod=tA=>{const{ChangeElementCommand:eA,BatchCommand:AA}=tn.history,rA=tn.getSelectedElements()[0];if(!rA)return;const nA=rA.getAttribute(\"width\"),iA=rA.getAttribute(\"height\"),sA=!nA||!iA,oA=getHref(rA);if(oA===tA&&!sA)return;const aA=new AA(\"Change Image URL\");setHref(rA,tA),aA.addSubCommand(new eA(rA,{\"#href\":oA}));const lA=new Image;lA.onload=function(){const tA={width:rA.getAttribute(\"width\"),height:rA.getAttribute(\"height\")};rA.setAttribute(\"width\",this.width),rA.setAttribute(\"height\",this.height),tn.selectorManager.requestSelector(rA).resize(),aA.addSubCommand(new eA(rA,tA)),tn.addCommandToHistory(aA),tn.call(\"changed\",[rA])},lA.src=tA},setLinkURLMethod=tA=>{const{ChangeElementCommand:eA,BatchCommand:AA}=tn.history;let rA=tn.getSelectedElements()[0];if(!rA)return;if(\"a\"!==rA.tagName){const tA=getParents(rA.parentNode,\"a\");if(!tA?.length)return;rA=tA[0]}const nA=getHref(rA);if(nA===tA)return;const iA=new AA(\"Change Link URL\");setHref(rA,tA),iA.addSubCommand(new eA(rA,{\"#href\":nA})),tn.addCommandToHistory(iA)},setRectRadiusMethod=tA=>{const{ChangeElementCommand:eA}=tn.history,AA=tn.getSelectedElements()[0];if(\"rect\"===AA?.tagName){const rA=Number(AA.getAttribute(\"rx\"));rA!==tA&&(AA.setAttribute(\"rx\",tA),AA.setAttribute(\"ry\",tA),tn.addCommandToHistory(new eA(AA,{rx:rA,ry:rA},\"Radius\")),tn.call(\"changed\",[AA]))}},makeHyperlinkMethod=tA=>{tn.groupSelectedElements(\"a\",tA)},removeHyperlinkMethod=()=>{tn.ungroupSelectedElement()},setSegTypeMethod=tA=>{tn.pathActions.setSegType(tA)},setBackgroundMethod=(tA,eA)=>{const AA=getElement(\"canvasBackground\"),rA=AA.querySelector(\"rect\");let nA=getElement(\"background_image\"),iA=getElement(\"background_pattern\");if(rA.setAttribute(\"fill\",\"chessboard\"===tA?\"#fff\":tA),\"chessboard\"===tA){if(!iA){iA=tn.getDOMDocument().createElementNS(sA.SVG,\"foreignObject\"),tn.assignAttributes(iA,{id:\"background_pattern\",width:\"100%\",height:\"100%\",preserveAspectRatio:\"xMinYMin\",style:\"pointer-events:none\"});const tA=document.createElement(\"div\");tn.assignAttributes(tA,{style:\"pointer-events:none;width:100%;height:100%;background-image:url(data:image/gif;base64,R0lGODlhEAAQAIAAAP///9bW1iH5BAAAAAAALAAAAAAQABAAAAIfjG+gq4jM3IFLJgpswNly/XkcBpIiVaInlLJr9FZWAQA7);\"}),iA.append(tA),AA.append(iA)}}else iA&&iA.remove();eA?(nA||(nA=tn.getDOMDocument().createElementNS(sA.SVG,\"image\"),tn.assignAttributes(nA,{id:\"background_image\",width:\"100%\",height:\"100%\",preserveAspectRatio:\"xMinYMin\",style:\"pointer-events:none\"})),setHref(nA,eA),AA.append(nA)):nA&&nA.remove()},en=[0,\"z\",\"M\",\"m\",\"L\",\"l\",\"C\",\"c\",\"Q\",\"q\",\"A\",\"a\",\"H\",\"h\",\"V\",\"v\",\"S\",\"s\",\"T\",\"t\"];let An=null;const remapElement=(tA,eA,AA)=>{const remap=(tA,eA)=>transformPoint(tA,eA,AA),scalew=tA=>AA.a*tA,scaleh=tA=>AA.d*tA,rA=An.getGridSnapping()&&\"svg\"===tA.parentNode.parentNode.localName,finishUp=()=>{rA&&Object.entries(eA).forEach((([tA,AA])=>{eA[tA]=snapToGrid(AA)})),assignAttributes(tA,eA,0,!0)},nA=getBBox(tA);[\"fill\",\"stroke\"].forEach((eA=>{const rA=tA.getAttribute(eA);if(rA?.startsWith(\"url(\")&&(AA.a<0||AA.d<0)){const nA=getRefElem(rA).cloneNode(!0);if(AA.a<0){const tA=nA.getAttribute(\"x1\"),eA=nA.getAttribute(\"x2\");nA.setAttribute(\"x1\",-(tA-1)),nA.setAttribute(\"x2\",-(eA-1))}if(AA.d<0){const tA=nA.getAttribute(\"y1\"),eA=nA.getAttribute(\"y2\");nA.setAttribute(\"y1\",-(tA-1)),nA.setAttribute(\"y2\",-(eA-1))}nA.id=An.getCurrentDrawing().getNextId(),findDefs().append(nA),tA.setAttribute(eA,\"url(#\"+nA.id+\")\")}}));const iA=tA.tagName;if(\"g\"===iA||\"text\"===iA||\"tspan\"===iA||\"use\"===iA)if(1!==AA.a||0!==AA.b||0!==AA.c||1!==AA.d||0===AA.e&&0===AA.f){const eA=tA.transform.baseVal,rA=An.getSvgRoot().createSVGTransform();rA.setMatrix(matrixMultiply(transformListToTransform(eA).matrix,AA)),eA.clear(),eA.appendItem(rA)}else{const rA=transformListToTransform(tA).matrix,nA=matrixMultiply(rA.inverse(),AA,rA);eA.x=Number.parseFloat(eA.x)+nA.e,eA.y=Number.parseFloat(eA.y)+nA.f}switch(iA){case\"foreignObject\":case\"rect\":case\"image\":if(\"image\"===iA&&(AA.a<0||AA.d<0)){const eA=tA.transform.baseVal,rA=An.getSvgRoot().createSVGTransform();rA.setMatrix(matrixMultiply(transformListToTransform(eA).matrix,AA)),eA.clear(),eA.appendItem(rA)}else{const tA=remap(eA.x,eA.y);eA.width=scalew(eA.width),eA.height=scaleh(eA.height),eA.x=tA.x+Math.min(0,eA.width),eA.y=tA.y+Math.min(0,eA.height),eA.width=Math.abs(eA.width),eA.height=Math.abs(eA.height)}finishUp();break;case\"ellipse\":{const tA=remap(eA.cx,eA.cy);eA.cx=tA.x,eA.cy=tA.y,eA.rx=scalew(eA.rx),eA.ry=scaleh(eA.ry),eA.rx=Math.abs(eA.rx),eA.ry=Math.abs(eA.ry),finishUp();break}case\"circle\":{const tA=remap(eA.cx,eA.cy);eA.cx=tA.x,eA.cy=tA.y;const rA=transformBox(nA.x,nA.y,nA.width,nA.height,AA),iA=rA.tr.x-rA.tl.x,sA=rA.bl.y-rA.tl.y;eA.r=Math.min(iA/2,sA/2),eA.r&&(eA.r=Math.abs(eA.r)),finishUp();break}case\"line\":{const tA=remap(eA.x1,eA.y1),AA=remap(eA.x2,eA.y2);eA.x1=tA.x,eA.y1=tA.y,eA.x2=AA.x,eA.y2=AA.y}case\"text\":case\"tspan\":case\"use\":finishUp();break;case\"g\":{const AA=An.getDataStorage().get(tA,\"gsvg\");AA&&assignAttributes(AA,eA,0,!0);break}case\"polyline\":case\"polygon\":{eA.points.forEach((tA=>{const{x:eA,y:AA}=remap(tA.x,tA.y);tA.x=eA,tA.y=AA}));let AA=\"\";eA.points.forEach((tA=>{AA+=tA.x+\",\"+tA.y+\" \"})),tA.setAttribute(\"points\",AA);break}case\"path\":{const AA=tA.pathSegList;let rA=AA.numberOfItems;eA.d=[];for(let tA=0;tA<rA;++tA){const rA=AA.getItem(tA);eA.d[tA]={type:rA.pathSegType,x:rA.x,y:rA.y,x1:rA.x1,y1:rA.y1,x2:rA.x2,y2:rA.y2,r1:rA.r1,r2:rA.r2,angle:rA.angle,largeArcFlag:rA.largeArcFlag,sweepFlag:rA.sweepFlag}}rA=eA.d.length;const nA=eA.d[0];let iA;rA>0&&(iA=remap(nA.x,nA.y),eA.d[0].x=iA.x,eA.d[0].y=iA.y);for(let tA=1;tA<rA;++tA){const AA=eA.d[tA],{type:rA}=AA;if(rA%2==0){const tA=void 0!==AA.x?AA.x:iA.x,eA=void 0!==AA.y?AA.y:iA.y,rA=remap(tA,eA),nA=remap(AA.x1,AA.y1),sA=remap(AA.x2,AA.y2);AA.x=rA.x,AA.y=rA.y,AA.x1=nA.x,AA.y1=nA.y,AA.x2=sA.x,AA.y2=sA.y,AA.r1=scalew(AA.r1),AA.r2=scaleh(AA.r2)}else AA.x=scalew(AA.x),AA.y=scaleh(AA.y),AA.x1=scalew(AA.x1),AA.y1=scaleh(AA.y1),AA.x2=scalew(AA.x2),AA.y2=scaleh(AA.y2),AA.r1=scalew(AA.r1),AA.r2=scaleh(AA.r2)}let sA=\"\";eA.d.forEach((tA=>{const{type:eA}=tA;switch(sA+=en[eA],eA){case 13:case 12:sA+=tA.x+\" \";break;case 15:case 14:sA+=tA.y+\" \";break;case 3:case 5:case 19:case 2:case 4:case 18:sA+=tA.x+\",\"+tA.y+\" \";break;case 7:case 6:sA+=tA.x1+\",\"+tA.y1+\" \"+tA.x2+\",\"+tA.y2+\" \"+tA.x+\",\"+tA.y+\" \";break;case 9:case 8:sA+=tA.x1+\",\"+tA.y1+\" \"+tA.x+\",\"+tA.y+\" \";break;case 11:case 10:sA+=tA.r1+\",\"+tA.r2+\" \"+tA.angle+\" \"+Number(tA.largeArcFlag)+\" \"+Number(tA.sweepFlag)+\" \"+tA.x+\",\"+tA.y+\" \";break;case 17:case 16:sA+=tA.x2+\",\"+tA.y2+\" \"+tA.x+\",\"+tA.y+\" \"}})),tA.setAttribute(\"d\",sA);break}}};\n/**\n * Recalculate.\n * @module recalculate\n * @license MIT\n */\nlet rn;const updateClipPath=(tA,eA,AA)=>{const rA=getRefElem(tA).firstChild,nA=rA.transform.baseVal,iA=rn.getSvgRoot().createSVGTransform();iA.setTranslate(eA,AA),nA.appendItem(iA),recalculateDimensions(rA)},recalculateDimensions=tA=>{if(!tA)return null;const eA=rn.getSvgRoot(),AA=rn.getDataStorage(),rA=tA.transform?.baseVal;if(rA?.numberOfItems>0){let eA=rA.numberOfItems;const AA=eA;for(;eA--;){const nA=rA.getItem(eA);if(0===nA.type)rA.removeItem(eA);else if(1===nA.type){if(isIdentity(nA.matrix)){if(1===AA)return tA.removeAttribute(\"transform\"),null;rA.removeItem(eA)}}else 4===nA.type&&0===nA.angle&&rA.removeItem(eA)}if(1===rA.numberOfItems&&getRotationAngle(tA))return null}if(!rA||0===rA.numberOfItems)return tA.setAttribute(\"transform\",\"\"),tA.removeAttribute(\"transform\"),null;if(rA){let tA=[],AA=rA.numberOfItems;for(;AA--;){const eA=rA.getItem(AA);1===eA.type?tA.push([eA.matrix,AA]):tA.length&&(tA=[])}if(2===tA.length){const AA=eA.createSVGTransformFromMatrix(matrixMultiply(tA[1][0],tA[0][0]));rA.removeItem(tA[0][1]),rA.removeItem(tA[1][1]),rA.insertItemBefore(AA,tA[1][1])}if(AA=rA.numberOfItems,AA>=2&&1===rA.getItem(AA-2).type&&2===rA.getItem(AA-1).type){const tA=eA.createSVGTransform(),nA=matrixMultiply(rA.getItem(AA-2).matrix,rA.getItem(AA-1).matrix);tA.setMatrix(nA),rA.removeItem(AA-2),rA.removeItem(AA-2),rA.appendItem(tA)}}switch(tA.tagName){case\"line\":case\"polyline\":case\"polygon\":case\"path\":break;default:if(1===rA.numberOfItems&&1===rA.getItem(0).type||2===rA.numberOfItems&&1===rA.getItem(0).type&&4===rA.getItem(0).type)return null}const nA=AA.has(tA,\"gsvg\")?AA.get(tA,\"gsvg\"):void 0,iA=new BatchCommand$4(\"Transform\");let oA,aA,lA={},cA=null,uA=[];switch(tA.tagName){case\"line\":uA=[\"x1\",\"y1\",\"x2\",\"y2\"];break;case\"circle\":uA=[\"cx\",\"cy\",\"r\"];break;case\"ellipse\":uA=[\"cx\",\"cy\",\"rx\",\"ry\"];break;case\"foreignObject\":case\"rect\":case\"image\":uA=[\"width\",\"height\",\"x\",\"y\"];break;case\"use\":case\"text\":case\"tspan\":uA=[\"x\",\"y\"];break;case\"polygon\":case\"polyline\":{cA={},cA.points=tA.getAttribute(\"points\");const eA=tA.points,AA=eA.numberOfItems;lA.points=new Array(AA);for(let tA=0;tA<AA;++tA){const AA=eA.getItem(tA);lA.points[tA]={x:AA.x,y:AA.y}}break}case\"path\":cA={},cA.d=tA.getAttribute(\"d\"),lA.d=tA.getAttribute(\"d\")}if(uA.length?uA.forEach((eA=>{lA[eA]=convertToNum(eA,tA.getAttribute(eA))})):nA&&(lA={x:Number(nA.getAttribute(\"x\"))||0,y:Number(nA.getAttribute(\"y\"))||0}),!cA){cA=mergeDeep({},lA);for(const[tA,eA]of Object.entries(cA))cA[tA]=convertToNum(tA,eA)}if(cA.transform=rn.getStartTransform()||\"\",\"g\"===tA.tagName&&!nA||\"a\"===tA.tagName){const AA=getBBox(tA);oA={x:AA.x+AA.width/2,y:AA.y+AA.height/2},aA=transformPoint(AA.x+AA.width/2,AA.y+AA.height/2,transformListToTransform(rA).matrix);const nA=getRotationAngle(tA);if(nA){const tA=nA*Math.PI/180,eA=Math.abs(tA)>1e-10?Math.sin(tA)/(1-Math.cos(tA)):2/tA;for(let tA=0;tA<rA.numberOfItems;++tA){const AA=rA.getItem(tA);if(4===AA.type){const nA=AA.matrix;oA.y=(eA*nA.e+nA.f)/2,oA.x=(nA.e-eA*nA.f)/2,rA.removeItem(tA);break}}}const lA=rA.numberOfItems;let cA,uA,hA=0,dA=0,fA=0;if(lA&&(cA=rA.getItem(0).matrix),lA>=3&&3===rA.getItem(lA-2).type&&2===rA.getItem(lA-3).type&&2===rA.getItem(lA-1).type){fA=3;const AA=rA.getItem(lA-3).matrix,nA=rA.getItem(lA-2).matrix,sA=rA.getItem(lA-1).matrix,oA=tA.childNodes;let aA=oA.length;for(;aA--;){const tA=oA.item(aA);if(hA=0,dA=0,1===tA.nodeType){const rA=tA.transform.baseVal;if(!rA)continue;const oA=transformListToTransform(rA).matrix,aA=getRotationAngle(tA);if(uA=rn.getStartTransform(),rn.setStartTransform(tA.getAttribute(\"transform\")),aA||hasMatrixTransform(rA)){const tA=eA.createSVGTransform();tA.setMatrix(matrixMultiply(AA,nA,sA,oA)),rA.clear(),rA.appendItem(tA)}else{const tA=matrixMultiply(oA.inverse(),sA,oA),iA=eA.createSVGMatrix();iA.e=-tA.e,iA.f=-tA.f;const aA=matrixMultiply(iA.inverse(),oA.inverse(),AA,nA,sA,oA,tA.inverse()),lA=eA.createSVGTransform(),cA=eA.createSVGTransform(),uA=eA.createSVGTransform();lA.setTranslate(tA.e,tA.f),cA.setScale(aA.a,aA.d),uA.setTranslate(iA.e,iA.f),rA.appendItem(uA),rA.appendItem(cA),rA.appendItem(lA)}iA.addSubCommand(recalculateDimensions(tA)),rn.setStartTransform(uA)}}rA.removeItem(lA-1),rA.removeItem(lA-2),rA.removeItem(lA-3)}else if(lA>=3&&1===rA.getItem(lA-1).type){fA=3;const tA=transformListToTransform(rA).matrix,AA=eA.createSVGTransform();AA.setMatrix(tA),rA.clear(),rA.appendItem(AA)}else if((1===lA||lA>1&&3!==rA.getItem(1).type)&&2===rA.getItem(0).type){fA=2;const AA=transformListToTransform(rA).matrix;rA.removeItem(0);const nA=transformListToTransform(rA).matrix.inverse(),oA=matrixMultiply(nA,AA);if(hA=oA.e,dA=oA.f,0!==hA||0!==dA){const AA=tA.childNodes;let rA=AA.length;const nA=[];for(;rA--;){const oA=AA.item(rA);if(1===oA.nodeType){if(oA.getAttribute(\"clip-path\")){const tA=oA.getAttribute(\"clip-path\");nA.includes(tA)||(updateClipPath(tA,hA,dA),nA.push(tA))}uA=rn.getStartTransform(),rn.setStartTransform(oA.getAttribute(\"transform\"));const AA=oA.transform?.baseVal;if(AA){const rA=eA.createSVGTransform();rA.setTranslate(hA,dA),AA.numberOfItems?AA.insertItemBefore(rA,0):AA.appendItem(rA),iA.addSubCommand(recalculateDimensions(oA));const nA=tA.getElementsByTagNameNS(sA.SVG,\"use\"),aA=\"#\"+oA.id;let lA=nA.length;for(;lA--;){const tA=nA.item(lA);if(aA===getHref(tA)){const AA=eA.createSVGTransform();AA.setTranslate(-hA,-dA),tA.transform.baseVal.insertItemBefore(AA,0),iA.addSubCommand(recalculateDimensions(tA))}}rn.setStartTransform(uA)}}}rn.setStartTransform(uA)}}else{if(1!==lA||1!==rA.getItem(0).type||nA){if(nA){const tA=eA.createSVGTransform();tA.setRotate(nA,aA.x,aA.y),rA.numberOfItems?rA.insertItemBefore(tA,0):rA.appendItem(tA)}return 0===rA.numberOfItems&&tA.removeAttribute(\"transform\"),null}{fA=1;const AA=rA.getItem(0).matrix,nA=tA.childNodes;let sA=nA.length;for(;sA--;){const tA=nA.item(sA);if(1===tA.nodeType){uA=rn.getStartTransform(),rn.setStartTransform(tA.getAttribute(\"transform\"));const rA=tA.transform?.baseVal;if(!rA)continue;const nA=matrixMultiply(AA,transformListToTransform(rA).matrix),sA=eA.createSVGTransform();sA.setMatrix(nA),rA.clear(),rA.appendItem(sA,0),iA.addSubCommand(recalculateDimensions(tA)),rn.setStartTransform(uA);const oA=tA.getAttribute(\"stroke-width\");if(\"none\"!==tA.getAttribute(\"stroke\")&&!isNaN(oA)){const eA=(Math.abs(nA.a)+Math.abs(nA.d))/2;tA.setAttribute(\"stroke-width\",oA*eA)}}}rA.clear()}}if(2===fA){if(nA){aA={x:oA.x+cA.e,y:oA.y+cA.f};const tA=eA.createSVGTransform();tA.setRotate(nA,aA.x,aA.y),rA.numberOfItems?rA.insertItemBefore(tA,0):rA.appendItem(tA)}}else if(3===fA){const AA=transformListToTransform(rA).matrix,sA=eA.createSVGTransform();sA.setRotate(nA,oA.x,oA.y);const lA=sA.matrix,cA=eA.createSVGTransform();cA.setRotate(nA,aA.x,aA.y);const fA=cA.matrix.inverse(),gA=AA.inverse(),pA=matrixMultiply(gA,fA,lA,AA);if(hA=pA.e,dA=pA.f,0!==hA||0!==dA){const AA=tA.childNodes;let rA=AA.length;for(;rA--;){const tA=AA.item(rA);if(1===tA.nodeType){uA=rn.getStartTransform(),rn.setStartTransform(tA.getAttribute(\"transform\"));const AA=tA.transform?.baseVal,rA=eA.createSVGTransform();rA.setTranslate(hA,dA),AA.numberOfItems?AA.insertItemBefore(rA,0):AA.appendItem(rA),iA.addSubCommand(recalculateDimensions(tA)),rn.setStartTransform(uA)}}}nA&&(rA.numberOfItems?rA.insertItemBefore(cA,0):rA.appendItem(cA))}}else{const AA=getBBox(tA);if(!AA&&\"path\"!==tA.tagName)return null;let nA;const iA=getRotationAngle(tA);if(iA){oA={x:AA.x+AA.width/2,y:AA.y+AA.height/2},aA=transformPoint(AA.x+AA.width/2,AA.y+AA.height/2,transformListToTransform(rA).matrix);const tA=iA*Math.PI/180,eA=Math.abs(tA)>1e-10?Math.sin(tA)/(1-Math.cos(tA)):2/tA;for(let tA=0;tA<rA.numberOfItems;++tA){const AA=rA.getItem(tA);if(4===AA.type){const nA=AA.matrix;oA.y=(eA*nA.e+nA.f)/2,oA.x=(nA.e-eA*nA.f)/2,rA.removeItem(tA);break}}}let sA=0;const cA=rA.numberOfItems,uA=tA.getAttribute(\"fill\");if(uA?.startsWith(\"url(\")){const tA=getRefElem(uA);if(tA){let eA=\"pattern\";tA?.tagName!==eA&&(eA=\"gradient\");if(\"userSpaceOnUse\"===tA.getAttribute(eA+\"Units\")){nA=transformListToTransform(rA).matrix;const AA=tA.transform.baseVal,iA=transformListToTransform(AA).matrix;nA=matrixMultiply(nA,iA);const sA=\"matrix(\"+[nA.a,nA.b,nA.c,nA.d,nA.e,nA.f].join(\",\")+\")\";tA.setAttribute(eA+\"Transform\",sA)}}}if(cA>=3&&3===rA.getItem(cA-2).type&&2===rA.getItem(cA-3).type&&2===rA.getItem(cA-1).type)sA=3,nA=transformListToTransform(rA,cA-3,cA-1).matrix,rA.removeItem(cA-1),rA.removeItem(cA-2),rA.removeItem(cA-3);else if(4===cA&&1===rA.getItem(cA-1).type){sA=3,nA=transformListToTransform(rA).matrix;const tA=eA.createSVGTransform();tA.setMatrix(nA),rA.clear(),rA.appendItem(tA),nA=eA.createSVGMatrix()}else if((1===cA||cA>1&&3!==rA.getItem(1).type)&&2===rA.getItem(0).type){sA=2;const tA=rA.getItem(0).matrix,eA=transformListToTransform(rA,1).matrix,AA=eA.inverse();nA=matrixMultiply(AA,tA,eA),rA.removeItem(0)}else{if(1!==cA||1!==rA.getItem(0).type||iA){if(iA){const tA=eA.createSVGTransform();tA.setRotate(iA,aA.x,aA.y),rA.numberOfItems?rA.insertItemBefore(tA,0):rA.appendItem(tA)}return 0===rA.numberOfItems&&tA.removeAttribute(\"transform\"),null}switch(nA=transformListToTransform(rA).matrix,tA.tagName){case\"line\":lA={x1:tA.getAttribute(\"x1\"),y1:tA.getAttribute(\"y1\"),x2:tA.getAttribute(\"x2\"),y2:tA.getAttribute(\"y2\")};case\"polyline\":case\"polygon\":if(lA.points=tA.getAttribute(\"points\"),lA.points){const eA=tA.points,AA=eA.numberOfItems;lA.points=new Array(AA);for(let tA=0;tA<AA;++tA){const AA=eA.getItem(tA);lA.points[tA]={x:AA.x,y:AA.y}}}case\"path\":lA.d=tA.getAttribute(\"d\"),sA=1,rA.clear()}}if(1!==sA&&2!==sA&&3!==sA||remapElement(tA,lA,nA),2===sA){if(iA){hasMatrixTransform(rA)||(aA={x:oA.x+nA.e,y:oA.y+nA.f});const tA=eA.createSVGTransform();tA.setRotate(iA,aA.x,aA.y),rA.numberOfItems?rA.insertItemBefore(tA,0):rA.appendItem(tA)}if(\"text\"===tA.tagName){const eA=tA.childNodes;let AA=eA.length;for(;AA--;){const tA=eA.item(AA);if(\"tspan\"===tA.tagName){const eA={x:Number(tA.getAttribute(\"x\"))||0,y:Number(tA.getAttribute(\"y\"))||0};remapElement(tA,eA,nA)}}}}else if(3===sA&&iA){const{matrix:AA}=transformListToTransform(rA),nA=eA.createSVGTransform();nA.setRotate(iA,oA.x,oA.y);const sA=nA.matrix,cA=eA.createSVGTransform();cA.setRotate(iA,aA.x,aA.y);const uA=cA.matrix.inverse(),hA=AA.inverse(),dA=matrixMultiply(hA,uA,sA,AA);remapElement(tA,lA,dA),iA&&(rA.numberOfItems?rA.insertItemBefore(cA,0):rA.appendItem(cA))}}return 0===rA.numberOfItems&&tA.removeAttribute(\"transform\"),iA.addSubCommand(new ChangeElementCommand$2(tA,cA)),iA},{MoveElementCommand:nn,BatchCommand:sn,InsertElementCommand:on,RemoveElementCommand:an,ChangeElementCommand:cn}=dA;let un=null;const moveToTopSelectedElem=()=>{const[tA]=un.getSelectedElements();if(tA){const eA=tA,AA=eA.parentNode,rA=eA.nextSibling;eA.parentNode.append(eA),rA!==eA.nextSibling&&(un.addCommandToHistory(new nn(eA,rA,AA,\"top\")),un.call(\"changed\",[eA]))}},moveToBottomSelectedElem=()=>{const[tA]=un.getSelectedElements();if(tA){let eA=tA;const AA=eA.parentNode,rA=eA.nextSibling;let{firstChild:nA}=eA.parentNode;\"title\"===nA.tagName&&(nA=nA.nextSibling),\"defs\"===nA.tagName&&(nA=nA.nextSibling),eA=eA.parentNode.insertBefore(eA,nA),rA!==eA.nextSibling&&(un.addCommandToHistory(new nn(eA,rA,AA,\"bottom\")),un.call(\"changed\",[eA]))}},moveUpDownSelected=tA=>{const eA=un.getSelectedElements()[0];if(!eA)return;let AA,rA;un.setCurBBoxes([]);const nA=un.getIntersectionList(getStrokedBBoxDefaultVisible([eA]));if(\"Down\"===tA&&nA.reverse(),Array.prototype.forEach.call(nA,(tA=>rA?(void 0===AA&&(AA=tA),!1):(tA===eA&&(rA=!0),!0))),!AA)return;const iA=eA,sA=iA.parentNode,oA=iA.nextSibling;\"Down\"===tA?AA.insertAdjacentElement(\"beforebegin\",iA):AA.insertAdjacentElement(\"afterend\",iA),oA!==iA.nextSibling&&(un.addCommandToHistory(new nn(iA,oA,sA,\"Move \"+tA)),un.call(\"changed\",[iA]))},moveSelectedElements=(tA,eA,AA=!0)=>{const rA=un.getSelectedElements(),nA=un.getZoom();Array.isArray(tA)||(tA/=nA,eA/=nA);const iA=new sn(\"position\");if(rA.forEach(((AA,rA)=>{if(AA){const nA=un.getSvgRoot().createSVGTransform(),sA=AA.transform?.baseVal;Array.isArray(tA)?nA.setTranslate(tA[rA],eA[rA]):nA.setTranslate(tA,eA),sA.numberOfItems?sA.insertItemBefore(nA,0):sA.appendItem(nA);const oA=recalculateDimensions(AA);oA&&iA.addSubCommand(oA),un.gettingSelectorManager().requestSelector(AA).resize()}})),!iA.isEmpty())return AA&&un.addCommandToHistory(iA),un.call(\"changed\",rA),iA},cloneSelectedElements=(tA,eA)=>{const AA=un.getSelectedElements(),rA=un.getCurrentGroup();let nA,iA;const sA=new sn(\"Clone Elements\"),oA=AA.length,index=tA=>{if(!tA)return-1;let eA=0;do{eA++}while(tA===tA.previousElementSibling);return eA};for(AA.sort(((tA,eA)=>index(eA)-index(tA))),nA=0;nA<oA&&(iA=AA[nA],iA);++nA);const aA=AA.slice(0,nA);un.clearSelection(!0);const lA=un.getDrawing();for(nA=aA.length;nA--;)iA=aA[nA]=lA.copyElem(aA[nA]),(rA||lA.getCurrentLayer()).append(iA),sA.addSubCommand(new on(iA));sA.isEmpty()||(un.addToSelection(aA.reverse()),moveSelectedElements(tA,eA,!1),un.addCommandToHistory(sA))},alignSelectedElements=(tA,eA)=>{const AA=un.getSelectedElements(),rA=[],nA=AA.length;if(!nA)return;let iA=Number.MAX_VALUE,sA=Number.MIN_VALUE,oA=Number.MAX_VALUE,aA=Number.MIN_VALUE;const isHorizontalAlign=tA=>[\"l\",\"c\",\"r\",\"left\",\"center\",\"right\"].includes(tA),isVerticalAlign=tA=>[\"t\",\"m\",\"b\",\"top\",\"middle\",\"bottom\"].includes(tA);for(let tA=0;tA<nA&&AA[tA];++tA){const eA=AA[tA];rA[tA]=getStrokedBBoxDefaultVisible([eA])}switch([\"smallest\",\"largest\"].includes(eA)&&[\"dh\",\"distrib_horiz\",\"dv\",\"distrib_verti\"].includes(tA)&&(eA=\"selected\"),eA){case\"smallest\":if(isHorizontalAlign(tA)||isVerticalAlign(tA)){const tA=rA.slice().sort(((tA,eA)=>tA.width-eA.width)),eA=tA[0];iA=eA.x,oA=eA.y,sA=eA.x+eA.width,aA=eA.y+eA.height}break;case\"largest\":if(isHorizontalAlign(tA)||isVerticalAlign(tA)){const tA=rA.slice().sort(((tA,eA)=>tA.width-eA.width)),eA=tA[rA.length-1];iA=eA.x,oA=eA.y,sA=eA.x+eA.width,aA=eA.y+eA.height}break;case\"page\":iA=0,oA=0,sA=un.getContentW(),aA=un.getContentH();break;default:iA=Math.min(...rA.map((tA=>tA.x))),oA=Math.min(...rA.map((tA=>tA.y))),sA=Math.max(...rA.map((tA=>tA.x+tA.width))),aA=Math.max(...rA.map((tA=>tA.y+tA.height)))}let lA=[],cA=[];[\"dh\",\"distrib_horiz\"].includes(tA)?[lA,cA]=_getDistributeHorizontalDistances(eA,AA,rA,iA,sA,oA,aA):[\"dv\",\"distrib_verti\"].includes(tA)?[lA,cA]=_getDistributeVerticalDistances(eA,AA,rA,iA,sA,oA,aA):[lA,cA]=_getNormalDistances(tA,AA,rA,iA,sA,oA,aA),moveSelectedElements(lA,cA)},_getDistributeHorizontalDistances=(tA,eA,AA,rA,nA,iA,sA)=>{const oA=[],aA=[];for(let tA=0;tA<eA.length;tA++)aA[tA]=0;const lA=AA.slice().sort(((tA,eA)=>{const AA=tA.x+tA.width,rA=eA.x+eA.width;return AA===rA?0:AA>rA?1:-1}));\"page\"===tA&&(lA.unshift({x:0,y:0,width:0,height:sA}),lA.push({x:nA,y:0,width:0,height:sA}));const cA=nA-rA,uA=lA.map((tA=>tA.width)).reduce(((tA,eA)=>tA+eA),0),hA=(cA-uA)/(lA.length-1),dA=[];for(let tA=0;tA<lA.length;++tA){if(dA[tA]=0,0===tA)continue;const eA=lA[tA].x;lA[tA].x=lA[tA-1].x+lA[tA-1].width+hA,dA[tA]=lA[tA].x-eA}return lA.forEach(((tA,eA)=>{const rA=AA.findIndex((eA=>eA===tA));-1!==rA&&(oA[rA]=dA[eA])})),[oA,aA]},_getDistributeVerticalDistances=(tA,eA,AA,rA,nA,iA,sA)=>{const oA=[],aA=[];for(let tA=0;tA<eA.length;tA++)oA[tA]=0;const lA=AA.slice().sort(((tA,eA)=>{const AA=tA.y+tA.height,rA=eA.y+eA.height;return AA===rA?0:AA>rA?1:-1}));\"page\"===tA&&(lA.unshift({x:0,y:0,width:nA,height:0}),lA.push({x:0,y:sA,width:nA,height:0}));const cA=sA-iA,uA=lA.map((tA=>tA.height)).reduce(((tA,eA)=>tA+eA),0),hA=(cA-uA)/(lA.length-1),dA=[];for(let tA=0;tA<lA.length;++tA){if(dA[tA]=0,0===tA)continue;const eA=lA[tA].y;lA[tA].y=lA[tA-1].y+lA[tA-1].height+hA,dA[tA]=lA[tA].y-eA}return lA.forEach(((tA,eA)=>{const rA=AA.findIndex((eA=>eA===tA));-1!==rA&&(aA[rA]=dA[eA])})),[oA,aA]},_getNormalDistances=(tA,eA,AA,rA,nA,iA,sA)=>{const oA=eA.length,aA=new Array(oA),lA=new Array(oA);for(let cA=0;cA<oA&&eA[cA];++cA){const eA=AA[cA];switch(aA[cA]=0,lA[cA]=0,tA){case\"l\":case\"left\":aA[cA]=rA-eA.x;break;case\"c\":case\"center\":aA[cA]=(rA+nA)/2-(eA.x+eA.width/2);break;case\"r\":case\"right\":aA[cA]=nA-(eA.x+eA.width);break;case\"t\":case\"top\":lA[cA]=iA-eA.y;break;case\"m\":case\"middle\":lA[cA]=(iA+sA)/2-(eA.y+eA.height/2);break;case\"b\":case\"bottom\":lA[cA]=sA-(eA.y+eA.height)}}return[aA,lA]},deleteSelectedElements=()=>{const tA=un.getSelectedElements(),eA=new sn(\"Delete Elements\"),AA=[];tA.forEach((tA=>{if(tA){let rA=tA.parentNode,nA=tA;un.gettingSelectorManager().releaseSelector(nA),removePath_(nA.id),\"a\"===rA.tagName&&1===rA.childNodes.length&&(nA=rA,rA=rA.parentNode);const{nextSibling:iA}=nA;nA.remove();const sA=nA;AA.push(tA),eA.addSubCommand(new an(sA,iA,rA))}})),un.setEmptySelectedElements(),eA.isEmpty()||un.addCommandToHistory(eA),un.call(\"changed\",AA),un.clearSelection()},copySelectedElements=()=>{const tA=un.getSelectedElements(),eA=JSON.stringify(tA.map((tA=>un.getJsonFromSvgElements(tA))));sessionStorage.setItem(un.getClipboardID(),eA),un.flashStorage();document.getElementById(\"se-cmenu_canvas\").setAttribute(\"enablemenuitems\",\"#paste,#paste_in_place\")},groupSelectedElements=(tA,eA)=>{const AA=un.getSelectedElements();tA||(tA=\"g\");let rA,nA=\"\";if(\"a\"===tA)nA=\"Make hyperlink\",rA=eA||\"\";else tA=\"g\",nA=\"Group Elements\";const iA=new sn(nA),sA=un.addSVGElementsFromJson({element:tA,attr:{id:un.getNextId()}});\"a\"===tA&&setHref(sA,rA),iA.addSubCommand(new on(sA));let oA=AA.length;for(;oA--;){let tA=AA[oA];if(!tA)continue;\"a\"===tA.parentNode.tagName&&1===tA.parentNode.childNodes.length&&(tA=tA.parentNode);const eA=tA.nextSibling,rA=tA.parentNode;sA.append(tA),iA.addSubCommand(new nn(tA,eA,rA))}iA.isEmpty()||un.addCommandToHistory(iA),un.selectOnly([sA],!0)},pushGroupProperty=(tA,eA)=>{const AA=tA.childNodes,rA=AA.length,nA=tA.getAttribute(\"transform\"),iA=tA.transform.baseVal,sA=transformListToTransform(iA).matrix,oA=new sn(\"Push group properties\"),aA=getRotationAngle(tA),lA={filter:tA.getAttribute(\"filter\"),opacity:tA.getAttribute(\"opacity\")};let cA,uA,hA;const dA=un.getDrawing();for(let eA=0;eA<rA;eA++){const rA=AA[eA];if(1!==rA.nodeType)continue;if(null!==lA.opacity&&1!==lA.opacity){const tA=Math.round((rA.getAttribute(\"opacity\")||1)*lA.opacity*100)/100;un.changeSelectedAttribute(\"opacity\",tA,[rA])}if(lA.filter){let eA=un.getBlur(rA);const AA=eA;if(uA||(uA=un.getBlur(tA)),eA?eA=Number(uA)+Number(eA):0===eA&&(eA=uA),AA)cA=getRefElem(rA.getAttribute(\"filter\"));else if(cA){cA=dA.copyElem(cA),findDefs().append(cA);const tA=\"feGaussianBlur\"===getFeGaussianBlur(cA)?.tagName?\"blur\":\"filter\";cA.id=rA.id+\"_\"+tA,un.changeSelectedAttribute(\"filter\",\"url(#\"+cA.id+\")\",[rA])}else cA=getRefElem(lA.filter);const nA=getFeGaussianBlur(cA);eA&&(un.changeSelectedAttribute(\"stdDeviation\",eA,[nA]),un.setBlurOffsets(cA,eA))}let nA=rA.transform?.baseVal;if(rA.tagName.includes(\"Gradient\")&&(nA=null),nA&&\"defs\"!==rA.tagName&&iA.numberOfItems){if(aA&&1===iA.numberOfItems){const tA=iA.getItem(0).matrix;let eA=un.getSvgRoot().createSVGMatrix();const AA=getRotationAngle(rA);AA&&(eA=nA.getItem(0).matrix);const sA=getBBox(rA),oA=transformListToTransform(nA).matrix,lA=transformPoint(sA.x+sA.width/2,sA.y+sA.height/2,oA),cA=aA+AA,uA=un.getSvgRoot().createSVGTransform();uA.setRotate(cA,lA.x,lA.y);const hA=matrixMultiply(tA,eA,uA.matrix.inverse());if(AA&&nA.removeItem(0),cA&&(nA.numberOfItems?nA.insertItemBefore(uA,0):nA.appendItem(uA)),hA.e||hA.f){const tA=un.getSvgRoot().createSVGTransform();tA.setTranslate(hA.e,hA.f),nA.numberOfItems?nA.insertItemBefore(tA,0):nA.appendItem(tA)}}else{const tA=rA.getAttribute(\"transform\");hA={},hA.transform=tA||\"\";const eA=un.getSvgRoot().createSVGTransform(),AA=transformListToTransform(nA).matrix,iA=AA.inverse(),oA=matrixMultiply(iA,sA,AA);eA.setMatrix(oA),nA.appendItem(eA)}const tA=recalculateDimensions(rA);tA&&oA.addSubCommand(tA)}}if(nA&&(hA={},hA.transform=nA,tA.setAttribute(\"transform\",\"\"),tA.removeAttribute(\"transform\"),oA.addSubCommand(new cn(tA,hA))),eA&&!oA.isEmpty())return oA},convertToGroup=tA=>{const eA=un.getSelectedElements();tA||(tA=eA[0]);const AA=tA,rA=new sn;let nA;const iA=un.getDataStorage();if(iA.has(AA,\"gsvg\")){const eA=tA.firstChild,AA={x:Number(eA.getAttribute(\"x\")),y:Number(eA.getAttribute(\"y\"))},rA=tA.firstChild.firstChild;rA&&(rA.outerHTML=rA.innerHTML),iA.remove(tA,\"gsvg\");const nA=tA.transform.baseVal,sA=un.getSvgRoot().createSVGTransform();sA.setTranslate(AA.x,AA.y),nA.appendItem(sA),recalculateDimensions(tA),un.call(\"selected\",[tA])}else if(iA.has(AA,\"symbol\")){tA=iA.get(AA,\"symbol\"),nA=AA.getAttribute(\"transform\");const eA={x:Number(AA.getAttribute(\"x\")),y:Number(AA.getAttribute(\"y\"))},oA=tA.getAttribute(\"viewBox\");if(oA){const tA=oA.split(\" \");eA.x-=Number(tA[0]),eA.y-=Number(tA[1])}nA+=\" translate(\"+(eA.x||0)+\",\"+(eA.y||0)+\")\";const aA=AA.previousElementSibling;rA.addSubCommand(new an(AA,AA.nextElementSibling,AA.parentNode)),AA.remove();const lA=un.getSvgContent().querySelectorAll(\"use\").length,cA=un.getDOMDocument().createElementNS(sA.SVG,\"g\"),uA=tA.childNodes;let hA;for(hA=0;hA<uA.length;hA++)cA.append(uA[hA].cloneNode(!0));if(isGecko()){const tA=findDefs().querySelectorAll(\"linearGradient,radialGradient,pattern\");for(let eA=0,AA=tA.length;AA>eA;eA++)cA.appendChild(tA[eA].cloneNode(!0))}nA&&cA.setAttribute(\"transform\",nA);const dA=tA.parentNode;if(un.uniquifyElems(cA),isGecko()){const tA=findDefs(),eA=cA.querySelectorAll(\"linearGradient,radialGradient,pattern\");for(let AA=0,rA=eA.length;rA>AA;AA++)tA.appendChild(eA[AA])}if(cA.id=un.getNextId(),aA.after(cA),dA){if(!lA){const{nextSibling:eA}=tA;tA.remove(),rA.addSubCommand(new an(tA,eA,dA))}rA.addSubCommand(new on(cA))}un.setUseData(cA),isGecko()?un.convertGradients(findDefs()):un.convertGradients(cA),((tA,eA)=>{if(1===tA?.nodeType){let AA=tA.childNodes.length;for(;AA--;)walkTree(tA.childNodes.item(AA),eA);eA(tA)}})(cA,(tA=>{try{recalculateDimensions(tA)}catch(tA){console.error(tA)}}));const fA=cA.querySelectorAll(un.getVisElems());Array.prototype.forEach.call(fA,(tA=>{tA.id||(tA.id=un.getNextId())})),un.selectOnly([cA]);const gA=pushGroupProperty(cA,!0);gA&&rA.addSubCommand(gA),un.addCommandToHistory(rA)}else console.warn(\"Unexpected element to ungroup:\",tA)},ungroupSelectedElement=()=>{const tA=un.getSelectedElements(),eA=un.getDataStorage();let AA=tA[0];if(!AA)return;if(eA.has(AA,\"gsvg\")||eA.has(AA,\"symbol\"))return void convertToGroup(AA);if(\"use\"===AA.tagName){const tA=getElement(getHref(AA).substr(1));return eA.put(AA,\"symbol\",tA),eA.put(AA,\"ref\",tA),void convertToGroup(AA)}const rA=getParents(AA.parentNode,\"a\");if(rA?.length&&(AA=rA[0]),\"g\"===AA.tagName||\"a\"===AA.tagName){const tA=new sn(\"Ungroup Elements\"),eA=pushGroupProperty(AA,!0);eA&&tA.addSubCommand(eA);const rA=AA.parentNode,nA=AA.nextSibling,iA=new Array(AA.childNodes.length);let sA=0;for(;AA.firstChild;){const eA=AA.firstChild,oA=eA.nextSibling,aA=eA.parentNode;if(\"title\"!==eA.tagName)iA[sA++]=rA.insertBefore(eA,nA),tA.addSubCommand(new nn(eA,oA,aA));else{const{nextSibling:AA}=eA;tA.addSubCommand(new an(eA,AA,aA)),eA.remove()}}un.clearSelection();const oA=AA.nextSibling;AA.remove(),tA.addSubCommand(new an(AA,oA,rA)),tA.isEmpty()||un.addCommandToHistory(tA),un.addToSelection(iA)}},updateCanvas=(tA,eA)=>{un.getSvgRoot().setAttribute(\"width\",tA),un.getSvgRoot().setAttribute(\"height\",eA);const AA=un.getZoom(),rA=document.getElementById(\"canvasBackground\"),nA=Number(un.getSvgContent().getAttribute(\"x\")),iA=Number(un.getSvgContent().getAttribute(\"y\")),sA=(tA-un.contentW*AA)/2,oA=(eA-un.contentH*AA)/2;assignAttributes(un.getSvgContent(),{width:un.contentW*AA,height:un.contentH*AA,x:sA,y:oA,viewBox:\"0 0 \"+un.contentW+\" \"+un.contentH}),assignAttributes(rA,{width:un.getSvgContent().getAttribute(\"width\"),height:un.getSvgContent().getAttribute(\"height\"),x:sA,y:oA});const aA=getElement(\"background_image\");return aA&&assignAttributes(aA,{width:\"100%\",height:\"100%\"}),un.selectorManager.selectorParentGroup.setAttribute(\"transform\",\"translate(\"+sA+\",\"+oA+\")\"),un.runExtensions(\"canvasUpdated\",{new_x:sA,new_y:oA,old_x:nA,old_y:iA,d_x:sA-nA,d_y:oA-iA}),{x:sA,y:oA,old_x:nA,old_y:iA,d_x:sA-nA,d_y:oA-iA}},cycleElement=tA=>{const eA=un.getSelectedElements(),AA=un.getCurrentGroup();let rA;const nA=eA[0];let iA=!1;const sA=getVisibleElements(AA||un.getCurrentDrawing().getCurrentLayer());if(sA.length){if(nA){let eA=sA.length;for(;eA--;)if(sA[eA]===nA){rA=tA?eA-1:eA+1,rA>=sA.length?rA=0:rA<0&&(rA=sA.length-1),iA=sA[rA];break}}else rA=tA?sA.length-1:0,iA=sA[rA];un.selectOnly([iA],!0),un.call(\"selected\",eA)}};\n/**\n * Tools for blur event.\n * @module blur\n * @license MIT\n * @copyright 2011 Jeff Schiller\n */\nlet hn=null;const setBlurNoUndo=function(tA){const eA=hn.getSelectedElements();if(hn.getFilter())if(0===tA)hn.changeSelectedAttributeNoUndo(\"filter\",\"\"),hn.setFilterHidden(!0);else{const AA=eA[0];hn.getFilterHidden()&&hn.changeSelectedAttributeNoUndo(\"filter\",\"url(#\"+AA.id+\"_blur)\");const rA=hn.getFilter();hn.changeSelectedAttributeNoUndo(\"stdDeviation\",tA,[rA.firstChild]),hn.setBlurOffsets(rA,tA)}else hn.setBlur(tA)};function finishChange(){const tA=hn.undoMgr.finishUndoableChange();hn.getCurCommand().addSubCommand(tA),hn.addCommandToHistory(hn.getCurCommand()),hn.setCurCommand(null),hn.setFilter(null)}const setBlurOffsets=function(tA,eA){eA>3?hn.assignAttributes(tA,{x:\"-50%\",y:\"-50%\",width:\"200%\",height:\"200%\"},100):(tA.removeAttribute(\"x\"),tA.removeAttribute(\"y\"),tA.removeAttribute(\"width\"),tA.removeAttribute(\"height\"))},setBlur=function(tA,eA){const{InsertElementCommand:AA,ChangeElementCommand:rA,BatchCommand:nA}=hn.history,iA=hn.getSelectedElements();if(hn.getCurCommand())return void finishChange();const sA=iA[0],oA=sA.id;hn.setFilter(hn.getElement(oA+\"_blur\")),tA-=0;const aA=new nA;if(hn.getFilter())0===tA&&hn.setFilter(null);else{const eA=hn.addSVGElementsFromJson({element:\"feGaussianBlur\",attr:{in:\"SourceGraphic\",stdDeviation:tA}});hn.setFilter(hn.addSVGElementsFromJson({element:\"filter\",attr:{id:oA+\"_blur\"}})),hn.getFilter().append(eA),hn.findDefs().append(hn.getFilter()),aA.addSubCommand(new AA(hn.getFilter()))}const lA={filter:sA.getAttribute(\"filter\")};if(0===tA)return sA.removeAttribute(\"filter\"),void aA.addSubCommand(new rA(sA,lA));hn.changeSelectedAttribute(\"filter\",\"url(#\"+oA+\"_blur)\"),aA.addSubCommand(new rA(sA,lA)),hn.setBlurOffsets(hn.getFilter(),tA);const cA=hn.getFilter();hn.setCurCommand(aA),hn.undoMgr.beginUndoableChange(\"stdDeviation\",[cA?cA.firstChild:null]),eA&&(hn.setBlurNoUndo(tA),finishChange())},dn=getReverseNS(),fn=[\"class\",\"id\",\"display\",\"transform\",\"style\"],gn={a:[\"clip-path\",\"clip-rule\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"mask\",\"opacity\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\",\"xlink:href\",\"xlink:title\"],circle:[\"clip-path\",\"clip-rule\",\"cx\",\"cy\",\"enable-background\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"mask\",\"opacity\",\"r\",\"requiredFeatures\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\"],clipPath:[\"clipPathUnits\"],defs:[],desc:[],ellipse:[\"clip-path\",\"clip-rule\",\"cx\",\"cy\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"mask\",\"opacity\",\"requiredFeatures\",\"rx\",\"ry\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\"],feBlend:[\"in\",\"in2\"],feColorMatrix:[\"in\",\"type\",\"value\",\"result\",\"values\"],feComposite:[\"in\",\"operator\",\"result\",\"in2\"],feFlood:[\"flood-color\",\"in\",\"result\",\"flood-opacity\"],feGaussianBlur:[\"color-interpolation-filters\",\"in\",\"requiredFeatures\",\"stdDeviation\",\"result\"],feMerge:[],feMergeNode:[\"in\"],feMorphology:[\"in\",\"operator\",\"radius\"],feOffset:[\"dx\",\"in\",\"dy\",\"result\"],filter:[\"color-interpolation-filters\",\"filterRes\",\"filterUnits\",\"height\",\"primitiveUnits\",\"requiredFeatures\",\"width\",\"x\",\"xlink:href\",\"y\"],foreignObject:[\"font-size\",\"height\",\"opacity\",\"requiredFeatures\",\"width\",\"x\",\"y\"],g:[\"clip-path\",\"clip-rule\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"mask\",\"opacity\",\"requiredFeatures\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\",\"font-family\",\"font-size\",\"font-style\",\"font-weight\",\"text-anchor\"],image:[\"clip-path\",\"clip-rule\",\"filter\",\"height\",\"mask\",\"opacity\",\"requiredFeatures\",\"systemLanguage\",\"width\",\"x\",\"xlink:href\",\"xlink:title\",\"y\"],line:[\"clip-path\",\"clip-rule\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"marker-end\",\"marker-mid\",\"marker-start\",\"mask\",\"opacity\",\"requiredFeatures\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\",\"x1\",\"x2\",\"y1\",\"y2\"],linearGradient:[\"gradientTransform\",\"gradientUnits\",\"requiredFeatures\",\"spreadMethod\",\"systemLanguage\",\"x1\",\"x2\",\"xlink:href\",\"y1\",\"y2\"],marker:[\"markerHeight\",\"markerUnits\",\"markerWidth\",\"orient\",\"preserveAspectRatio\",\"refX\",\"refY\",\"se_type\",\"systemLanguage\",\"viewBox\"],mask:[\"height\",\"maskContentUnits\",\"maskUnits\",\"width\",\"x\",\"y\"],metadata:[],path:[\"clip-path\",\"clip-rule\",\"d\",\"enable-background\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"marker-end\",\"marker-mid\",\"marker-start\",\"mask\",\"opacity\",\"requiredFeatures\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\"],pattern:[\"height\",\"patternContentUnits\",\"patternTransform\",\"patternUnits\",\"requiredFeatures\",\"systemLanguage\",\"viewBox\",\"width\",\"x\",\"xlink:href\",\"y\"],polygon:[\"clip-path\",\"clip-rule\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"marker-end\",\"marker-mid\",\"marker-start\",\"mask\",\"opacity\",\"points\",\"requiredFeatures\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\",\"sides\",\"shape\",\"edge\",\"point\",\"starRadiusMultiplier\",\"r\",\"radialshift\",\"r2\",\"orient\",\"cx\",\"cy\"],polyline:[\"clip-path\",\"clip-rule\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"marker-end\",\"marker-mid\",\"marker-start\",\"mask\",\"opacity\",\"points\",\"requiredFeatures\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\",\"se:connector\"],radialGradient:[\"cx\",\"cy\",\"fx\",\"fy\",\"gradientTransform\",\"gradientUnits\",\"r\",\"requiredFeatures\",\"spreadMethod\",\"systemLanguage\",\"xlink:href\"],rect:[\"clip-path\",\"clip-rule\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"height\",\"mask\",\"opacity\",\"requiredFeatures\",\"rx\",\"ry\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\",\"width\",\"x\",\"y\"],stop:[\"offset\",\"requiredFeatures\",\"stop-opacity\",\"systemLanguage\",\"stop-color\",\"gradientUnits\",\"gradientTransform\"],style:[\"type\"],svg:[\"clip-path\",\"clip-rule\",\"enable-background\",\"filter\",\"height\",\"mask\",\"preserveAspectRatio\",\"requiredFeatures\",\"systemLanguage\",\"version\",\"viewBox\",\"width\",\"x\",\"xmlns\",\"xmlns:se\",\"xmlns:xlink\",\"xmlns:oi\",\"oi:animations\",\"y\",\"stroke-linejoin\",\"fill-rule\",\"aria-label\",\"stroke-width\",\"fill-rule\",\"xml:space\"],switch:[\"requiredFeatures\",\"systemLanguage\"],symbol:[\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"font-family\",\"font-size\",\"font-style\",\"font-weight\",\"opacity\",\"overflow\",\"preserveAspectRatio\",\"requiredFeatures\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\",\"viewBox\",\"width\",\"height\"],text:[\"clip-path\",\"clip-rule\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"font-family\",\"font-size\",\"font-style\",\"font-weight\",\"mask\",\"opacity\",\"requiredFeatures\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\",\"text-anchor\",\"letter-spacing\",\"word-spacing\",\"text-decoration\",\"textLength\",\"lengthAdjust\",\"x\",\"xml:space\",\"y\"],textPath:[\"method\",\"requiredFeatures\",\"spacing\",\"startOffset\",\"systemLanguage\",\"xlink:href\"],title:[],tspan:[\"clip-path\",\"clip-rule\",\"dx\",\"dy\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"font-family\",\"font-size\",\"font-style\",\"font-weight\",\"mask\",\"opacity\",\"requiredFeatures\",\"rotate\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"systemLanguage\",\"text-anchor\",\"textLength\",\"x\",\"xml:space\",\"y\"],use:[\"clip-path\",\"clip-rule\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"height\",\"mask\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"width\",\"x\",\"xlink:href\",\"y\",\"overflow\"],annotation:[\"encoding\"],\"annotation-xml\":[\"encoding\"],maction:[\"actiontype\",\"other\",\"selection\"],math:[\"xmlns\"],menclose:[\"notation\"],merror:[],mfrac:[\"linethickness\"],mi:[\"mathvariant\"],mmultiscripts:[],mn:[],mo:[\"fence\",\"lspace\",\"maxsize\",\"minsize\",\"rspace\",\"stretchy\"],mover:[],mpadded:[\"lspace\",\"width\",\"height\",\"depth\",\"voffset\"],mphantom:[],mprescripts:[],mroot:[],mrow:[\"xlink:href\",\"xlink:type\",\"xmlns:xlink\"],mspace:[\"depth\",\"height\",\"width\"],msqrt:[],mstyle:[\"displaystyle\",\"mathbackground\",\"mathcolor\",\"mathvariant\",\"scriptlevel\"],msub:[],msubsup:[],msup:[],mtable:[\"align\",\"columnalign\",\"columnlines\",\"columnspacing\",\"displaystyle\",\"equalcolumns\",\"equalrows\",\"frame\",\"rowalign\",\"rowlines\",\"rowspacing\",\"width\"],mtd:[\"columnalign\",\"columnspan\",\"rowalign\",\"rowspan\"],mtext:[],mtr:[\"columnalign\",\"rowalign\"],munder:[],munderover:[],none:[],semantics:[]};Object.keys(gn).forEach((tA=>{gn[tA]=[...gn[tA],...fn]}));const pn={};Object.entries(gn).forEach((([tA,eA])=>{const AA={};Object.entries(eA).forEach((([tA,eA])=>{if(eA.includes(\":\")){const tA=eA.split(\":\");AA[tA[1]]=sA[tA[0].toUpperCase()]}else AA[eA]=\"xmlns\"===eA?sA.XMLNS:null})),pn[tA]=AA}));const sanitizeSvg=tA=>{if(3===tA.nodeType&&(tA.nodeValue=tA.nodeValue.trim(),tA.nodeValue.length||tA.remove()),1!==tA.nodeType)return;const eA=tA.ownerDocument,AA=tA.parentNode;if(!eA||!AA)return;const rA=gn[tA.nodeName],nA=pn[tA.nodeName];if(void 0!==rA){const eA=[];let AA=tA.attributes.length;for(;AA--;){const iA=tA.attributes.item(AA),oA=iA.nodeName,aA=iA.localName,lA=iA.namespaceURI;if(lA!==nA[aA]&&lA!==sA.XMLNS&&(lA!==sA.XMLNS||!dn[iA.value]))if(oA.startsWith(\"se:\")||oA.startsWith(\"oi:\")||oA.startsWith(\"data-\")){const tA=oA.startsWith(\"se:\")?sA.SE:oA.startsWith(\"oi:\")?sA.OI:null;eA.push([oA,iA.value,tA])}else console.warn(`sanitizeSvg: attribute ${oA} in element ${tA.nodeName} not in whitelist is removed`),tA.removeAttributeNS(lA,aA);if(\"style\"===oA){const eA=iA.value.split(\";\");let AA=eA.length;for(;AA--;){const[nA,iA]=eA[AA].split(\":\"),sA=(nA||\"\").trim(),oA=(iA||\"\").trim();rA.includes(sA)&&tA.setAttribute(sA,oA)}tA.removeAttribute(\"style\")}}Object.values(eA).forEach((([eA,AA,rA])=>{tA.setAttributeNS(rA,eA,AA)}));const iA=getHref(tA);if(iA&&[\"filter\",\"linearGradient\",\"pattern\",\"radialGradient\",\"textPath\",\"use\"].includes(tA.nodeName)&&\"#\"!==iA[0]&&(setHref(tA,\"\"),console.warn(`sanitizeSvg: attribute href in element ${tA.nodeName} pointing to a non-local reference (${iA}) is removed`),tA.removeAttributeNS(sA.XLINK,\"href\")),\"use\"===tA.nodeName&&!getHref(tA))return console.warn(`sanitizeSvg: element ${tA.nodeName} without a xlink:href is removed`),void tA.remove();for(Object.values([\"clip-path\",\"fill\",\"filter\",\"marker-end\",\"marker-mid\",\"marker-start\",\"mask\",\"stroke\"],(eA=>{let AA=tA.getAttribute(eA);AA&&(AA=getUrlFromAttr(AA),AA&&\"#\"!==AA[0]&&(tA.setAttribute(eA,\"\"),console.warn(`sanitizeSvg: attribute ${eA} in element ${tA.nodeName} pointing to a non-local reference (${AA}) is removed`),tA.removeAttribute(eA)))})),AA=tA.childNodes.length;AA--;)sanitizeSvg(tA.childNodes.item(AA))}else{console.warn(`sanitizeSvg: element ${tA.nodeName} not supported is removed`);const eA=[];for(;tA.hasChildNodes();)eA.push(AA.insertBefore(tA.firstChild,tA));tA.remove();let rA=eA.length;for(;rA--;)sanitizeSvg(eA[rA])}};function _typeof$1(tA){return _typeof$1=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(tA){return typeof tA}:function(tA){return tA&&\"function\"==typeof Symbol&&tA.constructor===Symbol&&tA!==Symbol.prototype?\"symbol\":typeof tA},_typeof$1(tA)}var mn=Uint8Array,wn=Uint16Array,yn=Uint32Array,Bn=new mn([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,0,0,0]),bn=new mn([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,0,0]),vn=new mn([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),freb=function(tA,eA){for(var AA=new wn(31),rA=0;rA<31;++rA)AA[rA]=eA+=1<<tA[rA-1];var nA=new yn(AA[30]);for(rA=1;rA<30;++rA)for(var iA=AA[rA];iA<AA[rA+1];++iA)nA[iA]=iA-AA[rA]<<5|rA;return[AA,nA]},Cn=freb(Bn,2),Sn=Cn[0],xn=Cn[1];Sn[28]=258,xn[258]=28;for(var Fn=freb(bn,0),En=Fn[0],Qn=Fn[1],Un=new wn(32768),Pn=0;Pn<32768;++Pn){var _n=(43690&Pn)>>>1|(21845&Pn)<<1;_n=(61680&(_n=(52428&_n)>>>2|(13107&_n)<<2))>>>4|(3855&_n)<<4,Un[Pn]=((65280&_n)>>>8|(255&_n)<<8)>>>1}var hMap=function(tA,eA,AA){for(var rA=tA.length,nA=0,iA=new wn(eA);nA<rA;++nA)++iA[tA[nA]-1];var sA,oA=new wn(eA);for(nA=0;nA<eA;++nA)oA[nA]=oA[nA-1]+iA[nA-1]<<1;if(AA){sA=new wn(1<<eA);var aA=15-eA;for(nA=0;nA<rA;++nA)if(tA[nA])for(var lA=nA<<4|tA[nA],cA=eA-tA[nA],uA=oA[tA[nA]-1]++<<cA,hA=uA|(1<<cA)-1;uA<=hA;++uA)sA[Un[uA]>>>aA]=lA}else for(sA=new wn(rA),nA=0;nA<rA;++nA)sA[nA]=Un[oA[tA[nA]-1]++]>>>15-tA[nA];return sA},Ln=new mn(288);for(Pn=0;Pn<144;++Pn)Ln[Pn]=8;for(Pn=144;Pn<256;++Pn)Ln[Pn]=9;for(Pn=256;Pn<280;++Pn)Ln[Pn]=7;for(Pn=280;Pn<288;++Pn)Ln[Pn]=8;var In=new mn(32);for(Pn=0;Pn<32;++Pn)In[Pn]=5;var Nn=hMap(Ln,9,0),Tn=hMap(Ln,9,1),kn=hMap(In,5,0),Mn=hMap(In,5,1),max$3=function(tA){for(var eA=tA[0],AA=1;AA<tA.length;++AA)tA[AA]>eA&&(eA=tA[AA]);return eA},bits=function(tA,eA,AA){var rA=eA/8>>0;return(tA[rA]|tA[rA+1]<<8)>>>(7&eA)&AA},bits16=function(tA,eA){var AA=eA/8>>0;return(tA[AA]|tA[AA+1]<<8|tA[AA+2]<<16)>>>(7&eA)},shft=function(tA){return(tA/8>>0)+(7&tA&&1)},slc=function(tA,eA,AA){(null==eA||eA<0)&&(eA=0),(null==AA||AA>tA.length)&&(AA=tA.length);var rA=new(tA instanceof wn?wn:tA instanceof yn?yn:mn)(AA-eA);return rA.set(tA.subarray(eA,AA)),rA},wbits=function(tA,eA,AA){AA<<=7&eA;var rA=eA/8>>0;tA[rA]|=AA,tA[rA+1]|=AA>>>8},wbits16=function(tA,eA,AA){AA<<=7&eA;var rA=eA/8>>0;tA[rA]|=AA,tA[rA+1]|=AA>>>8,tA[rA+2]|=AA>>>16},hTree=function(tA,eA){for(var AA=[],rA=0;rA<tA.length;++rA)tA[rA]&&AA.push({s:rA,f:tA[rA]});var nA=AA.length,iA=AA.slice();if(!nA)return[new mn(0),0];if(1==nA){var sA=new mn(AA[0].s+1);return sA[AA[0].s]=1,[sA,1]}AA.sort((function(tA,eA){return tA.f-eA.f})),AA.push({s:-1,f:25001});var oA=AA[0],aA=AA[1],lA=0,cA=1,uA=2;for(AA[0]={s:-1,f:oA.f+aA.f,l:oA,r:aA};cA!=nA-1;)oA=AA[AA[lA].f<AA[uA].f?lA++:uA++],aA=AA[lA!=cA&&AA[lA].f<AA[uA].f?lA++:uA++],AA[cA++]={s:-1,f:oA.f+aA.f,l:oA,r:aA};var hA=iA[0].s;for(rA=1;rA<nA;++rA)iA[rA].s>hA&&(hA=iA[rA].s);var dA=new wn(hA+1),fA=ln(AA[cA-1],dA,0);if(fA>eA){rA=0;var gA=0,pA=fA-eA,mA=1<<pA;for(iA.sort((function(tA,eA){return dA[eA.s]-dA[tA.s]||tA.f-eA.f}));rA<nA;++rA){var wA=iA[rA].s;if(!(dA[wA]>eA))break;gA+=mA-(1<<fA-dA[wA]),dA[wA]=eA}for(gA>>>=pA;gA>0;){var yA=iA[rA].s;dA[yA]<eA?gA-=1<<eA-dA[yA]++-1:++rA}for(;rA>=0&&gA;--rA){var BA=iA[rA].s;dA[BA]==eA&&(--dA[BA],++gA)}fA=eA}return[new mn(dA),fA]},ln=function(tA,eA,AA){return-1==tA.s?Math.max(ln(tA.l,eA,AA+1),ln(tA.r,eA,AA+1)):eA[tA.s]=AA},lc=function(tA){for(var eA=tA.length;eA&&!tA[--eA];);for(var AA=new wn(++eA),rA=0,nA=tA[0],iA=1,w=function(tA){AA[rA++]=tA},sA=1;sA<=eA;++sA)if(tA[sA]==nA&&sA!=eA)++iA;else{if(!nA&&iA>2){for(;iA>138;iA-=138)w(32754);iA>2&&(w(iA>10?iA-11<<5|28690:iA-3<<5|12305),iA=0)}else if(iA>3){for(w(nA),--iA;iA>6;iA-=6)w(8304);iA>2&&(w(iA-3<<5|8208),iA=0)}for(;iA--;)w(nA);iA=1,nA=tA[sA]}return[AA.subarray(0,rA),eA]},clen=function(tA,eA){for(var AA=0,rA=0;rA<eA.length;++rA)AA+=tA[rA]*eA[rA];return AA},wfblk=function(tA,eA,AA){var rA=AA.length,nA=shft(eA+2);tA[nA]=255&rA,tA[nA+1]=rA>>>8,tA[nA+2]=255^tA[nA],tA[nA+3]=255^tA[nA+1];for(var iA=0;iA<rA;++iA)tA[nA+iA+4]=AA[iA];return 8*(nA+4+rA)},wblk=function(tA,eA,AA,rA,nA,iA,sA,oA,aA,lA,cA){wbits(eA,cA++,AA),++nA[256];for(var uA=hTree(nA,15),hA=uA[0],dA=uA[1],fA=hTree(iA,15),gA=fA[0],pA=fA[1],mA=lc(hA),wA=mA[0],yA=mA[1],BA=lc(gA),bA=BA[0],vA=BA[1],CA=new wn(19),SA=0;SA<wA.length;++SA)CA[31&wA[SA]]++;for(SA=0;SA<bA.length;++SA)CA[31&bA[SA]]++;for(var xA=hTree(CA,7),FA=xA[0],EA=xA[1],QA=19;QA>4&&!FA[vn[QA-1]];--QA);var UA,PA,_A,LA,IA=lA+5<<3,NA=clen(nA,Ln)+clen(iA,In)+sA,TA=clen(nA,hA)+clen(iA,gA)+sA+14+3*QA+clen(CA,FA)+(2*CA[16]+3*CA[17]+7*CA[18]);if(IA<=NA&&IA<=TA)return wfblk(eA,cA,tA.subarray(aA,aA+lA));if(wbits(eA,cA,1+(TA<NA)),cA+=2,TA<NA){UA=hMap(hA,dA,0),PA=hA,_A=hMap(gA,pA,0),LA=gA;var kA=hMap(FA,EA,0);wbits(eA,cA,yA-257),wbits(eA,cA+5,vA-1),wbits(eA,cA+10,QA-4),cA+=14;for(SA=0;SA<QA;++SA)wbits(eA,cA+3*SA,FA[vn[SA]]);cA+=3*QA;for(var MA=[wA,bA],OA=0;OA<2;++OA){var HA=MA[OA];for(SA=0;SA<HA.length;++SA){var DA=31&HA[SA];wbits(eA,cA,kA[DA]),cA+=FA[DA],DA>15&&(wbits(eA,cA,HA[SA]>>>5&127),cA+=HA[SA]>>>12)}}}else UA=Nn,PA=Ln,_A=kn,LA=In;for(SA=0;SA<oA;++SA)if(rA[SA]>255){DA=rA[SA]>>>18&31;wbits16(eA,cA,UA[DA+257]),cA+=PA[DA+257],DA>7&&(wbits(eA,cA,rA[SA]>>>23&31),cA+=Bn[DA]);var RA=31&rA[SA];wbits16(eA,cA,_A[RA]),cA+=LA[RA],RA>3&&(wbits16(eA,cA,rA[SA]>>>5&8191),cA+=bn[RA])}else wbits16(eA,cA,UA[rA[SA]]),cA+=PA[rA[SA]];return wbits16(eA,cA,UA[256]),cA+PA[256]},On=new yn([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Hn=new mn(0),dopt=function(tA,eA,AA,rA,nA){return function(tA,eA,AA,rA,nA,iA){var sA=tA.length,oA=new mn(rA+sA+5*(1+Math.floor(sA/7e3))+nA),aA=oA.subarray(rA,oA.length-nA),lA=0;if(!eA||sA<8)for(var cA=0;cA<=sA;cA+=65535){var uA=cA+65535;uA<sA?lA=wfblk(aA,lA,tA.subarray(cA,uA)):(aA[cA]=iA,lA=wfblk(aA,lA,tA.subarray(cA,sA)))}else{for(var hA=On[eA-1],dA=hA>>>13,fA=8191&hA,gA=(1<<AA)-1,pA=new wn(32768),mA=new wn(gA+1),wA=Math.ceil(AA/3),yA=2*wA,hsh=function(eA){return(tA[eA]^tA[eA+1]<<wA^tA[eA+2]<<yA)&gA},BA=new yn(25e3),bA=new wn(288),vA=new wn(32),CA=0,SA=0,xA=(cA=0,0),FA=0,EA=0;cA<sA;++cA){var QA=hsh(cA),UA=32767&cA,PA=mA[QA];if(pA[UA]=PA,mA[QA]=UA,FA<=cA){var _A=sA-cA;if((CA>7e3||xA>24576)&&_A>423){lA=wblk(tA,aA,0,BA,bA,vA,SA,xA,EA,cA-EA,lA),xA=CA=SA=0,EA=cA;for(var LA=0;LA<286;++LA)bA[LA]=0;for(LA=0;LA<30;++LA)vA[LA]=0}var IA=2,NA=0,TA=fA,kA=UA-PA&32767;if(_A>2&&QA==hsh(cA-kA))for(var MA=Math.min(dA,_A)-1,OA=Math.min(32767,cA),HA=Math.min(258,_A);kA<=OA&&--TA&&UA!=PA;){if(tA[cA+IA]==tA[cA+IA-kA]){for(var DA=0;DA<HA&&tA[cA+DA]==tA[cA+DA-kA];++DA);if(DA>IA){if(IA=DA,NA=kA,DA>MA)break;var RA=Math.min(kA,DA-2),VA=0;for(LA=0;LA<RA;++LA){var GA=cA-kA+LA+32768&32767,jA=GA-pA[GA]+32768&32767;jA>VA&&(VA=jA,PA=GA)}}}kA+=(UA=PA)-(PA=pA[UA])+32768&32767}if(NA){BA[xA++]=268435456|xn[IA]<<18|Qn[NA];var KA=31&xn[IA],qA=31&Qn[NA];SA+=Bn[KA]+bn[qA],++bA[257+KA],++vA[qA],FA=cA+IA,++CA}else BA[xA++]=tA[cA],++bA[tA[cA]]}}lA=wblk(tA,aA,iA,BA,bA,vA,SA,xA,EA,cA-EA,lA),iA||(lA=wfblk(aA,lA,Hn))}return slc(oA,0,rA+shft(lA)+nA)}(tA,null==eA.level?6:eA.level,null==eA.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(tA.length)))):12+eA.mem,AA,rA,!nA)};function zlibSync(tA,eA){void 0===eA&&(eA={});var AA=function(){var tA=1,eA=0;return{p:function(AA){for(var rA=tA,nA=eA,iA=AA.length,sA=0;sA!=iA;){for(var oA=Math.min(sA+5552,iA);sA<oA;++sA)nA+=rA+=AA[sA];rA%=65521,nA%=65521}tA=rA,eA=nA},d:function(){return(tA>>>8<<16|(255&eA)<<8|eA>>>8)+2*((255&tA)<<23)}}}();AA.p(tA);var rA=dopt(tA,eA,2,4);return function(tA,eA){var AA=eA.level,rA=0==AA?0:AA<6?1:9==AA?3:2;tA[0]=120,tA[1]=rA<<6|(rA?32-2*rA:1)}(rA,eA),function(tA,eA,AA){for(;AA;++eA)tA[eA]=AA,AA>>>=8}(rA,rA.length-4,AA.d()),rA}function unzlibSync(tA,eA){return function(tA,eA,AA){var rA=tA.length,nA=!eA||AA,iA=!AA||AA.i;AA||(AA={}),eA||(eA=new mn(3*rA));var cbuf=function(tA){var AA=eA.length;if(tA>AA){var rA=new mn(Math.max(2*AA,tA));rA.set(eA),eA=rA}},sA=AA.f||0,oA=AA.p||0,aA=AA.b||0,lA=AA.l,cA=AA.d,uA=AA.m,hA=AA.n,dA=8*rA;do{if(!lA){AA.f=sA=bits(tA,oA,1);var fA=bits(tA,oA+1,3);if(oA+=3,!fA){var gA=tA[(FA=shft(oA)+4)-4]|tA[FA-3]<<8,pA=FA+gA;if(pA>rA){if(iA)throw\"unexpected EOF\";break}nA&&cbuf(aA+gA),eA.set(tA.subarray(FA,pA),aA),AA.b=aA+=gA,AA.p=oA=8*pA;continue}if(1==fA)lA=Tn,cA=Mn,uA=9,hA=5;else{if(2!=fA)throw\"invalid block type\";var mA=bits(tA,oA,31)+257,wA=bits(tA,oA+10,15)+4,yA=mA+bits(tA,oA+5,31)+1;oA+=14;for(var BA=new mn(yA),bA=new mn(19),vA=0;vA<wA;++vA)bA[vn[vA]]=bits(tA,oA+3*vA,7);oA+=3*wA;var CA=max$3(bA),SA=(1<<CA)-1;if(!iA&&oA+yA*(CA+7)>dA)break;var xA=hMap(bA,CA,1);for(vA=0;vA<yA;){var FA,EA=xA[bits(tA,oA,SA)];if(oA+=15&EA,(FA=EA>>>4)<16)BA[vA++]=FA;else{var QA=0,UA=0;for(16==FA?(UA=3+bits(tA,oA,3),oA+=2,QA=BA[vA-1]):17==FA?(UA=3+bits(tA,oA,7),oA+=3):18==FA&&(UA=11+bits(tA,oA,127),oA+=7);UA--;)BA[vA++]=QA}}var PA=BA.subarray(0,mA),_A=BA.subarray(mA);uA=max$3(PA),hA=max$3(_A),lA=hMap(PA,uA,1),cA=hMap(_A,hA,1)}if(oA>dA)throw\"unexpected EOF\"}nA&&cbuf(aA+131072);for(var LA=(1<<uA)-1,IA=(1<<hA)-1,NA=uA+hA+18;iA||oA+NA<dA;){var TA=(QA=lA[bits16(tA,oA)&LA])>>>4;if((oA+=15&QA)>dA)throw\"unexpected EOF\";if(!QA)throw\"invalid length/literal\";if(TA<256)eA[aA++]=TA;else{if(256==TA){lA=null;break}var kA=TA-254;if(TA>264){var MA=Bn[vA=TA-257];kA=bits(tA,oA,(1<<MA)-1)+Sn[vA],oA+=MA}var OA=cA[bits16(tA,oA)&IA],HA=OA>>>4;if(!OA)throw\"invalid distance\";if(oA+=15&OA,_A=En[HA],HA>3&&(MA=bn[HA],_A+=bits16(tA,oA)&(1<<MA)-1,oA+=MA),oA>dA)throw\"unexpected EOF\";nA&&cbuf(aA+131072);for(var DA=aA+kA;aA<DA;aA+=4)eA[aA]=eA[aA-_A],eA[aA+1]=eA[aA+1-_A],eA[aA+2]=eA[aA+2-_A],eA[aA+3]=eA[aA+3-_A];aA=DA}}AA.l=lA,AA.p=oA,AA.b=aA,lA&&(sA=1,AA.m=uA,AA.d=cA,AA.n=hA)}while(!sA);return aA==eA.length?eA:slc(eA,0,aA)}((function(tA){if(8!=(15&tA[0])||tA[0]>>>4>7||(tA[0]<<8|tA[1])%31)throw\"invalid zlib data\";if(32&tA[1])throw\"invalid zlib data: preset dictionaries not supported\"}(tA),tA.subarray(2,-4)),eA)}\n/** @license\n *\n * jsPDF - PDF Document creation from JavaScript\n * Version 2.5.1 Built on 2022-01-28T15:37:57.791Z\n * CommitID 00000000\n *\n * Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF\n * 2015-2021 yWorks GmbH, http://www.yworks.com\n * 2015-2021 Lukas Holländer <lukas.hollaender@yworks.com>, https://github.com/HackbrettXXX\n * 2016-2018 Aras Abbasi <aras.abbasi@gmail.com>\n * 2010 Aaron Spike, https://github.com/acspike\n * 2012 Willow Systems Corporation, https://github.com/willowsystems\n * 2012 Pablo Hess, https://github.com/pablohess\n * 2012 Florian Jenett, https://github.com/fjenett\n * 2013 Warren Weckesser, https://github.com/warrenweckesser\n * 2013 Youssef Beddad, https://github.com/lifof\n * 2013 Lee Driscoll, https://github.com/lsdriscoll\n * 2013 Stefan Slonevskiy, https://github.com/stefslon\n * 2013 Jeremy Morel, https://github.com/jmorel\n * 2013 Christoph Hartmann, https://github.com/chris-rock\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 James Makes, https://github.com/dollaruw\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 Steven Spungin, https://github.com/Flamenco\n * 2014 Kenneth Glassey, https://github.com/Gavvers\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * Contributor(s):\n * siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,\n * kim3er, mfo, alnorth, Flamenco\n */var Dn=function(){return\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this}();function i$2(){Dn.console&&\"function\"==typeof Dn.console.log&&Dn.console.log.apply(Dn.console,arguments)}var Rn={log:i$2,warn:function(tA){Dn.console&&(\"function\"==typeof Dn.console.warn?Dn.console.warn.apply(Dn.console,arguments):i$2.call(null,arguments))},error:function(tA){Dn.console&&(\"function\"==typeof Dn.console.error?Dn.console.error.apply(Dn.console,arguments):i$2(tA))}};function o$1(tA,eA,AA){var rA=new XMLHttpRequest;rA.open(\"GET\",tA),rA.responseType=\"blob\",rA.onload=function(){jn(rA.response,eA,AA)},rA.onerror=function(){Rn.error(\"could not download file\")},rA.send()}function s$1(tA){var eA=new XMLHttpRequest;eA.open(\"HEAD\",tA,!1);try{eA.send()}catch(tA){}return eA.status>=200&&eA.status<=299}function c$2(tA){try{tA.dispatchEvent(new MouseEvent(\"click\"))}catch(AA){var eA=document.createEvent(\"MouseEvents\");eA.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),tA.dispatchEvent(eA)}}var Vn,Gn,jn=Dn.saveAs||(\"object\"!==(\"undefined\"==typeof window?\"undefined\":_typeof$1(window))||window!==Dn?function(){}:\"undefined\"!=typeof HTMLAnchorElement&&\"download\"in HTMLAnchorElement.prototype?function(tA,eA,AA){var rA=Dn.URL||Dn.webkitURL,nA=document.createElement(\"a\");eA=eA||tA.name||\"download\",nA.download=eA,nA.rel=\"noopener\",\"string\"==typeof tA?(nA.href=tA,nA.origin!==location.origin?s$1(nA.href)?o$1(tA,eA,AA):c$2(nA,nA.target=\"_blank\"):c$2(nA)):(nA.href=rA.createObjectURL(tA),setTimeout((function(){rA.revokeObjectURL(nA.href)}),4e4),setTimeout((function(){c$2(nA)}),0))}:\"msSaveOrOpenBlob\"in navigator?function(tA,eA,AA){if(eA=eA||tA.name||\"download\",\"string\"==typeof tA)if(s$1(tA))o$1(tA,eA,AA);else{var rA=document.createElement(\"a\");rA.href=tA,rA.target=\"_blank\",setTimeout((function(){c$2(rA)}))}else navigator.msSaveOrOpenBlob(function(tA,eA){return void 0===eA?eA={autoBom:!1}:\"object\"!==_typeof$1(eA)&&(Rn.warn(\"Deprecated: Expected third argument to be a object\"),eA={autoBom:!eA}),eA.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(tA.type)?new Blob([String.fromCharCode(65279),tA],{type:tA.type}):tA}(tA,AA),eA)}:function(tA,eA,AA,rA){if((rA=rA||open(\"\",\"_blank\"))&&(rA.document.title=rA.document.body.innerText=\"downloading...\"),\"string\"==typeof tA)return o$1(tA,eA,AA);var nA=\"application/octet-stream\"===tA.type,iA=/constructor/i.test(Dn.HTMLElement)||Dn.safari,sA=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((sA||nA&&iA)&&\"object\"===(\"undefined\"==typeof FileReader?\"undefined\":_typeof$1(FileReader))){var oA=new FileReader;oA.onloadend=function(){var tA=oA.result;tA=sA?tA:tA.replace(/^data:[^;]*;/,\"data:attachment/file;\"),rA?rA.location.href=tA:location=tA,rA=null},oA.readAsDataURL(tA)}else{var aA=Dn.URL||Dn.webkitURL,lA=aA.createObjectURL(tA);rA?rA.location=lA:location.href=lA,rA=null,setTimeout((function(){aA.revokeObjectURL(lA)}),4e4)}});\n/**\n * A class to parse color values\n * @author Stoyan Stefanov <sstoo@gmail.com>\n * {@link http://www.phpied.com/rgb-color-parser-in-javascript/}\n * @license Use it if you like it\n */function f$1(tA){var eA;tA=tA||\"\",this.ok=!1,\"#\"==tA.charAt(0)&&(tA=tA.substr(1,6)),tA={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"00ffff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000000\",blanchedalmond:\"ffebcd\",blue:\"0000ff\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"00ffff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dodgerblue:\"1e90ff\",feldspar:\"d19275\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"ff00ff\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgrey:\"d3d3d3\",lightgreen:\"90ee90\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslateblue:\"8470ff\",lightslategray:\"778899\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"00ff00\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"ff00ff\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370d8\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"d87093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",red:\"ff0000\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",violetred:\"d02090\",wheat:\"f5deb3\",white:\"ffffff\",whitesmoke:\"f5f5f5\",yellow:\"ffff00\",yellowgreen:\"9acd32\"}[tA=(tA=tA.replace(/ /g,\"\")).toLowerCase()]||tA;for(var AA=[{re:/^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,example:[\"rgb(123, 234, 45)\",\"rgb(255,234,245)\"],process:function(tA){return[parseInt(tA[1]),parseInt(tA[2]),parseInt(tA[3])]}},{re:/^(\\w{2})(\\w{2})(\\w{2})$/,example:[\"#00ff00\",\"336699\"],process:function(tA){return[parseInt(tA[1],16),parseInt(tA[2],16),parseInt(tA[3],16)]}},{re:/^(\\w{1})(\\w{1})(\\w{1})$/,example:[\"#fb0\",\"f0f\"],process:function(tA){return[parseInt(tA[1]+tA[1],16),parseInt(tA[2]+tA[2],16),parseInt(tA[3]+tA[3],16)]}}],rA=0;rA<AA.length;rA++){var nA=AA[rA].re,iA=AA[rA].process,sA=nA.exec(tA);sA&&(eA=iA(sA),this.r=eA[0],this.g=eA[1],this.b=eA[2],this.ok=!0)}this.r=this.r<0||isNaN(this.r)?0:this.r>255?255:this.r,this.g=this.g<0||isNaN(this.g)?0:this.g>255?255:this.g,this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b,this.toRGB=function(){return\"rgb(\"+this.r+\", \"+this.g+\", \"+this.b+\")\"},this.toHex=function(){var tA=this.r.toString(16),eA=this.g.toString(16),AA=this.b.toString(16);return 1==tA.length&&(tA=\"0\"+tA),1==eA.length&&(eA=\"0\"+eA),1==AA.length&&(AA=\"0\"+AA),\"#\"+tA+eA+AA}}\n/**\n * @license\n * Joseph Myers does not specify a particular license for his work.\n *\n * Author: Joseph Myers\n * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js\n *\n * Modified by: Owen Leong\n */function d(tA,eA){var AA=tA[0],rA=tA[1],nA=tA[2],iA=tA[3];AA=g(AA,rA,nA,iA,eA[0],7,-680876936),iA=g(iA,AA,rA,nA,eA[1],12,-389564586),nA=g(nA,iA,AA,rA,eA[2],17,606105819),rA=g(rA,nA,iA,AA,eA[3],22,-1044525330),AA=g(AA,rA,nA,iA,eA[4],7,-176418897),iA=g(iA,AA,rA,nA,eA[5],12,1200080426),nA=g(nA,iA,AA,rA,eA[6],17,-1473231341),rA=g(rA,nA,iA,AA,eA[7],22,-45705983),AA=g(AA,rA,nA,iA,eA[8],7,1770035416),iA=g(iA,AA,rA,nA,eA[9],12,-1958414417),nA=g(nA,iA,AA,rA,eA[10],17,-42063),rA=g(rA,nA,iA,AA,eA[11],22,-1990404162),AA=g(AA,rA,nA,iA,eA[12],7,1804603682),iA=g(iA,AA,rA,nA,eA[13],12,-40341101),nA=g(nA,iA,AA,rA,eA[14],17,-1502002290),AA=m$2(AA,rA=g(rA,nA,iA,AA,eA[15],22,1236535329),nA,iA,eA[1],5,-165796510),iA=m$2(iA,AA,rA,nA,eA[6],9,-1069501632),nA=m$2(nA,iA,AA,rA,eA[11],14,643717713),rA=m$2(rA,nA,iA,AA,eA[0],20,-373897302),AA=m$2(AA,rA,nA,iA,eA[5],5,-701558691),iA=m$2(iA,AA,rA,nA,eA[10],9,38016083),nA=m$2(nA,iA,AA,rA,eA[15],14,-660478335),rA=m$2(rA,nA,iA,AA,eA[4],20,-405537848),AA=m$2(AA,rA,nA,iA,eA[9],5,568446438),iA=m$2(iA,AA,rA,nA,eA[14],9,-1019803690),nA=m$2(nA,iA,AA,rA,eA[3],14,-187363961),rA=m$2(rA,nA,iA,AA,eA[8],20,1163531501),AA=m$2(AA,rA,nA,iA,eA[13],5,-1444681467),iA=m$2(iA,AA,rA,nA,eA[2],9,-51403784),nA=m$2(nA,iA,AA,rA,eA[7],14,1735328473),AA=v$1(AA,rA=m$2(rA,nA,iA,AA,eA[12],20,-1926607734),nA,iA,eA[5],4,-378558),iA=v$1(iA,AA,rA,nA,eA[8],11,-2022574463),nA=v$1(nA,iA,AA,rA,eA[11],16,1839030562),rA=v$1(rA,nA,iA,AA,eA[14],23,-35309556),AA=v$1(AA,rA,nA,iA,eA[1],4,-1530992060),iA=v$1(iA,AA,rA,nA,eA[4],11,1272893353),nA=v$1(nA,iA,AA,rA,eA[7],16,-155497632),rA=v$1(rA,nA,iA,AA,eA[10],23,-1094730640),AA=v$1(AA,rA,nA,iA,eA[13],4,681279174),iA=v$1(iA,AA,rA,nA,eA[0],11,-358537222),nA=v$1(nA,iA,AA,rA,eA[3],16,-722521979),rA=v$1(rA,nA,iA,AA,eA[6],23,76029189),AA=v$1(AA,rA,nA,iA,eA[9],4,-640364487),iA=v$1(iA,AA,rA,nA,eA[12],11,-421815835),nA=v$1(nA,iA,AA,rA,eA[15],16,530742520),AA=b(AA,rA=v$1(rA,nA,iA,AA,eA[2],23,-995338651),nA,iA,eA[0],6,-198630844),iA=b(iA,AA,rA,nA,eA[7],10,1126891415),nA=b(nA,iA,AA,rA,eA[14],15,-1416354905),rA=b(rA,nA,iA,AA,eA[5],21,-57434055),AA=b(AA,rA,nA,iA,eA[12],6,1700485571),iA=b(iA,AA,rA,nA,eA[3],10,-1894986606),nA=b(nA,iA,AA,rA,eA[10],15,-1051523),rA=b(rA,nA,iA,AA,eA[1],21,-2054922799),AA=b(AA,rA,nA,iA,eA[8],6,1873313359),iA=b(iA,AA,rA,nA,eA[15],10,-30611744),nA=b(nA,iA,AA,rA,eA[6],15,-1560198380),rA=b(rA,nA,iA,AA,eA[13],21,1309151649),AA=b(AA,rA,nA,iA,eA[4],6,-145523070),iA=b(iA,AA,rA,nA,eA[11],10,-1120210379),nA=b(nA,iA,AA,rA,eA[2],15,718787259),rA=b(rA,nA,iA,AA,eA[9],21,-343485551),tA[0]=_$1(AA,tA[0]),tA[1]=_$1(rA,tA[1]),tA[2]=_$1(nA,tA[2]),tA[3]=_$1(iA,tA[3])}function p$1(tA,eA,AA,rA,nA,iA){return eA=_$1(_$1(eA,tA),_$1(rA,iA)),_$1(eA<<nA|eA>>>32-nA,AA)}function g(tA,eA,AA,rA,nA,iA,sA){return p$1(eA&AA|~eA&rA,tA,eA,nA,iA,sA)}function m$2(tA,eA,AA,rA,nA,iA,sA){return p$1(eA&rA|AA&~rA,tA,eA,nA,iA,sA)}function v$1(tA,eA,AA,rA,nA,iA,sA){return p$1(eA^AA^rA,tA,eA,nA,iA,sA)}function b(tA,eA,AA,rA,nA,iA,sA){return p$1(AA^(eA|~rA),tA,eA,nA,iA,sA)}function y$1(tA){var eA,AA=tA.length,rA=[1732584193,-271733879,-1732584194,271733878];for(eA=64;eA<=tA.length;eA+=64)d(rA,w(tA.substring(eA-64,eA)));tA=tA.substring(eA-64);var nA=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(eA=0;eA<tA.length;eA++)nA[eA>>2]|=tA.charCodeAt(eA)<<(eA%4<<3);if(nA[eA>>2]|=128<<(eA%4<<3),eA>55)for(d(rA,nA),eA=0;eA<16;eA++)nA[eA]=0;return nA[14]=8*AA,d(rA,nA),rA}function w(tA){var eA,AA=[];for(eA=0;eA<64;eA+=4)AA[eA>>2]=tA.charCodeAt(eA)+(tA.charCodeAt(eA+1)<<8)+(tA.charCodeAt(eA+2)<<16)+(tA.charCodeAt(eA+3)<<24);return AA}Vn=Dn.atob.bind(Dn),Gn=Dn.btoa.bind(Dn);var Kn=\"0123456789abcdef\".split(\"\");function L(tA){for(var eA=\"\",AA=0;AA<4;AA++)eA+=Kn[tA>>8*AA+4&15]+Kn[tA>>8*AA&15];return eA}function A(tA){return String.fromCharCode((255&tA)>>0,(65280&tA)>>8,(16711680&tA)>>16,(4278190080&tA)>>24)}function x(tA){return y$1(tA).map(A).join(\"\")}var qn=\"5d41402abc4b2a76b9719d911017c592\"!=function(tA){for(var eA=0;eA<tA.length;eA++)tA[eA]=L(tA[eA]);return tA.join(\"\")}(y$1(\"hello\"));function _$1(tA,eA){if(qn){var AA=(65535&tA)+(65535&eA);return(tA>>16)+(eA>>16)+(AA>>16)<<16|65535&AA}return tA+eA&4294967295}\n/**\n * @license\n * FPDF is released under a permissive license: there is no usage restriction.\n * You may embed it freely in your application (commercial or not), with or\n * without modifications.\n *\n * Reference: http://www.fpdf.org/en/script/script37.php\n */function P(tA,eA){var AA,rA,nA,iA;if(tA!==AA){for(var sA=(nA=tA,iA=1+(256/tA.length>>0),new Array(iA+1).join(nA)),oA=[],aA=0;aA<256;aA++)oA[aA]=aA;var lA=0;for(aA=0;aA<256;aA++){var cA=oA[aA];lA=(lA+cA+sA.charCodeAt(aA))%256,oA[aA]=oA[lA],oA[lA]=cA}AA=tA,rA=oA}else oA=rA;var uA=eA.length,hA=0,dA=0,fA=\"\";for(aA=0;aA<uA;aA++)dA=(dA+(cA=oA[hA=(hA+1)%256]))%256,oA[hA]=oA[dA],oA[dA]=cA,sA=oA[(oA[hA]+oA[dA])%256],fA+=String.fromCharCode(eA.charCodeAt(aA)^sA);return fA}\n/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n * Author: Owen Leong (@owenl131)\n * Date: 15 Oct 2020\n * References:\n * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt\n * https://github.com/foliojs/pdfkit/blob/master/lib/security.js\n * http://www.fpdf.org/en/script/script37.php\n */var zn={print:4,modify:8,copy:16,\"annot-forms\":32};function I(tA,eA,AA,rA){this.v=1,this.r=2;var nA=192;tA.forEach((function(tA){if(void 0!==zn.perm)throw new Error(\"Invalid permission: \"+tA);nA+=zn[tA]})),this.padding=\"(¿N^NuŠAd\\0NVÿú\u0001\\b..\\0¶Ðh>€/\\f©þdSiz\";var iA=(eA+this.padding).substr(0,32),sA=(AA+this.padding).substr(0,32);this.O=this.processOwnerPassword(iA,sA),this.P=-(1+(255^nA)),this.encryptionKey=x(iA+this.O+this.lsbFirstWord(this.P)+this.hexToBytes(rA)).substr(0,5),this.U=P(this.encryptionKey,this.padding)}function F(tA){if(/[^\\u0000-\\u00ff]/.test(tA))throw new Error(\"Invalid PDF Name Object: \"+tA+\", Only accept ASCII characters.\");for(var eA=\"\",AA=tA.length,rA=0;rA<AA;rA++){var nA=tA.charCodeAt(rA);eA+=nA<33||35===nA||37===nA||40===nA||41===nA||47===nA||60===nA||62===nA||91===nA||93===nA||123===nA||125===nA||nA>126?\"#\"+(\"0\"+nA.toString(16)).slice(-2):tA[rA]}return eA}function C(tA){if(\"object\"!==_typeof$1(tA))throw new Error(\"Invalid Context passed to initialize PubSub (jsPDF-module)\");var eA={};this.subscribe=function(tA,AA,rA){if(rA=rA||!1,\"string\"!=typeof tA||\"function\"!=typeof AA||\"boolean\"!=typeof rA)throw new Error(\"Invalid arguments passed to PubSub.subscribe (jsPDF-module)\");eA.hasOwnProperty(tA)||(eA[tA]={});var nA=Math.random().toString(35);return eA[tA][nA]=[AA,!!rA],nA},this.unsubscribe=function(tA){for(var AA in eA)if(eA[AA][tA])return delete eA[AA][tA],0===Object.keys(eA[AA]).length&&delete eA[AA],!0;return!1},this.publish=function(AA){if(eA.hasOwnProperty(AA)){var rA=Array.prototype.slice.call(arguments,1),nA=[];for(var iA in eA[AA]){var sA=eA[AA][iA];try{sA[0].apply(tA,rA)}catch(AA){Dn.console&&Rn.error(\"jsPDF PubSub Error\",AA.message,AA)}sA[1]&&nA.push(iA)}nA.length&&nA.forEach(this.unsubscribe)}},this.getTopics=function(){return eA}}function j(tA){if(!(this instanceof j))return new j(tA);var eA=\"opacity,stroke-opacity\".split(\",\");for(var AA in tA)tA.hasOwnProperty(AA)&&eA.indexOf(AA)>=0&&(this[AA]=tA[AA]);this.id=\"\",this.objectNumber=-1}function O$1(tA,eA){this.gState=tA,this.matrix=eA,this.id=\"\",this.objectNumber=-1}function B(tA,eA,AA,rA,nA){if(!(this instanceof B))return new B(tA,eA,AA,rA,nA);this.type=\"axial\"===tA?2:3,this.coords=eA,this.colors=AA,O$1.call(this,rA,nA)}function M(tA,eA,AA,rA,nA){if(!(this instanceof M))return new M(tA,eA,AA,rA,nA);this.boundingBox=tA,this.xStep=eA,this.yStep=AA,this.stream=\"\",this.cloneIndex=0,O$1.call(this,rA,nA)}function E(tA){var eA,AA=\"string\"==typeof arguments[0]?arguments[0]:\"p\",rA=arguments[1],nA=arguments[2],iA=arguments[3],sA=[],oA=1,aA=16,lA=\"S\",cA=null;\"object\"===_typeof$1(tA=tA||{})&&(AA=tA.orientation,rA=tA.unit||rA,nA=tA.format||nA,iA=tA.compress||tA.compressPdf||iA,null!==(cA=tA.encryption||null)&&(cA.userPassword=cA.userPassword||\"\",cA.ownerPassword=cA.ownerPassword||\"\",cA.userPermissions=cA.userPermissions||[]),oA=\"number\"==typeof tA.userUnit?Math.abs(tA.userUnit):1,void 0!==tA.precision&&(eA=tA.precision),void 0!==tA.floatPrecision&&(aA=tA.floatPrecision),lA=tA.defaultPathOperation||\"S\"),sA=tA.filters||(!0===iA?[\"FlateEncode\"]:sA),rA=rA||\"mm\",AA=(\"\"+(AA||\"P\")).toLowerCase();var uA=tA.putOnlyUsedFonts||!1,hA={},dA={internal:{},__private__:{}};dA.__private__.PubSub=C;var fA=\"1.3\",gA=dA.__private__.getPdfVersion=function(){return fA};dA.__private__.setPdfVersion=function(tA){fA=tA};var pA={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],\"government-letter\":[576,756],legal:[612,1008],\"junior-legal\":[576,360],ledger:[1224,792],tabloid:[792,1224],\"credit-card\":[153,243]};dA.__private__.getPageFormats=function(){return pA};var mA=dA.__private__.getPageFormat=function(tA){return pA[tA]};nA=nA||\"a4\";var wA={COMPAT:\"compat\",ADVANCED:\"advanced\"},yA=wA.COMPAT;function _(){this.saveGraphicsState(),KA(new un(Vr,0,0,-Vr,0,Bi()*Vr).toString()+\" cm\"),this.setFontSize(this.getFontSize()/Vr),lA=\"n\",yA=wA.ADVANCED}function P(){this.restoreGraphicsState(),lA=\"S\",yA=wA.COMPAT}var BA=dA.__private__.combineFontStyleAndFontWeight=function(tA,eA){if(\"bold\"==tA&&\"normal\"==eA||\"bold\"==tA&&400==eA||\"normal\"==tA&&\"italic\"==eA||\"bold\"==tA&&\"italic\"==eA)throw new Error(\"Invalid Combination of fontweight and fontstyle\");return eA&&(tA=400==eA||\"normal\"===eA?\"italic\"===tA?\"italic\":\"normal\":700!=eA&&\"bold\"!==eA||\"normal\"!==tA?(700==eA?\"bold\":eA)+\"\"+tA:\"bold\"),tA};dA.advancedAPI=function(tA){var eA=yA===wA.COMPAT;return eA&&_.call(this),\"function\"!=typeof tA||(tA(this),eA&&P.call(this)),this},dA.compatAPI=function(tA){var eA=yA===wA.ADVANCED;return eA&&P.call(this),\"function\"!=typeof tA||(tA(this),eA&&_.call(this)),this},dA.isAdvancedAPI=function(){return yA===wA.ADVANCED};var bA,q=function(tA){if(yA!==wA.ADVANCED)throw new Error(tA+\" is only available in 'advanced' API mode. You need to call advancedAPI() first.\")},vA=dA.roundToPrecision=dA.__private__.roundToPrecision=function(tA,AA){var rA=eA||AA;if(isNaN(tA)||isNaN(rA))throw new Error(\"Invalid argument passed to jsPDF.roundToPrecision\");return tA.toFixed(rA).replace(/0+$/,\"\")};bA=dA.hpf=dA.__private__.hpf=\"number\"==typeof aA?function(tA){if(isNaN(tA))throw new Error(\"Invalid argument passed to jsPDF.hpf\");return vA(tA,aA)}:\"smart\"===aA?function(tA){if(isNaN(tA))throw new Error(\"Invalid argument passed to jsPDF.hpf\");return vA(tA,tA>-1&&tA<1?16:5)}:function(tA){if(isNaN(tA))throw new Error(\"Invalid argument passed to jsPDF.hpf\");return vA(tA,16)};var CA=dA.f2=dA.__private__.f2=function(tA){if(isNaN(tA))throw new Error(\"Invalid argument passed to jsPDF.f2\");return vA(tA,2)},SA=dA.__private__.f3=function(tA){if(isNaN(tA))throw new Error(\"Invalid argument passed to jsPDF.f3\");return vA(tA,3)},xA=dA.scale=dA.__private__.scale=function(tA){if(isNaN(tA))throw new Error(\"Invalid argument passed to jsPDF.scale\");return yA===wA.COMPAT?tA*Vr:yA===wA.ADVANCED?tA:void 0},z=function(tA){return yA===wA.COMPAT?Bi()-tA:yA===wA.ADVANCED?tA:void 0},H=function(tA){return xA(z(tA))};dA.__private__.setPrecision=dA.setPrecision=function(tA){\"number\"==typeof parseInt(tA,10)&&(eA=parseInt(tA,10))};var FA,EA=\"00000000000000000000000000000000\",QA=dA.__private__.getFileId=function(){return EA},UA=dA.__private__.setFileId=function(tA){return EA=void 0!==tA&&/^[a-fA-F0-9]{32}$/.test(tA)?tA.toUpperCase():EA.split(\"\").map((function(){return\"ABCDEF0123456789\".charAt(Math.floor(16*Math.random()))})).join(\"\"),null!==cA&&(kn=new I(cA.userPermissions,cA.userPassword,cA.ownerPassword,EA)),EA};dA.setFileId=function(tA){return UA(tA),this},dA.getFileId=function(){return QA()};var PA=dA.__private__.convertDateToPDFDate=function(tA){var eA=tA.getTimezoneOffset(),AA=eA<0?\"+\":\"-\",rA=Math.floor(Math.abs(eA/60)),nA=Math.abs(eA%60),iA=[AA,TA(rA),\"'\",TA(nA),\"'\"].join(\"\");return[\"D:\",tA.getFullYear(),TA(tA.getMonth()+1),TA(tA.getDate()),TA(tA.getHours()),TA(tA.getMinutes()),TA(tA.getSeconds()),iA].join(\"\")},_A=dA.__private__.convertPDFDateToDate=function(tA){var eA=parseInt(tA.substr(2,4),10),AA=parseInt(tA.substr(6,2),10)-1,rA=parseInt(tA.substr(8,2),10),nA=parseInt(tA.substr(10,2),10),iA=parseInt(tA.substr(12,2),10),sA=parseInt(tA.substr(14,2),10);return new Date(eA,AA,rA,nA,iA,sA,0)},LA=dA.__private__.setCreationDate=function(tA){var eA;if(void 0===tA&&(tA=new Date),tA instanceof Date)eA=PA(tA);else{if(!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\\+0[0-9]|\\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/.test(tA))throw new Error(\"Invalid argument passed to jsPDF.setCreationDate\");eA=tA}return FA=eA},IA=dA.__private__.getCreationDate=function(tA){var eA=FA;return\"jsDate\"===tA&&(eA=_A(FA)),eA};dA.setCreationDate=function(tA){return LA(tA),this},dA.getCreationDate=function(tA){return IA(tA)};var NA,TA=dA.__private__.padd2=function(tA){return(\"0\"+parseInt(tA)).slice(-2)},kA=dA.__private__.padd2Hex=function(tA){return(\"00\"+(tA=tA.toString())).substr(tA.length)},MA=0,OA=[],HA=[],DA=0,RA=[],VA=[],GA=!1,jA=HA,ut=function(){MA=0,DA=0,HA=[],OA=[],RA=[],mn=gn(),wn=gn()};dA.__private__.setCustomOutputDestination=function(tA){GA=!0,jA=tA};var ht=function(tA){GA||(jA=tA)};dA.__private__.resetCustomOutputDestination=function(){GA=!1,jA=HA};var KA=dA.__private__.out=function(tA){return tA=tA.toString(),DA+=tA.length+1,jA.push(tA),jA},qA=dA.__private__.write=function(tA){return KA(1===arguments.length?tA.toString():Array.prototype.join.call(arguments,\" \"))},zA=dA.__private__.getArrayBuffer=function(tA){for(var eA=tA.length,AA=new ArrayBuffer(eA),rA=new Uint8Array(AA);eA--;)rA[eA]=tA.charCodeAt(eA);return AA},XA=[[\"Helvetica\",\"helvetica\",\"normal\",\"WinAnsiEncoding\"],[\"Helvetica-Bold\",\"helvetica\",\"bold\",\"WinAnsiEncoding\"],[\"Helvetica-Oblique\",\"helvetica\",\"italic\",\"WinAnsiEncoding\"],[\"Helvetica-BoldOblique\",\"helvetica\",\"bolditalic\",\"WinAnsiEncoding\"],[\"Courier\",\"courier\",\"normal\",\"WinAnsiEncoding\"],[\"Courier-Bold\",\"courier\",\"bold\",\"WinAnsiEncoding\"],[\"Courier-Oblique\",\"courier\",\"italic\",\"WinAnsiEncoding\"],[\"Courier-BoldOblique\",\"courier\",\"bolditalic\",\"WinAnsiEncoding\"],[\"Times-Roman\",\"times\",\"normal\",\"WinAnsiEncoding\"],[\"Times-Bold\",\"times\",\"bold\",\"WinAnsiEncoding\"],[\"Times-Italic\",\"times\",\"italic\",\"WinAnsiEncoding\"],[\"Times-BoldItalic\",\"times\",\"bolditalic\",\"WinAnsiEncoding\"],[\"ZapfDingbats\",\"zapfdingbats\",\"normal\",null],[\"Symbol\",\"symbol\",\"normal\",null]];dA.__private__.getStandardFonts=function(){return XA};var WA=tA.fontSize||16;dA.__private__.setFontSize=dA.setFontSize=function(tA){return WA=yA===wA.ADVANCED?tA/Vr:tA,this};var YA,JA=dA.__private__.getFontSize=dA.getFontSize=function(){return yA===wA.COMPAT?WA:WA*Vr},ZA=tA.R2L||!1;dA.__private__.setR2L=dA.setR2L=function(tA){return ZA=tA,this},dA.__private__.getR2L=dA.getR2L=function(){return ZA};var $A,Qr=dA.__private__.setZoomMode=function(tA){if(/^(?:\\d+\\.\\d*|\\d*\\.\\d+|\\d+)%$/.test(tA))YA=tA;else if(isNaN(tA)){if(-1===[void 0,null,\"fullwidth\",\"fullheight\",\"fullpage\",\"original\"].indexOf(tA))throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. \"'+tA+'\" is not recognized.');YA=tA}else YA=parseInt(tA,10)};dA.__private__.getZoomMode=function(){return YA};var Ur,Tr=dA.__private__.setPageMode=function(tA){if(-1==[void 0,null,\"UseNone\",\"UseOutlines\",\"UseThumbs\",\"FullScreen\"].indexOf(tA))throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. \"'+tA+'\" is not recognized.');$A=tA};dA.__private__.getPageMode=function(){return $A};var Hr=dA.__private__.setLayoutMode=function(tA){if(-1==[void 0,null,\"continuous\",\"single\",\"twoleft\",\"tworight\",\"two\"].indexOf(tA))throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. \"'+tA+'\" is not recognized.');Ur=tA};dA.__private__.getLayoutMode=function(){return Ur},dA.__private__.setDisplayMode=dA.setDisplayMode=function(tA,eA,AA){return Qr(tA),Hr(eA),Tr(AA),this};var Dr={title:\"\",subject:\"\",author:\"\",keywords:\"\",creator:\"\"};dA.__private__.getDocumentProperty=function(tA){if(-1===Object.keys(Dr).indexOf(tA))throw new Error(\"Invalid argument passed to jsPDF.getDocumentProperty\");return Dr[tA]},dA.__private__.getDocumentProperties=function(){return Dr},dA.__private__.setDocumentProperties=dA.setProperties=dA.setDocumentProperties=function(tA){for(var eA in Dr)Dr.hasOwnProperty(eA)&&tA[eA]&&(Dr[eA]=tA[eA]);return this},dA.__private__.setDocumentProperty=function(tA,eA){if(-1===Object.keys(Dr).indexOf(tA))throw new Error(\"Invalid arguments passed to jsPDF.setDocumentProperty\");return Dr[tA]=eA};var Rr,Vr,Gr,Kr,zr,Xr={},Wr={},Yr=[],Jr={},Zr={},$r={},tn={},en=null,An=0,rn=[],nn=new C(dA),sn=tA.hotfixes||[],on={},an={},cn=[],un=function t(tA,eA,AA,rA,nA,iA){if(!(this instanceof t))return new t(tA,eA,AA,rA,nA,iA);isNaN(tA)&&(tA=1),isNaN(eA)&&(eA=0),isNaN(AA)&&(AA=0),isNaN(rA)&&(rA=1),isNaN(nA)&&(nA=0),isNaN(iA)&&(iA=0),this._matrix=[tA,eA,AA,rA,nA,iA]};Object.defineProperty(un.prototype,\"sx\",{get:function(){return this._matrix[0]},set:function(tA){this._matrix[0]=tA}}),Object.defineProperty(un.prototype,\"shy\",{get:function(){return this._matrix[1]},set:function(tA){this._matrix[1]=tA}}),Object.defineProperty(un.prototype,\"shx\",{get:function(){return this._matrix[2]},set:function(tA){this._matrix[2]=tA}}),Object.defineProperty(un.prototype,\"sy\",{get:function(){return this._matrix[3]},set:function(tA){this._matrix[3]=tA}}),Object.defineProperty(un.prototype,\"tx\",{get:function(){return this._matrix[4]},set:function(tA){this._matrix[4]=tA}}),Object.defineProperty(un.prototype,\"ty\",{get:function(){return this._matrix[5]},set:function(tA){this._matrix[5]=tA}}),Object.defineProperty(un.prototype,\"a\",{get:function(){return this._matrix[0]},set:function(tA){this._matrix[0]=tA}}),Object.defineProperty(un.prototype,\"b\",{get:function(){return this._matrix[1]},set:function(tA){this._matrix[1]=tA}}),Object.defineProperty(un.prototype,\"c\",{get:function(){return this._matrix[2]},set:function(tA){this._matrix[2]=tA}}),Object.defineProperty(un.prototype,\"d\",{get:function(){return this._matrix[3]},set:function(tA){this._matrix[3]=tA}}),Object.defineProperty(un.prototype,\"e\",{get:function(){return this._matrix[4]},set:function(tA){this._matrix[4]=tA}}),Object.defineProperty(un.prototype,\"f\",{get:function(){return this._matrix[5]},set:function(tA){this._matrix[5]=tA}}),Object.defineProperty(un.prototype,\"rotation\",{get:function(){return Math.atan2(this.shx,this.sx)}}),Object.defineProperty(un.prototype,\"scaleX\",{get:function(){return this.decompose().scale.sx}}),Object.defineProperty(un.prototype,\"scaleY\",{get:function(){return this.decompose().scale.sy}}),Object.defineProperty(un.prototype,\"isIdentity\",{get:function(){return 1===this.sx&&0===this.shy&&0===this.shx&&1===this.sy&&0===this.tx&&0===this.ty}}),un.prototype.join=function(tA){return[this.sx,this.shy,this.shx,this.sy,this.tx,this.ty].map(bA).join(tA)},un.prototype.multiply=function(tA){var eA=tA.sx*this.sx+tA.shy*this.shx,AA=tA.sx*this.shy+tA.shy*this.sy,rA=tA.shx*this.sx+tA.sy*this.shx,nA=tA.shx*this.shy+tA.sy*this.sy,iA=tA.tx*this.sx+tA.ty*this.shx+this.tx,sA=tA.tx*this.shy+tA.ty*this.sy+this.ty;return new un(eA,AA,rA,nA,iA,sA)},un.prototype.decompose=function(){var tA=this.sx,eA=this.shy,AA=this.shx,rA=this.sy,nA=this.tx,iA=this.ty,sA=Math.sqrt(tA*tA+eA*eA),oA=(tA/=sA)*AA+(eA/=sA)*rA;AA-=tA*oA,rA-=eA*oA;var aA=Math.sqrt(AA*AA+rA*rA);return oA/=aA,tA*(rA/=aA)<eA*(AA/=aA)&&(tA=-tA,eA=-eA,oA=-oA,sA=-sA),{scale:new un(sA,0,0,aA,0,0),translate:new un(1,0,0,1,nA,iA),rotate:new un(tA,eA,-eA,tA,0,0),skew:new un(1,0,oA,1,0,0)}},un.prototype.toString=function(tA){return this.join(\" \")},un.prototype.inversed=function(){var tA=this.sx,eA=this.shy,AA=this.shx,rA=this.sy,nA=this.tx,iA=this.ty,sA=1/(tA*rA-eA*AA),oA=rA*sA,aA=-eA*sA,lA=-AA*sA,cA=tA*sA;return new un(oA,aA,lA,cA,-oA*nA-lA*iA,-aA*nA-cA*iA)},un.prototype.applyToPoint=function(tA){var eA=tA.x*this.sx+tA.y*this.shx+this.tx,AA=tA.x*this.shy+tA.y*this.sy+this.ty;return new Cr(eA,AA)},un.prototype.applyToRectangle=function(tA){var eA=this.applyToPoint(tA),AA=this.applyToPoint(new Cr(tA.x+tA.w,tA.y+tA.h));return new jr(eA.x,eA.y,AA.x-eA.x,AA.y-eA.y)},un.prototype.clone=function(){var tA=this.sx,eA=this.shy,AA=this.shx,rA=this.sy,nA=this.tx,iA=this.ty;return new un(tA,eA,AA,rA,nA,iA)},dA.Matrix=un;var hn=dA.matrixMult=function(tA,eA){return eA.multiply(tA)},dn=new un(1,0,0,1,0,0);dA.unitMatrix=dA.identityMatrix=dn;var Jt=function(tA,eA){if(!Zr[tA]){var AA=(eA instanceof B?\"Sh\":\"P\")+(Object.keys(Jr).length+1).toString(10);eA.id=AA,Zr[tA]=AA,Jr[AA]=eA,nn.publish(\"addPattern\",eA)}};dA.ShadingPattern=B,dA.TilingPattern=M,dA.addShadingPattern=function(tA,eA){return q(\"addShadingPattern()\"),Jt(tA,eA),this},dA.beginTilingPattern=function(tA){q(\"beginTilingPattern()\"),Br(tA.boundingBox[0],tA.boundingBox[1],tA.boundingBox[2]-tA.boundingBox[0],tA.boundingBox[3]-tA.boundingBox[1],tA.matrix)},dA.endTilingPattern=function(tA,eA){q(\"endTilingPattern()\"),eA.stream=VA[NA].join(\"\\n\"),Jt(tA,eA),nn.publish(\"endTilingPattern\",eA),cn.pop().restore()};var fn=dA.__private__.newObject=function(){var tA=gn();return Zt(tA,!0),tA},gn=dA.__private__.newObjectDeferred=function(){return MA++,OA[MA]=function(){return DA},MA},Zt=function(tA,eA){return eA=\"boolean\"==typeof eA&&eA,OA[tA]=DA,eA&&KA(tA+\" 0 obj\"),tA},pn=dA.__private__.newAdditionalObject=function(){var tA={objId:gn(),content:\"\"};return RA.push(tA),tA},mn=gn(),wn=gn(),yn=dA.__private__.decodeColorString=function(tA){var eA=tA.split(\" \");if(2!==eA.length||\"g\"!==eA[1]&&\"G\"!==eA[1])5!==eA.length||\"k\"!==eA[4]&&\"K\"!==eA[4]||(eA=[(1-eA[0])*(1-eA[3]),(1-eA[1])*(1-eA[3]),(1-eA[2])*(1-eA[3]),\"r\"]);else{var AA=parseFloat(eA[0]);eA=[AA,AA,AA,\"r\"]}for(var rA=\"#\",nA=0;nA<3;nA++)rA+=(\"0\"+Math.floor(255*parseFloat(eA[nA])).toString(16)).slice(-2);return rA},Bn=dA.__private__.encodeColorString=function(tA){var eA;\"string\"==typeof tA&&(tA={ch1:tA});var AA=tA.ch1,rA=tA.ch2,nA=tA.ch3,iA=tA.ch4,sA=\"draw\"===tA.pdfColorType?[\"G\",\"RG\",\"K\"]:[\"g\",\"rg\",\"k\"];if(\"string\"==typeof AA&&\"#\"!==AA.charAt(0)){var oA=new f$1(AA);if(oA.ok)AA=oA.toHex();else if(!/^\\d*\\.?\\d*$/.test(AA))throw new Error('Invalid color \"'+AA+'\" passed to jsPDF.encodeColorString.')}if(\"string\"==typeof AA&&/^#[0-9A-Fa-f]{3}$/.test(AA)&&(AA=\"#\"+AA[1]+AA[1]+AA[2]+AA[2]+AA[3]+AA[3]),\"string\"==typeof AA&&/^#[0-9A-Fa-f]{6}$/.test(AA)){var aA=parseInt(AA.substr(1),16);AA=aA>>16&255,rA=aA>>8&255,nA=255&aA}if(void 0===rA||void 0===iA&&AA===rA&&rA===nA)if(\"string\"==typeof AA)eA=AA+\" \"+sA[0];else if(2===tA.precision)eA=CA(AA/255)+\" \"+sA[0];else eA=SA(AA/255)+\" \"+sA[0];else if(void 0===iA||\"object\"===_typeof$1(iA)){if(iA&&!isNaN(iA.a)&&0===iA.a)return[\"1.\",\"1.\",\"1.\",sA[1]].join(\" \");if(\"string\"==typeof AA)eA=[AA,rA,nA,sA[1]].join(\" \");else if(2===tA.precision)eA=[CA(AA/255),CA(rA/255),CA(nA/255),sA[1]].join(\" \");else eA=[SA(AA/255),SA(rA/255),SA(nA/255),sA[1]].join(\" \")}else if(\"string\"==typeof AA)eA=[AA,rA,nA,iA,sA[2]].join(\" \");else if(2===tA.precision)eA=[CA(AA),CA(rA),CA(nA),CA(iA),sA[2]].join(\" \");else eA=[SA(AA),SA(rA),SA(nA),SA(iA),sA[2]].join(\" \");return eA},bn=dA.__private__.getFilters=function(){return sA},vn=dA.__private__.putStream=function(tA){var eA=(tA=tA||{}).data||\"\",AA=tA.filters||bn(),rA=tA.alreadyAppliedFilters||[],nA=tA.addLength1||!1,iA=eA.length,sA=tA.objectId,s=function(tA){return tA};if(null!==cA&&void 0===sA)throw new Error(\"ObjectId must be passed to putStream for file encryption\");null!==cA&&(s=kn.encryptor(sA,0));var oA={};!0===AA&&(AA=[\"FlateEncode\"]);var aA=tA.additionalKeyValues||[],lA=(oA=void 0!==E.API.processDataByFilters?E.API.processDataByFilters(eA,AA):{data:eA,reverseChain:[]}).reverseChain+(Array.isArray(rA)?rA.join(\" \"):rA.toString());if(0!==oA.data.length&&(aA.push({key:\"Length\",value:oA.data.length}),!0===nA&&aA.push({key:\"Length1\",value:iA})),0!=lA.length)if(lA.split(\"/\").length-1==1)aA.push({key:\"Filter\",value:lA});else{aA.push({key:\"Filter\",value:\"[\"+lA+\"]\"});for(var uA=0;uA<aA.length;uA+=1)if(\"DecodeParms\"===aA[uA].key){for(var hA=[],dA=0;dA<oA.reverseChain.split(\"/\").length-1;dA+=1)hA.push(\"null\");hA.push(aA[uA].value),aA[uA].value=\"[\"+hA.join(\" \")+\"]\"}}KA(\"<<\");for(var fA=0;fA<aA.length;fA++)KA(\"/\"+aA[fA].key+\" \"+aA[fA].value);KA(\">>\"),0!==oA.data.length&&(KA(\"stream\"),KA(s(oA.data)),KA(\"endstream\"))},Cn=dA.__private__.putPage=function(tA){var eA=tA.number,AA=tA.data,rA=tA.objId,nA=tA.contentsObjId;Zt(rA,!0),KA(\"<</Type /Page\"),KA(\"/Parent \"+tA.rootDictionaryObjId+\" 0 R\"),KA(\"/Resources \"+tA.resourceDictionaryObjId+\" 0 R\"),KA(\"/MediaBox [\"+parseFloat(bA(tA.mediaBox.bottomLeftX))+\" \"+parseFloat(bA(tA.mediaBox.bottomLeftY))+\" \"+bA(tA.mediaBox.topRightX)+\" \"+bA(tA.mediaBox.topRightY)+\"]\"),null!==tA.cropBox&&KA(\"/CropBox [\"+bA(tA.cropBox.bottomLeftX)+\" \"+bA(tA.cropBox.bottomLeftY)+\" \"+bA(tA.cropBox.topRightX)+\" \"+bA(tA.cropBox.topRightY)+\"]\"),null!==tA.bleedBox&&KA(\"/BleedBox [\"+bA(tA.bleedBox.bottomLeftX)+\" \"+bA(tA.bleedBox.bottomLeftY)+\" \"+bA(tA.bleedBox.topRightX)+\" \"+bA(tA.bleedBox.topRightY)+\"]\"),null!==tA.trimBox&&KA(\"/TrimBox [\"+bA(tA.trimBox.bottomLeftX)+\" \"+bA(tA.trimBox.bottomLeftY)+\" \"+bA(tA.trimBox.topRightX)+\" \"+bA(tA.trimBox.topRightY)+\"]\"),null!==tA.artBox&&KA(\"/ArtBox [\"+bA(tA.artBox.bottomLeftX)+\" \"+bA(tA.artBox.bottomLeftY)+\" \"+bA(tA.artBox.topRightX)+\" \"+bA(tA.artBox.topRightY)+\"]\"),\"number\"==typeof tA.userUnit&&1!==tA.userUnit&&KA(\"/UserUnit \"+tA.userUnit),nn.publish(\"putPage\",{objId:rA,pageContext:rn[eA],pageNumber:eA,page:AA}),KA(\"/Contents \"+nA+\" 0 R\"),KA(\">>\"),KA(\"endobj\");var iA=AA.join(\"\\n\");return yA===wA.ADVANCED&&(iA+=\"\\nQ\"),Zt(nA,!0),vn({data:iA,filters:bn(),objectId:nA}),KA(\"endobj\"),rA},Sn=dA.__private__.putPages=function(){var tA,eA,AA=[];for(tA=1;tA<=An;tA++)rn[tA].objId=gn(),rn[tA].contentsObjId=gn();for(tA=1;tA<=An;tA++)AA.push(Cn({number:tA,data:VA[tA],objId:rn[tA].objId,contentsObjId:rn[tA].contentsObjId,mediaBox:rn[tA].mediaBox,cropBox:rn[tA].cropBox,bleedBox:rn[tA].bleedBox,trimBox:rn[tA].trimBox,artBox:rn[tA].artBox,userUnit:rn[tA].userUnit,rootDictionaryObjId:mn,resourceDictionaryObjId:wn}));Zt(mn,!0),KA(\"<</Type /Pages\");var rA=\"/Kids [\";for(eA=0;eA<An;eA++)rA+=AA[eA]+\" 0 R \";KA(rA+\"]\"),KA(\"/Count \"+An),KA(\">>\"),KA(\"endobj\"),nn.publish(\"postPutPages\")},se=function(tA){nn.publish(\"putFont\",{font:tA,out:KA,newObject:fn,putStream:vn}),!0!==tA.isAlreadyPutted&&(tA.objectNumber=fn(),KA(\"<<\"),KA(\"/Type /Font\"),KA(\"/BaseFont /\"+F(tA.postScriptName)),KA(\"/Subtype /Type1\"),\"string\"==typeof tA.encoding&&KA(\"/Encoding /\"+tA.encoding),KA(\"/FirstChar 32\"),KA(\"/LastChar 255\"),KA(\">>\"),KA(\"endobj\"))},ce=function(){for(var tA in Xr)Xr.hasOwnProperty(tA)&&(!1===uA||!0===uA&&hA.hasOwnProperty(tA))&&se(Xr[tA])},ue=function(tA){tA.objectNumber=fn();var eA=[];eA.push({key:\"Type\",value:\"/XObject\"}),eA.push({key:\"Subtype\",value:\"/Form\"}),eA.push({key:\"BBox\",value:\"[\"+[bA(tA.x),bA(tA.y),bA(tA.x+tA.width),bA(tA.y+tA.height)].join(\" \")+\"]\"}),eA.push({key:\"Matrix\",value:\"[\"+tA.matrix.toString()+\"]\"});var AA=tA.pages[1].join(\"\\n\");vn({data:AA,additionalKeyValues:eA,objectId:tA.objectNumber}),KA(\"endobj\")},he=function(){for(var tA in on)on.hasOwnProperty(tA)&&ue(on[tA])},le=function(tA,eA){var AA,rA=[],nA=1/(eA-1);for(AA=0;AA<1;AA+=nA)rA.push(AA);if(rA.push(1),0!=tA[0].offset){var iA={offset:0,color:tA[0].color};tA.unshift(iA)}if(1!=tA[tA.length-1].offset){var sA={offset:1,color:tA[tA.length-1].color};tA.push(sA)}for(var oA=\"\",aA=0,lA=0;lA<rA.length;lA++){for(AA=rA[lA];AA>tA[aA+1].offset;)aA++;var cA=tA[aA].offset,uA=(AA-cA)/(tA[aA+1].offset-cA),hA=tA[aA].color,dA=tA[aA+1].color;oA+=kA(Math.round((1-uA)*hA[0]+uA*dA[0]).toString(16))+kA(Math.round((1-uA)*hA[1]+uA*dA[1]).toString(16))+kA(Math.round((1-uA)*hA[2]+uA*dA[2]).toString(16))}return oA.trim()},fe=function(tA,eA){eA||(eA=21);var AA=fn(),rA=le(tA.colors,eA),nA=[];nA.push({key:\"FunctionType\",value:\"0\"}),nA.push({key:\"Domain\",value:\"[0.0 1.0]\"}),nA.push({key:\"Size\",value:\"[\"+eA+\"]\"}),nA.push({key:\"BitsPerSample\",value:\"8\"}),nA.push({key:\"Range\",value:\"[0.0 1.0 0.0 1.0 0.0 1.0]\"}),nA.push({key:\"Decode\",value:\"[0.0 1.0 0.0 1.0 0.0 1.0]\"}),vn({data:rA,additionalKeyValues:nA,alreadyAppliedFilters:[\"/ASCIIHexDecode\"],objectId:AA}),KA(\"endobj\"),tA.objectNumber=fn(),KA(\"<< /ShadingType \"+tA.type),KA(\"/ColorSpace /DeviceRGB\");var iA=\"/Coords [\"+bA(parseFloat(tA.coords[0]))+\" \"+bA(parseFloat(tA.coords[1]))+\" \";2===tA.type?iA+=bA(parseFloat(tA.coords[2]))+\" \"+bA(parseFloat(tA.coords[3])):iA+=bA(parseFloat(tA.coords[2]))+\" \"+bA(parseFloat(tA.coords[3]))+\" \"+bA(parseFloat(tA.coords[4]))+\" \"+bA(parseFloat(tA.coords[5])),KA(iA+=\"]\"),tA.matrix&&KA(\"/Matrix [\"+tA.matrix.toString()+\"]\"),KA(\"/Function \"+AA+\" 0 R\"),KA(\"/Extend [true true]\"),KA(\">>\"),KA(\"endobj\")},de=function(tA,eA){var AA=gn(),rA=fn();eA.push({resourcesOid:AA,objectOid:rA}),tA.objectNumber=rA;var nA=[];nA.push({key:\"Type\",value:\"/Pattern\"}),nA.push({key:\"PatternType\",value:\"1\"}),nA.push({key:\"PaintType\",value:\"1\"}),nA.push({key:\"TilingType\",value:\"1\"}),nA.push({key:\"BBox\",value:\"[\"+tA.boundingBox.map(bA).join(\" \")+\"]\"}),nA.push({key:\"XStep\",value:bA(tA.xStep)}),nA.push({key:\"YStep\",value:bA(tA.yStep)}),nA.push({key:\"Resources\",value:AA+\" 0 R\"}),tA.matrix&&nA.push({key:\"Matrix\",value:\"[\"+tA.matrix.toString()+\"]\"}),vn({data:tA.stream,additionalKeyValues:nA,objectId:tA.objectNumber}),KA(\"endobj\")},pe=function(tA){var eA;for(eA in Jr)Jr.hasOwnProperty(eA)&&(Jr[eA]instanceof B?fe(Jr[eA]):Jr[eA]instanceof M&&de(Jr[eA],tA))},ge=function(tA){for(var eA in tA.objectNumber=fn(),KA(\"<<\"),tA)switch(eA){case\"opacity\":KA(\"/ca \"+CA(tA[eA]));break;case\"stroke-opacity\":KA(\"/CA \"+CA(tA[eA]))}KA(\">>\"),KA(\"endobj\")},me=function(){var tA;for(tA in $r)$r.hasOwnProperty(tA)&&ge($r[tA])},ve=function(){for(var tA in KA(\"/XObject <<\"),on)on.hasOwnProperty(tA)&&on[tA].objectNumber>=0&&KA(\"/\"+tA+\" \"+on[tA].objectNumber+\" 0 R\");nn.publish(\"putXobjectDict\"),KA(\">>\")},be=function(){kn.oid=fn(),KA(\"<<\"),KA(\"/Filter /Standard\"),KA(\"/V \"+kn.v),KA(\"/R \"+kn.r),KA(\"/U <\"+kn.toHexString(kn.U)+\">\"),KA(\"/O <\"+kn.toHexString(kn.O)+\">\"),KA(\"/P \"+kn.P),KA(\">>\"),KA(\"endobj\")},ye=function(){for(var tA in KA(\"/Font <<\"),Xr)Xr.hasOwnProperty(tA)&&(!1===uA||!0===uA&&hA.hasOwnProperty(tA))&&KA(\"/\"+tA+\" \"+Xr[tA].objectNumber+\" 0 R\");KA(\">>\")},we=function(){if(Object.keys(Jr).length>0){for(var tA in KA(\"/Shading <<\"),Jr)Jr.hasOwnProperty(tA)&&Jr[tA]instanceof B&&Jr[tA].objectNumber>=0&&KA(\"/\"+tA+\" \"+Jr[tA].objectNumber+\" 0 R\");nn.publish(\"putShadingPatternDict\"),KA(\">>\")}},Ne=function(tA){if(Object.keys(Jr).length>0){for(var eA in KA(\"/Pattern <<\"),Jr)Jr.hasOwnProperty(eA)&&Jr[eA]instanceof dA.TilingPattern&&Jr[eA].objectNumber>=0&&Jr[eA].objectNumber<tA&&KA(\"/\"+eA+\" \"+Jr[eA].objectNumber+\" 0 R\");nn.publish(\"putTilingPatternDict\"),KA(\">>\")}},Le=function(){if(Object.keys($r).length>0){var tA;for(tA in KA(\"/ExtGState <<\"),$r)$r.hasOwnProperty(tA)&&$r[tA].objectNumber>=0&&KA(\"/\"+tA+\" \"+$r[tA].objectNumber+\" 0 R\");nn.publish(\"putGStateDict\"),KA(\">>\")}},Ae=function(tA){Zt(tA.resourcesOid,!0),KA(\"<<\"),KA(\"/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]\"),ye(),we(),Ne(tA.objectOid),Le(),ve(),KA(\">>\"),KA(\"endobj\")},xe=function(){var tA=[];ce(),me(),he(),pe(tA),nn.publish(\"putResources\"),tA.forEach(Ae),Ae({resourcesOid:wn,objectOid:Number.MAX_SAFE_INTEGER}),nn.publish(\"postPutResources\")},Se=function(){nn.publish(\"putAdditionalObjects\");for(var tA=0;tA<RA.length;tA++){var eA=RA[tA];Zt(eA.objId,!0),KA(eA.content),KA(\"endobj\")}nn.publish(\"postPutAdditionalObjects\")},_e=function(tA){Wr[tA.fontName]=Wr[tA.fontName]||{},Wr[tA.fontName][tA.fontStyle]=tA.id},Pe=function(tA,eA,AA,rA,nA){var iA={id:\"F\"+(Object.keys(Xr).length+1).toString(10),postScriptName:tA,fontName:eA,fontStyle:AA,encoding:rA,isStandardFont:nA||!1,metadata:{}};return nn.publish(\"addFont\",{font:iA,instance:this}),Xr[iA.id]=iA,_e(iA),iA.id},ke=function(tA){for(var eA=0,AA=XA.length;eA<AA;eA++){var rA=Pe.call(this,tA[eA][0],tA[eA][1],tA[eA][2],XA[eA][3],!0);!1===uA&&(hA[rA]=!0);var nA=tA[eA][0].split(\"-\");_e({id:rA,fontName:nA[0],fontStyle:nA[1]||\"\"})}nn.publish(\"addFonts\",{fonts:Xr,dictionary:Wr})},Ie=function(tA){return tA.foo=function(){try{return tA.apply(this,arguments)}catch(tA){var eA=tA.stack||\"\";~eA.indexOf(\" at \")&&(eA=eA.split(\" at \")[1]);var AA=\"Error in function \"+eA.split(\"\\n\")[0].split(\"<\")[0]+\": \"+tA.message;if(!Dn.console)throw new Error(AA);Dn.console.error(AA,tA),Dn.alert&&alert(AA)}},tA.foo.bar=tA,tA.foo},Fe=function(tA,eA){var AA,rA,nA,iA,sA,oA,aA,lA,cA;if(nA=(eA=eA||{}).sourceEncoding||\"Unicode\",sA=eA.outputEncoding,(eA.autoencode||sA)&&Xr[Rr].metadata&&Xr[Rr].metadata[nA]&&Xr[Rr].metadata[nA].encoding&&(iA=Xr[Rr].metadata[nA].encoding,!sA&&Xr[Rr].encoding&&(sA=Xr[Rr].encoding),!sA&&iA.codePages&&(sA=iA.codePages[0]),\"string\"==typeof sA&&(sA=iA[sA]),sA)){for(aA=!1,oA=[],AA=0,rA=tA.length;AA<rA;AA++)(lA=sA[tA.charCodeAt(AA)])?oA.push(String.fromCharCode(lA)):oA.push(tA[AA]),oA[AA].charCodeAt(0)>>8&&(aA=!0);tA=oA.join(\"\")}for(AA=tA.length;void 0===aA&&0!==AA;)tA.charCodeAt(AA-1)>>8&&(aA=!0),AA--;if(!aA)return tA;for(oA=eA.noBOM?[]:[254,255],AA=0,rA=tA.length;AA<rA;AA++){if((cA=(lA=tA.charCodeAt(AA))>>8)>>8)throw new Error(\"Character at position \"+AA+\" of string '\"+tA+\"' exceeds 16bits. Cannot be encoded into UCS-2 BE\");oA.push(cA),oA.push(lA-(cA<<8))}return String.fromCharCode.apply(void 0,oA)},xn=dA.__private__.pdfEscape=dA.pdfEscape=function(tA,eA){return Fe(tA,eA).replace(/\\\\/g,\"\\\\\\\\\").replace(/\\(/g,\"\\\\(\").replace(/\\)/g,\"\\\\)\")},Fn=dA.__private__.beginPage=function(tA){VA[++An]=[],rn[An]={objId:0,contentsObjId:0,userUnit:Number(oA),artBox:null,bleedBox:null,cropBox:null,trimBox:null,mediaBox:{bottomLeftX:0,bottomLeftY:0,topRightX:Number(tA[0]),topRightY:Number(tA[1])}},Me(An),ht(VA[NA])},Oe=function(tA,eA){var rA,iA,sA;switch(AA=eA||AA,\"string\"==typeof tA&&(rA=mA(tA.toLowerCase()),Array.isArray(rA)&&(iA=rA[0],sA=rA[1])),Array.isArray(tA)&&(iA=tA[0]*Vr,sA=tA[1]*Vr),isNaN(iA)&&(iA=nA[0],sA=nA[1]),(iA>14400||sA>14400)&&(Rn.warn(\"A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400\"),iA=Math.min(14400,iA),sA=Math.min(14400,sA)),nA=[iA,sA],AA.substr(0,1)){case\"l\":sA>iA&&(nA=[sA,iA]);break;case\"p\":iA>sA&&(nA=[sA,iA])}Fn(nA),ei($n),KA(li),0!==gi&&KA(gi+\" J\"),0!==pi&&KA(pi+\" j\"),nn.publish(\"addPage\",{pageNumber:An})},Be=function(tA){tA>0&&tA<=An&&(VA.splice(tA,1),rn.splice(tA,1),An--,NA>An&&(NA=An),this.setPage(NA))},Me=function(tA){tA>0&&tA<=An&&(NA=tA)},En=dA.__private__.getNumberOfPages=dA.getNumberOfPages=function(){return VA.length-1},qe=function(tA,eA,AA){var rA,nA=void 0;return AA=AA||{},tA=void 0!==tA?tA:Xr[Rr].fontName,eA=void 0!==eA?eA:Xr[Rr].fontStyle,rA=tA.toLowerCase(),void 0!==Wr[rA]&&void 0!==Wr[rA][eA]?nA=Wr[rA][eA]:void 0!==Wr[tA]&&void 0!==Wr[tA][eA]?nA=Wr[tA][eA]:!1===AA.disableWarning&&Rn.warn(\"Unable to look up font label for font '\"+tA+\"', '\"+eA+\"'. Refer to getFontList() for available fonts.\"),nA||AA.noFallback||null==(nA=Wr.times[eA])&&(nA=Wr.times.normal),nA},Qn=dA.__private__.putInfo=function(){var tA=fn(),e=function(tA){return tA};for(var eA in null!==cA&&(e=kn.encryptor(tA,0)),KA(\"<<\"),KA(\"/Producer (\"+xn(e(\"jsPDF \"+E.version))+\")\"),Dr)Dr.hasOwnProperty(eA)&&Dr[eA]&&KA(\"/\"+eA.substr(0,1).toUpperCase()+eA.substr(1)+\" (\"+xn(e(Dr[eA]))+\")\");KA(\"/CreationDate (\"+xn(e(FA))+\")\"),KA(\">>\"),KA(\"endobj\")},Un=dA.__private__.putCatalog=function(tA){var eA=(tA=tA||{}).rootDictionaryObjId||mn;switch(fn(),KA(\"<<\"),KA(\"/Type /Catalog\"),KA(\"/Pages \"+eA+\" 0 R\"),YA||(YA=\"fullwidth\"),YA){case\"fullwidth\":KA(\"/OpenAction [3 0 R /FitH null]\");break;case\"fullheight\":KA(\"/OpenAction [3 0 R /FitV null]\");break;case\"fullpage\":KA(\"/OpenAction [3 0 R /Fit]\");break;case\"original\":KA(\"/OpenAction [3 0 R /XYZ null null 1]\");break;default:var AA=\"\"+YA;\"%\"===AA.substr(AA.length-1)&&(YA=parseInt(YA)/100),\"number\"==typeof YA&&KA(\"/OpenAction [3 0 R /XYZ null null \"+CA(YA)+\"]\")}switch(Ur||(Ur=\"continuous\"),Ur){case\"continuous\":KA(\"/PageLayout /OneColumn\");break;case\"single\":KA(\"/PageLayout /SinglePage\");break;case\"two\":case\"twoleft\":KA(\"/PageLayout /TwoColumnLeft\");break;case\"tworight\":KA(\"/PageLayout /TwoColumnRight\")}$A&&KA(\"/PageMode /\"+$A),nn.publish(\"putCatalog\"),KA(\">>\"),KA(\"endobj\")},Pn=dA.__private__.putTrailer=function(){KA(\"trailer\"),KA(\"<<\"),KA(\"/Size \"+(MA+1)),KA(\"/Root \"+MA+\" 0 R\"),KA(\"/Info \"+(MA-1)+\" 0 R\"),null!==cA&&KA(\"/Encrypt \"+kn.oid+\" 0 R\"),KA(\"/ID [ <\"+EA+\"> <\"+EA+\"> ]\"),KA(\">>\")},_n=dA.__private__.putHeader=function(){KA(\"%PDF-\"+fA),KA(\"%ºß¬à\")},Ln=dA.__private__.putXRef=function(){var tA=\"0000000000\";KA(\"xref\"),KA(\"0 \"+(MA+1)),KA(\"0000000000 65535 f \");for(var eA=1;eA<=MA;eA++)\"function\"==typeof OA[eA]?KA((tA+OA[eA]()).slice(-10)+\" 00000 n \"):void 0!==OA[eA]?KA((tA+OA[eA]).slice(-10)+\" 00000 n \"):KA(\"0000000000 00000 n \")},In=dA.__private__.buildDocument=function(){ut(),ht(HA),nn.publish(\"buildDocument\"),_n(),Sn(),Se(),xe(),null!==cA&&be(),Qn(),Un();var tA=DA;return Ln(),Pn(),KA(\"startxref\"),KA(\"\"+tA),KA(\"%%EOF\"),ht(VA[NA]),HA.join(\"\\n\")},Nn=dA.__private__.getBlob=function(tA){return new Blob([zA(tA)],{type:\"application/pdf\"})},Tn=dA.output=dA.__private__.output=Ie((function(tA,eA){switch(\"string\"==typeof(eA=eA||{})?eA={filename:eA}:eA.filename=eA.filename||\"generated.pdf\",tA){case void 0:return In();case\"save\":dA.save(eA.filename);break;case\"arraybuffer\":return zA(In());case\"blob\":return Nn(In());case\"bloburi\":case\"bloburl\":if(void 0!==Dn.URL&&\"function\"==typeof Dn.URL.createObjectURL)return Dn.URL&&Dn.URL.createObjectURL(Nn(In()))||void 0;Rn.warn(\"bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.\");break;case\"datauristring\":case\"dataurlstring\":var AA=\"\",rA=In();try{AA=Gn(rA)}catch(tA){AA=Gn(unescape(encodeURIComponent(rA)))}return\"data:application/pdf;filename=\"+eA.filename+\";base64,\"+AA;case\"pdfobjectnewwindow\":if(\"[object Window]\"===Object.prototype.toString.call(Dn)){var nA=\"https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js\",iA=' integrity=\"sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==\" crossorigin=\"anonymous\"';eA.pdfObjectUrl&&(nA=eA.pdfObjectUrl,iA=\"\");var sA='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><script src=\"'+nA+'\"'+iA+'><\\/script><script >PDFObject.embed(\"'+this.output(\"dataurlstring\")+'\", '+JSON.stringify(eA)+\");<\\/script></body></html>\",oA=Dn.open();return null!==oA&&oA.document.write(sA),oA}throw new Error(\"The option pdfobjectnewwindow just works in a browser-environment.\");case\"pdfjsnewwindow\":if(\"[object Window]\"===Object.prototype.toString.call(Dn)){var aA='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><iframe id=\"pdfViewer\" src=\"'+(eA.pdfJsUrl||\"examples/PDF.js/web/viewer.html\")+\"?file=&downloadName=\"+eA.filename+'\" width=\"500px\" height=\"400px\" /></body></html>',lA=Dn.open();if(null!==lA){lA.document.write(aA);var cA=this;lA.document.documentElement.querySelector(\"#pdfViewer\").onload=function(){lA.document.title=eA.filename,lA.document.documentElement.querySelector(\"#pdfViewer\").contentWindow.PDFViewerApplication.open(cA.output(\"bloburl\"))}}return lA}throw new Error(\"The option pdfjsnewwindow just works in a browser-environment.\");case\"dataurlnewwindow\":if(\"[object Window]\"!==Object.prototype.toString.call(Dn))throw new Error(\"The option dataurlnewwindow just works in a browser-environment.\");var uA='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><iframe src=\"'+this.output(\"datauristring\",eA)+'\"></iframe></body></html>',hA=Dn.open();if(null!==hA&&(hA.document.write(uA),hA.document.title=eA.filename),hA||\"undefined\"==typeof safari)return hA;break;case\"datauri\":case\"dataurl\":return Dn.document.location.href=this.output(\"datauristring\",eA);default:return null}})),Ge=function(tA){return!0===Array.isArray(sn)&&sn.indexOf(tA)>-1};switch(rA){case\"pt\":Vr=1;break;case\"mm\":Vr=72/25.4;break;case\"cm\":Vr=72/2.54;break;case\"in\":Vr=72;break;case\"px\":Vr=1==Ge(\"px_scaling\")?.75:96/72;break;case\"pc\":case\"em\":Vr=12;break;case\"ex\":Vr=6;break;default:if(\"number\"!=typeof rA)throw new Error(\"Invalid unit: \"+rA);Vr=rA}var kn=null;LA(),UA();var Je=function(tA){return null!==cA?kn.encryptor(tA,0):function(tA){return tA}},Mn=dA.__private__.getPageInfo=dA.getPageInfo=function(tA){if(isNaN(tA)||tA%1!=0)throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");return{objId:rn[tA].objId,pageNumber:tA,pageContext:rn[tA]}},On=dA.__private__.getPageInfoByObjId=function(tA){if(isNaN(tA)||tA%1!=0)throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");for(var eA in rn)if(rn[eA].objId===tA)break;return Mn(eA)},Hn=dA.__private__.getCurrentPageInfo=dA.getCurrentPageInfo=function(){return{objId:rn[NA].objId,pageNumber:NA,pageContext:rn[NA]}};dA.addPage=function(){return Oe.apply(this,arguments),this},dA.setPage=function(){return Me.apply(this,arguments),ht.call(this,VA[NA]),this},dA.insertPage=function(tA){return this.addPage(),this.movePage(NA,tA),this},dA.movePage=function(tA,eA){var AA,rA;if(tA>eA){AA=VA[tA],rA=rn[tA];for(var nA=tA;nA>eA;nA--)VA[nA]=VA[nA-1],rn[nA]=rn[nA-1];VA[eA]=AA,rn[eA]=rA,this.setPage(eA)}else if(tA<eA){AA=VA[tA],rA=rn[tA];for(var iA=tA;iA<eA;iA++)VA[iA]=VA[iA+1],rn[iA]=rn[iA+1];VA[eA]=AA,rn[eA]=rA,this.setPage(eA)}return this},dA.deletePage=function(){return Be.apply(this,arguments),this},dA.__private__.text=dA.text=function(tA,eA,AA,rA,nA){var iA,sA,oA,aA,lA,cA,uA,dA,fA,gA=(rA=rA||{}).scope||this;if(\"number\"==typeof tA&&\"number\"==typeof eA&&(\"string\"==typeof AA||Array.isArray(AA))){var pA=AA;AA=eA,eA=tA,tA=pA}if(arguments[3]instanceof un==0?(oA=arguments[4],aA=arguments[5],\"object\"===_typeof$1(uA=arguments[3])&&null!==uA||(\"string\"==typeof oA&&(aA=oA,oA=null),\"string\"==typeof uA&&(aA=uA,uA=null),\"number\"==typeof uA&&(oA=uA,uA=null),rA={flags:uA,angle:oA,align:aA})):(q(\"The transform parameter of text() with a Matrix value\"),fA=nA),isNaN(eA)||isNaN(AA)||null==tA)throw new Error(\"Invalid arguments passed to jsPDF.text\");if(0===tA.length)return gA;var mA=\"\",BA=!1,vA=\"number\"==typeof rA.lineHeightFactor?rA.lineHeightFactor:Zn,CA=gA.internal.scaleFactor;function L(tA){return tA=tA.split(\"\\t\").join(Array(rA.TabLen||9).join(\" \")),xn(tA,uA)}function A(tA){for(var eA,AA=tA.concat(),rA=[],nA=AA.length;nA--;)\"string\"==typeof(eA=AA.shift())?rA.push(eA):Array.isArray(tA)&&(1===eA.length||void 0===eA[1]&&void 0===eA[2])?rA.push(eA[0]):rA.push([eA[0],eA[1],eA[2]]);return rA}function _(tA,eA){var AA;if(\"string\"==typeof tA)AA=eA(tA)[0];else if(Array.isArray(tA)){for(var rA,nA,iA=tA.concat(),sA=[],oA=iA.length;oA--;)\"string\"==typeof(rA=iA.shift())?sA.push(eA(rA)[0]):Array.isArray(rA)&&\"string\"==typeof rA[0]&&(nA=eA(rA[0],rA[1],rA[2]),sA.push([nA[0],nA[1],nA[2]]));AA=sA}return AA}var SA=!1,FA=!0;if(\"string\"==typeof tA)SA=!0;else if(Array.isArray(tA)){var EA=tA.concat();sA=[];for(var QA,UA=EA.length;UA--;)(\"string\"!=typeof(QA=EA.shift())||Array.isArray(QA)&&\"string\"!=typeof QA[0])&&(FA=!1);SA=FA}if(!1===SA)throw new Error('Type of text must be string or Array. \"'+tA+'\" is not recognized.');\"string\"==typeof tA&&(tA=tA.match(/[\\r?\\n]/)?tA.split(/\\r\\n|\\r|\\n/g):[tA]);var PA=WA/gA.internal.scaleFactor,_A=PA*(vA-1);switch(rA.baseline){case\"bottom\":AA-=_A;break;case\"top\":AA+=PA-_A;break;case\"hanging\":AA+=PA-2*_A;break;case\"middle\":AA+=PA/2-_A}if((cA=rA.maxWidth||0)>0&&(\"string\"==typeof tA?tA=gA.splitTextToSize(tA,cA):\"[object Array]\"===Object.prototype.toString.call(tA)&&(tA=tA.reduce((function(tA,eA){return tA.concat(gA.splitTextToSize(eA,cA))}),[]))),iA={text:tA,x:eA,y:AA,options:rA,mutex:{pdfEscape:xn,activeFontKey:Rr,fonts:Xr,activeFontSize:WA}},nn.publish(\"preProcessText\",iA),tA=iA.text,oA=(rA=iA.options).angle,fA instanceof un==0&&oA&&\"number\"==typeof oA){oA*=Math.PI/180,0===rA.rotationDirection&&(oA=-oA),yA===wA.ADVANCED&&(oA=-oA);var LA=Math.cos(oA),IA=Math.sin(oA);fA=new un(LA,IA,-IA,LA,0,0)}else oA&&oA instanceof un&&(fA=oA);yA!==wA.ADVANCED||fA||(fA=dn),void 0!==(lA=rA.charSpace||di)&&(mA+=bA(xA(lA))+\" Tc\\n\",this.setCharSpace(this.getCharSpace()||0)),void 0!==(dA=rA.horizontalScale)&&(mA+=bA(100*dA)+\" Tz\\n\"),rA.lang;var NA=-1,TA=void 0!==rA.renderingMode?rA.renderingMode:rA.stroke,kA=gA.internal.getCurrentPageInfo().pageContext;switch(TA){case 0:case!1:case\"fill\":NA=0;break;case 1:case!0:case\"stroke\":NA=1;break;case 2:case\"fillThenStroke\":NA=2;break;case 3:case\"invisible\":NA=3;break;case 4:case\"fillAndAddForClipping\":NA=4;break;case 5:case\"strokeAndAddPathForClipping\":NA=5;break;case 6:case\"fillThenStrokeAndAddToPathForClipping\":NA=6;break;case 7:case\"addToPathForClipping\":NA=7}var MA=void 0!==kA.usedRenderingMode?kA.usedRenderingMode:-1;-1!==NA?mA+=NA+\" Tr\\n\":-1!==MA&&(mA+=\"0 Tr\\n\"),-1!==NA&&(kA.usedRenderingMode=NA),aA=rA.align||\"left\";var OA,HA=WA*vA,DA=gA.internal.pageSize.getWidth(),RA=Xr[Rr];lA=rA.charSpace||di,cA=rA.maxWidth||0,uA=Object.assign({autoencode:!0,noBOM:!0},rA.flags);var VA=[];if(\"[object Array]\"===Object.prototype.toString.call(tA)){var GA;sA=A(tA),\"left\"!==aA&&(OA=sA.map((function(tA){return gA.getStringUnitWidth(tA,{font:RA,charSpace:lA,fontSize:WA,doKerning:!1})*WA/CA})));var jA,qA=0;if(\"right\"===aA){eA-=OA[0],tA=[],UA=sA.length;for(var zA=0;zA<UA;zA++)0===zA?(jA=ii(eA),GA=si(AA)):(jA=xA(qA-OA[zA]),GA=-HA),tA.push([sA[zA],jA,GA]),qA=OA[zA]}else if(\"center\"===aA){eA-=OA[0]/2,tA=[],UA=sA.length;for(var XA=0;XA<UA;XA++)0===XA?(jA=ii(eA),GA=si(AA)):(jA=xA((qA-OA[XA])/2),GA=-HA),tA.push([sA[XA],jA,GA]),qA=OA[XA]}else if(\"left\"===aA){tA=[],UA=sA.length;for(var YA=0;YA<UA;YA++)tA.push(sA[YA])}else{if(\"justify\"!==aA)throw new Error('Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".');tA=[],UA=sA.length,cA=0!==cA?cA:DA;for(var JA=0;JA<UA;JA++)GA=0===JA?si(AA):-HA,jA=0===JA?ii(eA):0,JA<UA-1?VA.push(bA(xA((cA-OA[JA])/(sA[JA].split(\" \").length-1)))):VA.push(0),tA.push([sA[JA],jA,GA])}}var $A=\"boolean\"==typeof rA.R2L?rA.R2L:ZA;!0===$A&&(tA=_(tA,(function(tA,eA,AA){return[tA.split(\"\").reverse().join(\"\"),eA,AA]}))),iA={text:tA,x:eA,y:AA,options:rA,mutex:{pdfEscape:xn,activeFontKey:Rr,fonts:Xr,activeFontSize:WA}},nn.publish(\"postProcessText\",iA),tA=iA.text,BA=iA.mutex.isHex||!1;var Qr=Xr[Rr].encoding;\"WinAnsiEncoding\"!==Qr&&\"StandardEncoding\"!==Qr||(tA=_(tA,(function(tA,eA,AA){return[L(tA),eA,AA]}))),sA=A(tA),tA=[];for(var Ur,Tr,Hr,Dr=0,Vr=1,Gr=Array.isArray(sA[0])?Vr:Dr,Kr=\"\",ht=function(tA,eA,AA){var nA=\"\";return AA instanceof un?(AA=\"number\"==typeof rA.angle?hn(AA,new un(1,0,0,1,tA,eA)):hn(new un(1,0,0,1,tA,eA),AA),yA===wA.ADVANCED&&(AA=hn(new un(1,0,0,-1,0,0),AA)),nA=AA.join(\" \")+\" Tm\\n\"):nA=bA(tA)+\" \"+bA(eA)+\" Td\\n\",nA},zr=0;zr<sA.length;zr++){switch(Kr=\"\",Gr){case Vr:Hr=(BA?\"<\":\"(\")+sA[zr][0]+(BA?\">\":\")\"),Ur=parseFloat(sA[zr][1]),Tr=parseFloat(sA[zr][2]);break;case Dr:Hr=(BA?\"<\":\"(\")+sA[zr]+(BA?\">\":\")\"),Ur=ii(eA),Tr=si(AA)}void 0!==VA&&void 0!==VA[zr]&&(Kr=VA[zr]+\" Tw\\n\"),0===zr?tA.push(Kr+ht(Ur,Tr,fA)+Hr):Gr===Dr?tA.push(Kr+Hr):Gr===Vr&&tA.push(Kr+ht(Ur,Tr,fA)+Hr)}tA=Gr===Dr?tA.join(\" Tj\\nT* \"):tA.join(\" Tj\\n\"),tA+=\" Tj\\n\";var Wr=\"BT\\n/\";return Wr+=Rr+\" \"+WA+\" Tf\\n\",Wr+=bA(WA*vA)+\" TL\\n\",Wr+=ui+\"\\n\",Wr+=mA,Wr+=tA,KA(Wr+=\"ET\"),hA[Rr]=!0,gA};var Vn=dA.__private__.clip=dA.clip=function(tA){return KA(\"evenodd\"===tA?\"W*\":\"W\"),this};dA.clipEvenOdd=function(){return Vn(\"evenodd\")},dA.__private__.discardPath=dA.discardPath=function(){return KA(\"n\"),this};var Kn=dA.__private__.isValidStyle=function(tA){var eA=!1;return-1!==[void 0,null,\"S\",\"D\",\"F\",\"DF\",\"FD\",\"f\",\"f*\",\"B\",\"B*\",\"n\"].indexOf(tA)&&(eA=!0),eA};dA.__private__.setDefaultPathOperation=dA.setDefaultPathOperation=function(tA){return Kn(tA)&&(lA=tA),this};var qn=dA.__private__.getStyle=dA.getStyle=function(tA){var eA=lA;switch(tA){case\"D\":case\"S\":eA=\"S\";break;case\"F\":eA=\"f\";break;case\"FD\":case\"DF\":eA=\"B\";break;case\"f\":case\"f*\":case\"B\":case\"B*\":eA=tA}return eA},zn=dA.close=function(){return KA(\"h\"),this};dA.stroke=function(){return KA(\"S\"),this},dA.fill=function(tA){return rr(\"f\",tA),this},dA.fillEvenOdd=function(tA){return rr(\"f*\",tA),this},dA.fillStroke=function(tA){return rr(\"B\",tA),this},dA.fillStrokeEvenOdd=function(tA){return rr(\"B*\",tA),this};var rr=function(tA,eA){\"object\"===_typeof$1(eA)?ar(eA,tA):KA(tA)},nr=function(tA){null===tA||yA===wA.ADVANCED&&void 0===tA||(tA=qn(tA),KA(tA))};function ir(tA,eA,AA,rA,nA){var iA=new M(eA||this.boundingBox,AA||this.xStep,rA||this.yStep,this.gState,nA||this.matrix);iA.stream=this.stream;var sA=tA+\"$$\"+this.cloneIndex+++\"$$\";return Jt(sA,iA),iA}var ar=function(tA,eA){var AA=Zr[tA.key],rA=Jr[AA];if(rA instanceof B)KA(\"q\"),KA(or(eA)),rA.gState&&dA.setGState(rA.gState),KA(tA.matrix.toString()+\" cm\"),KA(\"/\"+AA+\" sh\"),KA(\"Q\");else if(rA instanceof M){var nA=new un(1,0,0,-1,0,Bi());tA.matrix&&(nA=nA.multiply(tA.matrix||dn),AA=ir.call(rA,tA.key,tA.boundingBox,tA.xStep,tA.yStep,nA).id),KA(\"q\"),KA(\"/Pattern cs\"),KA(\"/\"+AA+\" scn\"),rA.gState&&dA.setGState(rA.gState),KA(eA),KA(\"Q\")}},or=function(tA){switch(tA){case\"f\":case\"F\":case\"n\":return\"W n\";case\"f*\":return\"W* n\";case\"B\":case\"S\":return\"W S\";case\"B*\":return\"W* S\"}},Xn=dA.moveTo=function(tA,eA){return KA(bA(xA(tA))+\" \"+bA(H(eA))+\" m\"),this},Wn=dA.lineTo=function(tA,eA){return KA(bA(xA(tA))+\" \"+bA(H(eA))+\" l\"),this},Yn=dA.curveTo=function(tA,eA,AA,rA,nA,iA){return KA([bA(xA(tA)),bA(H(eA)),bA(xA(AA)),bA(H(rA)),bA(xA(nA)),bA(H(iA)),\"c\"].join(\" \")),this};dA.__private__.line=dA.line=function(tA,eA,AA,rA,nA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA)||!Kn(nA))throw new Error(\"Invalid arguments passed to jsPDF.line\");return yA===wA.COMPAT?this.lines([[AA-tA,rA-eA]],tA,eA,[1,1],nA||\"S\"):this.lines([[AA-tA,rA-eA]],tA,eA,[1,1]).stroke()},dA.__private__.lines=dA.lines=function(tA,eA,AA,rA,nA,iA){var sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA;if(\"number\"==typeof tA&&(mA=AA,AA=eA,eA=tA,tA=mA),rA=rA||[1,1],iA=iA||!1,isNaN(eA)||isNaN(AA)||!Array.isArray(tA)||!Array.isArray(rA)||!Kn(nA)||\"boolean\"!=typeof iA)throw new Error(\"Invalid arguments passed to jsPDF.lines\");for(Xn(eA,AA),sA=rA[0],oA=rA[1],lA=tA.length,gA=eA,pA=AA,aA=0;aA<lA;aA++)2===(cA=tA[aA]).length?(gA=cA[0]*sA+gA,pA=cA[1]*oA+pA,Wn(gA,pA)):(uA=cA[0]*sA+gA,hA=cA[1]*oA+pA,dA=cA[2]*sA+gA,fA=cA[3]*oA+pA,gA=cA[4]*sA+gA,pA=cA[5]*oA+pA,Yn(uA,hA,dA,fA,gA,pA));return iA&&zn(),nr(nA),this},dA.path=function(tA){for(var eA=0;eA<tA.length;eA++){var AA=tA[eA],rA=AA.c;switch(AA.op){case\"m\":Xn(rA[0],rA[1]);break;case\"l\":Wn(rA[0],rA[1]);break;case\"c\":Yn.apply(this,rA);break;case\"h\":zn()}}return this},dA.__private__.rect=dA.rect=function(tA,eA,AA,rA,nA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA)||!Kn(nA))throw new Error(\"Invalid arguments passed to jsPDF.rect\");return yA===wA.COMPAT&&(rA=-rA),KA([bA(xA(tA)),bA(H(eA)),bA(xA(AA)),bA(xA(rA)),\"re\"].join(\" \")),nr(nA),this},dA.__private__.triangle=dA.triangle=function(tA,eA,AA,rA,nA,iA,sA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA)||isNaN(nA)||isNaN(iA)||!Kn(sA))throw new Error(\"Invalid arguments passed to jsPDF.triangle\");return this.lines([[AA-tA,rA-eA],[nA-AA,iA-rA],[tA-nA,eA-iA]],tA,eA,[1,1],sA,!0),this},dA.__private__.roundedRect=dA.roundedRect=function(tA,eA,AA,rA,nA,iA,sA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA)||isNaN(nA)||isNaN(iA)||!Kn(sA))throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");var oA=4/3*(Math.SQRT2-1);return nA=Math.min(nA,.5*AA),iA=Math.min(iA,.5*rA),this.lines([[AA-2*nA,0],[nA*oA,0,nA,iA-iA*oA,nA,iA],[0,rA-2*iA],[0,iA*oA,-nA*oA,iA,-nA,iA],[2*nA-AA,0],[-nA*oA,0,-nA,-iA*oA,-nA,-iA],[0,2*iA-rA],[0,-iA*oA,nA*oA,-iA,nA,-iA]],tA+nA,eA,[1,1],sA,!0),this},dA.__private__.ellipse=dA.ellipse=function(tA,eA,AA,rA,nA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA)||!Kn(nA))throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");var iA=4/3*(Math.SQRT2-1)*AA,sA=4/3*(Math.SQRT2-1)*rA;return Xn(tA+AA,eA),Yn(tA+AA,eA-sA,tA+iA,eA-rA,tA,eA-rA),Yn(tA-iA,eA-rA,tA-AA,eA-sA,tA-AA,eA),Yn(tA-AA,eA+sA,tA-iA,eA+rA,tA,eA+rA),Yn(tA+iA,eA+rA,tA+AA,eA+sA,tA+AA,eA),nr(nA),this},dA.__private__.circle=dA.circle=function(tA,eA,AA,rA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||!Kn(rA))throw new Error(\"Invalid arguments passed to jsPDF.circle\");return this.ellipse(tA,eA,AA,AA,rA)},dA.setFont=function(tA,eA,AA){return AA&&(eA=BA(eA,AA)),Rr=qe(tA,eA,{disableWarning:!1}),this};var Jn=dA.__private__.getFont=dA.getFont=function(){return Xr[qe.apply(dA,arguments)]};dA.__private__.getFontList=dA.getFontList=function(){var tA,eA,AA={};for(tA in Wr)if(Wr.hasOwnProperty(tA))for(eA in AA[tA]=[],Wr[tA])Wr[tA].hasOwnProperty(eA)&&AA[tA].push(eA);return AA},dA.addFont=function(tA,eA,AA,rA,nA){var iA=[\"StandardEncoding\",\"MacRomanEncoding\",\"Identity-H\",\"WinAnsiEncoding\"];return arguments[3]&&-1!==iA.indexOf(arguments[3])?nA=arguments[3]:arguments[3]&&-1==iA.indexOf(arguments[3])&&(AA=BA(AA,rA)),nA=nA||\"Identity-H\",Pe.call(this,tA,eA,AA,nA)};var Zn,$n=tA.lineWidth||.200025,ti=dA.__private__.getLineWidth=dA.getLineWidth=function(){return $n},ei=dA.__private__.setLineWidth=dA.setLineWidth=function(tA){return $n=tA,KA(bA(xA(tA))+\" w\"),this};dA.__private__.setLineDash=E.API.setLineDash=E.API.setLineDashPattern=function(tA,eA){if(tA=tA||[],eA=eA||0,isNaN(eA)||!Array.isArray(tA))throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");return tA=tA.map((function(tA){return bA(xA(tA))})).join(\" \"),eA=bA(xA(eA)),KA(\"[\"+tA+\"] \"+eA+\" d\"),this};var Ai=dA.__private__.getLineHeight=dA.getLineHeight=function(){return WA*Zn};dA.__private__.getLineHeight=dA.getLineHeight=function(){return WA*Zn};var ri=dA.__private__.setLineHeightFactor=dA.setLineHeightFactor=function(tA){return\"number\"==typeof(tA=tA||1.15)&&(Zn=tA),this},ni=dA.__private__.getLineHeightFactor=dA.getLineHeightFactor=function(){return Zn};ri(tA.lineHeight);var ii=dA.__private__.getHorizontalCoordinate=function(tA){return xA(tA)},si=dA.__private__.getVerticalCoordinate=function(tA){return yA===wA.ADVANCED?tA:rn[NA].mediaBox.topRightY-rn[NA].mediaBox.bottomLeftY-xA(tA)},oi=dA.__private__.getHorizontalCoordinateString=dA.getHorizontalCoordinateString=function(tA){return bA(ii(tA))},ai=dA.__private__.getVerticalCoordinateString=dA.getVerticalCoordinateString=function(tA){return bA(si(tA))},li=tA.strokeColor||\"0 G\";dA.__private__.getStrokeColor=dA.getDrawColor=function(){return yn(li)},dA.__private__.setStrokeColor=dA.setDrawColor=function(tA,eA,AA,rA){return li=Bn({ch1:tA,ch2:eA,ch3:AA,ch4:rA,pdfColorType:\"draw\",precision:2}),KA(li),this};var ci=tA.fillColor||\"0 g\";dA.__private__.getFillColor=dA.getFillColor=function(){return yn(ci)},dA.__private__.setFillColor=dA.setFillColor=function(tA,eA,AA,rA){return ci=Bn({ch1:tA,ch2:eA,ch3:AA,ch4:rA,pdfColorType:\"fill\",precision:2}),KA(ci),this};var ui=tA.textColor||\"0 g\",hi=dA.__private__.getTextColor=dA.getTextColor=function(){return yn(ui)};dA.__private__.setTextColor=dA.setTextColor=function(tA,eA,AA,rA){return ui=Bn({ch1:tA,ch2:eA,ch3:AA,ch4:rA,pdfColorType:\"text\",precision:3}),this};var di=tA.charSpace,fi=dA.__private__.getCharSpace=dA.getCharSpace=function(){return parseFloat(di||0)};dA.__private__.setCharSpace=dA.setCharSpace=function(tA){if(isNaN(tA))throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");return di=tA,this};var gi=0;dA.CapJoinStyles={0:0,butt:0,but:0,miter:0,1:1,round:1,rounded:1,circle:1,2:2,projecting:2,project:2,square:2,bevel:2},dA.__private__.setLineCap=dA.setLineCap=function(tA){var eA=dA.CapJoinStyles[tA];if(void 0===eA)throw new Error(\"Line cap style of '\"+tA+\"' is not recognized. See or extend .CapJoinStyles property for valid styles\");return gi=eA,KA(eA+\" J\"),this};var pi=0;dA.__private__.setLineJoin=dA.setLineJoin=function(tA){var eA=dA.CapJoinStyles[tA];if(void 0===eA)throw new Error(\"Line join style of '\"+tA+\"' is not recognized. See or extend .CapJoinStyles property for valid styles\");return pi=eA,KA(eA+\" j\"),this},dA.__private__.setLineMiterLimit=dA.__private__.setMiterLimit=dA.setLineMiterLimit=dA.setMiterLimit=function(tA){if(tA=tA||0,isNaN(tA))throw new Error(\"Invalid argument passed to jsPDF.setLineMiterLimit\");return KA(bA(xA(tA))+\" M\"),this},dA.GState=j,dA.setGState=function(tA){(tA=\"string\"==typeof tA?$r[tn[tA]]:Fr(null,tA)).equals(en)||(KA(\"/\"+tA.id+\" gs\"),en=tA)};var Fr=function(tA,eA){if(!tA||!tn[tA]){var AA=!1;for(var rA in $r)if($r.hasOwnProperty(rA)&&$r[rA].equals(eA)){AA=!0;break}if(AA)eA=$r[rA];else{var nA=\"GS\"+(Object.keys($r).length+1).toString(10);$r[nA]=eA,eA.id=nA}return tA&&(tn[tA]=eA.id),nn.publish(\"addGState\",eA),eA}};dA.addGState=function(tA,eA){return Fr(tA,eA),this},dA.saveGraphicsState=function(){return KA(\"q\"),Yr.push({key:Rr,size:WA,color:ui}),this},dA.restoreGraphicsState=function(){KA(\"Q\");var tA=Yr.pop();return Rr=tA.key,WA=tA.size,ui=tA.color,en=null,this},dA.setCurrentTransformationMatrix=function(tA){return KA(tA.toString()+\" cm\"),this},dA.comment=function(tA){return KA(\"#\"+tA),this};var Cr=function(tA,eA){var AA=tA||0;Object.defineProperty(this,\"x\",{enumerable:!0,get:function(){return AA},set:function(tA){isNaN(tA)||(AA=parseFloat(tA))}});var rA=eA||0;Object.defineProperty(this,\"y\",{enumerable:!0,get:function(){return rA},set:function(tA){isNaN(tA)||(rA=parseFloat(tA))}});var nA=\"pt\";return Object.defineProperty(this,\"type\",{enumerable:!0,get:function(){return nA},set:function(tA){nA=tA.toString()}}),this},jr=function(tA,eA,AA,rA){Cr.call(this,tA,eA),this.type=\"rect\";var nA=AA||0;Object.defineProperty(this,\"w\",{enumerable:!0,get:function(){return nA},set:function(tA){isNaN(tA)||(nA=parseFloat(tA))}});var iA=rA||0;return Object.defineProperty(this,\"h\",{enumerable:!0,get:function(){return iA},set:function(tA){isNaN(tA)||(iA=parseFloat(tA))}}),this},Or=function(){this.page=An,this.currentPage=NA,this.pages=VA.slice(0),this.pagesContext=rn.slice(0),this.x=Gr,this.y=Kr,this.matrix=zr,this.width=wi(NA),this.height=Bi(NA),this.outputDestination=jA,this.id=\"\",this.objectNumber=-1};Or.prototype.restore=function(){An=this.page,NA=this.currentPage,rn=this.pagesContext,VA=this.pages,Gr=this.x,Kr=this.y,zr=this.matrix,yi(NA,this.width),bi(NA,this.height),jA=this.outputDestination};var Br=function(tA,eA,AA,rA,nA){cn.push(new Or),An=NA=0,VA=[],Gr=tA,Kr=eA,zr=nA,Fn([AA,rA])},Mr=function(tA){if(an[tA])cn.pop().restore();else{var eA=new Or,AA=\"Xo\"+(Object.keys(on).length+1).toString(10);eA.id=AA,an[tA]=AA,on[AA]=eA,nn.publish(\"addFormObject\",eA),cn.pop().restore()}};for(var mi in dA.beginFormObject=function(tA,eA,AA,rA,nA){return Br(tA,eA,AA,rA,nA),this},dA.endFormObject=function(tA){return Mr(tA),this},dA.doFormObject=function(tA,eA){var AA=on[an[tA]];return KA(\"q\"),KA(eA.toString()+\" cm\"),KA(\"/\"+AA.id+\" Do\"),KA(\"Q\"),this},dA.getFormObject=function(tA){var eA=on[an[tA]];return{x:eA.x,y:eA.y,width:eA.width,height:eA.height,matrix:eA.matrix}},dA.save=function(tA,eA){return tA=tA||\"generated.pdf\",(eA=eA||{}).returnPromise=eA.returnPromise||!1,!1===eA.returnPromise?(jn(Nn(In()),tA),\"function\"==typeof jn.unload&&Dn.setTimeout&&setTimeout(jn.unload,911),this):new Promise((function(eA,AA){try{var rA=jn(Nn(In()),tA);\"function\"==typeof jn.unload&&Dn.setTimeout&&setTimeout(jn.unload,911),eA(rA)}catch(tA){AA(tA.message)}}))},E.API)E.API.hasOwnProperty(mi)&&(\"events\"===mi&&E.API.events.length?function(tA,eA){var AA,rA,nA;for(nA=eA.length-1;-1!==nA;nA--)AA=eA[nA][0],rA=eA[nA][1],tA.subscribe.apply(tA,[AA].concat(\"function\"==typeof rA?[rA]:rA))}(nn,E.API.events):dA[mi]=E.API[mi]);var wi=dA.getPageWidth=function(tA){return(rn[tA=tA||NA].mediaBox.topRightX-rn[tA].mediaBox.bottomLeftX)/Vr},yi=dA.setPageWidth=function(tA,eA){rn[tA].mediaBox.topRightX=eA*Vr+rn[tA].mediaBox.bottomLeftX},Bi=dA.getPageHeight=function(tA){return(rn[tA=tA||NA].mediaBox.topRightY-rn[tA].mediaBox.bottomLeftY)/Vr},bi=dA.setPageHeight=function(tA,eA){rn[tA].mediaBox.topRightY=eA*Vr+rn[tA].mediaBox.bottomLeftY};return dA.internal={pdfEscape:xn,getStyle:qn,getFont:Jn,getFontSize:JA,getCharSpace:fi,getTextColor:hi,getLineHeight:Ai,getLineHeightFactor:ni,getLineWidth:ti,write:qA,getHorizontalCoordinate:ii,getVerticalCoordinate:si,getCoordinateString:oi,getVerticalCoordinateString:ai,collections:{},newObject:fn,newAdditionalObject:pn,newObjectDeferred:gn,newObjectDeferredBegin:Zt,getFilters:bn,putStream:vn,events:nn,scaleFactor:Vr,pageSize:{getWidth:function(){return wi(NA)},setWidth:function(tA){yi(NA,tA)},getHeight:function(){return Bi(NA)},setHeight:function(tA){bi(NA,tA)}},encryptionOptions:cA,encryption:kn,getEncryptor:Je,output:Tn,getNumberOfPages:En,pages:VA,out:KA,f2:CA,f3:SA,getPageInfo:Mn,getPageInfoByObjId:On,getCurrentPageInfo:Hn,getPDFVersion:gA,Point:Cr,Rectangle:jr,Matrix:un,hasHotfix:Ge},Object.defineProperty(dA.internal.pageSize,\"width\",{get:function(){return wi(NA)},set:function(tA){yi(NA,tA)},enumerable:!0,configurable:!0}),Object.defineProperty(dA.internal.pageSize,\"height\",{get:function(){return Bi(NA)},set:function(tA){bi(NA,tA)},enumerable:!0,configurable:!0}),ke.call(dA,XA),Rr=\"F1\",Oe(nA,AA),nn.publish(\"initialized\"),dA}I.prototype.lsbFirstWord=function(tA){return String.fromCharCode(tA>>0&255,tA>>8&255,tA>>16&255,tA>>24&255)},I.prototype.toHexString=function(tA){return tA.split(\"\").map((function(tA){return(\"0\"+(255&tA.charCodeAt(0)).toString(16)).slice(-2)})).join(\"\")},I.prototype.hexToBytes=function(tA){for(var eA=[],AA=0;AA<tA.length;AA+=2)eA.push(String.fromCharCode(parseInt(tA.substr(AA,2),16)));return eA.join(\"\")},I.prototype.processOwnerPassword=function(tA,eA){return P(x(eA).substr(0,5),tA)},I.prototype.encryptor=function(tA,eA){var AA=x(this.encryptionKey+String.fromCharCode(255&tA,tA>>8&255,tA>>16&255,255&eA,eA>>8&255)).substr(0,10);return function(tA){return P(AA,tA)}},j.prototype.equals=function(tA){var eA,AA=\"id,objectNumber,equals\";if(!tA||_typeof$1(tA)!==_typeof$1(this))return!1;var rA=0;for(eA in this)if(!(AA.indexOf(eA)>=0)){if(this.hasOwnProperty(eA)&&!tA.hasOwnProperty(eA))return!1;if(this[eA]!==tA[eA])return!1;rA++}for(eA in tA)tA.hasOwnProperty(eA)&&AA.indexOf(eA)<0&&rA--;return 0===rA},E.API={events:[]},E.version=\"2.5.1\";var Xn=E.API,Wn=1,R=function(tA){return tA.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\(/g,\"\\\\(\").replace(/\\)/g,\"\\\\)\")},T$1=function(tA){return tA.replace(/\\\\\\\\/g,\"\\\\\").replace(/\\\\\\(/g,\"(\").replace(/\\\\\\)/g,\")\")},U=function(tA){return tA.toFixed(2)},z=function(tA){return tA.toFixed(5)};Xn.__acroform__={};var H=function(tA,eA){tA.prototype=Object.create(eA.prototype),tA.prototype.constructor=tA},W=function(tA){return tA*Wn},V=function(tA){var eA=new ut,AA=si.internal.getHeight(tA)||0,rA=si.internal.getWidth(tA)||0;return eA.BBox=[0,0,Number(U(rA)),Number(U(AA))],eA},Yn=Xn.__acroform__.setBit=function(tA,eA){if(tA=tA||0,eA=eA||0,isNaN(tA)||isNaN(eA))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.setBit\");return tA|1<<eA},Jn=Xn.__acroform__.clearBit=function(tA,eA){if(tA=tA||0,eA=eA||0,isNaN(tA)||isNaN(eA))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\");return tA&~(1<<eA)},Zn=Xn.__acroform__.getBit=function(tA,eA){if(isNaN(tA)||isNaN(eA))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.getBit\");return 0==(tA&1<<eA)?0:1},$n=Xn.__acroform__.getBitForPdf=function(tA,eA){if(isNaN(tA)||isNaN(eA))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\");return Zn(tA,eA-1)},ti=Xn.__acroform__.setBitForPdf=function(tA,eA){if(isNaN(tA)||isNaN(eA))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\");return Yn(tA,eA-1)},ei=Xn.__acroform__.clearBitForPdf=function(tA,eA){if(isNaN(tA)||isNaN(eA))throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\");return Jn(tA,eA-1)},Ai=Xn.__acroform__.calculateCoordinates=function(tA,eA){var AA=eA.internal.getHorizontalCoordinate,rA=eA.internal.getVerticalCoordinate,nA=tA[0],iA=tA[1],sA=tA[2],oA=tA[3],aA={};return aA.lowerLeft_X=AA(nA)||0,aA.lowerLeft_Y=rA(iA+oA)||0,aA.upperRight_X=AA(nA+sA)||0,aA.upperRight_Y=rA(iA)||0,[Number(U(aA.lowerLeft_X)),Number(U(aA.lowerLeft_Y)),Number(U(aA.upperRight_X)),Number(U(aA.upperRight_Y))]},Q=function(tA){if(tA.appearanceStreamContent)return tA.appearanceStreamContent;if(tA.V||tA.DV){var eA=[],AA=tA._V||tA.DV,rA=tt(tA,AA),nA=tA.scope.internal.getFont(tA.fontName,tA.fontStyle).id;eA.push(\"/Tx BMC\"),eA.push(\"q\"),eA.push(\"BT\"),eA.push(tA.scope.__private__.encodeColorString(tA.color)),eA.push(\"/\"+nA+\" \"+U(rA.fontSize)+\" Tf\"),eA.push(\"1 0 0 1 0 0 Tm\"),eA.push(rA.text),eA.push(\"ET\"),eA.push(\"Q\"),eA.push(\"EMC\");var iA=V(tA);return iA.scope=tA.scope,iA.stream=eA.join(\"\\n\"),iA}},tt=function(tA,eA){var AA=0===tA.fontSize?tA.maxFontSize:tA.fontSize,rA={text:\"\",fontSize:\"\"},nA=(eA=\")\"==(eA=\"(\"==eA.substr(0,1)?eA.substr(1):eA).substr(eA.length-1)?eA.substr(0,eA.length-1):eA).split(\" \");nA=tA.multiline?nA.map((function(tA){return tA.split(\"\\n\")})):nA.map((function(tA){return[tA]}));var iA=AA,sA=si.internal.getHeight(tA)||0;sA=sA<0?-sA:sA;var oA=si.internal.getWidth(tA)||0;oA=oA<0?-oA:oA;var c=function(eA,AA,rA){if(eA+1<nA.length){var iA=AA+\" \"+nA[eA+1][0];return et(iA,tA,rA).width<=oA-4}return!1};iA++;t:for(;iA>0;){eA=\"\",iA--;var aA,lA,cA=et(\"3\",tA,iA).height,uA=tA.multiline?sA-iA:(sA-cA)/2,hA=uA+=2,dA=0,fA=0,gA=0;if(iA<=0){eA=\"(...) Tj\\n\",eA+=\"% Width of Text: \"+et(eA,tA,iA=12).width+\", FieldWidth:\"+oA+\"\\n\";break}for(var pA=\"\",mA=0,wA=0;wA<nA.length;wA++)if(nA.hasOwnProperty(wA)){var yA=!1;if(1!==nA[wA].length&&gA!==nA[wA].length-1){if((cA+2)*(mA+2)+2>sA)continue t;pA+=nA[wA][gA],yA=!0,fA=wA,wA--}else{pA=\" \"==(pA+=nA[wA][gA]+\" \").substr(pA.length-1)?pA.substr(0,pA.length-1):pA;var BA=parseInt(wA),bA=c(BA,pA,iA),vA=wA>=nA.length-1;if(bA&&!vA){pA+=\" \",gA=0;continue}if(bA||vA){if(vA)fA=BA;else if(tA.multiline&&(cA+2)*(mA+2)+2>sA)continue t}else{if(!tA.multiline)continue t;if((cA+2)*(mA+2)+2>sA)continue t;fA=BA}}for(var CA=\"\",SA=dA;SA<=fA;SA++){var xA=nA[SA];if(tA.multiline){if(SA===fA){CA+=xA[gA]+\" \",gA=(gA+1)%xA.length;continue}if(SA===dA){CA+=xA[xA.length-1]+\" \";continue}}CA+=xA[0]+\" \"}switch(CA=\" \"==CA.substr(CA.length-1)?CA.substr(0,CA.length-1):CA,lA=et(CA,tA,iA).width,tA.textAlign){case\"right\":aA=oA-lA-2;break;case\"center\":aA=(oA-lA)/2;break;default:aA=2}eA+=U(aA)+\" \"+U(hA)+\" Td\\n\",eA+=\"(\"+R(CA)+\") Tj\\n\",eA+=-U(aA)+\" 0 Td\\n\",hA=-(iA+2),lA=0,dA=yA?fA:fA+1,mA++,pA=\"\"}break}return rA.text=eA,rA.fontSize=iA,rA},et=function(tA,eA,AA){var rA=eA.scope.internal.getFont(eA.fontName,eA.fontStyle),nA=eA.scope.getStringUnitWidth(tA,{font:rA,fontSize:parseFloat(AA),charSpace:0})*parseFloat(AA);return{height:eA.scope.getStringUnitWidth(\"3\",{font:rA,fontSize:parseFloat(AA),charSpace:0})*parseFloat(AA)*1.5,width:nA}},ri={fields:[],xForms:[],acroFormDictionaryRoot:null,printedOut:!1,internal:null,isInitialized:!1},nt=function(tA,eA){var AA={type:\"reference\",object:tA};void 0===eA.internal.getPageInfo(tA.page).pageContext.annotations.find((function(tA){return tA.type===AA.type&&tA.object===AA.object}))&&eA.internal.getPageInfo(tA.page).pageContext.annotations.push(AA)},at=function(tA,eA){if(eA.scope=tA,void 0!==tA.internal&&(void 0===tA.internal.acroformPlugin||!1===tA.internal.acroformPlugin.isInitialized)){if(ii.FieldNum=0,tA.internal.acroformPlugin=JSON.parse(JSON.stringify(ri)),tA.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error(\"Exception while creating AcroformDictionary\");Wn=tA.internal.scaleFactor,tA.internal.acroformPlugin.acroFormDictionaryRoot=new ht,tA.internal.acroformPlugin.acroFormDictionaryRoot.scope=tA,tA.internal.acroformPlugin.acroFormDictionaryRoot._eventID=tA.internal.events.subscribe(\"postPutResources\",(function(){!function(tA){tA.internal.events.unsubscribe(tA.internal.acroformPlugin.acroFormDictionaryRoot._eventID),delete tA.internal.acroformPlugin.acroFormDictionaryRoot._eventID,tA.internal.acroformPlugin.printedOut=!0}(tA)})),tA.internal.events.subscribe(\"buildDocument\",(function(){!function(tA){tA.internal.acroformPlugin.acroFormDictionaryRoot.objId=void 0;var eA=tA.internal.acroformPlugin.acroFormDictionaryRoot.Fields;for(var AA in eA)if(eA.hasOwnProperty(AA)){var rA=eA[AA];rA.objId=void 0,rA.hasAnnotation&&nt(rA,tA)}}(tA)})),tA.internal.events.subscribe(\"putCatalog\",(function(){!function(tA){if(void 0===tA.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error(\"putCatalogCallback: Root missing.\");tA.internal.write(\"/AcroForm \"+tA.internal.acroformPlugin.acroFormDictionaryRoot.objId+\" 0 R\")}(tA)})),tA.internal.events.subscribe(\"postPutPages\",(function(eA){!function(tA,eA){var AA=!tA;for(var rA in tA||(eA.internal.newObjectDeferredBegin(eA.internal.acroformPlugin.acroFormDictionaryRoot.objId,!0),eA.internal.acroformPlugin.acroFormDictionaryRoot.putStream()),tA=tA||eA.internal.acroformPlugin.acroFormDictionaryRoot.Kids)if(tA.hasOwnProperty(rA)){var nA=tA[rA],iA=[],sA=nA.Rect;if(nA.Rect&&(nA.Rect=Ai(nA.Rect,eA)),eA.internal.newObjectDeferredBegin(nA.objId,!0),nA.DA=si.createDefaultAppearanceStream(nA),\"object\"===_typeof$1(nA)&&\"function\"==typeof nA.getKeyValueListForStream&&(iA=nA.getKeyValueListForStream()),nA.Rect=sA,nA.hasAppearanceStream&&!nA.appearanceStreamContent){var oA=Q(nA);iA.push({key:\"AP\",value:\"<</N \"+oA+\">>\"}),eA.internal.acroformPlugin.xForms.push(oA)}if(nA.appearanceStreamContent){var aA=\"\";for(var lA in nA.appearanceStreamContent)if(nA.appearanceStreamContent.hasOwnProperty(lA)){var cA=nA.appearanceStreamContent[lA];if(aA+=\"/\"+lA+\" \",aA+=\"<<\",Object.keys(cA).length>=1||Array.isArray(cA)){for(var rA in cA)if(cA.hasOwnProperty(rA)){var uA=cA[rA];\"function\"==typeof uA&&(uA=uA.call(eA,nA)),aA+=\"/\"+rA+\" \"+uA+\" \",eA.internal.acroformPlugin.xForms.indexOf(uA)>=0||eA.internal.acroformPlugin.xForms.push(uA)}}else\"function\"==typeof(uA=cA)&&(uA=uA.call(eA,nA)),aA+=\"/\"+rA+\" \"+uA,eA.internal.acroformPlugin.xForms.indexOf(uA)>=0||eA.internal.acroformPlugin.xForms.push(uA);aA+=\">>\"}iA.push({key:\"AP\",value:\"<<\\n\"+aA+\">>\"})}eA.internal.putStream({additionalKeyValues:iA,objectId:nA.objId}),eA.internal.out(\"endobj\")}AA&&function(tA,eA){for(var AA in tA)if(tA.hasOwnProperty(AA)){var rA=AA,nA=tA[AA];eA.internal.newObjectDeferredBegin(nA.objId,!0),\"object\"===_typeof$1(nA)&&\"function\"==typeof nA.putStream&&nA.putStream(),delete tA[rA]}}(eA.internal.acroformPlugin.xForms,eA)}(eA,tA)})),tA.internal.acroformPlugin.isInitialized=!0}},ni=Xn.__acroform__.arrayToPdfArray=function(tA,eA,AA){var i=function(tA){return tA};if(Array.isArray(tA)){for(var rA=\"[\",nA=0;nA<tA.length;nA++)switch(0!==nA&&(rA+=\" \"),_typeof$1(tA[nA])){case\"boolean\":case\"number\":case\"object\":rA+=tA[nA].toString();break;case\"string\":\"/\"!==tA[nA].substr(0,1)?(void 0!==eA&&AA&&(i=AA.internal.getEncryptor(eA)),rA+=\"(\"+R(i(tA[nA].toString()))+\")\"):rA+=tA[nA].toString()}return rA+\"]\"}throw new Error(\"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\")},st=function(tA,eA,AA){var n=function(tA){return tA};return void 0!==eA&&AA&&(n=AA.internal.getEncryptor(eA)),(tA=tA||\"\").toString(),\"(\"+R(n(tA))+\")\"},ct=function(){this._objId=void 0,this._scope=void 0,Object.defineProperty(this,\"objId\",{get:function(){if(void 0===this._objId){if(void 0===this.scope)return;this._objId=this.scope.internal.newObjectDeferred()}return this._objId},set:function(tA){this._objId=tA}}),Object.defineProperty(this,\"scope\",{value:this._scope,writable:!0})};ct.prototype.toString=function(){return this.objId+\" 0 R\"},ct.prototype.putStream=function(){var tA=this.getKeyValueListForStream();this.scope.internal.putStream({data:this.stream,additionalKeyValues:tA,objectId:this.objId}),this.scope.internal.out(\"endobj\")},ct.prototype.getKeyValueListForStream=function(){var tA=[],eA=Object.getOwnPropertyNames(this).filter((function(tA){return\"content\"!=tA&&\"appearanceStreamContent\"!=tA&&\"scope\"!=tA&&\"objId\"!=tA&&\"_\"!=tA.substring(0,1)}));for(var AA in eA)if(!1===Object.getOwnPropertyDescriptor(this,eA[AA]).configurable){var rA=eA[AA],nA=this[rA];nA&&(Array.isArray(nA)?tA.push({key:rA,value:ni(nA,this.objId,this.scope)}):nA instanceof ct?(nA.scope=this.scope,tA.push({key:rA,value:nA.objId+\" 0 R\"})):\"function\"!=typeof nA&&tA.push({key:rA,value:nA}))}return tA};var ut=function(){ct.call(this),Object.defineProperty(this,\"Type\",{value:\"/XObject\",configurable:!1,writable:!0}),Object.defineProperty(this,\"Subtype\",{value:\"/Form\",configurable:!1,writable:!0}),Object.defineProperty(this,\"FormType\",{value:1,configurable:!1,writable:!0});var tA,eA=[];Object.defineProperty(this,\"BBox\",{configurable:!1,get:function(){return eA},set:function(tA){eA=tA}}),Object.defineProperty(this,\"Resources\",{value:\"2 0 R\",configurable:!1,writable:!0}),Object.defineProperty(this,\"stream\",{enumerable:!1,configurable:!0,set:function(eA){tA=eA.trim()},get:function(){return tA||null}})};H(ut,ct);var ht=function(){ct.call(this);var tA,eA=[];Object.defineProperty(this,\"Kids\",{enumerable:!1,configurable:!0,get:function(){return eA.length>0?eA:void 0}}),Object.defineProperty(this,\"Fields\",{enumerable:!1,configurable:!1,get:function(){return eA}}),Object.defineProperty(this,\"DA\",{enumerable:!1,configurable:!1,get:function(){if(tA){var e=function(tA){return tA};return this.scope&&(e=this.scope.internal.getEncryptor(this.objId)),\"(\"+R(e(tA))+\")\"}},set:function(eA){tA=eA}})};H(ht,ct);var ii=function t(){ct.call(this);var tA=4;Object.defineProperty(this,\"F\",{enumerable:!1,configurable:!1,get:function(){return tA},set:function(eA){if(isNaN(eA))throw new Error('Invalid value \"'+eA+'\" for attribute F supplied.');tA=eA}}),Object.defineProperty(this,\"showWhenPrinted\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(tA,3))},set:function(eA){!0===Boolean(eA)?this.F=ti(tA,3):this.F=ei(tA,3)}});var eA=0;Object.defineProperty(this,\"Ff\",{enumerable:!1,configurable:!1,get:function(){return eA},set:function(tA){if(isNaN(tA))throw new Error('Invalid value \"'+tA+'\" for attribute Ff supplied.');eA=tA}});var AA=[];Object.defineProperty(this,\"Rect\",{enumerable:!1,configurable:!1,get:function(){if(0!==AA.length)return AA},set:function(tA){AA=void 0!==tA?tA:[]}}),Object.defineProperty(this,\"x\",{enumerable:!0,configurable:!0,get:function(){return!AA||isNaN(AA[0])?0:AA[0]},set:function(tA){AA[0]=tA}}),Object.defineProperty(this,\"y\",{enumerable:!0,configurable:!0,get:function(){return!AA||isNaN(AA[1])?0:AA[1]},set:function(tA){AA[1]=tA}}),Object.defineProperty(this,\"width\",{enumerable:!0,configurable:!0,get:function(){return!AA||isNaN(AA[2])?0:AA[2]},set:function(tA){AA[2]=tA}}),Object.defineProperty(this,\"height\",{enumerable:!0,configurable:!0,get:function(){return!AA||isNaN(AA[3])?0:AA[3]},set:function(tA){AA[3]=tA}});var rA=\"\";Object.defineProperty(this,\"FT\",{enumerable:!0,configurable:!1,get:function(){return rA},set:function(tA){switch(tA){case\"/Btn\":case\"/Tx\":case\"/Ch\":case\"/Sig\":rA=tA;break;default:throw new Error('Invalid value \"'+tA+'\" for attribute FT supplied.')}}});var nA=null;Object.defineProperty(this,\"T\",{enumerable:!0,configurable:!1,get:function(){if(!nA||nA.length<1){if(this instanceof yt)return;nA=\"FieldObject\"+t.FieldNum++}var e=function(tA){return tA};return this.scope&&(e=this.scope.internal.getEncryptor(this.objId)),\"(\"+R(e(nA))+\")\"},set:function(tA){nA=tA.toString()}}),Object.defineProperty(this,\"fieldName\",{configurable:!0,enumerable:!0,get:function(){return nA},set:function(tA){nA=tA}});var iA=\"helvetica\";Object.defineProperty(this,\"fontName\",{enumerable:!0,configurable:!0,get:function(){return iA},set:function(tA){iA=tA}});var sA=\"normal\";Object.defineProperty(this,\"fontStyle\",{enumerable:!0,configurable:!0,get:function(){return sA},set:function(tA){sA=tA}});var oA=0;Object.defineProperty(this,\"fontSize\",{enumerable:!0,configurable:!0,get:function(){return oA},set:function(tA){oA=tA}});var aA=void 0;Object.defineProperty(this,\"maxFontSize\",{enumerable:!0,configurable:!0,get:function(){return void 0===aA?50/Wn:aA},set:function(tA){aA=tA}});var lA=\"black\";Object.defineProperty(this,\"color\",{enumerable:!0,configurable:!0,get:function(){return lA},set:function(tA){lA=tA}});var cA=\"/F1 0 Tf 0 g\";Object.defineProperty(this,\"DA\",{enumerable:!0,configurable:!1,get:function(){if(!(!cA||this instanceof yt||this instanceof Nt))return st(cA,this.objId,this.scope)},set:function(tA){tA=tA.toString(),cA=tA}});var uA=null;Object.defineProperty(this,\"DV\",{enumerable:!1,configurable:!1,get:function(){if(uA)return this instanceof mt==0?st(uA,this.objId,this.scope):uA},set:function(tA){tA=tA.toString(),uA=this instanceof mt==0?\"(\"===tA.substr(0,1)?T$1(tA.substr(1,tA.length-2)):T$1(tA):tA}}),Object.defineProperty(this,\"defaultValue\",{enumerable:!0,configurable:!0,get:function(){return this instanceof mt==1?T$1(uA.substr(1,uA.length-1)):uA},set:function(tA){tA=tA.toString(),uA=this instanceof mt==1?\"/\"+tA:tA}});var hA=null;Object.defineProperty(this,\"_V\",{enumerable:!1,configurable:!1,get:function(){if(hA)return hA},set:function(tA){this.V=tA}}),Object.defineProperty(this,\"V\",{enumerable:!1,configurable:!1,get:function(){if(hA)return this instanceof mt==0?st(hA,this.objId,this.scope):hA},set:function(tA){tA=tA.toString(),hA=this instanceof mt==0?\"(\"===tA.substr(0,1)?T$1(tA.substr(1,tA.length-2)):T$1(tA):tA}}),Object.defineProperty(this,\"value\",{enumerable:!0,configurable:!0,get:function(){return this instanceof mt==1?T$1(hA.substr(1,hA.length-1)):hA},set:function(tA){tA=tA.toString(),hA=this instanceof mt==1?\"/\"+tA:tA}}),Object.defineProperty(this,\"hasAnnotation\",{enumerable:!0,configurable:!0,get:function(){return this.Rect}}),Object.defineProperty(this,\"Type\",{enumerable:!0,configurable:!1,get:function(){return this.hasAnnotation?\"/Annot\":null}}),Object.defineProperty(this,\"Subtype\",{enumerable:!0,configurable:!1,get:function(){return this.hasAnnotation?\"/Widget\":null}});var dA,fA=!1;Object.defineProperty(this,\"hasAppearanceStream\",{enumerable:!0,configurable:!0,get:function(){return fA},set:function(tA){tA=Boolean(tA),fA=tA}}),Object.defineProperty(this,\"page\",{enumerable:!0,configurable:!0,get:function(){if(dA)return dA},set:function(tA){dA=tA}}),Object.defineProperty(this,\"readOnly\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,1))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,1):this.Ff=ei(this.Ff,1)}}),Object.defineProperty(this,\"required\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,2))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,2):this.Ff=ei(this.Ff,2)}}),Object.defineProperty(this,\"noExport\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,3))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,3):this.Ff=ei(this.Ff,3)}});var gA=null;Object.defineProperty(this,\"Q\",{enumerable:!0,configurable:!1,get:function(){if(null!==gA)return gA},set:function(tA){if(-1===[0,1,2].indexOf(tA))throw new Error('Invalid value \"'+tA+'\" for attribute Q supplied.');gA=tA}}),Object.defineProperty(this,\"textAlign\",{get:function(){var tA;switch(gA){case 0:default:tA=\"left\";break;case 1:tA=\"center\";break;case 2:tA=\"right\"}return tA},configurable:!0,enumerable:!0,set:function(tA){switch(tA){case\"right\":case 2:gA=2;break;case\"center\":case 1:gA=1;break;default:gA=0}}})};H(ii,ct);var ft=function(){ii.call(this),this.FT=\"/Ch\",this.V=\"()\",this.fontName=\"zapfdingbats\";var tA=0;Object.defineProperty(this,\"TI\",{enumerable:!0,configurable:!1,get:function(){return tA},set:function(eA){tA=eA}}),Object.defineProperty(this,\"topIndex\",{enumerable:!0,configurable:!0,get:function(){return tA},set:function(eA){tA=eA}});var eA=[];Object.defineProperty(this,\"Opt\",{enumerable:!0,configurable:!1,get:function(){return ni(eA,this.objId,this.scope)},set:function(tA){var AA,rA;rA=[],\"string\"==typeof(AA=tA)&&(rA=function(tA,eA,AA){AA||(AA=1);for(var rA,nA=[];rA=eA.exec(tA);)nA.push(rA[AA]);return nA}(AA,/\\((.*?)\\)/g)),eA=rA}}),this.getOptions=function(){return eA},this.setOptions=function(tA){eA=tA,this.sort&&eA.sort()},this.addOption=function(tA){tA=(tA=tA||\"\").toString(),eA.push(tA),this.sort&&eA.sort()},this.removeOption=function(tA,AA){for(AA=AA||!1,tA=(tA=tA||\"\").toString();-1!==eA.indexOf(tA)&&(eA.splice(eA.indexOf(tA),1),!1!==AA););},Object.defineProperty(this,\"combo\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,18))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,18):this.Ff=ei(this.Ff,18)}}),Object.defineProperty(this,\"edit\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,19))},set:function(tA){!0===this.combo&&(!0===Boolean(tA)?this.Ff=ti(this.Ff,19):this.Ff=ei(this.Ff,19))}}),Object.defineProperty(this,\"sort\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,20))},set:function(tA){!0===Boolean(tA)?(this.Ff=ti(this.Ff,20),eA.sort()):this.Ff=ei(this.Ff,20)}}),Object.defineProperty(this,\"multiSelect\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,22))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,22):this.Ff=ei(this.Ff,22)}}),Object.defineProperty(this,\"doNotSpellCheck\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,23))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,23):this.Ff=ei(this.Ff,23)}}),Object.defineProperty(this,\"commitOnSelChange\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,27))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,27):this.Ff=ei(this.Ff,27)}}),this.hasAppearanceStream=!1};H(ft,ii);var dt=function(){ft.call(this),this.fontName=\"helvetica\",this.combo=!1};H(dt,ft);var pt=function(){dt.call(this),this.combo=!0};H(pt,dt);var gt=function(){pt.call(this),this.edit=!0};H(gt,pt);var mt=function(){ii.call(this),this.FT=\"/Btn\",Object.defineProperty(this,\"noToggleToOff\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,15))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,15):this.Ff=ei(this.Ff,15)}}),Object.defineProperty(this,\"radio\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,16))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,16):this.Ff=ei(this.Ff,16)}}),Object.defineProperty(this,\"pushButton\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,17))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,17):this.Ff=ei(this.Ff,17)}}),Object.defineProperty(this,\"radioIsUnison\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,26))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,26):this.Ff=ei(this.Ff,26)}});var tA,eA={};Object.defineProperty(this,\"MK\",{enumerable:!1,configurable:!1,get:function(){var t=function(tA){return tA};if(this.scope&&(t=this.scope.internal.getEncryptor(this.objId)),0!==Object.keys(eA).length){var tA,AA=[];for(tA in AA.push(\"<<\"),eA)AA.push(\"/\"+tA+\" (\"+R(t(eA[tA]))+\")\");return AA.push(\">>\"),AA.join(\"\\n\")}},set:function(tA){\"object\"===_typeof$1(tA)&&(eA=tA)}}),Object.defineProperty(this,\"caption\",{enumerable:!0,configurable:!0,get:function(){return eA.CA||\"\"},set:function(tA){\"string\"==typeof tA&&(eA.CA=tA)}}),Object.defineProperty(this,\"AS\",{enumerable:!1,configurable:!1,get:function(){return tA},set:function(eA){tA=eA}}),Object.defineProperty(this,\"appearanceState\",{enumerable:!0,configurable:!0,get:function(){return tA.substr(1,tA.length-1)},set:function(eA){tA=\"/\"+eA}})};H(mt,ii);var vt=function(){mt.call(this),this.pushButton=!0};H(vt,mt);var bt=function(){mt.call(this),this.radio=!0,this.pushButton=!1;var tA=[];Object.defineProperty(this,\"Kids\",{enumerable:!0,configurable:!1,get:function(){return tA},set:function(eA){tA=void 0!==eA?eA:[]}})};H(bt,mt);var yt=function(){var tA,eA;ii.call(this),Object.defineProperty(this,\"Parent\",{enumerable:!1,configurable:!1,get:function(){return tA},set:function(eA){tA=eA}}),Object.defineProperty(this,\"optionName\",{enumerable:!1,configurable:!0,get:function(){return eA},set:function(tA){eA=tA}});var AA,rA={};Object.defineProperty(this,\"MK\",{enumerable:!1,configurable:!1,get:function(){var t=function(tA){return tA};this.scope&&(t=this.scope.internal.getEncryptor(this.objId));var tA,eA=[];for(tA in eA.push(\"<<\"),rA)eA.push(\"/\"+tA+\" (\"+R(t(rA[tA]))+\")\");return eA.push(\">>\"),eA.join(\"\\n\")},set:function(tA){\"object\"===_typeof$1(tA)&&(rA=tA)}}),Object.defineProperty(this,\"caption\",{enumerable:!0,configurable:!0,get:function(){return rA.CA||\"\"},set:function(tA){\"string\"==typeof tA&&(rA.CA=tA)}}),Object.defineProperty(this,\"AS\",{enumerable:!1,configurable:!1,get:function(){return AA},set:function(tA){AA=tA}}),Object.defineProperty(this,\"appearanceState\",{enumerable:!0,configurable:!0,get:function(){return AA.substr(1,AA.length-1)},set:function(tA){AA=\"/\"+tA}}),this.caption=\"l\",this.appearanceState=\"Off\",this._AppearanceType=si.RadioButton.Circle,this.appearanceStreamContent=this._AppearanceType.createAppearanceStream(this.optionName)};H(yt,ii),bt.prototype.setAppearance=function(tA){if(!(\"createAppearanceStream\"in tA)||!(\"getCA\"in tA))throw new Error(\"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\");for(var eA in this.Kids)if(this.Kids.hasOwnProperty(eA)){var AA=this.Kids[eA];AA.appearanceStreamContent=tA.createAppearanceStream(AA.optionName),AA.caption=tA.getCA()}},bt.prototype.createOption=function(tA){var eA=new yt;return eA.Parent=this,eA.optionName=tA,this.Kids.push(eA),oi.call(this.scope,eA),eA};var wt=function(){mt.call(this),this.fontName=\"zapfdingbats\",this.caption=\"3\",this.appearanceState=\"On\",this.value=\"On\",this.textAlign=\"center\",this.appearanceStreamContent=si.CheckBox.createAppearanceStream()};H(wt,mt);var Nt=function(){ii.call(this),this.FT=\"/Tx\",Object.defineProperty(this,\"multiline\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,13))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,13):this.Ff=ei(this.Ff,13)}}),Object.defineProperty(this,\"fileSelect\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,21))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,21):this.Ff=ei(this.Ff,21)}}),Object.defineProperty(this,\"doNotSpellCheck\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,23))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,23):this.Ff=ei(this.Ff,23)}}),Object.defineProperty(this,\"doNotScroll\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,24))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,24):this.Ff=ei(this.Ff,24)}}),Object.defineProperty(this,\"comb\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,25))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,25):this.Ff=ei(this.Ff,25)}}),Object.defineProperty(this,\"richText\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,26))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,26):this.Ff=ei(this.Ff,26)}});var tA=null;Object.defineProperty(this,\"MaxLen\",{enumerable:!0,configurable:!1,get:function(){return tA},set:function(eA){tA=eA}}),Object.defineProperty(this,\"maxLength\",{enumerable:!0,configurable:!0,get:function(){return tA},set:function(eA){Number.isInteger(eA)&&(tA=eA)}}),Object.defineProperty(this,\"hasAppearanceStream\",{enumerable:!0,configurable:!0,get:function(){return this.V||this.DV}})};H(Nt,ii);var Lt=function(){Nt.call(this),Object.defineProperty(this,\"password\",{enumerable:!0,configurable:!0,get:function(){return Boolean($n(this.Ff,14))},set:function(tA){!0===Boolean(tA)?this.Ff=ti(this.Ff,14):this.Ff=ei(this.Ff,14)}}),this.password=!0};H(Lt,Nt);var si={CheckBox:{createAppearanceStream:function(){return{N:{On:si.CheckBox.YesNormal},D:{On:si.CheckBox.YesPushDown,Off:si.CheckBox.OffPushDown}}},YesPushDown:function(tA){var eA=V(tA);eA.scope=tA.scope;var AA=[],rA=tA.scope.internal.getFont(tA.fontName,tA.fontStyle).id,nA=tA.scope.__private__.encodeColorString(tA.color),iA=tt(tA,tA.caption);return AA.push(\"0.749023 g\"),AA.push(\"0 0 \"+U(si.internal.getWidth(tA))+\" \"+U(si.internal.getHeight(tA))+\" re\"),AA.push(\"f\"),AA.push(\"BMC\"),AA.push(\"q\"),AA.push(\"0 0 1 rg\"),AA.push(\"/\"+rA+\" \"+U(iA.fontSize)+\" Tf \"+nA),AA.push(\"BT\"),AA.push(iA.text),AA.push(\"ET\"),AA.push(\"Q\"),AA.push(\"EMC\"),eA.stream=AA.join(\"\\n\"),eA},YesNormal:function(tA){var eA=V(tA);eA.scope=tA.scope;var AA=tA.scope.internal.getFont(tA.fontName,tA.fontStyle).id,rA=tA.scope.__private__.encodeColorString(tA.color),nA=[],iA=si.internal.getHeight(tA),sA=si.internal.getWidth(tA),oA=tt(tA,tA.caption);return nA.push(\"1 g\"),nA.push(\"0 0 \"+U(sA)+\" \"+U(iA)+\" re\"),nA.push(\"f\"),nA.push(\"q\"),nA.push(\"0 0 1 rg\"),nA.push(\"0 0 \"+U(sA-1)+\" \"+U(iA-1)+\" re\"),nA.push(\"W\"),nA.push(\"n\"),nA.push(\"0 g\"),nA.push(\"BT\"),nA.push(\"/\"+AA+\" \"+U(oA.fontSize)+\" Tf \"+rA),nA.push(oA.text),nA.push(\"ET\"),nA.push(\"Q\"),eA.stream=nA.join(\"\\n\"),eA},OffPushDown:function(tA){var eA=V(tA);eA.scope=tA.scope;var AA=[];return AA.push(\"0.749023 g\"),AA.push(\"0 0 \"+U(si.internal.getWidth(tA))+\" \"+U(si.internal.getHeight(tA))+\" re\"),AA.push(\"f\"),eA.stream=AA.join(\"\\n\"),eA}},RadioButton:{Circle:{createAppearanceStream:function(tA){var eA={D:{Off:si.RadioButton.Circle.OffPushDown},N:{}};return eA.N[tA]=si.RadioButton.Circle.YesNormal,eA.D[tA]=si.RadioButton.Circle.YesPushDown,eA},getCA:function(){return\"l\"},YesNormal:function(tA){var eA=V(tA);eA.scope=tA.scope;var AA=[],rA=si.internal.getWidth(tA)<=si.internal.getHeight(tA)?si.internal.getWidth(tA)/4:si.internal.getHeight(tA)/4;rA=Number((.9*rA).toFixed(5));var nA=si.internal.Bezier_C,iA=Number((rA*nA).toFixed(5));return AA.push(\"q\"),AA.push(\"1 0 0 1 \"+z(si.internal.getWidth(tA)/2)+\" \"+z(si.internal.getHeight(tA)/2)+\" cm\"),AA.push(rA+\" 0 m\"),AA.push(rA+\" \"+iA+\" \"+iA+\" \"+rA+\" 0 \"+rA+\" c\"),AA.push(\"-\"+iA+\" \"+rA+\" -\"+rA+\" \"+iA+\" -\"+rA+\" 0 c\"),AA.push(\"-\"+rA+\" -\"+iA+\" -\"+iA+\" -\"+rA+\" 0 -\"+rA+\" c\"),AA.push(iA+\" -\"+rA+\" \"+rA+\" -\"+iA+\" \"+rA+\" 0 c\"),AA.push(\"f\"),AA.push(\"Q\"),eA.stream=AA.join(\"\\n\"),eA},YesPushDown:function(tA){var eA=V(tA);eA.scope=tA.scope;var AA=[],rA=si.internal.getWidth(tA)<=si.internal.getHeight(tA)?si.internal.getWidth(tA)/4:si.internal.getHeight(tA)/4;rA=Number((.9*rA).toFixed(5));var nA=Number((2*rA).toFixed(5)),iA=Number((nA*si.internal.Bezier_C).toFixed(5)),sA=Number((rA*si.internal.Bezier_C).toFixed(5));return AA.push(\"0.749023 g\"),AA.push(\"q\"),AA.push(\"1 0 0 1 \"+z(si.internal.getWidth(tA)/2)+\" \"+z(si.internal.getHeight(tA)/2)+\" cm\"),AA.push(nA+\" 0 m\"),AA.push(nA+\" \"+iA+\" \"+iA+\" \"+nA+\" 0 \"+nA+\" c\"),AA.push(\"-\"+iA+\" \"+nA+\" -\"+nA+\" \"+iA+\" -\"+nA+\" 0 c\"),AA.push(\"-\"+nA+\" -\"+iA+\" -\"+iA+\" -\"+nA+\" 0 -\"+nA+\" c\"),AA.push(iA+\" -\"+nA+\" \"+nA+\" -\"+iA+\" \"+nA+\" 0 c\"),AA.push(\"f\"),AA.push(\"Q\"),AA.push(\"0 g\"),AA.push(\"q\"),AA.push(\"1 0 0 1 \"+z(si.internal.getWidth(tA)/2)+\" \"+z(si.internal.getHeight(tA)/2)+\" cm\"),AA.push(rA+\" 0 m\"),AA.push(rA+\" \"+sA+\" \"+sA+\" \"+rA+\" 0 \"+rA+\" c\"),AA.push(\"-\"+sA+\" \"+rA+\" -\"+rA+\" \"+sA+\" -\"+rA+\" 0 c\"),AA.push(\"-\"+rA+\" -\"+sA+\" -\"+sA+\" -\"+rA+\" 0 -\"+rA+\" c\"),AA.push(sA+\" -\"+rA+\" \"+rA+\" -\"+sA+\" \"+rA+\" 0 c\"),AA.push(\"f\"),AA.push(\"Q\"),eA.stream=AA.join(\"\\n\"),eA},OffPushDown:function(tA){var eA=V(tA);eA.scope=tA.scope;var AA=[],rA=si.internal.getWidth(tA)<=si.internal.getHeight(tA)?si.internal.getWidth(tA)/4:si.internal.getHeight(tA)/4;rA=Number((.9*rA).toFixed(5));var nA=Number((2*rA).toFixed(5)),iA=Number((nA*si.internal.Bezier_C).toFixed(5));return AA.push(\"0.749023 g\"),AA.push(\"q\"),AA.push(\"1 0 0 1 \"+z(si.internal.getWidth(tA)/2)+\" \"+z(si.internal.getHeight(tA)/2)+\" cm\"),AA.push(nA+\" 0 m\"),AA.push(nA+\" \"+iA+\" \"+iA+\" \"+nA+\" 0 \"+nA+\" c\"),AA.push(\"-\"+iA+\" \"+nA+\" -\"+nA+\" \"+iA+\" -\"+nA+\" 0 c\"),AA.push(\"-\"+nA+\" -\"+iA+\" -\"+iA+\" -\"+nA+\" 0 -\"+nA+\" c\"),AA.push(iA+\" -\"+nA+\" \"+nA+\" -\"+iA+\" \"+nA+\" 0 c\"),AA.push(\"f\"),AA.push(\"Q\"),eA.stream=AA.join(\"\\n\"),eA}},Cross:{createAppearanceStream:function(tA){var eA={D:{Off:si.RadioButton.Cross.OffPushDown},N:{}};return eA.N[tA]=si.RadioButton.Cross.YesNormal,eA.D[tA]=si.RadioButton.Cross.YesPushDown,eA},getCA:function(){return\"8\"},YesNormal:function(tA){var eA=V(tA);eA.scope=tA.scope;var AA=[],rA=si.internal.calculateCross(tA);return AA.push(\"q\"),AA.push(\"1 1 \"+U(si.internal.getWidth(tA)-2)+\" \"+U(si.internal.getHeight(tA)-2)+\" re\"),AA.push(\"W\"),AA.push(\"n\"),AA.push(U(rA.x1.x)+\" \"+U(rA.x1.y)+\" m\"),AA.push(U(rA.x2.x)+\" \"+U(rA.x2.y)+\" l\"),AA.push(U(rA.x4.x)+\" \"+U(rA.x4.y)+\" m\"),AA.push(U(rA.x3.x)+\" \"+U(rA.x3.y)+\" l\"),AA.push(\"s\"),AA.push(\"Q\"),eA.stream=AA.join(\"\\n\"),eA},YesPushDown:function(tA){var eA=V(tA);eA.scope=tA.scope;var AA=si.internal.calculateCross(tA),rA=[];return rA.push(\"0.749023 g\"),rA.push(\"0 0 \"+U(si.internal.getWidth(tA))+\" \"+U(si.internal.getHeight(tA))+\" re\"),rA.push(\"f\"),rA.push(\"q\"),rA.push(\"1 1 \"+U(si.internal.getWidth(tA)-2)+\" \"+U(si.internal.getHeight(tA)-2)+\" re\"),rA.push(\"W\"),rA.push(\"n\"),rA.push(U(AA.x1.x)+\" \"+U(AA.x1.y)+\" m\"),rA.push(U(AA.x2.x)+\" \"+U(AA.x2.y)+\" l\"),rA.push(U(AA.x4.x)+\" \"+U(AA.x4.y)+\" m\"),rA.push(U(AA.x3.x)+\" \"+U(AA.x3.y)+\" l\"),rA.push(\"s\"),rA.push(\"Q\"),eA.stream=rA.join(\"\\n\"),eA},OffPushDown:function(tA){var eA=V(tA);eA.scope=tA.scope;var AA=[];return AA.push(\"0.749023 g\"),AA.push(\"0 0 \"+U(si.internal.getWidth(tA))+\" \"+U(si.internal.getHeight(tA))+\" re\"),AA.push(\"f\"),eA.stream=AA.join(\"\\n\"),eA}}},createDefaultAppearanceStream:function(tA){var eA=tA.scope.internal.getFont(tA.fontName,tA.fontStyle).id,AA=tA.scope.__private__.encodeColorString(tA.color);return\"/\"+eA+\" \"+tA.fontSize+\" Tf \"+AA}};si.internal={Bezier_C:.551915024494,calculateCross:function(tA){var eA=si.internal.getWidth(tA),AA=si.internal.getHeight(tA),rA=Math.min(eA,AA);return{x1:{x:(eA-rA)/2,y:(AA-rA)/2+rA},x2:{x:(eA-rA)/2+rA,y:(AA-rA)/2},x3:{x:(eA-rA)/2,y:(AA-rA)/2},x4:{x:(eA-rA)/2+rA,y:(AA-rA)/2+rA}}}},si.internal.getWidth=function(tA){var eA=0;return\"object\"===_typeof$1(tA)&&(eA=W(tA.Rect[2])),eA},si.internal.getHeight=function(tA){var eA=0;return\"object\"===_typeof$1(tA)&&(eA=W(tA.Rect[3])),eA};var oi=Xn.addField=function(tA){if(at(this,tA),!(tA instanceof ii))throw new Error(\"Invalid argument passed to jsPDF.addField.\");var eA;return(eA=tA).scope.internal.acroformPlugin.printedOut&&(eA.scope.internal.acroformPlugin.printedOut=!1,eA.scope.internal.acroformPlugin.acroFormDictionaryRoot=null),eA.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(eA),tA.page=tA.scope.internal.getCurrentPageInfo().pageNumber,this};function _t(tA){return tA.reduce((function(tA,eA,AA){return tA[eA]=AA,tA}),{})}Xn.AcroFormChoiceField=ft,Xn.AcroFormListBox=dt,Xn.AcroFormComboBox=pt,Xn.AcroFormEditBox=gt,Xn.AcroFormButton=mt,Xn.AcroFormPushButton=vt,Xn.AcroFormRadioButton=bt,Xn.AcroFormCheckBox=wt,Xn.AcroFormTextField=Nt,Xn.AcroFormPasswordField=Lt,Xn.AcroFormAppearance=si,Xn.AcroForm={ChoiceField:ft,ListBox:dt,ComboBox:pt,EditBox:gt,Button:mt,PushButton:vt,RadioButton:bt,CheckBox:wt,TextField:Nt,PasswordField:Lt,Appearance:si},E.AcroForm={ChoiceField:ft,ListBox:dt,ComboBox:pt,EditBox:gt,Button:mt,PushButton:vt,RadioButton:bt,CheckBox:wt,TextField:Nt,PasswordField:Lt,Appearance:si},E.AcroForm,function(tA){tA.__addimage__={};var eA=\"UNKNOWN\",AA={PNG:[[137,80,78,71]],TIFF:[[77,77,0,42],[73,73,42,0]],JPEG:[[255,216,255,224,void 0,void 0,74,70,73,70,0],[255,216,255,225,void 0,void 0,69,120,105,102,0,0],[255,216,255,219],[255,216,255,238]],JPEG2000:[[0,0,0,12,106,80,32,32]],GIF87a:[[71,73,70,56,55,97]],GIF89a:[[71,73,70,56,57,97]],WEBP:[[82,73,70,70,void 0,void 0,void 0,void 0,87,69,66,80]],BMP:[[66,77],[66,65],[67,73],[67,80],[73,67],[80,84]]},rA=tA.__addimage__.getImageFileTypeByImageData=function(tA,rA){var nA,iA,sA,oA,aA,lA=eA;if(\"RGBA\"===(rA=rA||eA)||void 0!==tA.data&&tA.data instanceof Uint8ClampedArray&&\"height\"in tA&&\"width\"in tA)return\"RGBA\";if(uA(tA))for(aA in AA)for(sA=AA[aA],nA=0;nA<sA.length;nA+=1){for(oA=!0,iA=0;iA<sA[nA].length;iA+=1)if(void 0!==sA[nA][iA]&&sA[nA][iA]!==tA[iA]){oA=!1;break}if(!0===oA){lA=aA;break}}else for(aA in AA)for(sA=AA[aA],nA=0;nA<sA.length;nA+=1){for(oA=!0,iA=0;iA<sA[nA].length;iA+=1)if(void 0!==sA[nA][iA]&&sA[nA][iA]!==tA.charCodeAt(iA)){oA=!1;break}if(!0===oA){lA=aA;break}}return lA===eA&&rA!==eA&&(lA=rA),lA},nA=function t(tA){for(var eA=this.internal.write,AA=this.internal.putStream,rA=(0,this.internal.getFilters)();-1!==rA.indexOf(\"FlateEncode\");)rA.splice(rA.indexOf(\"FlateEncode\"),1);tA.objectId=this.internal.newObject();var nA=[];if(nA.push({key:\"Type\",value:\"/XObject\"}),nA.push({key:\"Subtype\",value:\"/Image\"}),nA.push({key:\"Width\",value:tA.width}),nA.push({key:\"Height\",value:tA.height}),tA.colorSpace===iA.INDEXED?nA.push({key:\"ColorSpace\",value:\"[/Indexed /DeviceRGB \"+(tA.palette.length/3-1)+\" \"+(\"sMask\"in tA&&void 0!==tA.sMask?tA.objectId+2:tA.objectId+1)+\" 0 R]\"}):(nA.push({key:\"ColorSpace\",value:\"/\"+tA.colorSpace}),tA.colorSpace===iA.DEVICE_CMYK&&nA.push({key:\"Decode\",value:\"[1 0 1 0 1 0 1 0]\"})),nA.push({key:\"BitsPerComponent\",value:tA.bitsPerComponent}),\"decodeParameters\"in tA&&void 0!==tA.decodeParameters&&nA.push({key:\"DecodeParms\",value:\"<<\"+tA.decodeParameters+\">>\"}),\"transparency\"in tA&&Array.isArray(tA.transparency)){for(var sA=\"\",oA=0,aA=tA.transparency.length;oA<aA;oA++)sA+=tA.transparency[oA]+\" \"+tA.transparency[oA]+\" \";nA.push({key:\"Mask\",value:\"[\"+sA+\"]\"})}void 0!==tA.sMask&&nA.push({key:\"SMask\",value:tA.objectId+1+\" 0 R\"});var lA=void 0!==tA.filter?[\"/\"+tA.filter]:void 0;if(AA({data:tA.data,additionalKeyValues:nA,alreadyAppliedFilters:lA,objectId:tA.objectId}),eA(\"endobj\"),\"sMask\"in tA&&void 0!==tA.sMask){var cA=\"/Predictor \"+tA.predictor+\" /Colors 1 /BitsPerComponent \"+tA.bitsPerComponent+\" /Columns \"+tA.width,uA={width:tA.width,height:tA.height,colorSpace:\"DeviceGray\",bitsPerComponent:tA.bitsPerComponent,decodeParameters:cA,data:tA.sMask};\"filter\"in tA&&(uA.filter=tA.filter),t.call(this,uA)}if(tA.colorSpace===iA.INDEXED){var hA=this.internal.newObject();AA({data:dA(new Uint8Array(tA.palette)),objectId:hA}),eA(\"endobj\")}},o=function(){var tA=this.internal.collections.addImage_images;for(var eA in tA)nA.call(this,tA[eA])},s=function(){var tA,eA=this.internal.collections.addImage_images,AA=this.internal.write;for(var rA in eA)AA(\"/I\"+(tA=eA[rA]).index,tA.objectId,\"0\",\"R\")},c=function(){this.internal.collections.addImage_images||(this.internal.collections.addImage_images={},this.internal.events.subscribe(\"putResources\",o),this.internal.events.subscribe(\"putXobjectDict\",s))},h=function(){var tA=this.internal.collections.addImage_images;return c.call(this),tA},l=function(){return Object.keys(this.internal.collections.addImage_images).length},f=function(eA){return\"function\"==typeof tA[\"process\"+eA.toUpperCase()]},d=function(tA){return\"object\"===_typeof$1(tA)&&1===tA.nodeType},p=function(eA,AA){if(\"IMG\"===eA.nodeName&&eA.hasAttribute(\"src\")){var rA=\"\"+eA.getAttribute(\"src\");if(0===rA.indexOf(\"data:image/\"))return Vn(unescape(rA).split(\"base64,\").pop());var nA=tA.loadFile(rA,!0);if(void 0!==nA)return nA}if(\"CANVAS\"===eA.nodeName){if(0===eA.width||0===eA.height)throw new Error(\"Given canvas must have data. Canvas width: \"+eA.width+\", height: \"+eA.height);var iA;switch(AA){case\"PNG\":iA=\"image/png\";break;case\"WEBP\":iA=\"image/webp\";break;default:iA=\"image/jpeg\"}return Vn(eA.toDataURL(iA,1).split(\"base64,\").pop())}},g=function(tA){var eA=this.internal.collections.addImage_images;if(eA)for(var AA in eA)if(tA===eA[AA].alias)return eA[AA]},m=function(tA,eA,AA){return tA||eA||(tA=-96,eA=-96),tA<0&&(tA=-1*AA.width*72/tA/this.internal.scaleFactor),eA<0&&(eA=-1*AA.height*72/eA/this.internal.scaleFactor),0===tA&&(tA=eA*AA.width/AA.height),0===eA&&(eA=tA*AA.height/AA.width),[tA,eA]},v=function(tA,eA,AA,rA,nA,iA){var sA=m.call(this,AA,rA,nA),oA=this.internal.getCoordinateString,aA=this.internal.getVerticalCoordinateString,lA=h.call(this);if(AA=sA[0],rA=sA[1],lA[nA.index]=nA,iA){iA*=Math.PI/180;var cA=Math.cos(iA),uA=Math.sin(iA),d=function(tA){return tA.toFixed(4)},hA=[d(cA),d(uA),d(-1*uA),d(cA),0,0,\"cm\"]}this.internal.write(\"q\"),iA?(this.internal.write([1,\"0\",\"0\",1,oA(tA),aA(eA+rA),\"cm\"].join(\" \")),this.internal.write(hA.join(\" \")),this.internal.write([oA(AA),\"0\",\"0\",oA(rA),\"0\",\"0\",\"cm\"].join(\" \"))):this.internal.write([oA(AA),\"0\",\"0\",oA(rA),oA(tA),aA(eA+rA),\"cm\"].join(\" \")),this.isAdvancedAPI()&&this.internal.write([1,0,0,-1,0,0,\"cm\"].join(\" \")),this.internal.write(\"/I\"+nA.index+\" Do\"),this.internal.write(\"Q\")},iA=tA.color_spaces={DEVICE_RGB:\"DeviceRGB\",DEVICE_GRAY:\"DeviceGray\",DEVICE_CMYK:\"DeviceCMYK\",CAL_GREY:\"CalGray\",CAL_RGB:\"CalRGB\",LAB:\"Lab\",ICC_BASED:\"ICCBased\",INDEXED:\"Indexed\",PATTERN:\"Pattern\",SEPARATION:\"Separation\",DEVICE_N:\"DeviceN\"};tA.decode={DCT_DECODE:\"DCTDecode\",FLATE_DECODE:\"FlateDecode\",LZW_DECODE:\"LZWDecode\",JPX_DECODE:\"JPXDecode\",JBIG2_DECODE:\"JBIG2Decode\",ASCII85_DECODE:\"ASCII85Decode\",ASCII_HEX_DECODE:\"ASCIIHexDecode\",RUN_LENGTH_DECODE:\"RunLengthDecode\",CCITT_FAX_DECODE:\"CCITTFaxDecode\"};var sA=tA.image_compression={NONE:\"NONE\",FAST:\"FAST\",MEDIUM:\"MEDIUM\",SLOW:\"SLOW\"},oA=tA.__addimage__.sHashCode=function(tA){var eA,AA,rA=0;if(\"string\"==typeof tA)for(AA=tA.length,eA=0;eA<AA;eA++)rA=(rA<<5)-rA+tA.charCodeAt(eA),rA|=0;else if(uA(tA))for(AA=tA.byteLength/2,eA=0;eA<AA;eA++)rA=(rA<<5)-rA+tA[eA],rA|=0;return rA},aA=tA.__addimage__.validateStringAsBase64=function(tA){(tA=tA||\"\").toString().trim();var eA=!0;return 0===tA.length&&(eA=!1),tA.length%4!=0&&(eA=!1),!1===/^[A-Za-z0-9+/]+$/.test(tA.substr(0,tA.length-2))&&(eA=!1),!1===/^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(tA.substr(-2))&&(eA=!1),eA},lA=tA.__addimage__.extractImageFromDataUrl=function(tA){var eA=(tA=tA||\"\").split(\"base64,\"),AA=null;if(2===eA.length){var rA=/^data:(\\w*\\/\\w*);*(charset=(?!charset=)[\\w=-]*)*;*$/.exec(eA[0]);Array.isArray(rA)&&(AA={mimeType:rA[1],charset:rA[2],data:eA[1]})}return AA},cA=tA.__addimage__.supportsArrayBuffer=function(){return\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array};tA.__addimage__.isArrayBuffer=function(tA){return cA()&&tA instanceof ArrayBuffer};var uA=tA.__addimage__.isArrayBufferView=function(tA){return cA()&&\"undefined\"!=typeof Uint32Array&&(tA instanceof Int8Array||tA instanceof Uint8Array||\"undefined\"!=typeof Uint8ClampedArray&&tA instanceof Uint8ClampedArray||tA instanceof Int16Array||tA instanceof Uint16Array||tA instanceof Int32Array||tA instanceof Uint32Array||tA instanceof Float32Array||tA instanceof Float64Array)},hA=tA.__addimage__.binaryStringToUint8Array=function(tA){for(var eA=tA.length,AA=new Uint8Array(eA),rA=0;rA<eA;rA++)AA[rA]=tA.charCodeAt(rA);return AA},dA=tA.__addimage__.arrayBufferToBinaryString=function(tA){for(var eA=\"\",AA=uA(tA)?tA:new Uint8Array(tA),rA=0;rA<AA.length;rA+=8192)eA+=String.fromCharCode.apply(null,AA.subarray(rA,rA+8192));return eA};tA.addImage=function(){var tA,AA,rA,nA,iA,sA,oA,aA,lA;if(\"number\"==typeof arguments[1]?(AA=eA,rA=arguments[1],nA=arguments[2],iA=arguments[3],sA=arguments[4],oA=arguments[5],aA=arguments[6],lA=arguments[7]):(AA=arguments[1],rA=arguments[2],nA=arguments[3],iA=arguments[4],sA=arguments[5],oA=arguments[6],aA=arguments[7],lA=arguments[8]),\"object\"===_typeof$1(tA=arguments[0])&&!d(tA)&&\"imageData\"in tA){var cA=tA;tA=cA.imageData,AA=cA.format||AA||eA,rA=cA.x||rA||0,nA=cA.y||nA||0,iA=cA.w||cA.width||iA,sA=cA.h||cA.height||sA,oA=cA.alias||oA,aA=cA.compression||aA,lA=cA.rotation||cA.angle||lA}var uA=this.internal.getFilters();if(void 0===aA&&-1!==uA.indexOf(\"FlateEncode\")&&(aA=\"SLOW\"),isNaN(rA)||isNaN(nA))throw new Error(\"Invalid coordinates passed to jsPDF.addImage\");c.call(this);var hA=P.call(this,tA,AA,oA,aA);return v.call(this,rA,nA,iA,sA,hA,lA),this};var P=function(AA,nA,iA,aA){var lA,dA,gA;if(\"string\"==typeof AA&&rA(AA)===eA){AA=unescape(AA);var pA=fA(AA,!1);(\"\"!==pA||void 0!==(pA=tA.loadFile(AA,!0)))&&(AA=pA)}if(d(AA)&&(AA=p(AA,nA)),nA=rA(AA,nA),!f(nA))throw new Error(\"addImage does not support files of type '\"+nA+\"', please ensure that a plugin for '\"+nA+\"' support is added.\");if((null==(gA=iA)||0===gA.length)&&(iA=function(tA){return\"string\"==typeof tA||uA(tA)?oA(tA):uA(tA.data)?oA(tA.data):null}(AA)),(lA=g.call(this,iA))||(cA()&&(AA instanceof Uint8Array||\"RGBA\"===nA||(dA=AA,AA=hA(AA))),lA=this[\"process\"+nA.toUpperCase()](AA,l.call(this),iA,function(eA){return eA&&\"string\"==typeof eA&&(eA=eA.toUpperCase()),eA in tA.image_compression?eA:sA.NONE}(aA),dA)),!lA)throw new Error(\"An unknown error occurred whilst processing the image.\");return lA},fA=tA.__addimage__.convertBase64ToBinaryString=function(tA,eA){var AA;eA=\"boolean\"!=typeof eA||eA;var rA,nA=\"\";if(\"string\"==typeof tA){rA=null!==(AA=lA(tA))?AA.data:tA;try{nA=Vn(rA)}catch(tA){if(eA)throw aA(rA)?new Error(\"atob-Error in jsPDF.convertBase64ToBinaryString \"+tA.message):new Error(\"Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString \")}}return nA};tA.getImageProperties=function(AA){var nA,iA,sA=\"\";if(d(AA)&&(AA=p(AA)),\"string\"==typeof AA&&rA(AA)===eA&&(\"\"===(sA=fA(AA,!1))&&(sA=tA.loadFile(AA)||\"\"),AA=sA),iA=rA(AA),!f(iA))throw new Error(\"addImage does not support files of type '\"+iA+\"', please ensure that a plugin for '\"+iA+\"' support is added.\");if(!cA()||AA instanceof Uint8Array||(AA=hA(AA)),!(nA=this[\"process\"+iA.toUpperCase()](AA)))throw new Error(\"An unknown error occurred whilst processing the image\");return nA.fileType=iA,nA}}(E.API),\n/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){var e=function(tA){if(void 0!==tA&&\"\"!=tA)return!0};E.API.events.push([\"addPage\",function(tA){this.internal.getPageInfo(tA.pageNumber).pageContext.annotations=[]}]),tA.events.push([\"putPage\",function(tA){for(var eA,AA,rA,nA=this.internal.getCoordinateString,iA=this.internal.getVerticalCoordinateString,sA=this.internal.getPageInfoByObjId(tA.objId),oA=tA.pageContext.annotations,aA=!1,lA=0;lA<oA.length&&!aA;lA++)switch((eA=oA[lA]).type){case\"link\":(e(eA.options.url)||e(eA.options.pageNumber))&&(aA=!0);break;case\"reference\":case\"text\":case\"freetext\":aA=!0}if(0!=aA){this.internal.write(\"/Annots [\");for(var cA=0;cA<oA.length;cA++){eA=oA[cA];var uA=this.internal.pdfEscape,hA=this.internal.getEncryptor(tA.objId);switch(eA.type){case\"reference\":this.internal.write(\" \"+eA.object.objId+\" 0 R \");break;case\"text\":var dA=this.internal.newAdditionalObject(),fA=this.internal.newAdditionalObject(),gA=this.internal.getEncryptor(dA.objId),pA=eA.title||\"Note\";rA=\"<</Type /Annot /Subtype /Text \"+(AA=\"/Rect [\"+nA(eA.bounds.x)+\" \"+iA(eA.bounds.y+eA.bounds.h)+\" \"+nA(eA.bounds.x+eA.bounds.w)+\" \"+iA(eA.bounds.y)+\"] \")+\"/Contents (\"+uA(gA(eA.contents))+\")\",rA+=\" /Popup \"+fA.objId+\" 0 R\",rA+=\" /P \"+sA.objId+\" 0 R\",rA+=\" /T (\"+uA(gA(pA))+\") >>\",dA.content=rA;var mA=dA.objId+\" 0 R\";rA=\"<</Type /Annot /Subtype /Popup \"+(AA=\"/Rect [\"+nA(eA.bounds.x+30)+\" \"+iA(eA.bounds.y+eA.bounds.h)+\" \"+nA(eA.bounds.x+eA.bounds.w+30)+\" \"+iA(eA.bounds.y)+\"] \")+\" /Parent \"+mA,eA.open&&(rA+=\" /Open true\"),rA+=\" >>\",fA.content=rA,this.internal.write(dA.objId,\"0 R\",fA.objId,\"0 R\");break;case\"freetext\":AA=\"/Rect [\"+nA(eA.bounds.x)+\" \"+iA(eA.bounds.y)+\" \"+nA(eA.bounds.x+eA.bounds.w)+\" \"+iA(eA.bounds.y+eA.bounds.h)+\"] \";var wA=eA.color||\"#000000\";rA=\"<</Type /Annot /Subtype /FreeText \"+AA+\"/Contents (\"+uA(hA(eA.contents))+\")\",rA+=\" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#\"+wA+\")\",rA+=\" /Border [0 0 0]\",rA+=\" >>\",this.internal.write(rA);break;case\"link\":if(eA.options.name){var yA=this.annotations._nameMap[eA.options.name];eA.options.pageNumber=yA.page,eA.options.top=yA.y}else eA.options.top||(eA.options.top=0);if(AA=\"/Rect [\"+eA.finalBounds.x+\" \"+eA.finalBounds.y+\" \"+eA.finalBounds.w+\" \"+eA.finalBounds.h+\"] \",rA=\"\",eA.options.url)rA=\"<</Type /Annot /Subtype /Link \"+AA+\"/Border [0 0 0] /A <</S /URI /URI (\"+uA(hA(eA.options.url))+\") >>\";else if(eA.options.pageNumber)switch(rA=\"<</Type /Annot /Subtype /Link \"+AA+\"/Border [0 0 0] /Dest [\"+this.internal.getPageInfo(eA.options.pageNumber).objId+\" 0 R\",eA.options.magFactor=eA.options.magFactor||\"XYZ\",eA.options.magFactor){case\"Fit\":rA+=\" /Fit]\";break;case\"FitH\":rA+=\" /FitH \"+eA.options.top+\"]\";break;case\"FitV\":eA.options.left=eA.options.left||0,rA+=\" /FitV \"+eA.options.left+\"]\";break;default:var BA=iA(eA.options.top);eA.options.left=eA.options.left||0,void 0===eA.options.zoom&&(eA.options.zoom=0),rA+=\" /XYZ \"+eA.options.left+\" \"+BA+\" \"+eA.options.zoom+\"]\"}\"\"!=rA&&(rA+=\" >>\",this.internal.write(rA))}}this.internal.write(\"]\")}}]),tA.createAnnotation=function(tA){var eA=this.internal.getCurrentPageInfo();switch(tA.type){case\"link\":this.link(tA.bounds.x,tA.bounds.y,tA.bounds.w,tA.bounds.h,tA);break;case\"text\":case\"freetext\":eA.pageContext.annotations.push(tA)}},tA.link=function(tA,eA,AA,rA,nA){var iA=this.internal.getCurrentPageInfo(),sA=this.internal.getCoordinateString,oA=this.internal.getVerticalCoordinateString;iA.pageContext.annotations.push({finalBounds:{x:sA(tA),y:oA(eA),w:sA(tA+AA),h:oA(eA+rA)},options:nA,type:\"link\"})},tA.textWithLink=function(tA,eA,AA,rA){var nA,iA,sA=this.getTextWidth(tA),oA=this.internal.getLineHeight()/this.internal.scaleFactor;if(void 0!==rA.maxWidth){iA=rA.maxWidth;var aA=this.splitTextToSize(tA,iA).length;nA=Math.ceil(oA*aA)}else iA=sA,nA=oA;return this.text(tA,eA,AA,rA),AA+=.2*oA,\"center\"===rA.align&&(eA-=sA/2),\"right\"===rA.align&&(eA-=sA),this.link(eA,AA-oA,iA,nA,rA),sA},tA.getTextWidth=function(tA){var eA=this.internal.getFontSize();return this.getStringUnitWidth(tA)*eA/this.internal.scaleFactor}}(E.API),\n/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){var eA={1569:[65152],1570:[65153,65154],1571:[65155,65156],1572:[65157,65158],1573:[65159,65160],1574:[65161,65162,65163,65164],1575:[65165,65166],1576:[65167,65168,65169,65170],1577:[65171,65172],1578:[65173,65174,65175,65176],1579:[65177,65178,65179,65180],1580:[65181,65182,65183,65184],1581:[65185,65186,65187,65188],1582:[65189,65190,65191,65192],1583:[65193,65194],1584:[65195,65196],1585:[65197,65198],1586:[65199,65200],1587:[65201,65202,65203,65204],1588:[65205,65206,65207,65208],1589:[65209,65210,65211,65212],1590:[65213,65214,65215,65216],1591:[65217,65218,65219,65220],1592:[65221,65222,65223,65224],1593:[65225,65226,65227,65228],1594:[65229,65230,65231,65232],1601:[65233,65234,65235,65236],1602:[65237,65238,65239,65240],1603:[65241,65242,65243,65244],1604:[65245,65246,65247,65248],1605:[65249,65250,65251,65252],1606:[65253,65254,65255,65256],1607:[65257,65258,65259,65260],1608:[65261,65262],1609:[65263,65264,64488,64489],1610:[65265,65266,65267,65268],1649:[64336,64337],1655:[64477],1657:[64358,64359,64360,64361],1658:[64350,64351,64352,64353],1659:[64338,64339,64340,64341],1662:[64342,64343,64344,64345],1663:[64354,64355,64356,64357],1664:[64346,64347,64348,64349],1667:[64374,64375,64376,64377],1668:[64370,64371,64372,64373],1670:[64378,64379,64380,64381],1671:[64382,64383,64384,64385],1672:[64392,64393],1676:[64388,64389],1677:[64386,64387],1678:[64390,64391],1681:[64396,64397],1688:[64394,64395],1700:[64362,64363,64364,64365],1702:[64366,64367,64368,64369],1705:[64398,64399,64400,64401],1709:[64467,64468,64469,64470],1711:[64402,64403,64404,64405],1713:[64410,64411,64412,64413],1715:[64406,64407,64408,64409],1722:[64414,64415],1723:[64416,64417,64418,64419],1726:[64426,64427,64428,64429],1728:[64420,64421],1729:[64422,64423,64424,64425],1733:[64480,64481],1734:[64473,64474],1735:[64471,64472],1736:[64475,64476],1737:[64482,64483],1739:[64478,64479],1740:[64508,64509,64510,64511],1744:[64484,64485,64486,64487],1746:[64430,64431],1747:[64432,64433]},AA={65247:{65154:65269,65156:65271,65160:65273,65166:65275},65248:{65154:65270,65156:65272,65160:65274,65166:65276},65165:{65247:{65248:{65258:65010}}},1617:{1612:64606,1613:64607,1614:64608,1615:64609,1616:64610}},rA={1612:64606,1613:64607,1614:64608,1615:64609,1616:64610},nA=[1570,1571,1573,1575];tA.__arabicParser__={};var iA=tA.__arabicParser__.isInArabicSubstitutionA=function(tA){return void 0!==eA[tA.charCodeAt(0)]},sA=tA.__arabicParser__.isArabicLetter=function(tA){return\"string\"==typeof tA&&/^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(tA)},oA=tA.__arabicParser__.isArabicEndLetter=function(tA){return sA(tA)&&iA(tA)&&eA[tA.charCodeAt(0)].length<=2},aA=tA.__arabicParser__.isArabicAlfLetter=function(tA){return sA(tA)&&nA.indexOf(tA.charCodeAt(0))>=0};tA.__arabicParser__.arabicLetterHasIsolatedForm=function(tA){return sA(tA)&&iA(tA)&&eA[tA.charCodeAt(0)].length>=1};var lA=tA.__arabicParser__.arabicLetterHasFinalForm=function(tA){return sA(tA)&&iA(tA)&&eA[tA.charCodeAt(0)].length>=2};tA.__arabicParser__.arabicLetterHasInitialForm=function(tA){return sA(tA)&&iA(tA)&&eA[tA.charCodeAt(0)].length>=3};var cA=tA.__arabicParser__.arabicLetterHasMedialForm=function(tA){return sA(tA)&&iA(tA)&&4==eA[tA.charCodeAt(0)].length},uA=tA.__arabicParser__.resolveLigatures=function(tA){var eA=0,rA=AA,nA=\"\",iA=0;for(eA=0;eA<tA.length;eA+=1)void 0!==rA[tA.charCodeAt(eA)]?(iA++,\"number\"==typeof(rA=rA[tA.charCodeAt(eA)])&&(nA+=String.fromCharCode(rA),rA=AA,iA=0),eA===tA.length-1&&(rA=AA,nA+=tA.charAt(eA-(iA-1)),eA-=iA-1,iA=0)):(rA=AA,nA+=tA.charAt(eA-iA),eA-=iA,iA=0);return nA};tA.__arabicParser__.isArabicDiacritic=function(tA){return void 0!==tA&&void 0!==rA[tA.charCodeAt(0)]};var hA=tA.__arabicParser__.getCorrectForm=function(tA,eA,AA){return sA(tA)?!1===iA(tA)?-1:!lA(tA)||!sA(eA)&&!sA(AA)||!sA(AA)&&oA(eA)||oA(tA)&&!sA(eA)||oA(tA)&&aA(eA)||oA(tA)&&oA(eA)?0:cA(tA)&&sA(eA)&&!oA(eA)&&sA(AA)&&lA(AA)?3:oA(tA)||!sA(AA)?1:2:-1},d=function(tA){var AA=0,rA=0,nA=0,iA=\"\",oA=\"\",aA=\"\",lA=(tA=tA||\"\").split(\"\\\\s+\"),cA=[];for(AA=0;AA<lA.length;AA+=1){for(cA.push(\"\"),rA=0;rA<lA[AA].length;rA+=1)iA=lA[AA][rA],oA=lA[AA][rA-1],aA=lA[AA][rA+1],sA(iA)?(nA=hA(iA,oA,aA),cA[AA]+=-1!==nA?String.fromCharCode(eA[iA.charCodeAt(0)][nA]):iA):cA[AA]+=iA;cA[AA]=uA(cA[AA])}return cA.join(\" \")},dA=tA.__arabicParser__.processArabic=tA.processArabic=function(){var tA,eA=\"string\"==typeof arguments[0]?arguments[0]:arguments[0].text,AA=[];if(Array.isArray(eA)){var rA=0;for(AA=[],rA=0;rA<eA.length;rA+=1)Array.isArray(eA[rA])?AA.push([d(eA[rA][0]),eA[rA][1],eA[rA][2]]):AA.push([d(eA[rA])]);tA=AA}else tA=d(eA);return\"string\"==typeof arguments[0]?tA:(arguments[0].text=tA,arguments[0])};tA.events.push([\"preProcessText\",dA])}(E.API),E.API.autoPrint=function(tA){var eA;if(\"javascript\"===((tA=tA||{}).variant=tA.variant||\"non-conform\",tA.variant))this.addJS(\"print({});\");else this.internal.events.subscribe(\"postPutResources\",(function(){eA=this.internal.newObject(),this.internal.out(\"<<\"),this.internal.out(\"/S /Named\"),this.internal.out(\"/Type /Action\"),this.internal.out(\"/N /Print\"),this.internal.out(\">>\"),this.internal.out(\"endobj\")})),this.internal.events.subscribe(\"putCatalog\",(function(){this.internal.out(\"/OpenAction \"+eA+\" 0 R\")}));return this},\n/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){var e=function(){var tA=void 0;Object.defineProperty(this,\"pdf\",{get:function(){return tA},set:function(eA){tA=eA}});var eA=150;Object.defineProperty(this,\"width\",{get:function(){return eA},set:function(tA){eA=isNaN(tA)||!1===Number.isInteger(tA)||tA<0?150:tA,this.getContext(\"2d\").pageWrapXEnabled&&(this.getContext(\"2d\").pageWrapX=eA+1)}});var AA=300;Object.defineProperty(this,\"height\",{get:function(){return AA},set:function(tA){AA=isNaN(tA)||!1===Number.isInteger(tA)||tA<0?300:tA,this.getContext(\"2d\").pageWrapYEnabled&&(this.getContext(\"2d\").pageWrapY=AA+1)}});var rA=[];Object.defineProperty(this,\"childNodes\",{get:function(){return rA},set:function(tA){rA=tA}});var nA={};Object.defineProperty(this,\"style\",{get:function(){return nA},set:function(tA){nA=tA}}),Object.defineProperty(this,\"parentNode\",{})};e.prototype.getContext=function(tA,eA){var AA;if(\"2d\"!==(tA=tA||\"2d\"))return null;for(AA in eA)this.pdf.context2d.hasOwnProperty(AA)&&(this.pdf.context2d[AA]=eA[AA]);return this.pdf.context2d._canvas=this,this.pdf.context2d},e.prototype.toDataURL=function(){throw new Error(\"toDataURL is not implemented.\")},tA.events.push([\"initialized\",function(){this.canvas=new e,this.canvas.pdf=this}])}(E.API),function(tA){var eA={left:0,top:0,bottom:0,right:0},AA=!1,i=function(){void 0===this.internal.__cell__&&(this.internal.__cell__={},this.internal.__cell__.padding=3,this.internal.__cell__.headerFunction=void 0,this.internal.__cell__.margins=Object.assign({},eA),this.internal.__cell__.margins.width=this.getPageWidth(),a.call(this))},a=function(){this.internal.__cell__.lastCell=new o,this.internal.__cell__.pages=1},o=function(){var tA=arguments[0];Object.defineProperty(this,\"x\",{enumerable:!0,get:function(){return tA},set:function(eA){tA=eA}});var eA=arguments[1];Object.defineProperty(this,\"y\",{enumerable:!0,get:function(){return eA},set:function(tA){eA=tA}});var AA=arguments[2];Object.defineProperty(this,\"width\",{enumerable:!0,get:function(){return AA},set:function(tA){AA=tA}});var rA=arguments[3];Object.defineProperty(this,\"height\",{enumerable:!0,get:function(){return rA},set:function(tA){rA=tA}});var nA=arguments[4];Object.defineProperty(this,\"text\",{enumerable:!0,get:function(){return nA},set:function(tA){nA=tA}});var iA=arguments[5];Object.defineProperty(this,\"lineNumber\",{enumerable:!0,get:function(){return iA},set:function(tA){iA=tA}});var sA=arguments[6];return Object.defineProperty(this,\"align\",{enumerable:!0,get:function(){return sA},set:function(tA){sA=tA}}),this};o.prototype.clone=function(){return new o(this.x,this.y,this.width,this.height,this.text,this.lineNumber,this.align)},o.prototype.toArray=function(){return[this.x,this.y,this.width,this.height,this.text,this.lineNumber,this.align]},tA.setHeaderFunction=function(tA){return i.call(this),this.internal.__cell__.headerFunction=\"function\"==typeof tA?tA:void 0,this},tA.getTextDimensions=function(tA,eA){i.call(this);var AA=(eA=eA||{}).fontSize||this.getFontSize(),rA=eA.font||this.getFont(),nA=eA.scaleFactor||this.internal.scaleFactor,iA=0,sA=0,oA=0,aA=this;if(!Array.isArray(tA)&&\"string\"!=typeof tA){if(\"number\"!=typeof tA)throw new Error(\"getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.\");tA=String(tA)}var lA=eA.maxWidth;lA>0?\"string\"==typeof tA?tA=this.splitTextToSize(tA,lA):\"[object Array]\"===Object.prototype.toString.call(tA)&&(tA=tA.reduce((function(tA,eA){return tA.concat(aA.splitTextToSize(eA,lA))}),[])):tA=Array.isArray(tA)?tA:[tA];for(var cA=0;cA<tA.length;cA++)iA<(oA=this.getStringUnitWidth(tA[cA],{font:rA})*AA)&&(iA=oA);return 0!==iA&&(sA=tA.length),{w:iA/=nA,h:Math.max((sA*AA*this.getLineHeightFactor()-AA*(this.getLineHeightFactor()-1))/nA,0)}},tA.cellAddPage=function(){i.call(this),this.addPage();var tA=this.internal.__cell__.margins||eA;return this.internal.__cell__.lastCell=new o(tA.left,tA.top,void 0,void 0),this.internal.__cell__.pages+=1,this};var rA=tA.cell=function(){var tA;tA=arguments[0]instanceof o?arguments[0]:new o(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]),i.call(this);var rA=this.internal.__cell__.lastCell,nA=this.internal.__cell__.padding,iA=this.internal.__cell__.margins||eA,sA=this.internal.__cell__.tableHeaderRow,oA=this.internal.__cell__.printHeaders;return void 0!==rA.lineNumber&&(rA.lineNumber===tA.lineNumber?(tA.x=(rA.x||0)+(rA.width||0),tA.y=rA.y||0):rA.y+rA.height+tA.height+iA.bottom>this.getPageHeight()?(this.cellAddPage(),tA.y=iA.top,oA&&sA&&(this.printHeaderRow(tA.lineNumber,!0),tA.y+=sA[0].height)):tA.y=rA.y+rA.height||tA.y),void 0!==tA.text[0]&&(this.rect(tA.x,tA.y,tA.width,tA.height,!0===AA?\"FD\":void 0),\"right\"===tA.align?this.text(tA.text,tA.x+tA.width-nA,tA.y+nA,{align:\"right\",baseline:\"top\"}):\"center\"===tA.align?this.text(tA.text,tA.x+tA.width/2,tA.y+nA,{align:\"center\",baseline:\"top\",maxWidth:tA.width-nA-nA}):this.text(tA.text,tA.x+nA,tA.y+nA,{align:\"left\",baseline:\"top\",maxWidth:tA.width-nA-nA})),this.internal.__cell__.lastCell=tA,this};tA.table=function(tA,AA,nA,iA,sA){if(i.call(this),!nA)throw new Error(\"No data for PDF table.\");var oA,aA,lA,cA,uA=[],hA=[],dA=[],fA={},gA={},pA=[],mA=[],wA=(sA=sA||{}).autoSize||!1,yA=!1!==sA.printHeaders,BA=sA.css&&void 0!==sA.css[\"font-size\"]?16*sA.css[\"font-size\"]:sA.fontSize||12,bA=sA.margins||Object.assign({width:this.getPageWidth()},eA),vA=\"number\"==typeof sA.padding?sA.padding:3,CA=sA.headerBackgroundColor||\"#c8c8c8\",SA=sA.headerTextColor||\"#000\";if(a.call(this),this.internal.__cell__.printHeaders=yA,this.internal.__cell__.margins=bA,this.internal.__cell__.table_font_size=BA,this.internal.__cell__.padding=vA,this.internal.__cell__.headerBackgroundColor=CA,this.internal.__cell__.headerTextColor=SA,this.setFontSize(BA),null==iA)hA=uA=Object.keys(nA[0]),dA=uA.map((function(){return\"left\"}));else if(Array.isArray(iA)&&\"object\"===_typeof$1(iA[0]))for(uA=iA.map((function(tA){return tA.name})),hA=iA.map((function(tA){return tA.prompt||tA.name||\"\"})),dA=iA.map((function(tA){return tA.align||\"left\"})),oA=0;oA<iA.length;oA+=1)gA[iA[oA].name]=iA[oA].width*(19.049976/25.4);else Array.isArray(iA)&&\"string\"==typeof iA[0]&&(hA=uA=iA,dA=uA.map((function(){return\"left\"})));if(wA||Array.isArray(iA)&&\"string\"==typeof iA[0])for(oA=0;oA<uA.length;oA+=1){for(fA[cA=uA[oA]]=nA.map((function(tA){return tA[cA]})),this.setFont(void 0,\"bold\"),pA.push(this.getTextDimensions(hA[oA],{fontSize:this.internal.__cell__.table_font_size,scaleFactor:this.internal.scaleFactor}).w),aA=fA[cA],this.setFont(void 0,\"normal\"),lA=0;lA<aA.length;lA+=1)pA.push(this.getTextDimensions(aA[lA],{fontSize:this.internal.__cell__.table_font_size,scaleFactor:this.internal.scaleFactor}).w);gA[cA]=Math.max.apply(null,pA)+vA+vA,pA=[]}if(yA){var xA={};for(oA=0;oA<uA.length;oA+=1)xA[uA[oA]]={},xA[uA[oA]].text=hA[oA],xA[uA[oA]].align=dA[oA];var FA=c.call(this,xA,gA);mA=uA.map((function(eA){return new o(tA,AA,gA[eA],FA,xA[eA].text,void 0,xA[eA].align)})),this.setTableHeaderRow(mA),this.printHeaderRow(1,!1)}var EA=iA.reduce((function(tA,eA){return tA[eA.name]=eA.align,tA}),{});for(oA=0;oA<nA.length;oA+=1){\"rowStart\"in sA&&sA.rowStart instanceof Function&&sA.rowStart({row:oA,data:nA[oA]},this);var QA=c.call(this,nA[oA],gA);for(lA=0;lA<uA.length;lA+=1){var UA=nA[oA][uA[lA]];\"cellStart\"in sA&&sA.cellStart instanceof Function&&sA.cellStart({row:oA,col:lA,data:UA},this),rA.call(this,new o(tA,AA,gA[uA[lA]],QA,UA,oA+2,EA[uA[lA]]))}}return this.internal.__cell__.table_x=tA,this.internal.__cell__.table_y=AA,this};var c=function(tA,eA){var AA=this.internal.__cell__.padding,rA=this.internal.__cell__.table_font_size,nA=this.internal.scaleFactor;return Object.keys(tA).map((function(rA){var nA=tA[rA];return this.splitTextToSize(nA.hasOwnProperty(\"text\")?nA.text:nA,eA[rA]-AA-AA)}),this).map((function(tA){return this.getLineHeightFactor()*tA.length*rA/nA+AA+AA}),this).reduce((function(tA,eA){return Math.max(tA,eA)}),0)};tA.setTableHeaderRow=function(tA){i.call(this),this.internal.__cell__.tableHeaderRow=tA},tA.printHeaderRow=function(tA,eA){if(i.call(this),!this.internal.__cell__.tableHeaderRow)throw new Error(\"Property tableHeaderRow does not exist.\");var nA;if(AA=!0,\"function\"==typeof this.internal.__cell__.headerFunction){var iA=this.internal.__cell__.headerFunction(this,this.internal.__cell__.pages);this.internal.__cell__.lastCell=new o(iA[0],iA[1],iA[2],iA[3],void 0,-1)}this.setFont(void 0,\"bold\");for(var sA=[],oA=0;oA<this.internal.__cell__.tableHeaderRow.length;oA+=1){nA=this.internal.__cell__.tableHeaderRow[oA].clone(),eA&&(nA.y=this.internal.__cell__.margins.top||0,sA.push(nA)),nA.lineNumber=tA;var aA=this.getTextColor();this.setTextColor(this.internal.__cell__.headerTextColor),this.setFillColor(this.internal.__cell__.headerBackgroundColor),rA.call(this,nA),this.setTextColor(aA)}sA.length>0&&this.setTableHeaderRow(sA),this.setFont(void 0,\"normal\"),AA=!1}}(E.API);var ai={italic:[\"italic\",\"oblique\",\"normal\"],oblique:[\"oblique\",\"italic\",\"normal\"],normal:[\"normal\",\"oblique\",\"italic\"]},li=[\"ultra-condensed\",\"extra-condensed\",\"condensed\",\"semi-condensed\",\"normal\",\"semi-expanded\",\"expanded\",\"extra-expanded\",\"ultra-expanded\"],ci=_t(li),ui=[100,200,300,400,500,600,700,800,900],hi=_t(ui);function jt(tA){var eA=tA.family.replace(/\"|'/g,\"\").toLowerCase(),AA=function(tA){return ai[tA=tA||\"normal\"]?tA:\"normal\"}(tA.style),rA=function(tA){return tA?\"number\"==typeof tA?tA>=100&&tA<=900&&tA%100==0?tA:400:/^\\d00$/.test(tA)?parseInt(tA):\"bold\"===tA?700:400:400}(tA.weight),nA=function(tA){return\"number\"==typeof ci[tA=tA||\"normal\"]?tA:\"normal\"}(tA.stretch);return{family:eA,style:AA,weight:rA,stretch:nA,src:tA.src||[],ref:tA.ref||{name:eA,style:[nA,AA,rA].join(\" \")}}}function Ot(tA,eA,AA,rA){var nA;for(nA=AA;nA>=0&&nA<eA.length;nA+=rA)if(tA[eA[nA]])return tA[eA[nA]];for(nA=AA;nA>=0&&nA<eA.length;nA-=rA)if(tA[eA[nA]])return tA[eA[nA]]}var di={\"sans-serif\":\"helvetica\",fixed:\"courier\",monospace:\"courier\",terminal:\"courier\",cursive:\"times\",fantasy:\"times\",serif:\"times\"},fi={caption:\"times\",icon:\"times\",menu:\"times\",\"message-box\":\"times\",\"small-caption\":\"times\",\"status-bar\":\"times\"};function Et(tA){return[tA.stretch,tA.style,tA.weight,tA.family].join(\" \")}function Dt(tA){return tA.trimLeft()}function Rt(tA,eA){for(var AA=0;AA<tA.length;){if(tA.charAt(AA)===eA)return[tA.substring(0,AA),tA.substring(AA+1)];AA+=1}return null}function Tt(tA){var eA=tA.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);return null===eA?null:[eA[0],tA.substring(eA[0].length)]}var gi,pi,mi,wi=[\"times\"];!function(tA){var eA,AA,rA,nA,iA,sA,oA,aA,lA,d=function(tA){return tA=tA||{},this.isStrokeTransparent=tA.isStrokeTransparent||!1,this.strokeOpacity=tA.strokeOpacity||1,this.strokeStyle=tA.strokeStyle||\"#000000\",this.fillStyle=tA.fillStyle||\"#000000\",this.isFillTransparent=tA.isFillTransparent||!1,this.fillOpacity=tA.fillOpacity||1,this.font=tA.font||\"10px sans-serif\",this.textBaseline=tA.textBaseline||\"alphabetic\",this.textAlign=tA.textAlign||\"left\",this.lineWidth=tA.lineWidth||1,this.lineJoin=tA.lineJoin||\"miter\",this.lineCap=tA.lineCap||\"butt\",this.path=tA.path||[],this.transform=void 0!==tA.transform?tA.transform.clone():new aA,this.globalCompositeOperation=tA.globalCompositeOperation||\"normal\",this.globalAlpha=tA.globalAlpha||1,this.clip_path=tA.clip_path||[],this.currentPoint=tA.currentPoint||new sA,this.miterLimit=tA.miterLimit||10,this.lastPoint=tA.lastPoint||new sA,this.lineDashOffset=tA.lineDashOffset||0,this.lineDash=tA.lineDash||[],this.margin=tA.margin||[0,0,0,0],this.prevPageLastElemOffset=tA.prevPageLastElemOffset||0,this.ignoreClearRect=\"boolean\"!=typeof tA.ignoreClearRect||tA.ignoreClearRect,this};tA.events.push([\"initialized\",function(){this.context2d=new p(this),eA=this.internal.f2,AA=this.internal.getCoordinateString,rA=this.internal.getVerticalCoordinateString,nA=this.internal.getHorizontalCoordinate,iA=this.internal.getVerticalCoordinate,sA=this.internal.Point,oA=this.internal.Rectangle,aA=this.internal.Matrix,lA=new d}]);var p=function(tA){Object.defineProperty(this,\"canvas\",{get:function(){return{parentNode:!1,style:!1}}});var eA=tA;Object.defineProperty(this,\"pdf\",{get:function(){return eA}});var AA=!1;Object.defineProperty(this,\"pageWrapXEnabled\",{get:function(){return AA},set:function(tA){AA=Boolean(tA)}});var rA=!1;Object.defineProperty(this,\"pageWrapYEnabled\",{get:function(){return rA},set:function(tA){rA=Boolean(tA)}});var nA=0;Object.defineProperty(this,\"posX\",{get:function(){return nA},set:function(tA){isNaN(tA)||(nA=tA)}});var iA=0;Object.defineProperty(this,\"posY\",{get:function(){return iA},set:function(tA){isNaN(tA)||(iA=tA)}}),Object.defineProperty(this,\"margin\",{get:function(){return lA.margin},set:function(tA){var eA;\"number\"==typeof tA?eA=[tA,tA,tA,tA]:((eA=new Array(4))[0]=tA[0],eA[1]=tA.length>=2?tA[1]:eA[0],eA[2]=tA.length>=3?tA[2]:eA[0],eA[3]=tA.length>=4?tA[3]:eA[1]),lA.margin=eA}});var sA=!1;Object.defineProperty(this,\"autoPaging\",{get:function(){return sA},set:function(tA){sA=tA}});var oA=0;Object.defineProperty(this,\"lastBreak\",{get:function(){return oA},set:function(tA){oA=tA}});var aA=[];Object.defineProperty(this,\"pageBreaks\",{get:function(){return aA},set:function(tA){aA=tA}}),Object.defineProperty(this,\"ctx\",{get:function(){return lA},set:function(tA){tA instanceof d&&(lA=tA)}}),Object.defineProperty(this,\"path\",{get:function(){return lA.path},set:function(tA){lA.path=tA}});var cA=[];Object.defineProperty(this,\"ctxStack\",{get:function(){return cA},set:function(tA){cA=tA}}),Object.defineProperty(this,\"fillStyle\",{get:function(){return this.ctx.fillStyle},set:function(tA){var eA;eA=g(tA),this.ctx.fillStyle=eA.style,this.ctx.isFillTransparent=0===eA.a,this.ctx.fillOpacity=eA.a,this.pdf.setFillColor(eA.r,eA.g,eA.b,{a:eA.a}),this.pdf.setTextColor(eA.r,eA.g,eA.b,{a:eA.a})}}),Object.defineProperty(this,\"strokeStyle\",{get:function(){return this.ctx.strokeStyle},set:function(tA){var eA=g(tA);this.ctx.strokeStyle=eA.style,this.ctx.isStrokeTransparent=0===eA.a,this.ctx.strokeOpacity=eA.a,0===eA.a?this.pdf.setDrawColor(255,255,255):(eA.a,this.pdf.setDrawColor(eA.r,eA.g,eA.b))}}),Object.defineProperty(this,\"lineCap\",{get:function(){return this.ctx.lineCap},set:function(tA){-1!==[\"butt\",\"round\",\"square\"].indexOf(tA)&&(this.ctx.lineCap=tA,this.pdf.setLineCap(tA))}}),Object.defineProperty(this,\"lineWidth\",{get:function(){return this.ctx.lineWidth},set:function(tA){isNaN(tA)||(this.ctx.lineWidth=tA,this.pdf.setLineWidth(tA))}}),Object.defineProperty(this,\"lineJoin\",{get:function(){return this.ctx.lineJoin},set:function(tA){-1!==[\"bevel\",\"round\",\"miter\"].indexOf(tA)&&(this.ctx.lineJoin=tA,this.pdf.setLineJoin(tA))}}),Object.defineProperty(this,\"miterLimit\",{get:function(){return this.ctx.miterLimit},set:function(tA){isNaN(tA)||(this.ctx.miterLimit=tA,this.pdf.setMiterLimit(tA))}}),Object.defineProperty(this,\"textBaseline\",{get:function(){return this.ctx.textBaseline},set:function(tA){this.ctx.textBaseline=tA}}),Object.defineProperty(this,\"textAlign\",{get:function(){return this.ctx.textAlign},set:function(tA){-1!==[\"right\",\"end\",\"center\",\"left\",\"start\"].indexOf(tA)&&(this.ctx.textAlign=tA)}});var uA=null;function f(tA,eA){if(null===uA){var AA=function(tA){var eA=[];return Object.keys(tA).forEach((function(AA){tA[AA].forEach((function(tA){var rA=null;switch(tA){case\"bold\":rA={family:AA,weight:\"bold\"};break;case\"italic\":rA={family:AA,style:\"italic\"};break;case\"bolditalic\":rA={family:AA,weight:\"bold\",style:\"italic\"};break;case\"\":case\"normal\":rA={family:AA}}null!==rA&&(rA.ref={name:AA,style:tA},eA.push(rA))}))})),eA}(tA.getFontList());uA=function(tA){for(var eA={},AA=0;AA<tA.length;++AA){var rA=jt(tA[AA]),nA=rA.family,iA=rA.stretch,sA=rA.style,oA=rA.weight;eA[nA]=eA[nA]||{},eA[nA][iA]=eA[nA][iA]||{},eA[nA][iA][sA]=eA[nA][iA][sA]||{},eA[nA][iA][sA][oA]=rA}return eA}(AA.concat(eA))}return uA}var hA=null;Object.defineProperty(this,\"fontFaces\",{get:function(){return hA},set:function(tA){uA=null,hA=tA}}),Object.defineProperty(this,\"font\",{get:function(){return this.ctx.font},set:function(tA){var eA;if(this.ctx.font=tA,null!==(eA=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-_,\\\"\\'\\sa-z]+?)\\s*$/i.exec(tA))){var AA=eA[1],rA=(eA[2],eA[3]),nA=eA[4],iA=(eA[5],eA[6]),sA=/^([.\\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i.exec(nA)[2];nA=\"px\"===sA?Math.floor(parseFloat(nA)*this.pdf.internal.scaleFactor):\"em\"===sA?Math.floor(parseFloat(nA)*this.pdf.getFontSize()):Math.floor(parseFloat(nA)*this.pdf.internal.scaleFactor),this.pdf.setFontSize(nA);var oA=function(tA){var eA,AA,rA=[],nA=tA.trim();if(\"\"===nA)return wi;if(nA in fi)return[fi[nA]];for(;\"\"!==nA;){switch(AA=null,eA=(nA=Dt(nA)).charAt(0)){case'\"':case\"'\":AA=Rt(nA.substring(1),eA);break;default:AA=Tt(nA)}if(null===AA)return wi;if(rA.push(AA[0]),\"\"!==(nA=Dt(AA[1]))&&\",\"!==nA.charAt(0))return wi;nA=nA.replace(/^,/,\"\")}return rA}(iA);if(this.fontFaces){var aA=function qt(tA,eA,AA){for(var rA=(AA=AA||{}).defaultFontFamily||\"times\",nA=Object.assign({},di,AA.genericFontFamilies||{}),iA=null,sA=null,oA=0;oA<eA.length;++oA)if(nA[(iA=jt(eA[oA])).family]&&(iA.family=nA[iA.family]),tA.hasOwnProperty(iA.family)){sA=tA[iA.family];break}if(!(sA=sA||tA[rA]))throw new Error(\"Could not find a font-family for the rule '\"+Et(iA)+\"' and default family '\"+rA+\"'.\");if(sA=function(tA,eA){if(eA[tA])return eA[tA];var AA=ci[tA],rA=AA<=ci.normal?-1:1,nA=Ot(eA,li,AA,rA);if(!nA)throw new Error(\"Could not find a matching font-stretch value for \"+tA);return nA}(iA.stretch,sA),sA=function(tA,eA){if(eA[tA])return eA[tA];for(var AA=ai[tA],rA=0;rA<AA.length;++rA)if(eA[AA[rA]])return eA[AA[rA]];throw new Error(\"Could not find a matching font-style for \"+tA)}(iA.style,sA),!(sA=function(tA,eA){if(eA[tA])return eA[tA];if(400===tA&&eA[500])return eA[500];if(500===tA&&eA[400])return eA[400];var AA=hi[tA],rA=Ot(eA,ui,AA,tA<400?-1:1);if(!rA)throw new Error(\"Could not find a matching font-weight for value \"+tA);return rA}(iA.weight,sA)))throw new Error(\"Failed to resolve a font for the rule '\"+Et(iA)+\"'.\");return sA}(f(this.pdf,this.fontFaces),oA.map((function(tA){return{family:tA,stretch:\"normal\",weight:rA,style:AA}})));this.pdf.setFont(aA.ref.name,aA.ref.style)}else{var lA=\"\";(\"bold\"===rA||parseInt(rA,10)>=700||\"bold\"===AA)&&(lA=\"bold\"),\"italic\"===AA&&(lA+=\"italic\"),0===lA.length&&(lA=\"normal\");for(var cA=\"\",uA={arial:\"Helvetica\",Arial:\"Helvetica\",verdana:\"Helvetica\",Verdana:\"Helvetica\",helvetica:\"Helvetica\",Helvetica:\"Helvetica\",\"sans-serif\":\"Helvetica\",fixed:\"Courier\",monospace:\"Courier\",terminal:\"Courier\",cursive:\"Times\",fantasy:\"Times\",serif:\"Times\"},hA=0;hA<oA.length;hA++){if(void 0!==this.pdf.internal.getFont(oA[hA],lA,{noFallback:!0,disableWarning:!0})){cA=oA[hA];break}if(\"bolditalic\"===lA&&void 0!==this.pdf.internal.getFont(oA[hA],\"bold\",{noFallback:!0,disableWarning:!0}))cA=oA[hA],lA=\"bold\";else if(void 0!==this.pdf.internal.getFont(oA[hA],\"normal\",{noFallback:!0,disableWarning:!0})){cA=oA[hA],lA=\"normal\";break}}if(\"\"===cA)for(var dA=0;dA<oA.length;dA++)if(uA[oA[dA]]){cA=uA[oA[dA]];break}cA=\"\"===cA?\"Times\":cA,this.pdf.setFont(cA,lA)}}}}),Object.defineProperty(this,\"globalCompositeOperation\",{get:function(){return this.ctx.globalCompositeOperation},set:function(tA){this.ctx.globalCompositeOperation=tA}}),Object.defineProperty(this,\"globalAlpha\",{get:function(){return this.ctx.globalAlpha},set:function(tA){this.ctx.globalAlpha=tA}}),Object.defineProperty(this,\"lineDashOffset\",{get:function(){return this.ctx.lineDashOffset},set:function(tA){this.ctx.lineDashOffset=tA,T.call(this)}}),Object.defineProperty(this,\"lineDash\",{get:function(){return this.ctx.lineDash},set:function(tA){this.ctx.lineDash=tA,T.call(this)}}),Object.defineProperty(this,\"ignoreClearRect\",{get:function(){return this.ctx.ignoreClearRect},set:function(tA){this.ctx.ignoreClearRect=Boolean(tA)}})};p.prototype.setLineDash=function(tA){this.lineDash=tA},p.prototype.getLineDash=function(){return this.lineDash.length%2?this.lineDash.concat(this.lineDash):this.lineDash.slice()},p.prototype.fill=function(){A.call(this,\"fill\",!1)},p.prototype.stroke=function(){A.call(this,\"stroke\",!1)},p.prototype.beginPath=function(){this.path=[{type:\"begin\"}]},p.prototype.moveTo=function(tA,eA){if(isNaN(tA)||isNaN(eA))throw Rn.error(\"jsPDF.context2d.moveTo: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");var AA=this.ctx.transform.applyToPoint(new sA(tA,eA));this.path.push({type:\"mt\",x:AA.x,y:AA.y}),this.ctx.lastPoint=new sA(tA,eA)},p.prototype.closePath=function(){var tA=new sA(0,0),eA=0;for(eA=this.path.length-1;-1!==eA;eA--)if(\"begin\"===this.path[eA].type&&\"object\"===_typeof$1(this.path[eA+1])&&\"number\"==typeof this.path[eA+1].x){tA=new sA(this.path[eA+1].x,this.path[eA+1].y);break}this.path.push({type:\"close\"}),this.ctx.lastPoint=new sA(tA.x,tA.y)},p.prototype.lineTo=function(tA,eA){if(isNaN(tA)||isNaN(eA))throw Rn.error(\"jsPDF.context2d.lineTo: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");var AA=this.ctx.transform.applyToPoint(new sA(tA,eA));this.path.push({type:\"lt\",x:AA.x,y:AA.y}),this.ctx.lastPoint=new sA(AA.x,AA.y)},p.prototype.clip=function(){this.ctx.clip_path=JSON.parse(JSON.stringify(this.path)),A.call(this,null,!0)},p.prototype.quadraticCurveTo=function(tA,eA,AA,rA){if(isNaN(AA)||isNaN(rA)||isNaN(tA)||isNaN(eA))throw Rn.error(\"jsPDF.context2d.quadraticCurveTo: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\");var nA=this.ctx.transform.applyToPoint(new sA(AA,rA)),iA=this.ctx.transform.applyToPoint(new sA(tA,eA));this.path.push({type:\"qct\",x1:iA.x,y1:iA.y,x:nA.x,y:nA.y}),this.ctx.lastPoint=new sA(nA.x,nA.y)},p.prototype.bezierCurveTo=function(tA,eA,AA,rA,nA,iA){if(isNaN(nA)||isNaN(iA)||isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA))throw Rn.error(\"jsPDF.context2d.bezierCurveTo: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\");var oA=this.ctx.transform.applyToPoint(new sA(nA,iA)),aA=this.ctx.transform.applyToPoint(new sA(tA,eA)),lA=this.ctx.transform.applyToPoint(new sA(AA,rA));this.path.push({type:\"bct\",x1:aA.x,y1:aA.y,x2:lA.x,y2:lA.y,x:oA.x,y:oA.y}),this.ctx.lastPoint=new sA(oA.x,oA.y)},p.prototype.arc=function(tA,eA,AA,rA,nA,iA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA)||isNaN(nA))throw Rn.error(\"jsPDF.context2d.arc: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");if(iA=Boolean(iA),!this.ctx.transform.isIdentity){var oA=this.ctx.transform.applyToPoint(new sA(tA,eA));tA=oA.x,eA=oA.y;var aA=this.ctx.transform.applyToPoint(new sA(0,AA)),lA=this.ctx.transform.applyToPoint(new sA(0,0));AA=Math.sqrt(Math.pow(aA.x-lA.x,2)+Math.pow(aA.y-lA.y,2))}Math.abs(nA-rA)>=2*Math.PI&&(rA=0,nA=2*Math.PI),this.path.push({type:\"arc\",x:tA,y:eA,radius:AA,startAngle:rA,endAngle:nA,counterclockwise:iA})},p.prototype.arcTo=function(tA,eA,AA,rA,nA){throw new Error(\"arcTo not implemented.\")},p.prototype.rect=function(tA,eA,AA,rA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA))throw Rn.error(\"jsPDF.context2d.rect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");this.moveTo(tA,eA),this.lineTo(tA+AA,eA),this.lineTo(tA+AA,eA+rA),this.lineTo(tA,eA+rA),this.lineTo(tA,eA),this.lineTo(tA+AA,eA),this.lineTo(tA,eA)},p.prototype.fillRect=function(tA,eA,AA,rA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA))throw Rn.error(\"jsPDF.context2d.fillRect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");if(!m.call(this)){var nA={};\"butt\"!==this.lineCap&&(nA.lineCap=this.lineCap,this.lineCap=\"butt\"),\"miter\"!==this.lineJoin&&(nA.lineJoin=this.lineJoin,this.lineJoin=\"miter\"),this.beginPath(),this.rect(tA,eA,AA,rA),this.fill(),nA.hasOwnProperty(\"lineCap\")&&(this.lineCap=nA.lineCap),nA.hasOwnProperty(\"lineJoin\")&&(this.lineJoin=nA.lineJoin)}},p.prototype.strokeRect=function(tA,eA,AA,rA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA))throw Rn.error(\"jsPDF.context2d.strokeRect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");v.call(this)||(this.beginPath(),this.rect(tA,eA,AA,rA),this.stroke())},p.prototype.clearRect=function(tA,eA,AA,rA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA))throw Rn.error(\"jsPDF.context2d.clearRect: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");this.ignoreClearRect||(this.fillStyle=\"#ffffff\",this.fillRect(tA,eA,AA,rA))},p.prototype.save=function(tA){tA=\"boolean\"!=typeof tA||tA;for(var eA=this.pdf.internal.getCurrentPageInfo().pageNumber,AA=0;AA<this.pdf.internal.getNumberOfPages();AA++)this.pdf.setPage(AA+1),this.pdf.internal.out(\"q\");if(this.pdf.setPage(eA),tA){this.ctx.fontSize=this.pdf.internal.getFontSize();var rA=new d(this.ctx);this.ctxStack.push(this.ctx),this.ctx=rA}},p.prototype.restore=function(tA){tA=\"boolean\"!=typeof tA||tA;for(var eA=this.pdf.internal.getCurrentPageInfo().pageNumber,AA=0;AA<this.pdf.internal.getNumberOfPages();AA++)this.pdf.setPage(AA+1),this.pdf.internal.out(\"Q\");this.pdf.setPage(eA),tA&&0!==this.ctxStack.length&&(this.ctx=this.ctxStack.pop(),this.fillStyle=this.ctx.fillStyle,this.strokeStyle=this.ctx.strokeStyle,this.font=this.ctx.font,this.lineCap=this.ctx.lineCap,this.lineWidth=this.ctx.lineWidth,this.lineJoin=this.ctx.lineJoin,this.lineDash=this.ctx.lineDash,this.lineDashOffset=this.ctx.lineDashOffset)},p.prototype.toDataURL=function(){throw new Error(\"toDataUrl not implemented.\")};var g=function(tA){var eA,AA,rA,nA;if(!0===tA.isCanvasGradient&&(tA=tA.getColor()),!tA)return{r:0,g:0,b:0,a:0,style:tA};if(/transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/.test(tA))eA=0,AA=0,rA=0,nA=0;else{var iA=/rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/.exec(tA);if(null!==iA)eA=parseInt(iA[1]),AA=parseInt(iA[2]),rA=parseInt(iA[3]),nA=1;else if(null!==(iA=/rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/.exec(tA)))eA=parseInt(iA[1]),AA=parseInt(iA[2]),rA=parseInt(iA[3]),nA=parseFloat(iA[4]);else{if(nA=1,\"string\"==typeof tA&&\"#\"!==tA.charAt(0)){var sA=new f$1(tA);tA=sA.ok?sA.toHex():\"#000000\"}4===tA.length?(eA=tA.substring(1,2),eA+=eA,AA=tA.substring(2,3),AA+=AA,rA=tA.substring(3,4),rA+=rA):(eA=tA.substring(1,3),AA=tA.substring(3,5),rA=tA.substring(5,7)),eA=parseInt(eA,16),AA=parseInt(AA,16),rA=parseInt(rA,16)}}return{r:eA,g:AA,b:rA,a:nA,style:tA}},m=function(){return this.ctx.isFillTransparent||0==this.globalAlpha},v=function(){return Boolean(this.ctx.isStrokeTransparent||0==this.globalAlpha)};p.prototype.fillText=function(tA,eA,AA,rA){if(isNaN(eA)||isNaN(AA)||\"string\"!=typeof tA)throw Rn.error(\"jsPDF.context2d.fillText: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");if(rA=isNaN(rA)?void 0:rA,!m.call(this)){var nA=q(this.ctx.transform.rotation),iA=this.ctx.transform.scaleX;C.call(this,{text:tA,x:eA,y:AA,scale:iA,angle:nA,align:this.textAlign,maxWidth:rA})}},p.prototype.strokeText=function(tA,eA,AA,rA){if(isNaN(eA)||isNaN(AA)||\"string\"!=typeof tA)throw Rn.error(\"jsPDF.context2d.strokeText: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");if(!v.call(this)){rA=isNaN(rA)?void 0:rA;var nA=q(this.ctx.transform.rotation),iA=this.ctx.transform.scaleX;C.call(this,{text:tA,x:eA,y:AA,scale:iA,renderingMode:\"stroke\",angle:nA,align:this.textAlign,maxWidth:rA})}},p.prototype.measureText=function(tA){if(\"string\"!=typeof tA)throw Rn.error(\"jsPDF.context2d.measureText: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.measureText\");var eA=this.pdf,AA=this.pdf.internal.scaleFactor,rA=eA.internal.getFontSize(),nA=eA.getStringUnitWidth(tA)*rA/eA.internal.scaleFactor,o=function(tA){var eA=(tA=tA||{}).width||0;return Object.defineProperty(this,\"width\",{get:function(){return eA}}),this};return new o({width:nA*=Math.round(96*AA/72*1e4)/1e4})},p.prototype.scale=function(tA,eA){if(isNaN(tA)||isNaN(eA))throw Rn.error(\"jsPDF.context2d.scale: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");var AA=new aA(tA,0,0,eA,0,0);this.ctx.transform=this.ctx.transform.multiply(AA)},p.prototype.rotate=function(tA){if(isNaN(tA))throw Rn.error(\"jsPDF.context2d.rotate: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");var eA=new aA(Math.cos(tA),Math.sin(tA),-Math.sin(tA),Math.cos(tA),0,0);this.ctx.transform=this.ctx.transform.multiply(eA)},p.prototype.translate=function(tA,eA){if(isNaN(tA)||isNaN(eA))throw Rn.error(\"jsPDF.context2d.translate: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");var AA=new aA(1,0,0,1,tA,eA);this.ctx.transform=this.ctx.transform.multiply(AA)},p.prototype.transform=function(tA,eA,AA,rA,nA,iA){if(isNaN(tA)||isNaN(eA)||isNaN(AA)||isNaN(rA)||isNaN(nA)||isNaN(iA))throw Rn.error(\"jsPDF.context2d.transform: Invalid arguments\",arguments),new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");var sA=new aA(tA,eA,AA,rA,nA,iA);this.ctx.transform=this.ctx.transform.multiply(sA)},p.prototype.setTransform=function(tA,eA,AA,rA,nA,iA){tA=isNaN(tA)?1:tA,eA=isNaN(eA)?0:eA,AA=isNaN(AA)?0:AA,rA=isNaN(rA)?1:rA,nA=isNaN(nA)?0:nA,iA=isNaN(iA)?0:iA,this.ctx.transform=new aA(tA,eA,AA,rA,nA,iA)};var b=function(){return this.margin[0]>0||this.margin[1]>0||this.margin[2]>0||this.margin[3]>0};p.prototype.drawImage=function(tA,eA,AA,rA,nA,iA,sA,lA,cA){var uA=this.pdf.getImageProperties(tA),hA=1,dA=1,fA=1,gA=1;void 0!==rA&&void 0!==lA&&(fA=lA/rA,gA=cA/nA,hA=uA.width/rA*lA/rA,dA=uA.height/nA*cA/nA),void 0===iA&&(iA=eA,sA=AA,eA=0,AA=0),void 0!==rA&&void 0===lA&&(lA=rA,cA=nA),void 0===rA&&void 0===lA&&(lA=uA.width,cA=uA.height);for(var pA,mA=this.ctx.transform.decompose(),wA=q(mA.rotate.shx),yA=new aA,BA=(yA=(yA=(yA=yA.multiply(mA.translate)).multiply(mA.skew)).multiply(mA.scale)).applyToRectangle(new oA(iA-eA*fA,sA-AA*gA,rA*hA,nA*dA)),bA=y.call(this,BA),vA=[],CA=0;CA<bA.length;CA+=1)-1===vA.indexOf(bA[CA])&&vA.push(bA[CA]);if(L(vA),this.autoPaging)for(var SA=vA[0],xA=vA[vA.length-1],FA=SA;FA<xA+1;FA++){this.pdf.setPage(FA);var EA=this.pdf.internal.pageSize.width-this.margin[3]-this.margin[1],QA=1===FA?this.posY+this.margin[0]:this.margin[0],UA=this.pdf.internal.pageSize.height-this.posY-this.margin[0]-this.margin[2],PA=this.pdf.internal.pageSize.height-this.margin[0]-this.margin[2],_A=1===FA?0:UA+(FA-2)*PA;if(0!==this.ctx.clip_path.length){var LA=this.path;pA=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=N(pA,this.posX+this.margin[3],-_A+QA+this.ctx.prevPageLastElemOffset),x.call(this,\"fill\",!0),this.path=LA}var IA=JSON.parse(JSON.stringify(BA));IA=N([IA],this.posX+this.margin[3],-_A+QA+this.ctx.prevPageLastElemOffset)[0];var NA=(FA>SA||FA<xA)&&b.call(this);NA&&(this.pdf.saveGraphicsState(),this.pdf.rect(this.margin[3],this.margin[0],EA,PA,null).clip().discardPath()),this.pdf.addImage(tA,\"JPEG\",IA.x,IA.y,IA.w,IA.h,null,null,wA),NA&&this.pdf.restoreGraphicsState()}else this.pdf.addImage(tA,\"JPEG\",BA.x,BA.y,BA.w,BA.h,null,null,wA)};var y=function(tA,eA,AA){var rA=[];eA=eA||this.pdf.internal.pageSize.width,AA=AA||this.pdf.internal.pageSize.height-this.margin[0]-this.margin[2];var nA=this.posY+this.ctx.prevPageLastElemOffset;switch(tA.type){default:case\"mt\":case\"lt\":rA.push(Math.floor((tA.y+nA)/AA)+1);break;case\"arc\":rA.push(Math.floor((tA.y+nA-tA.radius)/AA)+1),rA.push(Math.floor((tA.y+nA+tA.radius)/AA)+1);break;case\"qct\":var iA=D(this.ctx.lastPoint.x,this.ctx.lastPoint.y,tA.x1,tA.y1,tA.x,tA.y);rA.push(Math.floor((iA.y+nA)/AA)+1),rA.push(Math.floor((iA.y+iA.h+nA)/AA)+1);break;case\"bct\":var sA=R(this.ctx.lastPoint.x,this.ctx.lastPoint.y,tA.x1,tA.y1,tA.x2,tA.y2,tA.x,tA.y);rA.push(Math.floor((sA.y+nA)/AA)+1),rA.push(Math.floor((sA.y+sA.h+nA)/AA)+1);break;case\"rect\":rA.push(Math.floor((tA.y+nA)/AA)+1),rA.push(Math.floor((tA.y+tA.h+nA)/AA)+1)}for(var oA=0;oA<rA.length;oA+=1)for(;this.pdf.internal.getNumberOfPages()<rA[oA];)w.call(this);return rA},w=function(){var tA=this.fillStyle,eA=this.strokeStyle,AA=this.font,rA=this.lineCap,nA=this.lineWidth,iA=this.lineJoin;this.pdf.addPage(),this.fillStyle=tA,this.strokeStyle=eA,this.font=AA,this.lineCap=rA,this.lineWidth=nA,this.lineJoin=iA},N=function(tA,eA,AA){for(var rA=0;rA<tA.length;rA++)switch(tA[rA].type){case\"bct\":tA[rA].x2+=eA,tA[rA].y2+=AA;case\"qct\":tA[rA].x1+=eA,tA[rA].y1+=AA;default:tA[rA].x+=eA,tA[rA].y+=AA}return tA},L=function(tA){return tA.sort((function(tA,eA){return tA-eA}))},A=function(tA,eA){for(var AA,rA,nA=this.fillStyle,iA=this.strokeStyle,sA=this.lineCap,oA=this.lineWidth,aA=Math.abs(oA*this.ctx.transform.scaleX),lA=this.lineJoin,cA=JSON.parse(JSON.stringify(this.path)),uA=JSON.parse(JSON.stringify(this.path)),hA=[],dA=0;dA<uA.length;dA++)if(void 0!==uA[dA].x)for(var fA=y.call(this,uA[dA]),gA=0;gA<fA.length;gA+=1)-1===hA.indexOf(fA[gA])&&hA.push(fA[gA]);for(var pA=0;pA<hA.length;pA++)for(;this.pdf.internal.getNumberOfPages()<hA[pA];)w.call(this);if(L(hA),this.autoPaging)for(var mA=hA[0],wA=hA[hA.length-1],yA=mA;yA<wA+1;yA++){this.pdf.setPage(yA),this.fillStyle=nA,this.strokeStyle=iA,this.lineCap=sA,this.lineWidth=aA,this.lineJoin=lA;var BA=this.pdf.internal.pageSize.width-this.margin[3]-this.margin[1],bA=1===yA?this.posY+this.margin[0]:this.margin[0],vA=this.pdf.internal.pageSize.height-this.posY-this.margin[0]-this.margin[2],CA=this.pdf.internal.pageSize.height-this.margin[0]-this.margin[2],SA=1===yA?0:vA+(yA-2)*CA;if(0!==this.ctx.clip_path.length){var xA=this.path;AA=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=N(AA,this.posX+this.margin[3],-SA+bA+this.ctx.prevPageLastElemOffset),x.call(this,tA,!0),this.path=xA}if(rA=JSON.parse(JSON.stringify(cA)),this.path=N(rA,this.posX+this.margin[3],-SA+bA+this.ctx.prevPageLastElemOffset),!1===eA||0===yA){var FA=(yA>mA||yA<wA)&&b.call(this);FA&&(this.pdf.saveGraphicsState(),this.pdf.rect(this.margin[3],this.margin[0],BA,CA,null).clip().discardPath()),x.call(this,tA,eA),FA&&this.pdf.restoreGraphicsState()}this.lineWidth=oA}else this.lineWidth=aA,x.call(this,tA,eA),this.lineWidth=oA;this.path=cA},x=function(tA,eA){if((\"stroke\"!==tA||eA||!v.call(this))&&(\"stroke\"===tA||eA||!m.call(this))){for(var AA,rA,nA=[],iA=this.path,sA=0;sA<iA.length;sA++){var oA=iA[sA];switch(oA.type){case\"begin\":nA.push({begin:!0});break;case\"close\":nA.push({close:!0});break;case\"mt\":nA.push({start:oA,deltas:[],abs:[]});break;case\"lt\":var aA=nA.length;if(iA[sA-1]&&!isNaN(iA[sA-1].x)&&(AA=[oA.x-iA[sA-1].x,oA.y-iA[sA-1].y],aA>0))for(;aA>=0;aA--)if(!0!==nA[aA-1].close&&!0!==nA[aA-1].begin){nA[aA-1].deltas.push(AA),nA[aA-1].abs.push(oA);break}break;case\"bct\":AA=[oA.x1-iA[sA-1].x,oA.y1-iA[sA-1].y,oA.x2-iA[sA-1].x,oA.y2-iA[sA-1].y,oA.x-iA[sA-1].x,oA.y-iA[sA-1].y],nA[nA.length-1].deltas.push(AA);break;case\"qct\":var lA=iA[sA-1].x+2/3*(oA.x1-iA[sA-1].x),cA=iA[sA-1].y+2/3*(oA.y1-iA[sA-1].y),uA=oA.x+2/3*(oA.x1-oA.x),hA=oA.y+2/3*(oA.y1-oA.y),dA=oA.x,fA=oA.y;AA=[lA-iA[sA-1].x,cA-iA[sA-1].y,uA-iA[sA-1].x,hA-iA[sA-1].y,dA-iA[sA-1].x,fA-iA[sA-1].y],nA[nA.length-1].deltas.push(AA);break;case\"arc\":nA.push({deltas:[],abs:[],arc:!0}),Array.isArray(nA[nA.length-1].abs)&&nA[nA.length-1].abs.push(oA)}}rA=eA?null:\"stroke\"===tA?\"stroke\":\"fill\";for(var gA=!1,pA=0;pA<nA.length;pA++)if(nA[pA].arc)for(var mA=nA[pA].abs,wA=0;wA<mA.length;wA++){var yA=mA[wA];\"arc\"===yA.type?P.call(this,yA.x,yA.y,yA.radius,yA.startAngle,yA.endAngle,yA.counterclockwise,void 0,eA,!gA):j.call(this,yA.x,yA.y),gA=!0}else if(!0===nA[pA].close)this.pdf.internal.out(\"h\"),gA=!1;else if(!0!==nA[pA].begin){var BA=nA[pA].start.x,bA=nA[pA].start.y;O.call(this,nA[pA].deltas,BA,bA),gA=!0}rA&&k.call(this,rA),eA&&I.call(this)}},S=function(tA){var eA=this.pdf.internal.getFontSize()/this.pdf.internal.scaleFactor,AA=eA*(this.pdf.internal.getLineHeightFactor()-1);switch(this.ctx.textBaseline){case\"bottom\":return tA-AA;case\"top\":return tA+eA-AA;case\"hanging\":return tA+eA-2*AA;case\"middle\":return tA+eA/2-AA;default:return tA}},_=function(tA){return tA+this.pdf.internal.getFontSize()/this.pdf.internal.scaleFactor*(this.pdf.internal.getLineHeightFactor()-1)};p.prototype.createLinearGradient=function(){var t=function(){};return t.colorStops=[],t.addColorStop=function(tA,eA){this.colorStops.push([tA,eA])},t.getColor=function(){return 0===this.colorStops.length?\"#000000\":this.colorStops[0][1]},t.isCanvasGradient=!0,t},p.prototype.createPattern=function(){return this.createLinearGradient()},p.prototype.createRadialGradient=function(){return this.createLinearGradient()};var P=function(tA,eA,AA,rA,nA,iA,sA,oA,aA){for(var lA=M.call(this,AA,rA,nA,iA),cA=0;cA<lA.length;cA++){var uA=lA[cA];0===cA&&(aA?F.call(this,uA.x1+tA,uA.y1+eA):j.call(this,uA.x1+tA,uA.y1+eA)),B.call(this,tA,eA,uA.x2,uA.y2,uA.x3,uA.y3,uA.x4,uA.y4)}oA?I.call(this):k.call(this,sA)},k=function(tA){switch(tA){case\"stroke\":this.pdf.internal.out(\"S\");break;case\"fill\":this.pdf.internal.out(\"f\")}},I=function(){this.pdf.clip(),this.pdf.discardPath()},F=function(tA,eA){this.pdf.internal.out(AA(tA)+\" \"+rA(eA)+\" m\")},C=function(tA){var eA;switch(tA.align){case\"right\":case\"end\":eA=\"right\";break;case\"center\":eA=\"center\";break;default:eA=\"left\"}var AA=this.pdf.getTextDimensions(tA.text),rA=S.call(this,tA.y),nA=_.call(this,rA)-AA.h,iA=this.ctx.transform.applyToPoint(new sA(tA.x,rA)),lA=this.ctx.transform.decompose(),cA=new aA;cA=(cA=(cA=cA.multiply(lA.translate)).multiply(lA.skew)).multiply(lA.scale);for(var uA,hA,dA,fA=this.ctx.transform.applyToRectangle(new oA(tA.x,rA,AA.w,AA.h)),gA=cA.applyToRectangle(new oA(tA.x,nA,AA.w,AA.h)),pA=y.call(this,gA),mA=[],wA=0;wA<pA.length;wA+=1)-1===mA.indexOf(pA[wA])&&mA.push(pA[wA]);if(L(mA),this.autoPaging)for(var yA=mA[0],BA=mA[mA.length-1],bA=yA;bA<BA+1;bA++){this.pdf.setPage(bA);var vA=1===bA?this.posY+this.margin[0]:this.margin[0],CA=this.pdf.internal.pageSize.height-this.posY-this.margin[0]-this.margin[2],SA=this.pdf.internal.pageSize.height-this.margin[2],xA=SA-this.margin[0],FA=this.pdf.internal.pageSize.width-this.margin[1],EA=FA-this.margin[3],QA=1===bA?0:CA+(bA-2)*xA;if(0!==this.ctx.clip_path.length){var UA=this.path;uA=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=N(uA,this.posX+this.margin[3],-1*QA+vA),x.call(this,\"fill\",!0),this.path=UA}var PA=N([JSON.parse(JSON.stringify(gA))],this.posX+this.margin[3],-QA+vA+this.ctx.prevPageLastElemOffset)[0];tA.scale>=.01&&(hA=this.pdf.internal.getFontSize(),this.pdf.setFontSize(hA*tA.scale),dA=this.lineWidth,this.lineWidth=dA*tA.scale);var _A=\"text\"!==this.autoPaging;if(_A||PA.y+PA.h<=SA){if(_A||PA.y>=vA&&PA.x<=FA){var LA=_A?tA.text:this.pdf.splitTextToSize(tA.text,tA.maxWidth||FA-PA.x)[0],IA=N([JSON.parse(JSON.stringify(fA))],this.posX+this.margin[3],-QA+vA+this.ctx.prevPageLastElemOffset)[0],NA=_A&&(bA>yA||bA<BA)&&b.call(this);NA&&(this.pdf.saveGraphicsState(),this.pdf.rect(this.margin[3],this.margin[0],EA,xA,null).clip().discardPath()),this.pdf.text(LA,IA.x,IA.y,{angle:tA.angle,align:eA,renderingMode:tA.renderingMode}),NA&&this.pdf.restoreGraphicsState()}}else PA.y<SA&&(this.ctx.prevPageLastElemOffset+=SA-PA.y);tA.scale>=.01&&(this.pdf.setFontSize(hA),this.lineWidth=dA)}else tA.scale>=.01&&(hA=this.pdf.internal.getFontSize(),this.pdf.setFontSize(hA*tA.scale),dA=this.lineWidth,this.lineWidth=dA*tA.scale),this.pdf.text(tA.text,iA.x+this.posX,iA.y+this.posY,{angle:tA.angle,align:eA,renderingMode:tA.renderingMode,maxWidth:tA.maxWidth}),tA.scale>=.01&&(this.pdf.setFontSize(hA),this.lineWidth=dA)},j=function(tA,eA,nA,iA){nA=nA||0,iA=iA||0,this.pdf.internal.out(AA(tA+nA)+\" \"+rA(eA+iA)+\" l\")},O=function(tA,eA,AA){return this.pdf.lines(tA,eA,AA,null,null)},B=function(tA,AA,rA,sA,oA,aA,lA,cA){this.pdf.internal.out([eA(nA(rA+tA)),eA(iA(sA+AA)),eA(nA(oA+tA)),eA(iA(aA+AA)),eA(nA(lA+tA)),eA(iA(cA+AA)),\"c\"].join(\" \"))},M=function(tA,eA,AA,rA){for(var nA=2*Math.PI,iA=Math.PI/2;eA>AA;)eA-=nA;var sA=Math.abs(AA-eA);sA<nA&&rA&&(sA=nA-sA);for(var oA=[],aA=rA?-1:1,lA=eA;sA>1e-5;){var cA=lA+aA*Math.min(sA,iA);oA.push(E.call(this,tA,lA,cA)),sA-=Math.abs(cA-lA),lA=cA}return oA},E=function(tA,eA,AA){var rA=(AA-eA)/2,nA=tA*Math.cos(rA),iA=tA*Math.sin(rA),sA=nA,oA=-iA,aA=sA*sA+oA*oA,lA=aA+sA*nA+oA*iA,cA=4/3*(Math.sqrt(2*aA*lA)-lA)/(sA*iA-oA*nA),uA=sA-cA*oA,hA=oA+cA*sA,dA=uA,fA=-hA,gA=rA+eA,pA=Math.cos(gA),mA=Math.sin(gA);return{x1:tA*Math.cos(eA),y1:tA*Math.sin(eA),x2:uA*pA-hA*mA,y2:uA*mA+hA*pA,x3:dA*pA-fA*mA,y3:dA*mA+fA*pA,x4:tA*Math.cos(AA),y4:tA*Math.sin(AA)}},q=function(tA){return 180*tA/Math.PI},D=function(tA,eA,AA,rA,nA,iA){var sA=tA+.5*(AA-tA),aA=eA+.5*(rA-eA),lA=nA+.5*(AA-nA),cA=iA+.5*(rA-iA),uA=Math.min(tA,nA,sA,lA),hA=Math.max(tA,nA,sA,lA),dA=Math.min(eA,iA,aA,cA),fA=Math.max(eA,iA,aA,cA);return new oA(uA,dA,hA-uA,fA-dA)},R=function(tA,eA,AA,rA,nA,iA,sA,aA){var lA,cA,uA,hA,dA,fA,gA,pA,mA,wA,yA,BA,bA,vA,CA=AA-tA,SA=rA-eA,xA=nA-AA,FA=iA-rA,EA=sA-nA,QA=aA-iA;for(cA=0;cA<41;cA++)mA=(gA=(uA=tA+(lA=cA/40)*CA)+lA*((dA=AA+lA*xA)-uA))+lA*(dA+lA*(nA+lA*EA-dA)-gA),wA=(pA=(hA=eA+lA*SA)+lA*((fA=rA+lA*FA)-hA))+lA*(fA+lA*(iA+lA*QA-fA)-pA),0==cA?(yA=mA,BA=wA,bA=mA,vA=wA):(yA=Math.min(yA,mA),BA=Math.min(BA,wA),bA=Math.max(bA,mA),vA=Math.max(vA,wA));return new oA(Math.round(yA),Math.round(BA),Math.round(bA-yA),Math.round(vA-BA))},T=function(){if(this.prevLineDash||this.ctx.lineDash.length||this.ctx.lineDashOffset){var tA,eA,AA=(tA=this.ctx.lineDash,eA=this.ctx.lineDashOffset,JSON.stringify({lineDash:tA,lineDashOffset:eA}));this.prevLineDash!==AA&&(this.pdf.setLineDash(this.ctx.lineDash,this.ctx.lineDashOffset),this.prevLineDash=AA)}}}(E.API),\n/**\n * @license\n * jsPDF filters PlugIn\n * Copyright (c) 2014 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){var r=function(tA){var eA,AA,rA,nA,iA,sA,oA,aA,lA,cA;for(/[^\\x00-\\xFF]/.test(tA),AA=[],rA=0,nA=(tA+=eA=\"\\0\\0\\0\\0\".slice(tA.length%4||4)).length;nA>rA;rA+=4)0!==(iA=(tA.charCodeAt(rA)<<24)+(tA.charCodeAt(rA+1)<<16)+(tA.charCodeAt(rA+2)<<8)+tA.charCodeAt(rA+3))?(sA=(iA=((iA=((iA=((iA=(iA-(cA=iA%85))/85)-(lA=iA%85))/85)-(aA=iA%85))/85)-(oA=iA%85))/85)%85,AA.push(sA+33,oA+33,aA+33,lA+33,cA+33)):AA.push(122);return function(tA,eA){for(var AA=eA;AA>0;AA--)tA.pop()}(AA,eA.length),String.fromCharCode.apply(String,AA)+\"~>\"},n=function(tA){var eA,AA,rA,nA,iA,sA=String,oA=\"length\",aA=255,lA=\"charCodeAt\",cA=\"slice\",uA=\"replace\";for(tA[cA](-2),tA=tA[cA](0,-2)[uA](/\\s/g,\"\")[uA](\"z\",\"!!!!!\"),rA=[],nA=0,iA=(tA+=eA=\"uuuuu\"[cA](tA[oA]%5||5))[oA];iA>nA;nA+=5)AA=52200625*(tA[lA](nA)-33)+614125*(tA[lA](nA+1)-33)+7225*(tA[lA](nA+2)-33)+85*(tA[lA](nA+3)-33)+(tA[lA](nA+4)-33),rA.push(aA&AA>>24,aA&AA>>16,aA&AA>>8,aA&AA);return function(tA,eA){for(var AA=eA;AA>0;AA--)tA.pop()}(rA,eA[oA]),sA.fromCharCode.apply(sA,rA)},i=function(tA){var eA=new RegExp(/^([0-9A-Fa-f]{2})+$/);if(-1!==(tA=tA.replace(/\\s/g,\"\")).indexOf(\">\")&&(tA=tA.substr(0,tA.indexOf(\">\"))),tA.length%2&&(tA+=\"0\"),!1===eA.test(tA))return\"\";for(var AA=\"\",rA=0;rA<tA.length;rA+=2)AA+=String.fromCharCode(\"0x\"+(tA[rA]+tA[rA+1]));return AA},a=function(tA){for(var eA=new Uint8Array(tA.length),AA=tA.length;AA--;)eA[AA]=tA.charCodeAt(AA);return(eA=zlibSync(eA)).reduce((function(tA,eA){return tA+String.fromCharCode(eA)}),\"\")};tA.processDataByFilters=function(tA,eA){var AA=0,rA=tA||\"\",nA=[];for(\"string\"==typeof(eA=eA||[])&&(eA=[eA]),AA=0;AA<eA.length;AA+=1)switch(eA[AA]){case\"ASCII85Decode\":case\"/ASCII85Decode\":rA=n(rA),nA.push(\"/ASCII85Encode\");break;case\"ASCII85Encode\":case\"/ASCII85Encode\":rA=r(rA),nA.push(\"/ASCII85Decode\");break;case\"ASCIIHexDecode\":case\"/ASCIIHexDecode\":rA=i(rA),nA.push(\"/ASCIIHexEncode\");break;case\"ASCIIHexEncode\":case\"/ASCIIHexEncode\":rA=rA.split(\"\").map((function(tA){return(\"0\"+tA.charCodeAt().toString(16)).slice(-2)})).join(\"\")+\">\",nA.push(\"/ASCIIHexDecode\");break;case\"FlateEncode\":case\"/FlateEncode\":rA=a(rA),nA.push(\"/FlateDecode\");break;default:throw new Error('The filter: \"'+eA[AA]+'\" is not implemented')}return{data:rA,reverseChain:nA.reverse().join(\" \")}}}(E.API),\n/**\n * @license\n * jsPDF fileloading PlugIn\n * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){tA.loadFile=function(tA,eA,AA){return function(tA,eA,AA){eA=!1!==eA,AA=\"function\"==typeof AA?AA:function(){};var rA=void 0;try{rA=function(tA,eA,AA){var rA=new XMLHttpRequest,nA=0,a=function(tA){var eA=tA.length,AA=[],rA=String.fromCharCode;for(nA=0;nA<eA;nA+=1)AA.push(rA(255&tA.charCodeAt(nA)));return AA.join(\"\")};if(rA.open(\"GET\",tA,!eA),rA.overrideMimeType(\"text/plain; charset=x-user-defined\"),!1===eA&&(rA.onload=function(){200===rA.status?AA(a(this.responseText)):AA(void 0)}),rA.send(null),eA&&200===rA.status)return a(rA.responseText)}(tA,eA,AA)}catch(tA){}return rA}(tA,eA,AA)},tA.loadImageFile=tA.loadFile}(E.API),function(tA){function r(){return(Dn.html2canvas?Promise.resolve(Dn.html2canvas):Promise.resolve().then((function(){return po}))).catch((function(tA){return Promise.reject(new Error(\"Could not load html2canvas: \"+tA))})).then((function(tA){return tA.default?tA.default:tA}))}function i(){return(Dn.DOMPurify?Promise.resolve(Dn.DOMPurify):Promise.resolve().then((function(){return Po}))).catch((function(tA){return Promise.reject(new Error(\"Could not load dompurify: \"+tA))})).then((function(tA){return tA.default?tA.default:tA}))}var a=function(tA){var eA=_typeof$1(tA);return\"undefined\"===eA?\"undefined\":\"string\"===eA||tA instanceof String?\"string\":\"number\"===eA||tA instanceof Number?\"number\":\"function\"===eA||tA instanceof Function?\"function\":tA&&tA.constructor===Array?\"array\":tA&&1===tA.nodeType?\"element\":\"object\"===eA?\"object\":\"unknown\"},o=function(tA,eA){var AA=document.createElement(tA);for(var rA in eA.className&&(AA.className=eA.className),eA.innerHTML&&eA.dompurify&&(AA.innerHTML=eA.dompurify.sanitize(eA.innerHTML)),eA.style)AA.style[rA]=eA.style[rA];return AA},eA=function t(tA){var eA=Object.assign(t.convert(Promise.resolve()),JSON.parse(JSON.stringify(t.template))),AA=t.convert(Promise.resolve(),eA);return(AA=AA.setProgress(1,t,1,[t])).set(tA)};(eA.prototype=Object.create(Promise.prototype)).constructor=eA,eA.convert=function(tA,AA){return tA.__proto__=AA||eA.prototype,tA},eA.template={prop:{src:null,container:null,overlay:null,canvas:null,img:null,pdf:null,pageSize:null,callback:function(){}},progress:{val:0,state:null,n:0,stack:[]},opt:{filename:\"file.pdf\",margin:[0,0,0,0],enableLinks:!0,x:0,y:0,html2canvas:{},jsPDF:{},backgroundColor:\"transparent\"}},eA.prototype.from=function(tA,eA){return this.then((function(){switch(eA=eA||function(tA){switch(a(tA)){case\"string\":return\"string\";case\"element\":return\"canvas\"===tA.nodeName.toLowerCase()?\"canvas\":\"element\";default:return\"unknown\"}}(tA)){case\"string\":return this.then(i).then((function(eA){return this.set({src:o(\"div\",{innerHTML:tA,dompurify:eA})})}));case\"element\":return this.set({src:tA});case\"canvas\":return this.set({canvas:tA});case\"img\":return this.set({img:tA});default:return this.error(\"Unknown source type.\")}}))},eA.prototype.to=function(tA){switch(tA){case\"container\":return this.toContainer();case\"canvas\":return this.toCanvas();case\"img\":return this.toImg();case\"pdf\":return this.toPdf();default:return this.error(\"Invalid target.\")}},eA.prototype.toContainer=function(){return this.thenList([function(){return this.prop.src||this.error(\"Cannot duplicate - no source HTML.\")},function(){return this.prop.pageSize||this.setPageSize()}]).then((function(){var tA={position:\"relative\",display:\"inline-block\",width:(\"number\"!=typeof this.opt.width||isNaN(this.opt.width)||\"number\"!=typeof this.opt.windowWidth||isNaN(this.opt.windowWidth)?Math.max(this.prop.src.clientWidth,this.prop.src.scrollWidth,this.prop.src.offsetWidth):this.opt.windowWidth)+\"px\",left:0,right:0,top:0,margin:\"auto\",backgroundColor:this.opt.backgroundColor},eA=function t(tA,eA){for(var AA=3===tA.nodeType?document.createTextNode(tA.nodeValue):tA.cloneNode(!1),rA=tA.firstChild;rA;rA=rA.nextSibling)!0!==eA&&1===rA.nodeType&&\"SCRIPT\"===rA.nodeName||AA.appendChild(t(rA,eA));return 1===tA.nodeType&&(\"CANVAS\"===tA.nodeName?(AA.width=tA.width,AA.height=tA.height,AA.getContext(\"2d\").drawImage(tA,0,0)):\"TEXTAREA\"!==tA.nodeName&&\"SELECT\"!==tA.nodeName||(AA.value=tA.value),AA.addEventListener(\"load\",(function(){AA.scrollTop=tA.scrollTop,AA.scrollLeft=tA.scrollLeft}),!0)),AA}(this.prop.src,this.opt.html2canvas.javascriptEnabled);\"BODY\"===eA.tagName&&(tA.height=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight)+\"px\"),this.prop.overlay=o(\"div\",{className:\"html2pdf__overlay\",style:{position:\"fixed\",overflow:\"hidden\",zIndex:1e3,left:\"-100000px\",right:0,bottom:0,top:0}}),this.prop.container=o(\"div\",{className:\"html2pdf__container\",style:tA}),this.prop.container.appendChild(eA),this.prop.container.firstChild.appendChild(o(\"div\",{style:{clear:\"both\",border:\"0 none transparent\",margin:0,padding:0,height:0}})),this.prop.container.style.float=\"none\",this.prop.overlay.appendChild(this.prop.container),document.body.appendChild(this.prop.overlay),this.prop.container.firstChild.style.position=\"relative\",this.prop.container.height=Math.max(this.prop.container.firstChild.clientHeight,this.prop.container.firstChild.scrollHeight,this.prop.container.firstChild.offsetHeight)+\"px\"}))},eA.prototype.toCanvas=function(){var tA=[function(){return document.body.contains(this.prop.container)||this.toContainer()}];return this.thenList(tA).then(r).then((function(tA){var eA=Object.assign({},this.opt.html2canvas);return delete eA.onrendered,tA(this.prop.container,eA)})).then((function(tA){(this.opt.html2canvas.onrendered||function(){})(tA),this.prop.canvas=tA,document.body.removeChild(this.prop.overlay)}))},eA.prototype.toContext2d=function(){var tA=[function(){return document.body.contains(this.prop.container)||this.toContainer()}];return this.thenList(tA).then(r).then((function(tA){var eA=this.opt.jsPDF,AA=this.opt.fontFaces,rA=\"number\"!=typeof this.opt.width||isNaN(this.opt.width)||\"number\"!=typeof this.opt.windowWidth||isNaN(this.opt.windowWidth)?1:this.opt.width/this.opt.windowWidth,nA=Object.assign({async:!0,allowTaint:!0,scale:rA,scrollX:this.opt.scrollX||0,scrollY:this.opt.scrollY||0,backgroundColor:\"#ffffff\",imageTimeout:15e3,logging:!0,proxy:null,removeContainer:!0,foreignObjectRendering:!1,useCORS:!1},this.opt.html2canvas);if(delete nA.onrendered,eA.context2d.autoPaging=void 0===this.opt.autoPaging||this.opt.autoPaging,eA.context2d.posX=this.opt.x,eA.context2d.posY=this.opt.y,eA.context2d.margin=this.opt.margin,eA.context2d.fontFaces=AA,AA)for(var iA=0;iA<AA.length;++iA){var sA=AA[iA],oA=sA.src.find((function(tA){return\"truetype\"===tA.format}));oA&&eA.addFont(oA.url,sA.ref.name,sA.ref.style)}return nA.windowHeight=nA.windowHeight||0,nA.windowHeight=0==nA.windowHeight?Math.max(this.prop.container.clientHeight,this.prop.container.scrollHeight,this.prop.container.offsetHeight):nA.windowHeight,eA.context2d.save(!0),tA(this.prop.container,nA)})).then((function(tA){this.opt.jsPDF.context2d.restore(!0),(this.opt.html2canvas.onrendered||function(){})(tA),this.prop.canvas=tA,document.body.removeChild(this.prop.overlay)}))},eA.prototype.toImg=function(){return this.thenList([function(){return this.prop.canvas||this.toCanvas()}]).then((function(){var tA=this.prop.canvas.toDataURL(\"image/\"+this.opt.image.type,this.opt.image.quality);this.prop.img=document.createElement(\"img\"),this.prop.img.src=tA}))},eA.prototype.toPdf=function(){return this.thenList([function(){return this.toContext2d()}]).then((function(){this.prop.pdf=this.prop.pdf||this.opt.jsPDF}))},eA.prototype.output=function(tA,eA,AA){return\"img\"===(AA=AA||\"pdf\").toLowerCase()||\"image\"===AA.toLowerCase()?this.outputImg(tA,eA):this.outputPdf(tA,eA)},eA.prototype.outputPdf=function(tA,eA){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).then((function(){return this.prop.pdf.output(tA,eA)}))},eA.prototype.outputImg=function(tA){return this.thenList([function(){return this.prop.img||this.toImg()}]).then((function(){switch(tA){case void 0:case\"img\":return this.prop.img;case\"datauristring\":case\"dataurlstring\":return this.prop.img.src;case\"datauri\":case\"dataurl\":return document.location.href=this.prop.img.src;default:throw'Image output type \"'+tA+'\" is not supported.'}}))},eA.prototype.save=function(tA){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).set(tA?{filename:tA}:null).then((function(){this.prop.pdf.save(this.opt.filename)}))},eA.prototype.doCallback=function(){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).then((function(){this.prop.callback(this.prop.pdf)}))},eA.prototype.set=function(tA){if(\"object\"!==a(tA))return this;var AA=Object.keys(tA||{}).map((function(AA){if(AA in eA.template.prop)return function(){this.prop[AA]=tA[AA]};switch(AA){case\"margin\":return this.setMargin.bind(this,tA.margin);case\"jsPDF\":return function(){return this.opt.jsPDF=tA.jsPDF,this.setPageSize()};case\"pageSize\":return this.setPageSize.bind(this,tA.pageSize);default:return function(){this.opt[AA]=tA[AA]}}}),this);return this.then((function(){return this.thenList(AA)}))},eA.prototype.get=function(tA,AA){return this.then((function(){var rA=tA in eA.template.prop?this.prop[tA]:this.opt[tA];return AA?AA(rA):rA}))},eA.prototype.setMargin=function(tA){return this.then((function(){switch(a(tA)){case\"number\":tA=[tA,tA,tA,tA];case\"array\":if(2===tA.length&&(tA=[tA[0],tA[1],tA[0],tA[1]]),4===tA.length)break;default:return this.error(\"Invalid margin array.\")}this.opt.margin=tA})).then(this.setPageSize)},eA.prototype.setPageSize=function(tA){function e(tA,eA){return Math.floor(tA*eA/72*96)}return this.then((function(){(tA=tA||E.getPageSize(this.opt.jsPDF)).hasOwnProperty(\"inner\")||(tA.inner={width:tA.width-this.opt.margin[1]-this.opt.margin[3],height:tA.height-this.opt.margin[0]-this.opt.margin[2]},tA.inner.px={width:e(tA.inner.width,tA.k),height:e(tA.inner.height,tA.k)},tA.inner.ratio=tA.inner.height/tA.inner.width),this.prop.pageSize=tA}))},eA.prototype.setProgress=function(tA,eA,AA,rA){return null!=tA&&(this.progress.val=tA),null!=eA&&(this.progress.state=eA),null!=AA&&(this.progress.n=AA),null!=rA&&(this.progress.stack=rA),this.progress.ratio=this.progress.val/this.progress.state,this},eA.prototype.updateProgress=function(tA,eA,AA,rA){return this.setProgress(tA?this.progress.val+tA:null,eA||null,AA?this.progress.n+AA:null,rA?this.progress.stack.concat(rA):null)},eA.prototype.then=function(tA,eA){var AA=this;return this.thenCore(tA,eA,(function(tA,eA){return AA.updateProgress(null,null,1,[tA]),Promise.prototype.then.call(this,(function(eA){return AA.updateProgress(null,tA),eA})).then(tA,eA).then((function(tA){return AA.updateProgress(1),tA}))}))},eA.prototype.thenCore=function(tA,AA,rA){rA=rA||Promise.prototype.then,tA&&(tA=tA.bind(this)),AA&&(AA=AA.bind(this));var nA=-1!==Promise.toString().indexOf(\"[native code]\")&&\"Promise\"===Promise.name?this:eA.convert(Object.assign({},this),Promise.prototype),iA=rA.call(nA,tA,AA);return eA.convert(iA,this.__proto__)},eA.prototype.thenExternal=function(tA,eA){return Promise.prototype.then.call(this,tA,eA)},eA.prototype.thenList=function(tA){var eA=this;return tA.forEach((function(tA){eA=eA.thenCore(tA)})),eA},eA.prototype.catch=function(tA){tA&&(tA=tA.bind(this));var AA=Promise.prototype.catch.call(this,tA);return eA.convert(AA,this)},eA.prototype.catchExternal=function(tA){return Promise.prototype.catch.call(this,tA)},eA.prototype.error=function(tA){return this.then((function(){throw new Error(tA)}))},eA.prototype.using=eA.prototype.set,eA.prototype.saveAs=eA.prototype.save,eA.prototype.export=eA.prototype.output,eA.prototype.run=eA.prototype.then,E.getPageSize=function(tA,eA,AA){if(\"object\"===_typeof$1(tA)){var rA=tA;tA=rA.orientation,eA=rA.unit||eA,AA=rA.format||AA}eA=eA||\"mm\",AA=AA||\"a4\",tA=(\"\"+(tA||\"P\")).toLowerCase();var nA,iA=(\"\"+AA).toLowerCase(),sA={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],\"government-letter\":[576,756],legal:[612,1008],\"junior-legal\":[576,360],ledger:[1224,792],tabloid:[792,1224],\"credit-card\":[153,243]};switch(eA){case\"pt\":nA=1;break;case\"mm\":nA=72/25.4;break;case\"cm\":nA=72/2.54;break;case\"in\":nA=72;break;case\"px\":nA=.75;break;case\"pc\":case\"em\":nA=12;break;case\"ex\":nA=6;break;default:throw\"Invalid unit: \"+eA}var oA,aA=0,lA=0;if(sA.hasOwnProperty(iA))aA=sA[iA][1]/nA,lA=sA[iA][0]/nA;else try{aA=AA[1],lA=AA[0]}catch(tA){throw new Error(\"Invalid format: \"+AA)}if(\"p\"===tA||\"portrait\"===tA)tA=\"p\",lA>aA&&(oA=lA,lA=aA,aA=oA);else{if(\"l\"!==tA&&\"landscape\"!==tA)throw\"Invalid orientation: \"+tA;tA=\"l\",aA>lA&&(oA=lA,lA=aA,aA=oA)}return{width:lA,height:aA,unit:eA,k:nA,orientation:tA}},tA.html=function(tA,AA){(AA=AA||{}).callback=AA.callback||function(){},AA.html2canvas=AA.html2canvas||{},AA.html2canvas.canvas=AA.html2canvas.canvas||this.canvas,AA.jsPDF=AA.jsPDF||this,AA.fontFaces=AA.fontFaces?AA.fontFaces.map(jt):null;var rA=new eA(AA);return AA.worker?rA:rA.from(tA).doCallback()}}(E.API),E.API.addJS=function(tA){return mi=tA,this.internal.events.subscribe(\"postPutResources\",(function(){gi=this.internal.newObject(),this.internal.out(\"<<\"),this.internal.out(\"/Names [(EmbeddedJS) \"+(gi+1)+\" 0 R]\"),this.internal.out(\">>\"),this.internal.out(\"endobj\"),pi=this.internal.newObject(),this.internal.out(\"<<\"),this.internal.out(\"/S /JavaScript\"),this.internal.out(\"/JS (\"+mi+\")\"),this.internal.out(\">>\"),this.internal.out(\"endobj\")})),this.internal.events.subscribe(\"putCatalog\",(function(){void 0!==gi&&void 0!==pi&&this.internal.out(\"/Names <</JavaScript \"+gi+\" 0 R>>\")})),this},\n/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){var eA;tA.events.push([\"postPutResources\",function(){var tA=this,AA=/^(\\d+) 0 obj$/;if(this.outline.root.children.length>0)for(var rA=tA.outline.render().split(/\\r\\n/),nA=0;nA<rA.length;nA++){var iA=rA[nA],sA=AA.exec(iA);if(null!=sA){var oA=sA[1];tA.internal.newObjectDeferredBegin(oA,!1)}tA.internal.write(iA)}if(this.outline.createNamedDestinations){var aA=this.internal.pages.length,lA=[];for(nA=0;nA<aA;nA++){var cA=tA.internal.newObject();lA.push(cA);var uA=tA.internal.getPageInfo(nA+1);tA.internal.write(\"<< /D[\"+uA.objId+\" 0 R /XYZ null null null]>> endobj\")}var hA=tA.internal.newObject();for(tA.internal.write(\"<< /Names [ \"),nA=0;nA<lA.length;nA++)tA.internal.write(\"(page_\"+(nA+1)+\")\"+lA[nA]+\" 0 R\");tA.internal.write(\" ] >>\",\"endobj\"),eA=tA.internal.newObject(),tA.internal.write(\"<< /Dests \"+hA+\" 0 R\"),tA.internal.write(\">>\",\"endobj\")}}]),tA.events.push([\"putCatalog\",function(){this.outline.root.children.length>0&&(this.internal.write(\"/Outlines\",this.outline.makeRef(this.outline.root)),this.outline.createNamedDestinations&&this.internal.write(\"/Names \"+eA+\" 0 R\"))}]),tA.events.push([\"initialized\",function(){var tA=this;tA.outline={createNamedDestinations:!1,root:{children:[]}},tA.outline.add=function(tA,eA,AA){var rA={title:eA,options:AA,children:[]};return null==tA&&(tA=this.root),tA.children.push(rA),rA},tA.outline.render=function(){return this.ctx={},this.ctx.val=\"\",this.ctx.pdf=tA,this.genIds_r(this.root),this.renderRoot(this.root),this.renderItems(this.root),this.ctx.val},tA.outline.genIds_r=function(eA){eA.id=tA.internal.newObjectDeferred();for(var AA=0;AA<eA.children.length;AA++)this.genIds_r(eA.children[AA])},tA.outline.renderRoot=function(tA){this.objStart(tA),this.line(\"/Type /Outlines\"),tA.children.length>0&&(this.line(\"/First \"+this.makeRef(tA.children[0])),this.line(\"/Last \"+this.makeRef(tA.children[tA.children.length-1]))),this.line(\"/Count \"+this.count_r({count:0},tA)),this.objEnd()},tA.outline.renderItems=function(eA){for(var AA=this.ctx.pdf.internal.getVerticalCoordinateString,rA=0;rA<eA.children.length;rA++){var nA=eA.children[rA];this.objStart(nA),this.line(\"/Title \"+this.makeString(nA.title)),this.line(\"/Parent \"+this.makeRef(eA)),rA>0&&this.line(\"/Prev \"+this.makeRef(eA.children[rA-1])),rA<eA.children.length-1&&this.line(\"/Next \"+this.makeRef(eA.children[rA+1])),nA.children.length>0&&(this.line(\"/First \"+this.makeRef(nA.children[0])),this.line(\"/Last \"+this.makeRef(nA.children[nA.children.length-1])));var iA=this.count=this.count_r({count:0},nA);if(iA>0&&this.line(\"/Count \"+iA),nA.options&&nA.options.pageNumber){var sA=tA.internal.getPageInfo(nA.options.pageNumber);this.line(\"/Dest [\"+sA.objId+\" 0 R /XYZ 0 \"+AA(0)+\" 0]\")}this.objEnd()}for(var oA=0;oA<eA.children.length;oA++)this.renderItems(eA.children[oA])},tA.outline.line=function(tA){this.ctx.val+=tA+\"\\r\\n\"},tA.outline.makeRef=function(tA){return tA.id+\" 0 R\"},tA.outline.makeString=function(eA){return\"(\"+tA.internal.pdfEscape(eA)+\")\"},tA.outline.objStart=function(tA){this.ctx.val+=\"\\r\\n\"+tA.id+\" 0 obj\\r\\n<<\\r\\n\"},tA.outline.objEnd=function(){this.ctx.val+=\">> \\r\\nendobj\\r\\n\"},tA.outline.count_r=function(tA,eA){for(var AA=0;AA<eA.children.length;AA++)tA.count++,this.count_r(tA,eA.children[AA]);return tA.count}}])}(E.API),\n/**\n * @license\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){var eA=[192,193,194,195,196,197,198,199];tA.processJPEG=function(tA,AA,rA,nA,iA,sA){var oA,aA=this.decode.DCT_DECODE,lA=null;if(\"string\"==typeof tA||this.__addimage__.isArrayBuffer(tA)||this.__addimage__.isArrayBufferView(tA)){switch(tA=iA||tA,tA=this.__addimage__.isArrayBuffer(tA)?new Uint8Array(tA):tA,(oA=function(tA){for(var AA,rA=256*tA.charCodeAt(4)+tA.charCodeAt(5),nA=tA.length,iA={width:0,height:0,numcomponents:1},sA=4;sA<nA;sA+=2){if(sA+=rA,-1!==eA.indexOf(tA.charCodeAt(sA+1))){AA=256*tA.charCodeAt(sA+5)+tA.charCodeAt(sA+6),iA={width:256*tA.charCodeAt(sA+7)+tA.charCodeAt(sA+8),height:AA,numcomponents:tA.charCodeAt(sA+9)};break}rA=256*tA.charCodeAt(sA+2)+tA.charCodeAt(sA+3)}return iA}(tA=this.__addimage__.isArrayBufferView(tA)?this.__addimage__.arrayBufferToBinaryString(tA):tA)).numcomponents){case 1:sA=this.color_spaces.DEVICE_GRAY;break;case 4:sA=this.color_spaces.DEVICE_CMYK;break;case 3:sA=this.color_spaces.DEVICE_RGB}lA={data:tA,width:oA.width,height:oA.height,colorSpace:sA,bitsPerComponent:8,filter:aA,index:AA,alias:rA}}return lA}}(E.API);var yi,Bi,bi,vi,Ci,Si=function(){var tA,eA,AA;function a(tA){var eA,AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA;for(this.data=tA,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.animation=null,this.text={},sA=null;;){switch(eA=this.readUInt32(),lA=function(){var tA,eA;for(eA=[],tA=0;tA<4;++tA)eA.push(String.fromCharCode(this.data[this.pos++]));return eA}.call(this).join(\"\")){case\"IHDR\":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case\"acTL\":this.animation={numFrames:this.readUInt32(),numPlays:this.readUInt32()||1/0,frames:[]};break;case\"PLTE\":this.palette=this.read(eA);break;case\"fcTL\":sA&&this.animation.frames.push(sA),this.pos+=4,sA={width:this.readUInt32(),height:this.readUInt32(),xOffset:this.readUInt32(),yOffset:this.readUInt32()},iA=this.readUInt16(),nA=this.readUInt16()||100,sA.delay=1e3*iA/nA,sA.disposeOp=this.data[this.pos++],sA.blendOp=this.data[this.pos++],sA.data=[];break;case\"IDAT\":case\"fdAT\":for(\"fdAT\"===lA&&(this.pos+=4,eA-=4),tA=(null!=sA?sA.data:void 0)||this.imgData,hA=0;0<=eA?hA<eA:hA>eA;0<=eA?++hA:--hA)tA.push(this.data[this.pos++]);break;case\"tRNS\":switch(this.transparency={},this.colorType){case 3:if(rA=this.palette.length/3,this.transparency.indexed=this.read(eA),this.transparency.indexed.length>rA)throw new Error(\"More transparent colors than palette size\");if((cA=rA-this.transparency.indexed.length)>0)for(dA=0;0<=cA?dA<cA:dA>cA;0<=cA?++dA:--dA)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(eA)[0];break;case 2:this.transparency.rgb=this.read(eA)}break;case\"tEXt\":oA=(uA=this.read(eA)).indexOf(0),aA=String.fromCharCode.apply(String,uA.slice(0,oA)),this.text[aA]=String.fromCharCode.apply(String,uA.slice(oA+1));break;case\"IEND\":return sA&&this.animation.frames.push(sA),this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(fA=this.colorType)||6===fA,AA=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*AA,this.colorSpace=function(){switch(this.colors){case 1:return\"DeviceGray\";case 3:return\"DeviceRGB\"}}.call(this),void(this.imgData=new Uint8Array(this.imgData));default:this.pos+=eA}if(this.pos+=4,this.pos>this.data.length)throw new Error(\"Incomplete or corrupt PNG file\")}}a.prototype.read=function(tA){var eA,AA;for(AA=[],eA=0;0<=tA?eA<tA:eA>tA;0<=tA?++eA:--eA)AA.push(this.data[this.pos++]);return AA},a.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},a.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]},a.prototype.decodePixels=function(tA){var eA=this.pixelBitlength/8,AA=new Uint8Array(this.width*this.height*eA),rA=0,nA=this;if(null==tA&&(tA=this.imgData),0===tA.length)return new Uint8Array(0);function o(iA,sA,oA,aA){var lA,cA,uA,hA,dA,fA,gA,pA,mA,wA,yA,BA,bA,vA,CA,SA,xA,FA,EA,QA,UA,PA=Math.ceil((nA.width-iA)/oA),_A=Math.ceil((nA.height-sA)/aA),LA=nA.width==PA&&nA.height==_A;for(vA=eA*PA,BA=LA?AA:new Uint8Array(vA*_A),fA=tA.length,bA=0,cA=0;bA<_A&&rA<fA;){switch(tA[rA++]){case 0:for(hA=xA=0;xA<vA;hA=xA+=1)BA[cA++]=tA[rA++];break;case 1:for(hA=FA=0;FA<vA;hA=FA+=1)lA=tA[rA++],dA=hA<eA?0:BA[cA-eA],BA[cA++]=(lA+dA)%256;break;case 2:for(hA=EA=0;EA<vA;hA=EA+=1)lA=tA[rA++],uA=(hA-hA%eA)/eA,CA=bA&&BA[(bA-1)*vA+uA*eA+hA%eA],BA[cA++]=(CA+lA)%256;break;case 3:for(hA=QA=0;QA<vA;hA=QA+=1)lA=tA[rA++],uA=(hA-hA%eA)/eA,dA=hA<eA?0:BA[cA-eA],CA=bA&&BA[(bA-1)*vA+uA*eA+hA%eA],BA[cA++]=(lA+Math.floor((dA+CA)/2))%256;break;case 4:for(hA=UA=0;UA<vA;hA=UA+=1)lA=tA[rA++],uA=(hA-hA%eA)/eA,dA=hA<eA?0:BA[cA-eA],0===bA?CA=SA=0:(CA=BA[(bA-1)*vA+uA*eA+hA%eA],SA=uA&&BA[(bA-1)*vA+(uA-1)*eA+hA%eA]),gA=dA+CA-SA,pA=Math.abs(gA-dA),wA=Math.abs(gA-CA),yA=Math.abs(gA-SA),mA=pA<=wA&&pA<=yA?dA:wA<=yA?CA:SA,BA[cA++]=(lA+mA)%256;break;default:throw new Error(\"Invalid filter algorithm: \"+tA[rA-1])}if(!LA){var IA=((sA+bA*aA)*nA.width+iA)*eA,NA=bA*vA;for(hA=0;hA<PA;hA+=1){for(var TA=0;TA<eA;TA+=1)AA[IA++]=BA[NA++];IA+=(oA-1)*eA}}bA++}}return tA=unzlibSync(tA),1==nA.interlaceMethod?(o(0,0,8,8),o(4,0,8,8),o(0,4,4,8),o(2,0,4,4),o(0,2,2,4),o(1,0,2,2),o(0,1,1,2)):o(0,0,1,1),AA},a.prototype.decodePalette=function(){var tA,eA,AA,rA,nA,iA,sA,oA,aA;for(AA=this.palette,iA=this.transparency.indexed||[],nA=new Uint8Array((iA.length||0)+AA.length),rA=0,tA=0,eA=sA=0,oA=AA.length;sA<oA;eA=sA+=3)nA[rA++]=AA[eA],nA[rA++]=AA[eA+1],nA[rA++]=AA[eA+2],nA[rA++]=null!=(aA=iA[tA++])?aA:255;return nA},a.prototype.copyToImageData=function(tA,eA){var AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA;if(rA=this.colors,cA=null,AA=this.hasAlphaChannel,this.palette.length&&(cA=null!=(hA=this._decodedPalette)?hA:this._decodedPalette=this.decodePalette(),rA=4,AA=!0),lA=(nA=tA.data||tA).length,sA=cA||eA,iA=oA=0,1===rA)for(;iA<lA;)aA=cA?4*eA[iA/4]:oA,uA=sA[aA++],nA[iA++]=uA,nA[iA++]=uA,nA[iA++]=uA,nA[iA++]=AA?sA[aA++]:255,oA=aA;else for(;iA<lA;)aA=cA?4*eA[iA/4]:oA,nA[iA++]=sA[aA++],nA[iA++]=sA[aA++],nA[iA++]=sA[aA++],nA[iA++]=AA?sA[aA++]:255,oA=aA},a.prototype.decode=function(){var tA;return tA=new Uint8Array(this.width*this.height*4),this.copyToImageData(tA,this.decodePixels()),tA};var o=function(){if(\"[object Window]\"===Object.prototype.toString.call(Dn)){try{eA=Dn.document.createElement(\"canvas\"),AA=eA.getContext(\"2d\")}catch(tA){return!1}return!0}return!1};return o(),tA=function(tA){var rA;if(!0===o())return AA.width=tA.width,AA.height=tA.height,AA.clearRect(0,0,tA.width,tA.height),AA.putImageData(tA,0,0),(rA=new Image).src=eA.toDataURL(),rA;throw new Error(\"This method requires a Browser with Canvas-capability.\")},a.prototype.decodeFrames=function(eA){var AA,rA,nA,iA,sA,oA,aA,lA;if(this.animation){for(lA=[],rA=sA=0,oA=(aA=this.animation.frames).length;sA<oA;rA=++sA)AA=aA[rA],nA=eA.createImageData(AA.width,AA.height),iA=this.decodePixels(new Uint8Array(AA.data)),this.copyToImageData(nA,iA),AA.imageData=nA,lA.push(AA.image=tA(nA));return lA}},a.prototype.renderFrame=function(tA,eA){var AA,rA,nA;return AA=(rA=this.animation.frames)[eA],nA=rA[eA-1],0===eA&&tA.clearRect(0,0,this.width,this.height),1===(null!=nA?nA.disposeOp:void 0)?tA.clearRect(nA.xOffset,nA.yOffset,nA.width,nA.height):2===(null!=nA?nA.disposeOp:void 0)&&tA.putImageData(nA.imageData,nA.xOffset,nA.yOffset),0===AA.blendOp&&tA.clearRect(AA.xOffset,AA.yOffset,AA.width,AA.height),tA.drawImage(AA.image,AA.xOffset,AA.yOffset)},a.prototype.animate=function(tA){var eA,AA,rA,nA,iA,sA,oA=this;return AA=0,sA=this.animation,nA=sA.numFrames,rA=sA.frames,iA=sA.numPlays,(eA=function(){var sA,aA;if(sA=AA++%nA,aA=rA[sA],oA.renderFrame(tA,sA),nA>1&&AA/nA<iA)return oA.animation._timeout=setTimeout(eA,aA.delay)})()},a.prototype.stopAnimation=function(){var tA;return clearTimeout(null!=(tA=this.animation)?tA._timeout:void 0)},a.prototype.render=function(tA){var eA,AA;return tA._png&&tA._png.stopAnimation(),tA._png=this,tA.width=this.width,tA.height=this.height,eA=tA.getContext(\"2d\"),this.animation?(this.decodeFrames(eA),this.animate(eA)):(AA=eA.createImageData(this.width,this.height),this.copyToImageData(AA,this.decodePixels()),eA.putImageData(AA,0,0))},a}();\n/**\n * @license\n *\n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n/**\n * @license\n * (c) Dean McNamee <dean@gmail.com>, 2013.\n *\n * https://github.com/deanm/omggif\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n * including animation and compression. It does not rely on any specific\n * underlying system, so should run in the browser, Node, or Plask.\n */function Zt(tA){var eA=0;if(71!==tA[eA++]||73!==tA[eA++]||70!==tA[eA++]||56!==tA[eA++]||56!=(tA[eA++]+1&253)||97!==tA[eA++])throw new Error(\"Invalid GIF 87a/89a header.\");var AA=tA[eA++]|tA[eA++]<<8,rA=tA[eA++]|tA[eA++]<<8,nA=tA[eA++],iA=nA>>7,sA=1<<1+(7&nA);tA[eA++],tA[eA++];var oA=null,aA=null;iA&&(oA=eA,aA=sA,eA+=3*sA);var lA=!0,cA=[],uA=0,hA=null,dA=0,fA=null;for(this.width=AA,this.height=rA;lA&&eA<tA.length;)switch(tA[eA++]){case 33:switch(tA[eA++]){case 255:if(11!==tA[eA]||78==tA[eA+1]&&69==tA[eA+2]&&84==tA[eA+3]&&83==tA[eA+4]&&67==tA[eA+5]&&65==tA[eA+6]&&80==tA[eA+7]&&69==tA[eA+8]&&50==tA[eA+9]&&46==tA[eA+10]&&48==tA[eA+11]&&3==tA[eA+12]&&1==tA[eA+13]&&0==tA[eA+16])eA+=14,fA=tA[eA++]|tA[eA++]<<8,eA++;else for(eA+=12;;){if(!((EA=tA[eA++])>=0))throw Error(\"Invalid block size\");if(0===EA)break;eA+=EA}break;case 249:if(4!==tA[eA++]||0!==tA[eA+4])throw new Error(\"Invalid graphics extension block.\");var gA=tA[eA++];uA=tA[eA++]|tA[eA++]<<8,hA=tA[eA++],0==(1&gA)&&(hA=null),dA=gA>>2&7,eA++;break;case 254:for(;;){if(!((EA=tA[eA++])>=0))throw Error(\"Invalid block size\");if(0===EA)break;eA+=EA}break;default:throw new Error(\"Unknown graphic control label: 0x\"+tA[eA-1].toString(16))}break;case 44:var pA=tA[eA++]|tA[eA++]<<8,mA=tA[eA++]|tA[eA++]<<8,wA=tA[eA++]|tA[eA++]<<8,yA=tA[eA++]|tA[eA++]<<8,BA=tA[eA++],bA=BA>>6&1,vA=1<<1+(7&BA),CA=oA,SA=aA,xA=!1;BA>>7&&(xA=!0,CA=eA,SA=vA,eA+=3*vA);var FA=eA;for(eA++;;){var EA;if(!((EA=tA[eA++])>=0))throw Error(\"Invalid block size\");if(0===EA)break;eA+=EA}cA.push({x:pA,y:mA,width:wA,height:yA,has_local_palette:xA,palette_offset:CA,palette_size:SA,data_offset:FA,data_length:eA-FA,transparent_index:hA,interlaced:!!bA,delay:uA,disposal:dA});break;case 59:lA=!1;break;default:throw new Error(\"Unknown gif block: 0x\"+tA[eA-1].toString(16))}this.numFrames=function(){return cA.length},this.loopCount=function(){return fA},this.frameInfo=function(tA){if(tA<0||tA>=cA.length)throw new Error(\"Frame index out of range.\");return cA[tA]},this.decodeAndBlitFrameBGRA=function(eA,rA){var nA=this.frameInfo(eA),iA=nA.width*nA.height,sA=new Uint8Array(iA);$t(tA,nA.data_offset,sA,iA);var oA=nA.palette_offset,aA=nA.transparent_index;null===aA&&(aA=256);var lA=nA.width,cA=AA-lA,uA=lA,hA=4*(nA.y*AA+nA.x),dA=4*((nA.y+nA.height)*AA+nA.x),fA=hA,gA=4*cA;!0===nA.interlaced&&(gA+=4*AA*7);for(var pA=8,mA=0,wA=sA.length;mA<wA;++mA){var yA=sA[mA];if(0===uA&&(uA=lA,(fA+=gA)>=dA&&(gA=4*cA+4*AA*(pA-1),fA=hA+(lA+cA)*(pA<<1),pA>>=1)),yA===aA)fA+=4;else{var BA=tA[oA+3*yA],bA=tA[oA+3*yA+1],vA=tA[oA+3*yA+2];rA[fA++]=vA,rA[fA++]=bA,rA[fA++]=BA,rA[fA++]=255}--uA}},this.decodeAndBlitFrameRGBA=function(eA,rA){var nA=this.frameInfo(eA),iA=nA.width*nA.height,sA=new Uint8Array(iA);$t(tA,nA.data_offset,sA,iA);var oA=nA.palette_offset,aA=nA.transparent_index;null===aA&&(aA=256);var lA=nA.width,cA=AA-lA,uA=lA,hA=4*(nA.y*AA+nA.x),dA=4*((nA.y+nA.height)*AA+nA.x),fA=hA,gA=4*cA;!0===nA.interlaced&&(gA+=4*AA*7);for(var pA=8,mA=0,wA=sA.length;mA<wA;++mA){var yA=sA[mA];if(0===uA&&(uA=lA,(fA+=gA)>=dA&&(gA=4*cA+4*AA*(pA-1),fA=hA+(lA+cA)*(pA<<1),pA>>=1)),yA===aA)fA+=4;else{var BA=tA[oA+3*yA],bA=tA[oA+3*yA+1],vA=tA[oA+3*yA+2];rA[fA++]=BA,rA[fA++]=bA,rA[fA++]=vA,rA[fA++]=255}--uA}}}function $t(tA,eA,AA,rA){for(var nA=tA[eA++],iA=1<<nA,sA=iA+1,oA=sA+1,aA=nA+1,lA=(1<<aA)-1,cA=0,uA=0,hA=0,dA=tA[eA++],fA=new Int32Array(4096),gA=null;;){for(;cA<16&&0!==dA;)uA|=tA[eA++]<<cA,cA+=8,1===dA?dA=tA[eA++]:--dA;if(cA<aA)break;var pA=uA&lA;if(uA>>=aA,cA-=aA,pA!==iA){if(pA===sA)break;for(var mA=pA<oA?pA:gA,wA=0,yA=mA;yA>iA;)yA=fA[yA]>>8,++wA;var BA=yA;if(hA+wA+(mA!==pA?1:0)>rA)return void Rn.log(\"Warning, gif stream longer than expected.\");AA[hA++]=BA;var bA=hA+=wA;for(mA!==pA&&(AA[hA++]=BA),yA=mA;wA--;)yA=fA[yA],AA[--bA]=255&yA,yA>>=8;null!==gA&&oA<4096&&(fA[oA++]=gA<<8|BA,oA>=lA+1&&aA<12&&(++aA,lA=lA<<1|1)),gA=pA}else oA=sA+1,lA=(1<<(aA=nA+1))-1,gA=null}return hA!==rA&&Rn.log(\"Warning, gif stream shorter than expected.\"),AA\n/**\n * @license\n Copyright (c) 2008, Adobe Systems Incorporated\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without \n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright notice, \n this list of conditions and the following disclaimer.\n \n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the \n documentation and/or other materials provided with the distribution.\n \n * Neither the name of Adobe Systems Incorporated nor the names of its \n contributors may be used to endorse or promote products derived from \n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/}function Qt(tA){var eA,AA,rA,nA,iA,sA=Math.floor,oA=new Array(64),aA=new Array(64),lA=new Array(64),cA=new Array(64),uA=new Array(65535),hA=new Array(65535),dA=new Array(64),fA=new Array(64),gA=[],pA=0,mA=7,wA=new Array(64),yA=new Array(64),BA=new Array(64),bA=new Array(256),vA=new Array(2048),CA=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],SA=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],xA=[0,1,2,3,4,5,6,7,8,9,10,11],FA=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],EA=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],QA=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],UA=[0,1,2,3,4,5,6,7,8,9,10,11],PA=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],_A=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function j(tA,eA){for(var AA=0,rA=0,nA=new Array,iA=1;iA<=16;iA++){for(var sA=1;sA<=tA[iA];sA++)nA[eA[rA]]=[],nA[eA[rA]][0]=AA,nA[eA[rA]][1]=iA,rA++,AA++;AA*=2}return nA}function O(tA){for(var eA=tA[0],AA=tA[1]-1;AA>=0;)eA&1<<AA&&(pA|=1<<mA),AA--,--mA<0&&(255==pA?(B(255),B(0)):B(pA),mA=7,pA=0)}function B(tA){gA.push(tA)}function M(tA){B(tA>>8&255),B(255&tA)}function E(tA,eA,AA,rA,nA){for(var iA,sA=nA[0],oA=nA[240],aA=function(tA,eA){var AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA=0;for(cA=0;cA<8;++cA){AA=tA[hA],rA=tA[hA+1],nA=tA[hA+2],iA=tA[hA+3],sA=tA[hA+4],oA=tA[hA+5],aA=tA[hA+6];var fA=AA+(lA=tA[hA+7]),gA=AA-lA,pA=rA+aA,mA=rA-aA,wA=nA+oA,yA=nA-oA,BA=iA+sA,bA=iA-sA,vA=fA+BA,CA=fA-BA,SA=pA+wA,xA=pA-wA;tA[hA]=vA+SA,tA[hA+4]=vA-SA;var FA=.707106781*(xA+CA);tA[hA+2]=CA+FA,tA[hA+6]=CA-FA;var EA=.382683433*((vA=bA+yA)-(xA=mA+gA)),QA=.5411961*vA+EA,UA=1.306562965*xA+EA,PA=.707106781*(SA=yA+mA),_A=gA+PA,LA=gA-PA;tA[hA+5]=LA+QA,tA[hA+3]=LA-QA,tA[hA+1]=_A+UA,tA[hA+7]=_A-UA,hA+=8}for(hA=0,cA=0;cA<8;++cA){AA=tA[hA],rA=tA[hA+8],nA=tA[hA+16],iA=tA[hA+24],sA=tA[hA+32],oA=tA[hA+40],aA=tA[hA+48];var IA=AA+(lA=tA[hA+56]),NA=AA-lA,TA=rA+aA,kA=rA-aA,MA=nA+oA,OA=nA-oA,HA=iA+sA,DA=iA-sA,RA=IA+HA,VA=IA-HA,GA=TA+MA,jA=TA-MA;tA[hA]=RA+GA,tA[hA+32]=RA-GA;var KA=.707106781*(jA+VA);tA[hA+16]=VA+KA,tA[hA+48]=VA-KA;var qA=.382683433*((RA=DA+OA)-(jA=kA+NA)),zA=.5411961*RA+qA,XA=1.306562965*jA+qA,WA=.707106781*(GA=OA+kA),YA=NA+WA,JA=NA-WA;tA[hA+40]=JA+zA,tA[hA+24]=JA-zA,tA[hA+8]=YA+XA,tA[hA+56]=YA-XA,hA++}for(cA=0;cA<64;++cA)uA=tA[cA]*eA[cA],dA[cA]=uA>0?uA+.5|0:uA-.5|0;return dA}(tA,eA),lA=0;lA<64;++lA)fA[CA[lA]]=aA[lA];var cA=fA[0]-AA;AA=fA[0],0==cA?O(rA[0]):(O(rA[hA[iA=32767+cA]]),O(uA[iA]));for(var gA=63;gA>0&&0==fA[gA];)gA--;if(0==gA)return O(sA),AA;for(var pA,mA=1;mA<=gA;){for(var wA=mA;0==fA[mA]&&mA<=gA;)++mA;var yA=mA-wA;if(yA>=16){pA=yA>>4;for(var BA=1;BA<=pA;++BA)O(oA);yA&=15}iA=32767+fA[mA],O(nA[(yA<<4)+hA[iA]]),O(uA[iA]),mA++}return 63!=gA&&O(sA),AA}function q(tA){tA=Math.min(Math.max(tA,1),100),iA!=tA&&(function(tA){for(var eA=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],AA=0;AA<64;AA++){var rA=sA((eA[AA]*tA+50)/100);rA=Math.min(Math.max(rA,1),255),oA[CA[AA]]=rA}for(var nA=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],iA=0;iA<64;iA++){var uA=sA((nA[iA]*tA+50)/100);uA=Math.min(Math.max(uA,1),255),aA[CA[iA]]=uA}for(var hA=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],dA=0,fA=0;fA<8;fA++)for(var gA=0;gA<8;gA++)lA[dA]=1/(oA[CA[dA]]*hA[fA]*hA[gA]*8),cA[dA]=1/(aA[CA[dA]]*hA[fA]*hA[gA]*8),dA++}(tA<50?Math.floor(5e3/tA):Math.floor(200-2*tA)),iA=tA)}this.encode=function(tA,iA){iA&&q(iA),gA=new Array,pA=0,mA=7,M(65496),M(65504),M(16),B(74),B(70),B(73),B(70),B(0),B(1),B(1),B(0),M(1),M(1),B(0),B(0),function(){M(65499),M(132),B(0);for(var tA=0;tA<64;tA++)B(oA[tA]);B(1);for(var eA=0;eA<64;eA++)B(aA[eA])}(),function(tA,eA){M(65472),M(17),B(8),M(eA),M(tA),B(3),B(1),B(17),B(0),B(2),B(17),B(1),B(3),B(17),B(1)}(tA.width,tA.height),function(){M(65476),M(418),B(0);for(var tA=0;tA<16;tA++)B(SA[tA+1]);for(var eA=0;eA<=11;eA++)B(xA[eA]);B(16);for(var AA=0;AA<16;AA++)B(FA[AA+1]);for(var rA=0;rA<=161;rA++)B(EA[rA]);B(1);for(var nA=0;nA<16;nA++)B(QA[nA+1]);for(var iA=0;iA<=11;iA++)B(UA[iA]);B(17);for(var sA=0;sA<16;sA++)B(PA[sA+1]);for(var oA=0;oA<=161;oA++)B(_A[oA])}(),M(65498),M(12),B(3),B(1),B(0),B(2),B(17),B(3),B(17),B(0),B(63),B(0);var sA=0,uA=0,hA=0;pA=0,mA=7,this.encode.displayName=\"_encode_\";for(var dA,fA,bA,CA,LA,IA,NA,TA,kA,MA=tA.data,OA=tA.width,HA=tA.height,DA=4*OA,RA=0;RA<HA;){for(dA=0;dA<DA;){for(LA=DA*RA+dA,NA=-1,TA=0,kA=0;kA<64;kA++)IA=LA+(TA=kA>>3)*DA+(NA=4*(7&kA)),RA+TA>=HA&&(IA-=DA*(RA+1+TA-HA)),dA+NA>=DA&&(IA-=dA+NA-DA+4),fA=MA[IA++],bA=MA[IA++],CA=MA[IA++],wA[kA]=(vA[fA]+vA[bA+256>>0]+vA[CA+512>>0]>>16)-128,yA[kA]=(vA[fA+768>>0]+vA[bA+1024>>0]+vA[CA+1280>>0]>>16)-128,BA[kA]=(vA[fA+1280>>0]+vA[bA+1536>>0]+vA[CA+1792>>0]>>16)-128;sA=E(wA,lA,sA,eA,rA),uA=E(yA,cA,uA,AA,nA),hA=E(BA,cA,hA,AA,nA),dA+=32}RA+=8}if(mA>=0){var VA=[];VA[1]=mA+1,VA[0]=(1<<mA+1)-1,O(VA)}return M(65497),new Uint8Array(gA)},tA=tA||50,function(){for(var tA=String.fromCharCode,eA=0;eA<256;eA++)bA[eA]=tA(eA)}(),eA=j(SA,xA),AA=j(QA,UA),rA=j(FA,EA),nA=j(PA,_A),function(){for(var tA=1,eA=2,AA=1;AA<=15;AA++){for(var rA=tA;rA<eA;rA++)hA[32767+rA]=AA,uA[32767+rA]=[],uA[32767+rA][1]=AA,uA[32767+rA][0]=rA;for(var nA=-(eA-1);nA<=-tA;nA++)hA[32767+nA]=AA,uA[32767+nA]=[],uA[32767+nA][1]=AA,uA[32767+nA][0]=eA-1+nA;tA<<=1,eA<<=1}}(),function(){for(var tA=0;tA<256;tA++)vA[tA]=19595*tA,vA[tA+256>>0]=38470*tA,vA[tA+512>>0]=7471*tA+32768,vA[tA+768>>0]=-11059*tA,vA[tA+1024>>0]=-21709*tA,vA[tA+1280>>0]=32768*tA+8421375,vA[tA+1536>>0]=-27439*tA,vA[tA+1792>>0]=-5329*tA}(),q(tA)}\n/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */function te(tA,eA){if(this.pos=0,this.buffer=tA,this.datav=new DataView(tA.buffer),this.is_with_alpha=!!eA,this.bottom_up=!0,this.flag=String.fromCharCode(this.buffer[0])+String.fromCharCode(this.buffer[1]),this.pos+=2,-1===[\"BM\",\"BA\",\"CI\",\"CP\",\"IC\",\"PT\"].indexOf(this.flag))throw new Error(\"Invalid BMP File\");this.parseHeader(),this.parseBGR()}function ee(tA){function e(tA){if(!tA)throw Error(\"assert :P\")}function r(tA,eA,AA){for(var rA=0;4>rA;rA++)if(tA[eA+rA]!=AA.charCodeAt(rA))return!0;return!1}function n(tA,eA,AA,rA,nA){for(var iA=0;iA<nA;iA++)tA[eA+iA]=AA[rA+iA]}function i(tA,eA,AA,rA){for(var nA=0;nA<rA;nA++)tA[eA+nA]=AA}function a(tA){return new Int32Array(tA)}function o(tA,eA){for(var AA=[],rA=0;rA<tA;rA++)AA.push(new eA);return AA}function s(tA,eA){var AA=[];return function t(tA,AA,rA){for(var nA=rA[AA],iA=0;iA<nA&&(tA.push(rA.length>AA+1?[]:new eA),!(rA.length<AA+1));iA++)t(tA[iA],AA+1,rA)}(AA,0,tA),AA}var c=function(){var tA=this;function c(tA,eA){for(var AA=1<<eA-1>>>0;tA&AA;)AA>>>=1;return AA?(tA&AA-1)+AA:tA}function u(tA,eA,AA,rA,nA){e(!(rA%AA));do{tA[eA+(rA-=AA)]=nA}while(0<rA)}function h(tA,eA,AA,rA,nA){if(e(2328>=nA),512>=nA)var iA=a(512);else if(null==(iA=a(nA)))return 0;return function(tA,eA,AA,rA,nA,iA){var sA,oA,aA=eA,lA=1<<AA,cA=a(16),uA=a(16);for(e(0!=nA),e(null!=rA),e(null!=tA),e(0<AA),oA=0;oA<nA;++oA){if(15<rA[oA])return 0;++cA[rA[oA]]}if(cA[0]==nA)return 0;for(uA[1]=0,sA=1;15>sA;++sA){if(cA[sA]>1<<sA)return 0;uA[sA+1]=uA[sA]+cA[sA]}for(oA=0;oA<nA;++oA)sA=rA[oA],0<rA[oA]&&(iA[uA[sA]++]=oA);if(1==uA[15])return(rA=new l).g=0,rA.value=iA[0],u(tA,aA,1,lA,rA),lA;var hA,dA=-1,fA=lA-1,gA=0,pA=1,mA=1,wA=1<<AA;for(oA=0,sA=1,nA=2;sA<=AA;++sA,nA<<=1){if(pA+=mA<<=1,0>(mA-=cA[sA]))return 0;for(;0<cA[sA];--cA[sA])(rA=new l).g=sA,rA.value=iA[oA++],u(tA,aA+gA,nA,wA,rA),gA=c(gA,sA)}for(sA=AA+1,nA=2;15>=sA;++sA,nA<<=1){if(pA+=mA<<=1,0>(mA-=cA[sA]))return 0;for(;0<cA[sA];--cA[sA]){if(rA=new l,(gA&fA)!=dA){for(aA+=wA,hA=1<<(dA=sA)-AA;15>dA&&!(0>=(hA-=cA[dA]));)++dA,hA<<=1;lA+=wA=1<<(hA=dA-AA),tA[eA+(dA=gA&fA)].g=hA+AA,tA[eA+dA].value=aA-eA-dA}rA.g=sA-AA,rA.value=iA[oA++],u(tA,aA+(gA>>AA),nA,wA,rA),gA=c(gA,sA)}}return pA!=2*uA[15]-1?0:lA}(tA,eA,AA,rA,nA,iA)}function l(){this.value=this.g=0}function f(){this.value=this.g=0}function d(){this.G=o(5,l),this.H=a(5),this.jc=this.Qb=this.qb=this.nd=0,this.pd=o(eA,f)}function p(tA,eA,AA,rA){e(null!=tA),e(null!=eA),e(2147483648>rA),tA.Ca=254,tA.I=0,tA.b=-8,tA.Ka=0,tA.oa=eA,tA.pa=AA,tA.Jd=eA,tA.Yc=AA+rA,tA.Zc=4<=rA?AA+rA-4+1:AA,_(tA)}function g(tA,eA){for(var AA=0;0<eA--;)AA|=k(tA,128)<<eA;return AA}function m(tA,eA){var AA=g(tA,eA);return P(tA)?-AA:AA}function v(tA,eA,AA,rA){var nA,iA=0;for(e(null!=tA),e(null!=eA),e(4294967288>rA),tA.Sb=rA,tA.Ra=0,tA.u=0,tA.h=0,4<rA&&(rA=4),nA=0;nA<rA;++nA)iA+=eA[AA+nA]<<8*nA;tA.Ra=iA,tA.bb=rA,tA.oa=eA,tA.pa=AA}function b(tA){for(;8<=tA.u&&tA.bb<tA.Sb;)tA.Ra>>>=8,tA.Ra+=tA.oa[tA.pa+tA.bb]<<nA-8>>>0,++tA.bb,tA.u-=8;A(tA)&&(tA.h=1,tA.u=0)}function y(tA,eA){if(e(0<=eA),!tA.h&&eA<=rA){var nA=L(tA)&AA[eA];return tA.u+=eA,b(tA),nA}return tA.h=1,tA.u=0}function w(){this.b=this.Ca=this.I=0,this.oa=[],this.pa=0,this.Jd=[],this.Yc=0,this.Zc=[],this.Ka=0}function N(){this.Ra=0,this.oa=[],this.h=this.u=this.bb=this.Sb=this.pa=0}function L(tA){return tA.Ra>>>(tA.u&nA-1)>>>0}function A(tA){return e(tA.bb<=tA.Sb),tA.h||tA.bb==tA.Sb&&tA.u>nA}function x(tA,eA){tA.u=eA,tA.h=A(tA)}function S(tA){tA.u>=iA&&(e(tA.u>=iA),b(tA))}function _(tA){e(null!=tA&&null!=tA.oa),tA.pa<tA.Zc?(tA.I=(tA.oa[tA.pa++]|tA.I<<8)>>>0,tA.b+=8):(e(null!=tA&&null!=tA.oa),tA.pa<tA.Yc?(tA.b+=8,tA.I=tA.oa[tA.pa++]|tA.I<<8):tA.Ka?tA.b=0:(tA.I<<=8,tA.b+=8,tA.Ka=1))}function P(tA){return g(tA,1)}function k(tA,eA){var AA=tA.Ca;0>tA.b&&_(tA);var rA=tA.b,nA=AA*eA>>>8,iA=(tA.I>>>rA>nA)+0;for(iA?(AA-=nA,tA.I-=nA+1<<rA>>>0):AA=nA+1,rA=AA,nA=0;256<=rA;)nA+=8,rA>>=8;return rA=7^nA+sA[rA],tA.b-=rA,tA.Ca=(AA<<rA)-1,iA}function I(tA,eA,AA){tA[eA+0]=AA>>24&255,tA[eA+1]=AA>>16&255,tA[eA+2]=AA>>8&255,tA[eA+3]=AA>>0&255}function F(tA,eA){return tA[eA+0]<<0|tA[eA+1]<<8}function C(tA,eA){return F(tA,eA)|tA[eA+2]<<16}function j(tA,eA){return F(tA,eA)|F(tA,eA+2)<<16}function O(tA,eA){var AA=1<<eA;return e(null!=tA),e(0<eA),tA.X=a(AA),null==tA.X?0:(tA.Mb=32-eA,tA.Xa=eA,1)}function B(tA,eA){e(null!=tA),e(null!=eA),e(tA.Xa==eA.Xa),n(eA.X,0,tA.X,0,1<<eA.Xa)}function M(){this.X=[],this.Xa=this.Mb=0}function E(tA,eA,AA,rA){e(null!=AA),e(null!=rA);var nA=AA[0],iA=rA[0];return 0==nA&&(nA=(tA*iA+eA/2)/eA),0==iA&&(iA=(eA*nA+tA/2)/tA),0>=nA||0>=iA?0:(AA[0]=nA,rA[0]=iA,1)}function q(tA,eA){return tA+(1<<eA)-1>>>eA}function D(tA,eA){return((4278255360&tA)+(4278255360&eA)>>>0&4278255360)+((16711935&tA)+(16711935&eA)>>>0&16711935)>>>0}function R(eA,AA){tA[AA]=function(AA,rA,nA,iA,sA,oA,aA){var lA;for(lA=0;lA<sA;++lA){var cA=tA[eA](oA[aA+lA-1],nA,iA+lA);oA[aA+lA]=D(AA[rA+lA],cA)}}}function T(){this.ud=this.hd=this.jd=0}function U(tA,eA){return((4278124286&(tA^eA))>>>1)+(tA&eA)>>>0}function z(tA){return 0<=tA&&256>tA?tA:0>tA?0:255<tA?255:void 0}function H(tA,eA){return z(tA+(tA-eA+.5>>1))}function W(tA,eA,AA){return Math.abs(eA-AA)-Math.abs(tA-AA)}function V(tA,eA,AA,rA,nA,iA,sA){for(rA=iA[sA-1],AA=0;AA<nA;++AA)iA[sA+AA]=rA=D(tA[eA+AA],rA)}function G(tA,eA,AA,rA,nA){var iA;for(iA=0;iA<AA;++iA){var sA=tA[eA+iA],oA=sA>>8&255,aA=16711935&(aA=(aA=16711935&sA)+((oA<<16)+oA));rA[nA+iA]=(4278255360&sA)+aA>>>0}}function Y(tA,eA){eA.jd=tA>>0&255,eA.hd=tA>>8&255,eA.ud=tA>>16&255}function J(tA,eA,AA,rA,nA,iA){var sA;for(sA=0;sA<rA;++sA){var oA=eA[AA+sA],aA=oA>>>8,lA=oA,cA=255&(cA=(cA=oA>>>16)+((tA.jd<<24>>24)*(aA<<24>>24)>>>5));lA=255&(lA=(lA+=(tA.hd<<24>>24)*(aA<<24>>24)>>>5)+((tA.ud<<24>>24)*(cA<<24>>24)>>>5)),nA[iA+sA]=(4278255360&oA)+(cA<<16)+lA}}function X(eA,AA,rA,nA,iA){tA[AA]=function(tA,eA,AA,rA,sA,oA,aA,lA,cA){for(rA=aA;rA<lA;++rA)for(aA=0;aA<cA;++aA)sA[oA++]=iA(AA[nA(tA[eA++])])},tA[eA]=function(eA,AA,sA,oA,aA,lA,cA){var uA=8>>eA.b,hA=eA.Ea,dA=eA.K[0],fA=eA.w;if(8>uA)for(eA=(1<<eA.b)-1,fA=(1<<uA)-1;AA<sA;++AA){var gA,pA=0;for(gA=0;gA<hA;++gA)gA&eA||(pA=nA(oA[aA++])),lA[cA++]=iA(dA[pA&fA]),pA>>=uA}else tA[\"VP8LMapColor\"+rA](oA,aA,dA,fA,lA,cA,AA,sA,hA)}}function K(tA,eA,AA,rA,nA){for(AA=eA+AA;eA<AA;){var iA=tA[eA++];rA[nA++]=iA>>16&255,rA[nA++]=iA>>8&255,rA[nA++]=iA>>0&255}}function Z(tA,eA,AA,rA,nA){for(AA=eA+AA;eA<AA;){var iA=tA[eA++];rA[nA++]=iA>>16&255,rA[nA++]=iA>>8&255,rA[nA++]=iA>>0&255,rA[nA++]=iA>>24&255}}function $(tA,eA,AA,rA,nA){for(AA=eA+AA;eA<AA;){var iA=(sA=tA[eA++])>>16&240|sA>>12&15,sA=sA>>0&240|sA>>28&15;rA[nA++]=iA,rA[nA++]=sA}}function Q(tA,eA,AA,rA,nA){for(AA=eA+AA;eA<AA;){var iA=(sA=tA[eA++])>>16&248|sA>>13&7,sA=sA>>5&224|sA>>3&31;rA[nA++]=iA,rA[nA++]=sA}}function tt(tA,eA,AA,rA,nA){for(AA=eA+AA;eA<AA;){var iA=tA[eA++];rA[nA++]=iA>>0&255,rA[nA++]=iA>>8&255,rA[nA++]=iA>>16&255}}function et(tA,eA,AA,rA,nA,iA){if(0==iA)for(AA=eA+AA;eA<AA;)I(rA,((iA=tA[eA++])[0]>>24|iA[1]>>8&65280|iA[2]<<8&16711680|iA[3]<<24)>>>0),nA+=32;else n(rA,nA,tA,eA,AA)}function rt(eA,AA){tA[AA][0]=tA[eA+\"0\"],tA[AA][1]=tA[eA+\"1\"],tA[AA][2]=tA[eA+\"2\"],tA[AA][3]=tA[eA+\"3\"],tA[AA][4]=tA[eA+\"4\"],tA[AA][5]=tA[eA+\"5\"],tA[AA][6]=tA[eA+\"6\"],tA[AA][7]=tA[eA+\"7\"],tA[AA][8]=tA[eA+\"8\"],tA[AA][9]=tA[eA+\"9\"],tA[AA][10]=tA[eA+\"10\"],tA[AA][11]=tA[eA+\"11\"],tA[AA][12]=tA[eA+\"12\"],tA[AA][13]=tA[eA+\"13\"],tA[AA][14]=tA[eA+\"0\"],tA[AA][15]=tA[eA+\"0\"]}function nt(tA){return tA==Rr||tA==Vr||tA==Gr||tA==Kr}function it(){this.eb=[],this.size=this.A=this.fb=0}function at(){this.y=[],this.f=[],this.ea=[],this.F=[],this.Tc=this.Ed=this.Cd=this.Fd=this.lb=this.Db=this.Ab=this.fa=this.J=this.W=this.N=this.O=0}function ot(){this.Rd=this.height=this.width=this.S=0,this.f={},this.f.RGBA=new it,this.f.kb=new at,this.sd=null}function st(){this.width=[0],this.height=[0],this.Pd=[0],this.Qd=[0],this.format=[0]}function ct(){this.Id=this.fd=this.Md=this.hb=this.ib=this.da=this.bd=this.cd=this.j=this.v=this.Da=this.Sd=this.ob=0}function ut(tA){return alert(\"todo:WebPSamplerProcessPlane\"),tA.T}function ht(tA,eA){var AA=tA.T,rA=eA.ba.f.RGBA,nA=rA.eb,iA=rA.fb+tA.ka*rA.A,sA=yn[eA.ba.S],oA=tA.y,aA=tA.O,lA=tA.f,cA=tA.N,uA=tA.ea,hA=tA.W,dA=eA.cc,fA=eA.dc,gA=eA.Mc,pA=eA.Nc,mA=tA.ka,wA=tA.ka+tA.T,yA=tA.U,BA=yA+1>>1;for(0==mA?sA(oA,aA,null,null,lA,cA,uA,hA,lA,cA,uA,hA,nA,iA,null,null,yA):(sA(eA.ec,eA.fc,oA,aA,dA,fA,gA,pA,lA,cA,uA,hA,nA,iA-rA.A,nA,iA,yA),++AA);mA+2<wA;mA+=2)dA=lA,fA=cA,gA=uA,pA=hA,cA+=tA.Rc,hA+=tA.Rc,iA+=2*rA.A,sA(oA,(aA+=2*tA.fa)-tA.fa,oA,aA,dA,fA,gA,pA,lA,cA,uA,hA,nA,iA-rA.A,nA,iA,yA);return aA+=tA.fa,tA.j+wA<tA.o?(n(eA.ec,eA.fc,oA,aA,yA),n(eA.cc,eA.dc,lA,cA,BA),n(eA.Mc,eA.Nc,uA,hA,BA),AA--):1&wA||sA(oA,aA,null,null,lA,cA,uA,hA,lA,cA,uA,hA,nA,iA+rA.A,null,null,yA),AA}function lt(tA,eA,AA){var rA=tA.F,nA=[tA.J];if(null!=rA){var iA=tA.U,sA=eA.ba.S,oA=sA==Tr||sA==Gr;eA=eA.ba.f.RGBA;var aA=[0],lA=tA.ka;aA[0]=tA.T,tA.Kb&&(0==lA?--aA[0]:(--lA,nA[0]-=tA.width),tA.j+tA.ka+tA.T==tA.o&&(aA[0]=tA.o-tA.j-lA));var cA=eA.eb;lA=eA.fb+lA*eA.A,tA=RA(rA,nA[0],tA.width,iA,aA,cA,lA+(oA?0:3),eA.A),e(AA==aA),tA&&nt(sA)&&HA(cA,lA,oA,iA,aA,eA.A)}return 0}function ft(tA){var eA=tA.ma,AA=eA.ba.S,rA=11>AA,nA=AA==$A||AA==Ur||AA==Tr||AA==Hr||12==AA||nt(AA);if(eA.memory=null,eA.Ib=null,eA.Jb=null,eA.Nd=null,!Mr(eA.Oa,tA,nA?11:12))return 0;if(nA&&nt(AA)&&br(),tA.da)alert(\"todo:use_scaling\");else{if(rA){if(eA.Ib=ut,tA.Kb){if(AA=tA.U+1>>1,eA.memory=a(tA.U+2*AA),null==eA.memory)return 0;eA.ec=eA.memory,eA.fc=0,eA.cc=eA.ec,eA.dc=eA.fc+tA.U,eA.Mc=eA.cc,eA.Nc=eA.dc+AA,eA.Ib=ht,br()}}else alert(\"todo:EmitYUV\");nA&&(eA.Jb=lt,rA&&mr())}if(rA&&!In){for(tA=0;256>tA;++tA)Nn[tA]=89858*(tA-128)+Qn>>En,Mn[tA]=-22014*(tA-128)+Qn,kn[tA]=-45773*(tA-128),Tn[tA]=113618*(tA-128)+Qn>>En;for(tA=Un;tA<Pn;++tA)eA=76283*(tA-16)+Qn>>En,On[tA-Un]=Vt(eA,255),Hn[tA-Un]=Vt(eA+8>>4,15);In=1}return 1}function dt(tA){var eA=tA.ma,AA=tA.U,rA=tA.T;return e(!(1&tA.ka)),0>=AA||0>=rA?0:(AA=eA.Ib(tA,eA),null!=eA.Jb&&eA.Jb(tA,eA,AA),eA.Dc+=AA,1)}function pt(tA){tA.ma.memory=null}function gt(tA,eA,AA,rA){return 47!=y(tA,8)?0:(eA[0]=y(tA,14)+1,AA[0]=y(tA,14)+1,rA[0]=y(tA,1),0!=y(tA,3)?0:!tA.h)}function mt(tA,eA){if(4>tA)return tA+1;var AA=tA-2>>1;return(2+(1&tA)<<AA)+y(eA,AA)+1}function vt(tA,eA){return 120<eA?eA-120:1<=(AA=((AA=Zr[eA-1])>>4)*tA+(8-(15&AA)))?AA:1;var AA}function bt(tA,eA,AA){var rA=L(AA),nA=tA[eA+=255&rA].g-8;return 0<nA&&(x(AA,AA.u+8),rA=L(AA),eA+=tA[eA].value,eA+=rA&(1<<nA)-1),x(AA,AA.u+tA[eA].g),tA[eA].value}function yt(tA,eA,AA){return AA.g+=tA.g,AA.value+=tA.value<<eA>>>0,e(8>=AA.g),tA.g}function wt(tA,eA,AA){var rA=tA.xc;return e((eA=0==rA?0:tA.vc[tA.md*(AA>>rA)+(eA>>rA)])<tA.Wb),tA.Ya[eA]}function Nt(tA,eA,AA,rA){var nA=tA.ab,iA=tA.c*eA,sA=tA.C;eA=sA+eA;var uA=AA,hA=rA;for(rA=tA.Ta,AA=tA.Ua;0<nA--;){var dA=tA.gc[nA],pA=sA,mA=eA,wA=uA,yA=hA,BA=(hA=rA,uA=AA,dA.Ea);switch(e(pA<mA),e(mA<=dA.nc),dA.hc){case 2:lA(wA,yA,(mA-pA)*BA,hA,uA);break;case 0:var bA=pA,vA=mA,CA=hA,SA=uA,xA=(PA=dA).Ea;0==bA&&(oA(wA,yA,null,null,1,CA,SA),V(wA,yA+1,0,0,xA-1,CA,SA+1),yA+=xA,SA+=xA,++bA);for(var FA=1<<PA.b,EA=FA-1,QA=q(xA,PA.b),UA=PA.K,PA=PA.w+(bA>>PA.b)*QA;bA<vA;){var _A=UA,LA=PA,IA=1;for(aA(wA,yA,CA,SA-xA,1,CA,SA);IA<xA;){var NA=(IA&~EA)+FA;NA>xA&&(NA=xA),(0,fA[_A[LA++]>>8&15])(wA,yA+ +IA,CA,SA+IA-xA,NA-IA,CA,SA+IA),IA=NA}yA+=xA,SA+=xA,++bA&EA||(PA+=QA)}mA!=dA.nc&&n(hA,uA-BA,hA,uA+(mA-pA-1)*BA,BA);break;case 1:for(BA=wA,vA=yA,xA=(wA=dA.Ea)-(SA=wA&~(CA=(yA=1<<dA.b)-1)),bA=q(wA,dA.b),FA=dA.K,dA=dA.w+(pA>>dA.b)*bA;pA<mA;){for(EA=FA,QA=dA,UA=new T,PA=vA+SA,_A=vA+wA;vA<PA;)Y(EA[QA++],UA),gA(UA,BA,vA,yA,hA,uA),vA+=yA,uA+=yA;vA<_A&&(Y(EA[QA++],UA),gA(UA,BA,vA,xA,hA,uA),vA+=xA,uA+=xA),++pA&CA||(dA+=bA)}break;case 3:if(wA==hA&&yA==uA&&0<dA.b){for(vA=hA,wA=BA=uA+(mA-pA)*BA-(SA=(mA-pA)*q(dA.Ea,dA.b)),yA=hA,CA=uA,bA=[],SA=(xA=SA)-1;0<=SA;--SA)bA[SA]=yA[CA+SA];for(SA=xA-1;0<=SA;--SA)vA[wA+SA]=bA[SA];cA(dA,pA,mA,hA,BA,hA,uA)}else cA(dA,pA,mA,wA,yA,hA,uA)}uA=rA,hA=AA}hA!=AA&&n(rA,AA,uA,hA,iA)}function Lt(tA,eA){var AA=tA.V,rA=tA.Ba+tA.c*tA.C,nA=eA-tA.C;if(e(eA<=tA.l.o),e(16>=nA),0<nA){var iA=tA.l,sA=tA.Ta,oA=tA.Ua,aA=iA.width;if(Nt(tA,nA,AA,rA),nA=oA=[oA],e((AA=tA.C)<(rA=eA)),e(iA.v<iA.va),rA>iA.o&&(rA=iA.o),AA<iA.j){var lA=iA.j-AA;AA=iA.j,nA[0]+=lA*aA}if(AA>=rA?AA=0:(nA[0]+=4*iA.v,iA.ka=AA-iA.j,iA.U=iA.va-iA.v,iA.T=rA-AA,AA=1),AA){if(oA=oA[0],11>(AA=tA.ca).S){var cA=AA.f.RGBA,uA=(rA=AA.S,nA=iA.U,iA=iA.T,lA=cA.eb,cA.A),hA=iA;for(cA=cA.fb+tA.Ma*cA.A;0<hA--;){var dA=sA,fA=oA,gA=nA,bA=lA,vA=cA;switch(rA){case ZA:pA(dA,fA,gA,bA,vA);break;case $A:mA(dA,fA,gA,bA,vA);break;case Rr:mA(dA,fA,gA,bA,vA),HA(bA,vA,0,gA,1,0);break;case Qr:BA(dA,fA,gA,bA,vA);break;case Ur:et(dA,fA,gA,bA,vA,1);break;case Vr:et(dA,fA,gA,bA,vA,1),HA(bA,vA,0,gA,1,0);break;case Tr:et(dA,fA,gA,bA,vA,0);break;case Gr:et(dA,fA,gA,bA,vA,0),HA(bA,vA,1,gA,1,0);break;case Hr:wA(dA,fA,gA,bA,vA);break;case Kr:wA(dA,fA,gA,bA,vA),DA(bA,vA,gA,1,0);break;case Dr:yA(dA,fA,gA,bA,vA);break;default:e(0)}oA+=aA,cA+=uA}tA.Ma+=iA}else alert(\"todo:EmitRescaledRowsYUVA\");e(tA.Ma<=AA.height)}}tA.C=eA,e(tA.C<=tA.i)}function At(tA){var eA;if(0<tA.ua)return 0;for(eA=0;eA<tA.Wb;++eA){var AA=tA.Ya[eA].G,rA=tA.Ya[eA].H;if(0<AA[1][rA[1]+0].g||0<AA[2][rA[2]+0].g||0<AA[3][rA[3]+0].g)return 0}return 1}function xt(tA,eA,AA,rA,nA,iA){if(0!=tA.Z){var sA=tA.qd,oA=tA.rd;for(e(null!=wn[tA.Z]);eA<AA;++eA)wn[tA.Z](sA,oA,rA,nA,rA,nA,iA),sA=rA,oA=nA,nA+=iA;tA.qd=sA,tA.rd=oA}}function St(tA,eA){var AA=tA.l.ma,rA=0==AA.Z||1==AA.Z?tA.l.j:tA.C;if(rA=tA.C<rA?rA:tA.C,e(eA<=tA.l.o),eA>rA){var nA=tA.l.width,iA=AA.ca,sA=AA.tb+nA*rA,oA=tA.V,aA=tA.Ba+tA.c*rA,lA=tA.gc;e(1==tA.ab),e(3==lA[0].hc),hA(lA[0],rA,eA,oA,aA,iA,sA),xt(AA,rA,eA,iA,sA,nA)}tA.C=tA.Ma=eA}function _t(tA,AA,rA,nA,iA,sA,oA){var aA=tA.$/nA,lA=tA.$%nA,cA=tA.m,uA=tA.s,hA=rA+tA.$,dA=hA;iA=rA+nA*iA;var fA=rA+nA*sA,gA=280+uA.ua,pA=tA.Pb?aA:16777216,mA=0<uA.ua?uA.Wa:null,wA=uA.wc,yA=hA<fA?wt(uA,lA,aA):null;e(tA.C<sA),e(fA<=iA);var BA=!1;t:for(;;){for(;BA||hA<fA;){var bA=0;if(aA>=pA){var vA=hA-rA;e((pA=tA).Pb),pA.wd=pA.m,pA.xd=vA,0<pA.s.ua&&B(pA.s.Wa,pA.s.vb),pA=aA+tn}if(lA&wA||(yA=wt(uA,lA,aA)),e(null!=yA),yA.Qb&&(AA[hA]=yA.qb,BA=!0),!BA)if(S(cA),yA.jc){bA=cA,vA=AA;var CA=hA,SA=yA.pd[L(bA)&eA-1];e(yA.jc),256>SA.g?(x(bA,bA.u+SA.g),vA[CA]=SA.value,bA=0):(x(bA,bA.u+SA.g-256),e(256<=SA.value),bA=SA.value),0==bA&&(BA=!0)}else bA=bt(yA.G[0],yA.H[0],cA);if(cA.h)break;if(BA||256>bA){if(!BA)if(yA.nd)AA[hA]=(yA.qb|bA<<8)>>>0;else{if(S(cA),BA=bt(yA.G[1],yA.H[1],cA),S(cA),vA=bt(yA.G[2],yA.H[2],cA),CA=bt(yA.G[3],yA.H[3],cA),cA.h)break;AA[hA]=(CA<<24|BA<<16|bA<<8|vA)>>>0}if(BA=!1,++hA,++lA>=nA&&(lA=0,++aA,null!=oA&&aA<=sA&&!(aA%16)&&oA(tA,aA),null!=mA))for(;dA<hA;)bA=AA[dA++],mA.X[(506832829*bA&4294967295)>>>mA.Mb]=bA}else if(280>bA){if(bA=mt(bA-256,cA),vA=bt(yA.G[4],yA.H[4],cA),S(cA),vA=vt(nA,vA=mt(vA,cA)),cA.h)break;if(hA-rA<vA||iA-hA<bA)break t;for(CA=0;CA<bA;++CA)AA[hA+CA]=AA[hA+CA-vA];for(hA+=bA,lA+=bA;lA>=nA;)lA-=nA,++aA,null!=oA&&aA<=sA&&!(aA%16)&&oA(tA,aA);if(e(hA<=iA),lA&wA&&(yA=wt(uA,lA,aA)),null!=mA)for(;dA<hA;)bA=AA[dA++],mA.X[(506832829*bA&4294967295)>>>mA.Mb]=bA}else{if(!(bA<gA))break t;for(BA=bA-280,e(null!=mA);dA<hA;)bA=AA[dA++],mA.X[(506832829*bA&4294967295)>>>mA.Mb]=bA;bA=hA,e(!(BA>>>(vA=mA).Xa)),AA[bA]=vA.X[BA],BA=!0}BA||e(cA.h==A(cA))}if(tA.Pb&&cA.h&&hA<iA)e(tA.m.h),tA.a=5,tA.m=tA.wd,tA.$=tA.xd,0<tA.s.ua&&B(tA.s.vb,tA.s.Wa);else{if(cA.h)break t;null!=oA&&oA(tA,aA>sA?sA:aA),tA.a=0,tA.$=hA-rA}return 1}return tA.a=3,0}function Pt(tA){e(null!=tA),tA.vc=null,tA.yc=null,tA.Ya=null;var eA=tA.Wa;null!=eA&&(eA.X=null),tA.vb=null,e(null!=tA)}function kt(){var eA=new or;return null==eA?null:(eA.a=0,eA.xb=mn,rt(\"Predictor\",\"VP8LPredictors\"),rt(\"Predictor\",\"VP8LPredictors_C\"),rt(\"PredictorAdd\",\"VP8LPredictorsAdd\"),rt(\"PredictorAdd\",\"VP8LPredictorsAdd_C\"),lA=G,gA=J,pA=K,mA=Z,wA=$,yA=Q,BA=tt,tA.VP8LMapColor32b=uA,tA.VP8LMapColor8b=dA,eA)}function It(tA,AA,rA,nA,iA){var sA=1,oA=[tA],aA=[AA],lA=nA.m,cA=nA.s,uA=null,hA=0;t:for(;;){if(rA)for(;sA&&y(lA,1);){var dA=oA,fA=aA,gA=nA,pA=1,mA=gA.m,wA=gA.gc[gA.ab],yA=y(mA,2);if(gA.Oc&1<<yA)sA=0;else{switch(gA.Oc|=1<<yA,wA.hc=yA,wA.Ea=dA[0],wA.nc=fA[0],wA.K=[null],++gA.ab,e(4>=gA.ab),yA){case 0:case 1:wA.b=y(mA,3)+2,pA=It(q(wA.Ea,wA.b),q(wA.nc,wA.b),0,gA,wA.K),wA.K=wA.K[0];break;case 3:var BA,bA=y(mA,8)+1,vA=16<bA?0:4<bA?1:2<bA?2:3;if(dA[0]=q(wA.Ea,vA),wA.b=vA,BA=pA=It(bA,1,0,gA,wA.K)){var CA,SA=bA,xA=wA,FA=1<<(8>>xA.b),EA=a(FA);if(null==EA)BA=0;else{var QA=xA.K[0],UA=xA.w;for(EA[0]=xA.K[0][0],CA=1;CA<1*SA;++CA)EA[CA]=D(QA[UA+CA],EA[CA-1]);for(;CA<4*FA;++CA)EA[CA]=0;xA.K[0]=null,xA.K[0]=EA,BA=1}}pA=BA;break;case 2:break;default:e(0)}sA=pA}}if(oA=oA[0],aA=aA[0],sA&&y(lA,1)&&!(sA=1<=(hA=y(lA,4))&&11>=hA)){nA.a=3;break t}var PA;if(PA=sA)e:{var _A,LA,IA,NA=nA,TA=oA,kA=aA,MA=hA,OA=rA,HA=NA.m,DA=NA.s,RA=[null],VA=1,GA=0,jA=$r[MA];A:for(;;){if(OA&&y(HA,1)){var KA=y(HA,3)+2,qA=q(TA,KA),zA=q(kA,KA),XA=qA*zA;if(!It(qA,zA,0,NA,RA))break A;for(RA=RA[0],DA.xc=KA,_A=0;_A<XA;++_A){var WA=RA[_A]>>8&65535;RA[_A]=WA,WA>=VA&&(VA=WA+1)}}if(HA.h)break A;for(LA=0;5>LA;++LA){var YA=Wr[LA];!LA&&0<MA&&(YA+=1<<MA),GA<YA&&(GA=YA)}var JA=o(VA*jA,l),ZA=VA,$A=o(ZA,d);if(null==$A)var Qr=null;else e(65536>=ZA),Qr=$A;var Ur=a(GA);if(null==Qr||null==Ur||null==JA){NA.a=1;break A}var Tr=JA;for(_A=IA=0;_A<VA;++_A){var Hr=Qr[_A],Dr=Hr.G,Rr=Hr.H,Vr=0,Gr=1,Kr=0;for(LA=0;5>LA;++LA){YA=Wr[LA],Dr[LA]=Tr,Rr[LA]=IA,!LA&&0<MA&&(YA+=1<<MA);r:{var Zr,tn=YA,en=NA,An=Ur,rn=Tr,nn=IA,sn=0,on=en.m,an=y(on,1);if(i(An,0,0,tn),an){var cn=y(on,1)+1,un=y(on,1),hn=y(on,0==un?1:8);An[hn]=1,2==cn&&(An[hn=y(on,8)]=1);var dn=1}else{var fn=a(19),gn=y(on,4)+4;if(19<gn){en.a=3;var mn=0;break r}for(Zr=0;Zr<gn;++Zr)fn[Jr[Zr]]=y(on,3);var wn=void 0,yn=void 0,Bn=en,bn=fn,vn=tn,Cn=An,Sn=0,xn=Bn.m,Fn=8,En=o(128,l);n:for(;h(En,0,7,bn,19);){if(y(xn,1)){var Qn=2+2*y(xn,3);if((wn=2+y(xn,Qn))>vn)break n}else wn=vn;for(yn=0;yn<vn&&wn--;){S(xn);var Un=En[0+(127&L(xn))];x(xn,xn.u+Un.g);var Pn=Un.value;if(16>Pn)Cn[yn++]=Pn,0!=Pn&&(Fn=Pn);else{var _n=16==Pn,Ln=Pn-16,In=Xr[Ln],Nn=y(xn,zr[Ln])+In;if(yn+Nn>vn)break n;for(var Tn=_n?Fn:0;0<Nn--;)Cn[yn++]=Tn}}Sn=1;break n}Sn||(Bn.a=3),dn=Sn}(dn=dn&&!on.h)&&(sn=h(rn,nn,8,An,tn)),dn&&0!=sn?mn=sn:(en.a=3,mn=0)}if(0==mn)break A;if(Gr&&1==Yr[LA]&&(Gr=0==Tr[IA].g),Vr+=Tr[IA].g,IA+=mn,3>=LA){var kn,Mn=Ur[0];for(kn=1;kn<YA;++kn)Ur[kn]>Mn&&(Mn=Ur[kn]);Kr+=Mn}}if(Hr.nd=Gr,Hr.Qb=0,Gr&&(Hr.qb=(Dr[3][Rr[3]+0].value<<24|Dr[1][Rr[1]+0].value<<16|Dr[2][Rr[2]+0].value)>>>0,0==Vr&&256>Dr[0][Rr[0]+0].value&&(Hr.Qb=1,Hr.qb+=Dr[0][Rr[0]+0].value<<8)),Hr.jc=!Hr.Qb&&6>Kr,Hr.jc){var On,Hn=Hr;for(On=0;On<eA;++On){var Dn=On,Rn=Hn.pd[Dn],Vn=Hn.G[0][Hn.H[0]+Dn];256<=Vn.value?(Rn.g=Vn.g+256,Rn.value=Vn.value):(Rn.g=0,Rn.value=0,Dn>>=yt(Vn,8,Rn),Dn>>=yt(Hn.G[1][Hn.H[1]+Dn],16,Rn),Dn>>=yt(Hn.G[2][Hn.H[2]+Dn],0,Rn),yt(Hn.G[3][Hn.H[3]+Dn],24,Rn))}}}DA.vc=RA,DA.Wb=VA,DA.Ya=Qr,DA.yc=JA,PA=1;break e}PA=0}if(!(sA=PA)){nA.a=3;break t}if(0<hA){if(cA.ua=1<<hA,!O(cA.Wa,hA)){nA.a=1,sA=0;break t}}else cA.ua=0;var Gn=nA,jn=oA,Kn=aA,qn=Gn.s,zn=qn.xc;if(Gn.c=jn,Gn.i=Kn,qn.md=q(jn,zn),qn.wc=0==zn?-1:(1<<zn)-1,rA){nA.xb=pn;break t}if(null==(uA=a(oA*aA))){nA.a=1,sA=0;break t}sA=(sA=_t(nA,uA,0,oA,aA,aA,null))&&!lA.h;break t}return sA?(null!=iA?iA[0]=uA:(e(null==uA),e(rA)),nA.$=0,rA||Pt(cA)):Pt(cA),sA}function Ft(tA,eA){var AA=tA.c*tA.i,rA=AA+eA+16*eA;return e(tA.c<=eA),tA.V=a(rA),null==tA.V?(tA.Ta=null,tA.Ua=0,tA.a=1,0):(tA.Ta=tA.V,tA.Ua=tA.Ba+AA+eA,1)}function Ct(tA,eA){var AA=tA.C,rA=eA-AA,nA=tA.V,iA=tA.Ba+tA.c*AA;for(e(eA<=tA.l.o);0<rA;){var sA=16<rA?16:rA,oA=tA.l.ma,aA=tA.l.width,lA=aA*sA,cA=oA.ca,uA=oA.tb+aA*AA,hA=tA.Ta,dA=tA.Ua;Nt(tA,sA,nA,iA),VA(hA,dA,cA,uA,lA),xt(oA,AA,AA+sA,cA,uA,aA),rA-=sA,nA+=sA*tA.c,AA+=sA}e(AA==eA),tA.C=tA.Ma=eA}function jt(){this.ub=this.yd=this.td=this.Rb=0}function Ot(){this.Kd=this.Ld=this.Ud=this.Td=this.i=this.c=0}function Bt(){this.Fb=this.Bb=this.Cb=0,this.Zb=a(4),this.Lb=a(4)}function Mt(){this.Yb=function(){var tA=[];return function t(tA,eA,AA){for(var rA=AA[eA],nA=0;nA<rA&&(tA.push(AA.length>eA+1?[]:0),!(AA.length<eA+1));nA++)t(tA[nA],eA+1,AA)}(tA,0,[3,11]),tA}()}function Et(){this.jb=a(3),this.Wc=s([4,8],Mt),this.Xc=s([4,17],Mt)}function qt(){this.Pc=this.wb=this.Tb=this.zd=0,this.vd=new a(4),this.od=new a(4)}function Dt(){this.ld=this.La=this.dd=this.tc=0}function Rt(){this.Na=this.la=0}function Tt(){this.Sc=[0,0],this.Eb=[0,0],this.Qc=[0,0],this.ia=this.lc=0}function Ut(){this.ad=a(384),this.Za=0,this.Ob=a(16),this.$b=this.Ad=this.ia=this.Gc=this.Hc=this.Dd=0}function zt(){this.uc=this.M=this.Nb=0,this.wa=Array(new Dt),this.Y=0,this.ya=Array(new Ut),this.aa=0,this.l=new Gt}function Ht(){this.y=a(16),this.f=a(8),this.ea=a(8)}function Wt(){this.cb=this.a=0,this.sc=\"\",this.m=new w,this.Od=new jt,this.Kc=new Ot,this.ed=new qt,this.Qa=new Bt,this.Ic=this.$c=this.Aa=0,this.D=new zt,this.Xb=this.Va=this.Hb=this.zb=this.yb=this.Ub=this.za=0,this.Jc=o(8,w),this.ia=0,this.pb=o(4,Tt),this.Pa=new Et,this.Bd=this.kc=0,this.Ac=[],this.Bc=0,this.zc=[0,0,0,0],this.Gd=Array(new Ht),this.Hd=0,this.rb=Array(new Rt),this.sb=0,this.wa=Array(new Dt),this.Y=0,this.oc=[],this.pc=0,this.sa=[],this.ta=0,this.qa=[],this.ra=0,this.Ha=[],this.B=this.R=this.Ia=0,this.Ec=[],this.M=this.ja=this.Vb=this.Fc=0,this.ya=Array(new Ut),this.L=this.aa=0,this.gd=s([4,2],Dt),this.ga=null,this.Fa=[],this.Cc=this.qc=this.P=0,this.Gb=[],this.Uc=0,this.mb=[],this.nb=0,this.rc=[],this.Ga=this.Vc=0}function Vt(tA,eA){return 0>tA?0:tA>eA?eA:tA}function Gt(){this.T=this.U=this.ka=this.height=this.width=0,this.y=[],this.f=[],this.ea=[],this.Rc=this.fa=this.W=this.N=this.O=0,this.ma=\"void\",this.put=\"VP8IoPutHook\",this.ac=\"VP8IoSetupHook\",this.bc=\"VP8IoTeardownHook\",this.ha=this.Kb=0,this.data=[],this.hb=this.ib=this.da=this.o=this.j=this.va=this.v=this.Da=this.ob=this.w=0,this.F=[],this.J=0}function Yt(){var tA=new Wt;return null!=tA&&(tA.a=0,tA.sc=\"OK\",tA.cb=0,tA.Xb=0,rn||(rn=Zt)),tA}function Jt(tA,eA,AA){return 0==tA.a&&(tA.a=eA,tA.sc=AA,tA.cb=0),0}function Xt(tA,eA,AA){return 3<=AA&&157==tA[eA+0]&&1==tA[eA+1]&&42==tA[eA+2]}function Kt(tA,eA){if(null==tA)return 0;if(tA.a=0,tA.sc=\"OK\",null==eA)return Jt(tA,2,\"null VP8Io passed to VP8GetHeaders()\");var AA=eA.data,rA=eA.w,nA=eA.ha;if(4>nA)return Jt(tA,7,\"Truncated header.\");var iA=AA[rA+0]|AA[rA+1]<<8|AA[rA+2]<<16,sA=tA.Od;if(sA.Rb=!(1&iA),sA.td=iA>>1&7,sA.yd=iA>>4&1,sA.ub=iA>>5,3<sA.td)return Jt(tA,3,\"Incorrect keyframe parameters.\");if(!sA.yd)return Jt(tA,4,\"Frame not displayable.\");rA+=3,nA-=3;var oA=tA.Kc;if(sA.Rb){if(7>nA)return Jt(tA,7,\"cannot parse picture header\");if(!Xt(AA,rA,nA))return Jt(tA,3,\"Bad code word\");oA.c=16383&(AA[rA+4]<<8|AA[rA+3]),oA.Td=AA[rA+4]>>6,oA.i=16383&(AA[rA+6]<<8|AA[rA+5]),oA.Ud=AA[rA+6]>>6,rA+=7,nA-=7,tA.za=oA.c+15>>4,tA.Ub=oA.i+15>>4,eA.width=oA.c,eA.height=oA.i,eA.Da=0,eA.j=0,eA.v=0,eA.va=eA.width,eA.o=eA.height,eA.da=0,eA.ib=eA.width,eA.hb=eA.height,eA.U=eA.width,eA.T=eA.height,i((iA=tA.Pa).jb,0,255,iA.jb.length),e(null!=(iA=tA.Qa)),iA.Cb=0,iA.Bb=0,iA.Fb=1,i(iA.Zb,0,0,iA.Zb.length),i(iA.Lb,0,0,iA.Lb)}if(sA.ub>nA)return Jt(tA,7,\"bad partition length\");p(iA=tA.m,AA,rA,sA.ub),rA+=sA.ub,nA-=sA.ub,sA.Rb&&(oA.Ld=P(iA),oA.Kd=P(iA)),oA=tA.Qa;var aA,lA=tA.Pa;if(e(null!=iA),e(null!=oA),oA.Cb=P(iA),oA.Cb){if(oA.Bb=P(iA),P(iA)){for(oA.Fb=P(iA),aA=0;4>aA;++aA)oA.Zb[aA]=P(iA)?m(iA,7):0;for(aA=0;4>aA;++aA)oA.Lb[aA]=P(iA)?m(iA,6):0}if(oA.Bb)for(aA=0;3>aA;++aA)lA.jb[aA]=P(iA)?g(iA,8):255}else oA.Bb=0;if(iA.Ka)return Jt(tA,3,\"cannot parse segment header\");if((oA=tA.ed).zd=P(iA),oA.Tb=g(iA,6),oA.wb=g(iA,3),oA.Pc=P(iA),oA.Pc&&P(iA)){for(lA=0;4>lA;++lA)P(iA)&&(oA.vd[lA]=m(iA,6));for(lA=0;4>lA;++lA)P(iA)&&(oA.od[lA]=m(iA,6))}if(tA.L=0==oA.Tb?0:oA.zd?1:2,iA.Ka)return Jt(tA,3,\"cannot parse filter header\");var cA=nA;if(nA=aA=rA,rA=aA+cA,oA=cA,tA.Xb=(1<<g(tA.m,2))-1,cA<3*(lA=tA.Xb))AA=7;else{for(aA+=3*lA,oA-=3*lA,cA=0;cA<lA;++cA){var uA=AA[nA+0]|AA[nA+1]<<8|AA[nA+2]<<16;uA>oA&&(uA=oA),p(tA.Jc[+cA],AA,aA,uA),aA+=uA,oA-=uA,nA+=3}p(tA.Jc[+lA],AA,aA,oA),AA=aA<rA?0:5}if(0!=AA)return Jt(tA,AA,\"cannot parse partitions\");for(AA=g(aA=tA.m,7),nA=P(aA)?m(aA,4):0,rA=P(aA)?m(aA,4):0,oA=P(aA)?m(aA,4):0,lA=P(aA)?m(aA,4):0,aA=P(aA)?m(aA,4):0,cA=tA.Qa,uA=0;4>uA;++uA){if(cA.Cb){var hA=cA.Zb[uA];cA.Fb||(hA+=AA)}else{if(0<uA){tA.pb[uA]=tA.pb[0];continue}hA=AA}var dA=tA.pb[uA];dA.Sc[0]=en[Vt(hA+nA,127)],dA.Sc[1]=An[Vt(hA+0,127)],dA.Eb[0]=2*en[Vt(hA+rA,127)],dA.Eb[1]=101581*An[Vt(hA+oA,127)]>>16,8>dA.Eb[1]&&(dA.Eb[1]=8),dA.Qc[0]=en[Vt(hA+lA,117)],dA.Qc[1]=An[Vt(hA+aA,127)],dA.lc=hA+aA}if(!sA.Rb)return Jt(tA,4,\"Not a key frame.\");for(P(iA),sA=tA.Pa,AA=0;4>AA;++AA){for(nA=0;8>nA;++nA)for(rA=0;3>rA;++rA)for(oA=0;11>oA;++oA)lA=k(iA,un[AA][nA][rA][oA])?g(iA,8):an[AA][nA][rA][oA],sA.Wc[AA][nA].Yb[rA][oA]=lA;for(nA=0;17>nA;++nA)sA.Xc[AA][nA]=sA.Wc[AA][hn[nA]]}return tA.kc=P(iA),tA.kc&&(tA.Bd=g(iA,8)),tA.cb=1}function Zt(tA,eA,AA,rA,nA,iA,sA){var oA=eA[nA].Yb[AA];for(AA=0;16>nA;++nA){if(!k(tA,oA[AA+0]))return nA;for(;!k(tA,oA[AA+1]);)if(oA=eA[++nA].Yb[0],AA=0,16==nA)return 16;var aA=eA[nA+1].Yb;if(k(tA,oA[AA+2])){var lA=tA,cA=0;if(k(lA,(hA=oA)[(uA=AA)+3]))if(k(lA,hA[uA+6])){for(oA=0,uA=2*(cA=k(lA,hA[uA+8]))+(hA=k(lA,hA[uA+9+cA])),cA=0,hA=nn[uA];hA[oA];++oA)cA+=cA+k(lA,hA[oA]);cA+=3+(8<<uA)}else k(lA,hA[uA+7])?(cA=7+2*k(lA,165),cA+=k(lA,145)):cA=5+k(lA,159);else cA=k(lA,hA[uA+4])?3+k(lA,hA[uA+5]):2;oA=aA[2]}else cA=1,oA=aA[1];aA=sA+sn[nA],0>(lA=tA).b&&_(lA);var uA,hA=lA.b,dA=(uA=lA.Ca>>1)-(lA.I>>hA)>>31;--lA.b,lA.Ca+=dA,lA.Ca|=1,lA.I-=(uA+1&dA)<<hA,iA[aA]=((cA^dA)-dA)*rA[(0<nA)+0]}return 16}function $t(tA){var eA=tA.rb[tA.sb-1];eA.la=0,eA.Na=0,i(tA.zc,0,0,tA.zc.length),tA.ja=0}function Qt(tA,eA){if(null==tA)return 0;if(null==eA)return Jt(tA,2,\"NULL VP8Io parameter in VP8Decode().\");if(!tA.cb&&!Kt(tA,eA))return 0;if(e(tA.cb),null==eA.ac||eA.ac(eA)){eA.ob&&(tA.L=0);var AA=Rn[tA.L];if(2==tA.L?(tA.yb=0,tA.zb=0):(tA.yb=eA.v-AA>>4,tA.zb=eA.j-AA>>4,0>tA.yb&&(tA.yb=0),0>tA.zb&&(tA.zb=0)),tA.Va=eA.o+15+AA>>4,tA.Hb=eA.va+15+AA>>4,tA.Hb>tA.za&&(tA.Hb=tA.za),tA.Va>tA.Ub&&(tA.Va=tA.Ub),0<tA.L){var rA=tA.ed;for(AA=0;4>AA;++AA){var nA;if(tA.Qa.Cb){var iA=tA.Qa.Lb[AA];tA.Qa.Fb||(iA+=rA.Tb)}else iA=rA.Tb;for(nA=0;1>=nA;++nA){var sA=tA.gd[AA][nA],oA=iA;if(rA.Pc&&(oA+=rA.vd[0],nA&&(oA+=rA.od[0])),0<(oA=0>oA?0:63<oA?63:oA)){var aA=oA;0<rA.wb&&(aA=4<rA.wb?aA>>2:aA>>1)>9-rA.wb&&(aA=9-rA.wb),1>aA&&(aA=1),sA.dd=aA,sA.tc=2*oA+aA,sA.ld=40<=oA?2:15<=oA?1:0}else sA.tc=0;sA.La=nA}}}AA=0}else Jt(tA,6,\"Frame setup failed\"),AA=tA.a;if(AA=0==AA){if(AA){tA.$c=0,0<tA.Aa||(tA.Ic=Gn);t:{AA=tA.Ic,rA=4*(aA=tA.za);var lA=32*aA,cA=aA+1,uA=0<tA.L?aA*(0<tA.Aa?2:1):0,hA=(2==tA.Aa?2:1)*aA;if((sA=rA+832+(nA=3*(16*AA+Rn[tA.L])/2*lA)+(iA=null!=tA.Fa&&0<tA.Fa.length?tA.Kc.c*tA.Kc.i:0))!=sA)AA=0;else{if(sA>tA.Vb){if(tA.Vb=0,tA.Ec=a(sA),tA.Fc=0,null==tA.Ec){AA=Jt(tA,1,\"no memory during frame initialization.\");break t}tA.Vb=sA}sA=tA.Ec,oA=tA.Fc,tA.Ac=sA,tA.Bc=oA,oA+=rA,tA.Gd=o(lA,Ht),tA.Hd=0,tA.rb=o(cA+1,Rt),tA.sb=1,tA.wa=uA?o(uA,Dt):null,tA.Y=0,tA.D.Nb=0,tA.D.wa=tA.wa,tA.D.Y=tA.Y,0<tA.Aa&&(tA.D.Y+=aA),e(!0),tA.oc=sA,tA.pc=oA,oA+=832,tA.ya=o(hA,Ut),tA.aa=0,tA.D.ya=tA.ya,tA.D.aa=tA.aa,2==tA.Aa&&(tA.D.aa+=aA),tA.R=16*aA,tA.B=8*aA,aA=(lA=Rn[tA.L])*tA.R,lA=lA/2*tA.B,tA.sa=sA,tA.ta=oA+aA,tA.qa=tA.sa,tA.ra=tA.ta+16*AA*tA.R+lA,tA.Ha=tA.qa,tA.Ia=tA.ra+8*AA*tA.B+lA,tA.$c=0,oA+=nA,tA.mb=iA?sA:null,tA.nb=iA?oA:null,e(oA+iA<=tA.Fc+tA.Vb),$t(tA),i(tA.Ac,tA.Bc,0,rA),AA=1}}if(AA){if(eA.ka=0,eA.y=tA.sa,eA.O=tA.ta,eA.f=tA.qa,eA.N=tA.ra,eA.ea=tA.Ha,eA.Vd=tA.Ia,eA.fa=tA.R,eA.Rc=tA.B,eA.F=null,eA.J=0,!zA){for(AA=-255;255>=AA;++AA)GA[255+AA]=0>AA?-AA:AA;for(AA=-1020;1020>=AA;++AA)jA[1020+AA]=-128>AA?-128:127<AA?127:AA;for(AA=-112;112>=AA;++AA)KA[112+AA]=-16>AA?-16:15<AA?15:AA;for(AA=-255;510>=AA;++AA)qA[255+AA]=0>AA?0:255<AA?255:AA;zA=1}bA=ue,vA=ae,SA=oe,xA=se,FA=ce,CA=ie,EA=Je,QA=Xe,UA=$e,PA=Qe,_A=Ke,LA=Ze,IA=tr,NA=er,TA=ze,kA=He,MA=We,OA=Ve,fn[0]=xe,fn[1]=le,fn[2]=Le,fn[3]=Ae,fn[4]=Se,fn[5]=Pe,fn[6]=_e,fn[7]=ke,fn[8]=Fe,fn[9]=Ie,dn[0]=ve,dn[1]=de,dn[2]=pe,dn[3]=ge,dn[4]=be,dn[5]=ye,dn[6]=we,gn[0]=Be,gn[1]=fe,gn[2]=Ce,gn[3]=je,gn[4]=Ee,gn[5]=Me,gn[6]=qe,AA=1}else AA=0}AA&&(AA=function(tA,eA){for(tA.M=0;tA.M<tA.Va;++tA.M){var AA,rA=tA.Jc[tA.M&tA.Xb],nA=tA.m,iA=tA;for(AA=0;AA<iA.za;++AA){var sA=nA,oA=iA,aA=oA.Ac,lA=oA.Bc+4*AA,cA=oA.zc,uA=oA.ya[oA.aa+AA];if(oA.Qa.Bb?uA.$b=k(sA,oA.Pa.jb[0])?2+k(sA,oA.Pa.jb[2]):k(sA,oA.Pa.jb[1]):uA.$b=0,oA.kc&&(uA.Ad=k(sA,oA.Bd)),uA.Za=!k(sA,145)+0,uA.Za){var hA=uA.Ob,dA=0;for(oA=0;4>oA;++oA){var fA,gA=cA[0+oA];for(fA=0;4>fA;++fA){gA=cn[aA[lA+fA]][gA];for(var pA=on[k(sA,gA[0])];0<pA;)pA=on[2*pA+k(sA,gA[pA])];gA=-pA,aA[lA+fA]=gA}n(hA,dA,aA,lA,4),dA+=4,cA[0+oA]=gA}}else gA=k(sA,156)?k(sA,128)?1:3:k(sA,163)?2:0,uA.Ob[0]=gA,i(aA,lA,gA,4),i(cA,0,gA,4);uA.Dd=k(sA,142)?k(sA,114)?k(sA,183)?1:3:2:0}if(iA.m.Ka)return Jt(tA,7,\"Premature end-of-partition0 encountered.\");for(;tA.ja<tA.za;++tA.ja){if(iA=rA,sA=(nA=tA).rb[nA.sb-1],aA=nA.rb[nA.sb+nA.ja],AA=nA.ya[nA.aa+nA.ja],lA=nA.kc?AA.Ad:0)sA.la=aA.la=0,AA.Za||(sA.Na=aA.Na=0),AA.Hc=0,AA.Gc=0,AA.ia=0;else{var mA,wA;if(sA=aA,aA=iA,lA=nA.Pa.Xc,cA=nA.ya[nA.aa+nA.ja],uA=nA.pb[cA.$b],oA=cA.ad,hA=0,dA=nA.rb[nA.sb-1],gA=fA=0,i(oA,hA,0,384),cA.Za)var yA=0,BA=lA[3];else{pA=a(16);var vA=sA.Na+dA.Na;if(vA=rn(aA,lA[1],vA,uA.Eb,0,pA,0),sA.Na=dA.Na=(0<vA)+0,1<vA)bA(pA,0,oA,hA);else{var CA=pA[0]+3>>3;for(pA=0;256>pA;pA+=16)oA[hA+pA]=CA}yA=1,BA=lA[0]}var SA=15&sA.la,xA=15&dA.la;for(pA=0;4>pA;++pA){var FA=1&xA;for(CA=wA=0;4>CA;++CA)SA=SA>>1|(FA=(vA=rn(aA,BA,vA=FA+(1&SA),uA.Sc,yA,oA,hA))>yA)<<7,wA=wA<<2|(3<vA?3:1<vA?2:0!=oA[hA+0]),hA+=16;SA>>=4,xA=xA>>1|FA<<7,fA=(fA<<8|wA)>>>0}for(BA=SA,yA=xA>>4,mA=0;4>mA;mA+=2){for(wA=0,SA=sA.la>>4+mA,xA=dA.la>>4+mA,pA=0;2>pA;++pA){for(FA=1&xA,CA=0;2>CA;++CA)vA=FA+(1&SA),SA=SA>>1|(FA=0<(vA=rn(aA,lA[2],vA,uA.Qc,0,oA,hA)))<<3,wA=wA<<2|(3<vA?3:1<vA?2:0!=oA[hA+0]),hA+=16;SA>>=2,xA=xA>>1|FA<<5}gA|=wA<<4*mA,BA|=SA<<4<<mA,yA|=(240&xA)<<mA}sA.la=BA,dA.la=yA,cA.Hc=fA,cA.Gc=gA,cA.ia=43690&gA?0:uA.ia,lA=!(fA|gA)}if(0<nA.L&&(nA.wa[nA.Y+nA.ja]=nA.gd[AA.$b][AA.Za],nA.wa[nA.Y+nA.ja].La|=!lA),iA.Ka)return Jt(tA,7,\"Premature end-of-file encountered.\")}if($t(tA),nA=eA,iA=1,AA=(rA=tA).D,sA=0<rA.L&&rA.M>=rA.zb&&rA.M<=rA.Va,0==rA.Aa)t:{if(AA.M=rA.M,AA.uc=sA,Or(rA,AA),iA=1,AA=(wA=rA.D).Nb,sA=(gA=Rn[rA.L])*rA.R,aA=gA/2*rA.B,pA=16*AA*rA.R,CA=8*AA*rA.B,lA=rA.sa,cA=rA.ta-sA+pA,uA=rA.qa,oA=rA.ra-aA+CA,hA=rA.Ha,dA=rA.Ia-aA+CA,xA=0==(SA=wA.M),fA=SA>=rA.Va-1,2==rA.Aa&&Or(rA,wA),wA.uc)for(FA=(vA=rA).D.M,e(vA.D.uc),wA=vA.yb;wA<vA.Hb;++wA){yA=wA,BA=FA;var HA=(DA=(WA=vA).D).Nb;mA=WA.R;var DA=DA.wa[DA.Y+yA],RA=WA.sa,VA=WA.ta+16*HA*mA+16*yA,GA=DA.dd,jA=DA.tc;if(0!=jA)if(e(3<=jA),1==WA.L)0<yA&&kA(RA,VA,mA,jA+4),DA.La&&OA(RA,VA,mA,jA),0<BA&&TA(RA,VA,mA,jA+4),DA.La&&MA(RA,VA,mA,jA);else{var KA=WA.B,qA=WA.qa,zA=WA.ra+8*HA*KA+8*yA,XA=WA.Ha,WA=WA.Ia+8*HA*KA+8*yA;HA=DA.ld,0<yA&&(QA(RA,VA,mA,jA+4,GA,HA),PA(qA,zA,XA,WA,KA,jA+4,GA,HA)),DA.La&&(LA(RA,VA,mA,jA,GA,HA),NA(qA,zA,XA,WA,KA,jA,GA,HA)),0<BA&&(EA(RA,VA,mA,jA+4,GA,HA),UA(qA,zA,XA,WA,KA,jA+4,GA,HA)),DA.La&&(_A(RA,VA,mA,jA,GA,HA),IA(qA,zA,XA,WA,KA,jA,GA,HA))}}if(rA.ia&&alert(\"todo:DitherRow\"),null!=nA.put){if(wA=16*SA,SA=16*(SA+1),xA?(nA.y=rA.sa,nA.O=rA.ta+pA,nA.f=rA.qa,nA.N=rA.ra+CA,nA.ea=rA.Ha,nA.W=rA.Ia+CA):(wA-=gA,nA.y=lA,nA.O=cA,nA.f=uA,nA.N=oA,nA.ea=hA,nA.W=dA),fA||(SA-=gA),SA>nA.o&&(SA=nA.o),nA.F=null,nA.J=null,null!=rA.Fa&&0<rA.Fa.length&&wA<SA&&(nA.J=lr(rA,nA,wA,SA-wA),nA.F=rA.mb,null==nA.F&&0==nA.F.length)){iA=Jt(rA,3,\"Could not decode alpha data.\");break t}wA<nA.j&&(gA=nA.j-wA,wA=nA.j,e(!(1&gA)),nA.O+=rA.R*gA,nA.N+=rA.B*(gA>>1),nA.W+=rA.B*(gA>>1),null!=nA.F&&(nA.J+=nA.width*gA)),wA<SA&&(nA.O+=nA.v,nA.N+=nA.v>>1,nA.W+=nA.v>>1,null!=nA.F&&(nA.J+=nA.v),nA.ka=wA-nA.j,nA.U=nA.va-nA.v,nA.T=SA-wA,iA=nA.put(nA))}AA+1!=rA.Ic||fA||(n(rA.sa,rA.ta-sA,lA,cA+16*rA.R,sA),n(rA.qa,rA.ra-aA,uA,oA+8*rA.B,aA),n(rA.Ha,rA.Ia-aA,hA,dA+8*rA.B,aA))}if(!iA)return Jt(tA,6,\"Output aborted.\")}return 1}(tA,eA)),null!=eA.bc&&eA.bc(eA),AA&=1}return AA?(tA.cb=0,AA):0}function te(tA,eA,AA,rA,nA){nA=tA[eA+AA+32*rA]+(nA>>3),tA[eA+AA+32*rA]=-256&nA?0>nA?0:255:nA}function ee(tA,eA,AA,rA,nA,iA){te(tA,eA,0,AA,rA+nA),te(tA,eA,1,AA,rA+iA),te(tA,eA,2,AA,rA-iA),te(tA,eA,3,AA,rA-nA)}function re(tA){return(20091*tA>>16)+tA}function ne(tA,eA,AA,rA){var nA,iA=0,sA=a(16);for(nA=0;4>nA;++nA){var oA=tA[eA+0]+tA[eA+8],aA=tA[eA+0]-tA[eA+8],lA=(35468*tA[eA+4]>>16)-re(tA[eA+12]),cA=re(tA[eA+4])+(35468*tA[eA+12]>>16);sA[iA+0]=oA+cA,sA[iA+1]=aA+lA,sA[iA+2]=aA-lA,sA[iA+3]=oA-cA,iA+=4,eA++}for(nA=iA=0;4>nA;++nA)oA=(tA=sA[iA+0]+4)+sA[iA+8],aA=tA-sA[iA+8],lA=(35468*sA[iA+4]>>16)-re(sA[iA+12]),te(AA,rA,0,0,oA+(cA=re(sA[iA+4])+(35468*sA[iA+12]>>16))),te(AA,rA,1,0,aA+lA),te(AA,rA,2,0,aA-lA),te(AA,rA,3,0,oA-cA),iA++,rA+=32}function ie(tA,eA,AA,rA){var nA=tA[eA+0]+4,iA=35468*tA[eA+4]>>16,sA=re(tA[eA+4]),oA=35468*tA[eA+1]>>16;ee(AA,rA,0,nA+sA,tA=re(tA[eA+1]),oA),ee(AA,rA,1,nA+iA,tA,oA),ee(AA,rA,2,nA-iA,tA,oA),ee(AA,rA,3,nA-sA,tA,oA)}function ae(tA,eA,AA,rA,nA){ne(tA,eA,AA,rA),nA&&ne(tA,eA+16,AA,rA+4)}function oe(tA,eA,AA,rA){vA(tA,eA+0,AA,rA,1),vA(tA,eA+32,AA,rA+128,1)}function se(tA,eA,AA,rA){var nA;for(tA=tA[eA+0]+4,nA=0;4>nA;++nA)for(eA=0;4>eA;++eA)te(AA,rA,eA,nA,tA)}function ce(tA,eA,AA,rA){tA[eA+0]&&xA(tA,eA+0,AA,rA),tA[eA+16]&&xA(tA,eA+16,AA,rA+4),tA[eA+32]&&xA(tA,eA+32,AA,rA+128),tA[eA+48]&&xA(tA,eA+48,AA,rA+128+4)}function ue(tA,eA,AA,rA){var nA,iA=a(16);for(nA=0;4>nA;++nA){var sA=tA[eA+0+nA]+tA[eA+12+nA],oA=tA[eA+4+nA]+tA[eA+8+nA],aA=tA[eA+4+nA]-tA[eA+8+nA],lA=tA[eA+0+nA]-tA[eA+12+nA];iA[0+nA]=sA+oA,iA[8+nA]=sA-oA,iA[4+nA]=lA+aA,iA[12+nA]=lA-aA}for(nA=0;4>nA;++nA)sA=(tA=iA[0+4*nA]+3)+iA[3+4*nA],oA=iA[1+4*nA]+iA[2+4*nA],aA=iA[1+4*nA]-iA[2+4*nA],lA=tA-iA[3+4*nA],AA[rA+0]=sA+oA>>3,AA[rA+16]=lA+aA>>3,AA[rA+32]=sA-oA>>3,AA[rA+48]=lA-aA>>3,rA+=64}function he(tA,eA,AA){var rA,nA=eA-32,iA=YA,sA=255-tA[nA-1];for(rA=0;rA<AA;++rA){var oA,aA=iA,lA=sA+tA[eA-1];for(oA=0;oA<AA;++oA)tA[eA+oA]=aA[lA+tA[nA+oA]];eA+=32}}function le(tA,eA){he(tA,eA,4)}function fe(tA,eA){he(tA,eA,8)}function de(tA,eA){he(tA,eA,16)}function pe(tA,eA){var AA;for(AA=0;16>AA;++AA)n(tA,eA+32*AA,tA,eA-32,16)}function ge(tA,eA){var AA;for(AA=16;0<AA;--AA)i(tA,eA,tA[eA-1],16),eA+=32}function me(tA,eA,AA){var rA;for(rA=0;16>rA;++rA)i(eA,AA+32*rA,tA,16)}function ve(tA,eA){var AA,rA=16;for(AA=0;16>AA;++AA)rA+=tA[eA-1+32*AA]+tA[eA+AA-32];me(rA>>5,tA,eA)}function be(tA,eA){var AA,rA=8;for(AA=0;16>AA;++AA)rA+=tA[eA-1+32*AA];me(rA>>4,tA,eA)}function ye(tA,eA){var AA,rA=8;for(AA=0;16>AA;++AA)rA+=tA[eA+AA-32];me(rA>>4,tA,eA)}function we(tA,eA){me(128,tA,eA)}function Ne(tA,eA,AA){return tA+2*eA+AA+2>>2}function Le(tA,eA){var AA,rA=eA-32;for(rA=new Uint8Array([Ne(tA[rA-1],tA[rA+0],tA[rA+1]),Ne(tA[rA+0],tA[rA+1],tA[rA+2]),Ne(tA[rA+1],tA[rA+2],tA[rA+3]),Ne(tA[rA+2],tA[rA+3],tA[rA+4])]),AA=0;4>AA;++AA)n(tA,eA+32*AA,rA,0,rA.length)}function Ae(tA,eA){var AA=tA[eA-1],rA=tA[eA-1+32],nA=tA[eA-1+64],iA=tA[eA-1+96];I(tA,eA+0,16843009*Ne(tA[eA-1-32],AA,rA)),I(tA,eA+32,16843009*Ne(AA,rA,nA)),I(tA,eA+64,16843009*Ne(rA,nA,iA)),I(tA,eA+96,16843009*Ne(nA,iA,iA))}function xe(tA,eA){var AA,rA=4;for(AA=0;4>AA;++AA)rA+=tA[eA+AA-32]+tA[eA-1+32*AA];for(rA>>=3,AA=0;4>AA;++AA)i(tA,eA+32*AA,rA,4)}function Se(tA,eA){var AA=tA[eA-1+0],rA=tA[eA-1+32],nA=tA[eA-1+64],iA=tA[eA-1-32],sA=tA[eA+0-32],oA=tA[eA+1-32],aA=tA[eA+2-32],lA=tA[eA+3-32];tA[eA+0+96]=Ne(rA,nA,tA[eA-1+96]),tA[eA+1+96]=tA[eA+0+64]=Ne(AA,rA,nA),tA[eA+2+96]=tA[eA+1+64]=tA[eA+0+32]=Ne(iA,AA,rA),tA[eA+3+96]=tA[eA+2+64]=tA[eA+1+32]=tA[eA+0+0]=Ne(sA,iA,AA),tA[eA+3+64]=tA[eA+2+32]=tA[eA+1+0]=Ne(oA,sA,iA),tA[eA+3+32]=tA[eA+2+0]=Ne(aA,oA,sA),tA[eA+3+0]=Ne(lA,aA,oA)}function _e(tA,eA){var AA=tA[eA+1-32],rA=tA[eA+2-32],nA=tA[eA+3-32],iA=tA[eA+4-32],sA=tA[eA+5-32],oA=tA[eA+6-32],aA=tA[eA+7-32];tA[eA+0+0]=Ne(tA[eA+0-32],AA,rA),tA[eA+1+0]=tA[eA+0+32]=Ne(AA,rA,nA),tA[eA+2+0]=tA[eA+1+32]=tA[eA+0+64]=Ne(rA,nA,iA),tA[eA+3+0]=tA[eA+2+32]=tA[eA+1+64]=tA[eA+0+96]=Ne(nA,iA,sA),tA[eA+3+32]=tA[eA+2+64]=tA[eA+1+96]=Ne(iA,sA,oA),tA[eA+3+64]=tA[eA+2+96]=Ne(sA,oA,aA),tA[eA+3+96]=Ne(oA,aA,aA)}function Pe(tA,eA){var AA=tA[eA-1+0],rA=tA[eA-1+32],nA=tA[eA-1+64],iA=tA[eA-1-32],sA=tA[eA+0-32],oA=tA[eA+1-32],aA=tA[eA+2-32],lA=tA[eA+3-32];tA[eA+0+0]=tA[eA+1+64]=iA+sA+1>>1,tA[eA+1+0]=tA[eA+2+64]=sA+oA+1>>1,tA[eA+2+0]=tA[eA+3+64]=oA+aA+1>>1,tA[eA+3+0]=aA+lA+1>>1,tA[eA+0+96]=Ne(nA,rA,AA),tA[eA+0+64]=Ne(rA,AA,iA),tA[eA+0+32]=tA[eA+1+96]=Ne(AA,iA,sA),tA[eA+1+32]=tA[eA+2+96]=Ne(iA,sA,oA),tA[eA+2+32]=tA[eA+3+96]=Ne(sA,oA,aA),tA[eA+3+32]=Ne(oA,aA,lA)}function ke(tA,eA){var AA=tA[eA+0-32],rA=tA[eA+1-32],nA=tA[eA+2-32],iA=tA[eA+3-32],sA=tA[eA+4-32],oA=tA[eA+5-32],aA=tA[eA+6-32],lA=tA[eA+7-32];tA[eA+0+0]=AA+rA+1>>1,tA[eA+1+0]=tA[eA+0+64]=rA+nA+1>>1,tA[eA+2+0]=tA[eA+1+64]=nA+iA+1>>1,tA[eA+3+0]=tA[eA+2+64]=iA+sA+1>>1,tA[eA+0+32]=Ne(AA,rA,nA),tA[eA+1+32]=tA[eA+0+96]=Ne(rA,nA,iA),tA[eA+2+32]=tA[eA+1+96]=Ne(nA,iA,sA),tA[eA+3+32]=tA[eA+2+96]=Ne(iA,sA,oA),tA[eA+3+64]=Ne(sA,oA,aA),tA[eA+3+96]=Ne(oA,aA,lA)}function Ie(tA,eA){var AA=tA[eA-1+0],rA=tA[eA-1+32],nA=tA[eA-1+64],iA=tA[eA-1+96];tA[eA+0+0]=AA+rA+1>>1,tA[eA+2+0]=tA[eA+0+32]=rA+nA+1>>1,tA[eA+2+32]=tA[eA+0+64]=nA+iA+1>>1,tA[eA+1+0]=Ne(AA,rA,nA),tA[eA+3+0]=tA[eA+1+32]=Ne(rA,nA,iA),tA[eA+3+32]=tA[eA+1+64]=Ne(nA,iA,iA),tA[eA+3+64]=tA[eA+2+64]=tA[eA+0+96]=tA[eA+1+96]=tA[eA+2+96]=tA[eA+3+96]=iA}function Fe(tA,eA){var AA=tA[eA-1+0],rA=tA[eA-1+32],nA=tA[eA-1+64],iA=tA[eA-1+96],sA=tA[eA-1-32],oA=tA[eA+0-32],aA=tA[eA+1-32],lA=tA[eA+2-32];tA[eA+0+0]=tA[eA+2+32]=AA+sA+1>>1,tA[eA+0+32]=tA[eA+2+64]=rA+AA+1>>1,tA[eA+0+64]=tA[eA+2+96]=nA+rA+1>>1,tA[eA+0+96]=iA+nA+1>>1,tA[eA+3+0]=Ne(oA,aA,lA),tA[eA+2+0]=Ne(sA,oA,aA),tA[eA+1+0]=tA[eA+3+32]=Ne(AA,sA,oA),tA[eA+1+32]=tA[eA+3+64]=Ne(rA,AA,sA),tA[eA+1+64]=tA[eA+3+96]=Ne(nA,rA,AA),tA[eA+1+96]=Ne(iA,nA,rA)}function Ce(tA,eA){var AA;for(AA=0;8>AA;++AA)n(tA,eA+32*AA,tA,eA-32,8)}function je(tA,eA){var AA;for(AA=0;8>AA;++AA)i(tA,eA,tA[eA-1],8),eA+=32}function Oe(tA,eA,AA){var rA;for(rA=0;8>rA;++rA)i(eA,AA+32*rA,tA,8)}function Be(tA,eA){var AA,rA=8;for(AA=0;8>AA;++AA)rA+=tA[eA+AA-32]+tA[eA-1+32*AA];Oe(rA>>4,tA,eA)}function Me(tA,eA){var AA,rA=4;for(AA=0;8>AA;++AA)rA+=tA[eA+AA-32];Oe(rA>>3,tA,eA)}function Ee(tA,eA){var AA,rA=4;for(AA=0;8>AA;++AA)rA+=tA[eA-1+32*AA];Oe(rA>>3,tA,eA)}function qe(tA,eA){Oe(128,tA,eA)}function De(tA,eA,AA){var rA=tA[eA-AA],nA=tA[eA+0],iA=3*(nA-rA)+XA[1020+tA[eA-2*AA]-tA[eA+AA]],sA=WA[112+(iA+4>>3)];tA[eA-AA]=YA[255+rA+WA[112+(iA+3>>3)]],tA[eA+0]=YA[255+nA-sA]}function Re(tA,eA,AA,rA){var nA=tA[eA+0],iA=tA[eA+AA];return JA[255+tA[eA-2*AA]-tA[eA-AA]]>rA||JA[255+iA-nA]>rA}function Te(tA,eA,AA,rA){return 4*JA[255+tA[eA-AA]-tA[eA+0]]+JA[255+tA[eA-2*AA]-tA[eA+AA]]<=rA}function Ue(tA,eA,AA,rA,nA){var iA=tA[eA-3*AA],sA=tA[eA-2*AA],oA=tA[eA-AA],aA=tA[eA+0],lA=tA[eA+AA],cA=tA[eA+2*AA],uA=tA[eA+3*AA];return 4*JA[255+oA-aA]+JA[255+sA-lA]>rA?0:JA[255+tA[eA-4*AA]-iA]<=nA&&JA[255+iA-sA]<=nA&&JA[255+sA-oA]<=nA&&JA[255+uA-cA]<=nA&&JA[255+cA-lA]<=nA&&JA[255+lA-aA]<=nA}function ze(tA,eA,AA,rA){var nA=2*rA+1;for(rA=0;16>rA;++rA)Te(tA,eA+rA,AA,nA)&&De(tA,eA+rA,AA)}function He(tA,eA,AA,rA){var nA=2*rA+1;for(rA=0;16>rA;++rA)Te(tA,eA+rA*AA,1,nA)&&De(tA,eA+rA*AA,1)}function We(tA,eA,AA,rA){var nA;for(nA=3;0<nA;--nA)ze(tA,eA+=4*AA,AA,rA)}function Ve(tA,eA,AA,rA){var nA;for(nA=3;0<nA;--nA)He(tA,eA+=4,AA,rA)}function Ge(tA,eA,AA,rA,nA,iA,sA,oA){for(iA=2*iA+1;0<nA--;){if(Ue(tA,eA,AA,iA,sA))if(Re(tA,eA,AA,oA))De(tA,eA,AA);else{var aA=tA,lA=eA,cA=AA,uA=aA[lA-2*cA],hA=aA[lA-cA],dA=aA[lA+0],fA=aA[lA+cA],gA=aA[lA+2*cA],pA=27*(wA=XA[1020+3*(dA-hA)+XA[1020+uA-fA]])+63>>7,mA=18*wA+63>>7,wA=9*wA+63>>7;aA[lA-3*cA]=YA[255+aA[lA-3*cA]+wA],aA[lA-2*cA]=YA[255+uA+mA],aA[lA-cA]=YA[255+hA+pA],aA[lA+0]=YA[255+dA-pA],aA[lA+cA]=YA[255+fA-mA],aA[lA+2*cA]=YA[255+gA-wA]}eA+=rA}}function Ye(tA,eA,AA,rA,nA,iA,sA,oA){for(iA=2*iA+1;0<nA--;){if(Ue(tA,eA,AA,iA,sA))if(Re(tA,eA,AA,oA))De(tA,eA,AA);else{var aA=tA,lA=eA,cA=AA,uA=aA[lA-cA],hA=aA[lA+0],dA=aA[lA+cA],fA=WA[112+(4+(gA=3*(hA-uA))>>3)],gA=WA[112+(gA+3>>3)],pA=fA+1>>1;aA[lA-2*cA]=YA[255+aA[lA-2*cA]+pA],aA[lA-cA]=YA[255+uA+gA],aA[lA+0]=YA[255+hA-fA],aA[lA+cA]=YA[255+dA-pA]}eA+=rA}}function Je(tA,eA,AA,rA,nA,iA){Ge(tA,eA,AA,1,16,rA,nA,iA)}function Xe(tA,eA,AA,rA,nA,iA){Ge(tA,eA,1,AA,16,rA,nA,iA)}function Ke(tA,eA,AA,rA,nA,iA){var sA;for(sA=3;0<sA;--sA)Ye(tA,eA+=4*AA,AA,1,16,rA,nA,iA)}function Ze(tA,eA,AA,rA,nA,iA){var sA;for(sA=3;0<sA;--sA)Ye(tA,eA+=4,1,AA,16,rA,nA,iA)}function $e(tA,eA,AA,rA,nA,iA,sA,oA){Ge(tA,eA,nA,1,8,iA,sA,oA),Ge(AA,rA,nA,1,8,iA,sA,oA)}function Qe(tA,eA,AA,rA,nA,iA,sA,oA){Ge(tA,eA,1,nA,8,iA,sA,oA),Ge(AA,rA,1,nA,8,iA,sA,oA)}function tr(tA,eA,AA,rA,nA,iA,sA,oA){Ye(tA,eA+4*nA,nA,1,8,iA,sA,oA),Ye(AA,rA+4*nA,nA,1,8,iA,sA,oA)}function er(tA,eA,AA,rA,nA,iA,sA,oA){Ye(tA,eA+4,1,nA,8,iA,sA,oA),Ye(AA,rA+4,1,nA,8,iA,sA,oA)}function rr(){this.ba=new ot,this.ec=[],this.cc=[],this.Mc=[],this.Dc=this.Nc=this.dc=this.fc=0,this.Oa=new ct,this.memory=0,this.Ib=\"OutputFunc\",this.Jb=\"OutputAlphaFunc\",this.Nd=\"OutputRowFunc\"}function nr(){this.data=[],this.offset=this.kd=this.ha=this.w=0,this.na=[],this.xa=this.gb=this.Ja=this.Sa=this.P=0}function ir(){this.nc=this.Ea=this.b=this.hc=0,this.K=[],this.w=0}function ar(){this.ua=0,this.Wa=new M,this.vb=new M,this.md=this.xc=this.wc=0,this.vc=[],this.Wb=0,this.Ya=new d,this.yc=new l}function or(){this.xb=this.a=0,this.l=new Gt,this.ca=new ot,this.V=[],this.Ba=0,this.Ta=[],this.Ua=0,this.m=new N,this.Pb=0,this.wd=new N,this.Ma=this.$=this.C=this.i=this.c=this.xd=0,this.s=new ar,this.ab=0,this.gc=o(4,ir),this.Oc=0}function sr(){this.Lc=this.Z=this.$a=this.i=this.c=0,this.l=new Gt,this.ic=0,this.ca=[],this.tb=0,this.qd=null,this.rd=0}function cr(tA,eA,AA,rA,nA,iA,sA){for(tA=null==tA?0:tA[eA+0],eA=0;eA<sA;++eA)nA[iA+eA]=tA+AA[rA+eA]&255,tA=nA[iA+eA]}function ur(tA,eA,AA,rA,nA,iA,sA){var oA;if(null==tA)cr(null,null,AA,rA,nA,iA,sA);else for(oA=0;oA<sA;++oA)nA[iA+oA]=tA[eA+oA]+AA[rA+oA]&255}function hr(tA,eA,AA,rA,nA,iA,sA){if(null==tA)cr(null,null,AA,rA,nA,iA,sA);else{var oA,aA=tA[eA+0],lA=aA,cA=aA;for(oA=0;oA<sA;++oA)lA=cA+(aA=tA[eA+oA])-lA,cA=AA[rA+oA]+(-256&lA?0>lA?0:255:lA)&255,lA=aA,nA[iA+oA]=cA}}function lr(tA,eA,AA,rA){var nA=eA.width,iA=eA.o;if(e(null!=tA&&null!=eA),0>AA||0>=rA||AA+rA>iA)return null;if(!tA.Cc){if(null==tA.ga){var sA;if(tA.ga=new sr,(sA=null==tA.ga)||(sA=eA.width*eA.o,e(0==tA.Gb.length),tA.Gb=a(sA),tA.Uc=0,null==tA.Gb?sA=0:(tA.mb=tA.Gb,tA.nb=tA.Uc,tA.rc=null,sA=1),sA=!sA),!sA){sA=tA.ga;var oA=tA.Fa,aA=tA.P,lA=tA.qc,cA=tA.mb,uA=tA.nb,hA=aA+1,dA=lA-1,fA=sA.l;if(e(null!=oA&&null!=cA&&null!=eA),wn[0]=null,wn[1]=cr,wn[2]=ur,wn[3]=hr,sA.ca=cA,sA.tb=uA,sA.c=eA.width,sA.i=eA.height,e(0<sA.c&&0<sA.i),1>=lA)eA=0;else if(sA.$a=oA[aA+0]>>0&3,sA.Z=oA[aA+0]>>2&3,sA.Lc=oA[aA+0]>>4&3,aA=oA[aA+0]>>6&3,0>sA.$a||1<sA.$a||4<=sA.Z||1<sA.Lc||aA)eA=0;else if(fA.put=dt,fA.ac=ft,fA.bc=pt,fA.ma=sA,fA.width=eA.width,fA.height=eA.height,fA.Da=eA.Da,fA.v=eA.v,fA.va=eA.va,fA.j=eA.j,fA.o=eA.o,sA.$a)t:{e(1==sA.$a),eA=kt();e:for(;;){if(null==eA){eA=0;break t}if(e(null!=sA),sA.mc=eA,eA.c=sA.c,eA.i=sA.i,eA.l=sA.l,eA.l.ma=sA,eA.l.width=sA.c,eA.l.height=sA.i,eA.a=0,v(eA.m,oA,hA,dA),!It(sA.c,sA.i,1,eA,null))break e;if(1==eA.ab&&3==eA.gc[0].hc&&At(eA.s)?(sA.ic=1,oA=eA.c*eA.i,eA.Ta=null,eA.Ua=0,eA.V=a(oA),eA.Ba=0,null==eA.V?(eA.a=1,eA=0):eA=1):(sA.ic=0,eA=Ft(eA,sA.c)),!eA)break e;eA=1;break t}sA.mc=null,eA=0}else eA=dA>=sA.c*sA.i;sA=!eA}if(sA)return null;1!=tA.ga.Lc?tA.Ga=0:rA=iA-AA}e(null!=tA.ga),e(AA+rA<=iA);t:{if(eA=(oA=tA.ga).c,iA=oA.l.o,0==oA.$a){if(hA=tA.rc,dA=tA.Vc,fA=tA.Fa,aA=tA.P+1+AA*eA,lA=tA.mb,cA=tA.nb+AA*eA,e(aA<=tA.P+tA.qc),0!=oA.Z)for(e(null!=wn[oA.Z]),sA=0;sA<rA;++sA)wn[oA.Z](hA,dA,fA,aA,lA,cA,eA),hA=lA,dA=cA,cA+=eA,aA+=eA;else for(sA=0;sA<rA;++sA)n(lA,cA,fA,aA,eA),hA=lA,dA=cA,cA+=eA,aA+=eA;tA.rc=hA,tA.Vc=dA}else{if(e(null!=oA.mc),eA=AA+rA,e(null!=(sA=oA.mc)),e(eA<=sA.i),sA.C>=eA)eA=1;else if(oA.ic||mr(),oA.ic){oA=sA.V,hA=sA.Ba,dA=sA.c;var gA=sA.i,pA=(fA=1,aA=sA.$/dA,lA=sA.$%dA,cA=sA.m,uA=sA.s,sA.$),mA=dA*gA,wA=dA*eA,yA=uA.wc,BA=pA<wA?wt(uA,lA,aA):null;e(pA<=mA),e(eA<=gA),e(At(uA));e:for(;;){for(;!cA.h&&pA<wA;){if(lA&yA||(BA=wt(uA,lA,aA)),e(null!=BA),S(cA),256>(gA=bt(BA.G[0],BA.H[0],cA)))oA[hA+pA]=gA,++pA,++lA>=dA&&(lA=0,++aA<=eA&&!(aA%16)&&St(sA,aA));else{if(!(280>gA)){fA=0;break e}gA=mt(gA-256,cA);var bA,vA=bt(BA.G[4],BA.H[4],cA);if(S(cA),!(pA>=(vA=vt(dA,vA=mt(vA,cA)))&&mA-pA>=gA)){fA=0;break e}for(bA=0;bA<gA;++bA)oA[hA+pA+bA]=oA[hA+pA+bA-vA];for(pA+=gA,lA+=gA;lA>=dA;)lA-=dA,++aA<=eA&&!(aA%16)&&St(sA,aA);pA<wA&&lA&yA&&(BA=wt(uA,lA,aA))}e(cA.h==A(cA))}St(sA,aA>eA?eA:aA);break e}!fA||cA.h&&pA<mA?(fA=0,sA.a=cA.h?5:3):sA.$=pA,eA=fA}else eA=_t(sA,sA.V,sA.Ba,sA.c,sA.i,eA,Ct);if(!eA){rA=0;break t}}AA+rA>=iA&&(tA.Cc=1),rA=1}if(!rA)return null;if(tA.Cc&&(null!=(rA=tA.ga)&&(rA.mc=null),tA.ga=null,0<tA.Ga))return alert(\"todo:WebPDequantizeLevels\"),null}return tA.nb+AA*nA}function fr(tA,eA,AA,rA,nA,iA){for(;0<nA--;){var sA,oA=tA,aA=eA+(AA?1:0),lA=tA,cA=eA+(AA?0:3);for(sA=0;sA<rA;++sA){var uA=lA[cA+4*sA];255!=uA&&(uA*=32897,oA[aA+4*sA+0]=oA[aA+4*sA+0]*uA>>23,oA[aA+4*sA+1]=oA[aA+4*sA+1]*uA>>23,oA[aA+4*sA+2]=oA[aA+4*sA+2]*uA>>23)}eA+=iA}}function dr(tA,eA,AA,rA,nA){for(;0<rA--;){var iA;for(iA=0;iA<AA;++iA){var sA=tA[eA+2*iA+0],oA=15&(lA=tA[eA+2*iA+1]),aA=4369*oA,lA=(240&lA|lA>>4)*aA>>16;tA[eA+2*iA+0]=(240&sA|sA>>4)*aA>>16&240|(15&sA|sA<<4)*aA>>16>>4&15,tA[eA+2*iA+1]=240&lA|oA}eA+=nA}}function pr(tA,eA,AA,rA,nA,iA,sA,oA){var aA,lA,cA=255;for(lA=0;lA<nA;++lA){for(aA=0;aA<rA;++aA){var uA=tA[eA+aA];iA[sA+4*aA]=uA,cA&=uA}eA+=AA,sA+=oA}return 255!=cA}function gr(tA,eA,AA,rA,nA){var iA;for(iA=0;iA<nA;++iA)AA[rA+iA]=tA[eA+iA]>>8}function mr(){HA=fr,DA=dr,RA=pr,VA=gr}function vr(eA,AA,rA){tA[eA]=function(tA,eA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA,wA){var yA,BA=wA-1>>1,bA=sA[oA+0]|aA[lA+0]<<16,vA=cA[uA+0]|hA[dA+0]<<16;e(null!=tA);var CA=3*bA+vA+131074>>2;for(AA(tA[eA+0],255&CA,CA>>16,fA,gA),null!=nA&&(CA=3*vA+bA+131074>>2,AA(nA[iA+0],255&CA,CA>>16,pA,mA)),yA=1;yA<=BA;++yA){var SA=sA[oA+yA]|aA[lA+yA]<<16,xA=cA[uA+yA]|hA[dA+yA]<<16,FA=bA+SA+vA+xA+524296,EA=FA+2*(SA+vA)>>3;CA=EA+bA>>1,bA=(FA=FA+2*(bA+xA)>>3)+SA>>1,AA(tA[eA+2*yA-1],255&CA,CA>>16,fA,gA+(2*yA-1)*rA),AA(tA[eA+2*yA-0],255&bA,bA>>16,fA,gA+(2*yA-0)*rA),null!=nA&&(CA=FA+vA>>1,bA=EA+xA>>1,AA(nA[iA+2*yA-1],255&CA,CA>>16,pA,mA+(2*yA-1)*rA),AA(nA[iA+2*yA+0],255&bA,bA>>16,pA,mA+(2*yA+0)*rA)),bA=SA,vA=xA}1&wA||(CA=3*bA+vA+131074>>2,AA(tA[eA+wA-1],255&CA,CA>>16,fA,gA+(wA-1)*rA),null!=nA&&(CA=3*vA+bA+131074>>2,AA(nA[iA+wA-1],255&CA,CA>>16,pA,mA+(wA-1)*rA)))}}function br(){yn[ZA]=Bn,yn[$A]=vn,yn[Qr]=bn,yn[Ur]=Cn,yn[Tr]=Sn,yn[Hr]=xn,yn[Dr]=Fn,yn[Rr]=vn,yn[Vr]=Cn,yn[Gr]=Sn,yn[Kr]=xn}function yr(tA){return tA&~Ln?0>tA?0:255:tA>>_n}function wr(tA,eA){return yr((19077*tA>>8)+(26149*eA>>8)-14234)}function Nr(tA,eA,AA){return yr((19077*tA>>8)-(6419*eA>>8)-(13320*AA>>8)+8708)}function Lr(tA,eA){return yr((19077*tA>>8)+(33050*eA>>8)-17685)}function Ar(tA,eA,AA,rA,nA){rA[nA+0]=wr(tA,AA),rA[nA+1]=Nr(tA,eA,AA),rA[nA+2]=Lr(tA,eA)}function xr(tA,eA,AA,rA,nA){rA[nA+0]=Lr(tA,eA),rA[nA+1]=Nr(tA,eA,AA),rA[nA+2]=wr(tA,AA)}function Sr(tA,eA,AA,rA,nA){var iA=Nr(tA,eA,AA);eA=iA<<3&224|Lr(tA,eA)>>3,rA[nA+0]=248&wr(tA,AA)|iA>>5,rA[nA+1]=eA}function _r(tA,eA,AA,rA,nA){var iA=240&Lr(tA,eA)|15;rA[nA+0]=240&wr(tA,AA)|Nr(tA,eA,AA)>>4,rA[nA+1]=iA}function Pr(tA,eA,AA,rA,nA){rA[nA+0]=255,Ar(tA,eA,AA,rA,nA+1)}function kr(tA,eA,AA,rA,nA){xr(tA,eA,AA,rA,nA),rA[nA+3]=255}function Ir(tA,eA,AA,rA,nA){Ar(tA,eA,AA,rA,nA),rA[nA+3]=255}function Vt(tA,eA){return 0>tA?0:tA>eA?eA:tA}function Fr(eA,AA,rA){tA[eA]=function(tA,eA,nA,iA,sA,oA,aA,lA,cA){for(var uA=lA+(-2&cA)*rA;lA!=uA;)AA(tA[eA+0],nA[iA+0],sA[oA+0],aA,lA),AA(tA[eA+1],nA[iA+0],sA[oA+0],aA,lA+rA),eA+=2,++iA,++oA,lA+=2*rA;1&cA&&AA(tA[eA+0],nA[iA+0],sA[oA+0],aA,lA)}}function Cr(tA,eA,AA){return 0==AA?0==tA?0==eA?6:5:0==eA?4:0:AA}function jr(tA,eA,AA,rA,nA){switch(tA>>>30){case 3:vA(eA,AA,rA,nA,0);break;case 2:CA(eA,AA,rA,nA);break;case 1:xA(eA,AA,rA,nA)}}function Or(tA,eA){var AA,rA,nA=eA.M,iA=eA.Nb,sA=tA.oc,oA=tA.pc+40,aA=tA.oc,lA=tA.pc+584,cA=tA.oc,uA=tA.pc+600;for(AA=0;16>AA;++AA)sA[oA+32*AA-1]=129;for(AA=0;8>AA;++AA)aA[lA+32*AA-1]=129,cA[uA+32*AA-1]=129;for(0<nA?sA[oA-1-32]=aA[lA-1-32]=cA[uA-1-32]=129:(i(sA,oA-32-1,127,21),i(aA,lA-32-1,127,9),i(cA,uA-32-1,127,9)),rA=0;rA<tA.za;++rA){var hA=eA.ya[eA.aa+rA];if(0<rA){for(AA=-1;16>AA;++AA)n(sA,oA+32*AA-4,sA,oA+32*AA+12,4);for(AA=-1;8>AA;++AA)n(aA,lA+32*AA-4,aA,lA+32*AA+4,4),n(cA,uA+32*AA-4,cA,uA+32*AA+4,4)}var dA=tA.Gd,fA=tA.Hd+rA,gA=hA.ad,pA=hA.Hc;if(0<nA&&(n(sA,oA-32,dA[fA].y,0,16),n(aA,lA-32,dA[fA].f,0,8),n(cA,uA-32,dA[fA].ea,0,8)),hA.Za){var mA=sA,wA=oA-32+16;for(0<nA&&(rA>=tA.za-1?i(mA,wA,dA[fA].y[15],4):n(mA,wA,dA[fA+1].y,0,4)),AA=0;4>AA;AA++)mA[wA+128+AA]=mA[wA+256+AA]=mA[wA+384+AA]=mA[wA+0+AA];for(AA=0;16>AA;++AA,pA<<=2)mA=sA,wA=oA+Dn[AA],fn[hA.Ob[AA]](mA,wA),jr(pA,gA,16*+AA,mA,wA)}else if(mA=Cr(rA,nA,hA.Ob[0]),dn[mA](sA,oA),0!=pA)for(AA=0;16>AA;++AA,pA<<=2)jr(pA,gA,16*+AA,sA,oA+Dn[AA]);for(AA=hA.Gc,mA=Cr(rA,nA,hA.Dd),gn[mA](aA,lA),gn[mA](cA,uA),pA=gA,mA=aA,wA=lA,255&(hA=AA>>0)&&(170&hA?SA(pA,256,mA,wA):FA(pA,256,mA,wA)),hA=cA,pA=uA,255&(AA>>=8)&&(170&AA?SA(gA,320,hA,pA):FA(gA,320,hA,pA)),nA<tA.Ub-1&&(n(dA[fA].y,0,sA,oA+480,16),n(dA[fA].f,0,aA,lA+224,8),n(dA[fA].ea,0,cA,uA+224,8)),AA=8*iA*tA.B,dA=tA.sa,fA=tA.ta+16*rA+16*iA*tA.R,gA=tA.qa,hA=tA.ra+8*rA+AA,pA=tA.Ha,mA=tA.Ia+8*rA+AA,AA=0;16>AA;++AA)n(dA,fA+AA*tA.R,sA,oA+32*AA,16);for(AA=0;8>AA;++AA)n(gA,hA+AA*tA.B,aA,lA+32*AA,8),n(pA,mA+AA*tA.B,cA,uA+32*AA,8)}}function Br(tA,eA,AA,rA,nA,iA,sA,oA,aA){var lA=[0],cA=[0],uA=0,hA=null!=aA?aA.kd:0,dA=null!=aA?aA:new nr;if(null==tA||12>AA)return 7;dA.data=tA,dA.w=eA,dA.ha=AA,eA=[eA],AA=[AA],dA.gb=[dA.gb];t:{var fA=eA,gA=AA,pA=dA.gb;if(e(null!=tA),e(null!=gA),e(null!=pA),pA[0]=0,12<=gA[0]&&!r(tA,fA[0],\"RIFF\")){if(r(tA,fA[0]+8,\"WEBP\")){pA=3;break t}var mA=j(tA,fA[0]+4);if(12>mA||4294967286<mA){pA=3;break t}if(hA&&mA>gA[0]-8){pA=7;break t}pA[0]=mA,fA[0]+=12,gA[0]-=12}pA=0}if(0!=pA)return pA;for(mA=0<dA.gb[0],AA=AA[0];;){t:{var wA=tA;gA=eA,pA=AA;var yA=lA,BA=cA,bA=fA=[0];if((SA=uA=[uA])[0]=0,8>pA[0])pA=7;else{if(!r(wA,gA[0],\"VP8X\")){if(10!=j(wA,gA[0]+4)){pA=3;break t}if(18>pA[0]){pA=7;break t}var vA=j(wA,gA[0]+8),CA=1+C(wA,gA[0]+12);if(2147483648<=CA*(wA=1+C(wA,gA[0]+15))){pA=3;break t}null!=bA&&(bA[0]=vA),null!=yA&&(yA[0]=CA),null!=BA&&(BA[0]=wA),gA[0]+=18,pA[0]-=18,SA[0]=1}pA=0}}if(uA=uA[0],fA=fA[0],0!=pA)return pA;if(gA=!!(2&fA),!mA&&uA)return 3;if(null!=iA&&(iA[0]=!!(16&fA)),null!=sA&&(sA[0]=gA),null!=oA&&(oA[0]=0),sA=lA[0],fA=cA[0],uA&&gA&&null==aA){pA=0;break}if(4>AA){pA=7;break}if(mA&&uA||!mA&&!uA&&!r(tA,eA[0],\"ALPH\")){AA=[AA],dA.na=[dA.na],dA.P=[dA.P],dA.Sa=[dA.Sa];t:{vA=tA,pA=eA,mA=AA;var SA=dA.gb;yA=dA.na,BA=dA.P,bA=dA.Sa,CA=22,e(null!=vA),e(null!=mA),wA=pA[0];var xA=mA[0];for(e(null!=yA),e(null!=bA),yA[0]=null,BA[0]=null,bA[0]=0;;){if(pA[0]=wA,mA[0]=xA,8>xA){pA=7;break t}var FA=j(vA,wA+4);if(4294967286<FA){pA=3;break t}var EA=8+FA+1&-2;if(CA+=EA,0<SA&&CA>SA){pA=3;break t}if(!r(vA,wA,\"VP8 \")||!r(vA,wA,\"VP8L\")){pA=0;break t}if(xA[0]<EA){pA=7;break t}r(vA,wA,\"ALPH\")||(yA[0]=vA,BA[0]=wA+8,bA[0]=FA),wA+=EA,xA-=EA}}if(AA=AA[0],dA.na=dA.na[0],dA.P=dA.P[0],dA.Sa=dA.Sa[0],0!=pA)break}AA=[AA],dA.Ja=[dA.Ja],dA.xa=[dA.xa];t:if(SA=tA,pA=eA,mA=AA,yA=dA.gb[0],BA=dA.Ja,bA=dA.xa,vA=pA[0],wA=!r(SA,vA,\"VP8 \"),CA=!r(SA,vA,\"VP8L\"),e(null!=SA),e(null!=mA),e(null!=BA),e(null!=bA),8>mA[0])pA=7;else{if(wA||CA){if(SA=j(SA,vA+4),12<=yA&&SA>yA-12){pA=3;break t}if(hA&&SA>mA[0]-8){pA=7;break t}BA[0]=SA,pA[0]+=8,mA[0]-=8,bA[0]=CA}else bA[0]=5<=mA[0]&&47==SA[vA+0]&&!(SA[vA+4]>>5),BA[0]=mA[0];pA=0}if(AA=AA[0],dA.Ja=dA.Ja[0],dA.xa=dA.xa[0],eA=eA[0],0!=pA)break;if(4294967286<dA.Ja)return 3;if(null==oA||gA||(oA[0]=dA.xa?2:1),sA=[sA],fA=[fA],dA.xa){if(5>AA){pA=7;break}oA=sA,hA=fA,gA=iA,null==tA||5>AA?tA=0:5<=AA&&47==tA[eA+0]&&!(tA[eA+4]>>5)?(mA=[0],SA=[0],yA=[0],v(BA=new N,tA,eA,AA),gt(BA,mA,SA,yA)?(null!=oA&&(oA[0]=mA[0]),null!=hA&&(hA[0]=SA[0]),null!=gA&&(gA[0]=yA[0]),tA=1):tA=0):tA=0}else{if(10>AA){pA=7;break}oA=fA,null==tA||10>AA||!Xt(tA,eA+3,AA-3)?tA=0:(hA=tA[eA+0]|tA[eA+1]<<8|tA[eA+2]<<16,gA=16383&(tA[eA+7]<<8|tA[eA+6]),tA=16383&(tA[eA+9]<<8|tA[eA+8]),1&hA||3<(hA>>1&7)||!(hA>>4&1)||hA>>5>=dA.Ja||!gA||!tA?tA=0:(sA&&(sA[0]=gA),oA&&(oA[0]=tA),tA=1))}if(!tA)return 3;if(sA=sA[0],fA=fA[0],uA&&(lA[0]!=sA||cA[0]!=fA))return 3;null!=aA&&(aA[0]=dA,aA.offset=eA-aA.w,e(4294967286>eA-aA.w),e(aA.offset==aA.ha-AA));break}return 0==pA||7==pA&&uA&&null==aA?(null!=iA&&(iA[0]|=null!=dA.na&&0<dA.na.length),null!=rA&&(rA[0]=sA),null!=nA&&(nA[0]=fA),0):pA}function Mr(tA,eA,AA){var rA=eA.width,nA=eA.height,iA=0,sA=0,oA=rA,aA=nA;if(eA.Da=null!=tA&&0<tA.Da,eA.Da&&(oA=tA.cd,aA=tA.bd,iA=tA.v,sA=tA.j,11>AA||(iA&=-2,sA&=-2),0>iA||0>sA||0>=oA||0>=aA||iA+oA>rA||sA+aA>nA))return 0;if(eA.v=iA,eA.j=sA,eA.va=iA+oA,eA.o=sA+aA,eA.U=oA,eA.T=aA,eA.da=null!=tA&&0<tA.da,eA.da){if(!E(oA,aA,AA=[tA.ib],iA=[tA.hb]))return 0;eA.ib=AA[0],eA.hb=iA[0]}return eA.ob=null!=tA&&tA.ob,eA.Kb=null==tA||!tA.Sd,eA.da&&(eA.ob=eA.ib<3*rA/4&&eA.hb<3*nA/4,eA.Kb=0),1}function Er(tA){if(null==tA)return 2;if(11>tA.S){var eA=tA.f.RGBA;eA.fb+=(tA.height-1)*eA.A,eA.A=-eA.A}else eA=tA.f.kb,tA=tA.height,eA.O+=(tA-1)*eA.fa,eA.fa=-eA.fa,eA.N+=(tA-1>>1)*eA.Ab,eA.Ab=-eA.Ab,eA.W+=(tA-1>>1)*eA.Db,eA.Db=-eA.Db,null!=eA.F&&(eA.J+=(tA-1)*eA.lb,eA.lb=-eA.lb);return 0}function qr(tA,eA,AA,rA){if(null==rA||0>=tA||0>=eA)return 2;if(null!=AA){if(AA.Da){var nA=AA.cd,iA=AA.bd,sA=-2&AA.v,oA=-2&AA.j;if(0>sA||0>oA||0>=nA||0>=iA||sA+nA>tA||oA+iA>eA)return 2;tA=nA,eA=iA}if(AA.da){if(!E(tA,eA,nA=[AA.ib],iA=[AA.hb]))return 2;tA=nA[0],eA=iA[0]}}rA.width=tA,rA.height=eA;t:{var aA=rA.width,lA=rA.height;if(tA=rA.S,0>=aA||0>=lA||!(tA>=ZA&&13>tA))tA=2;else{if(0>=rA.Rd&&null==rA.sd){sA=iA=nA=eA=0;var cA=(oA=aA*jn[tA])*lA;if(11>tA||(iA=(lA+1)/2*(eA=(aA+1)/2),12==tA&&(sA=(nA=aA)*lA)),null==(lA=a(cA+2*iA+sA))){tA=1;break t}rA.sd=lA,11>tA?((aA=rA.f.RGBA).eb=lA,aA.fb=0,aA.A=oA,aA.size=cA):((aA=rA.f.kb).y=lA,aA.O=0,aA.fa=oA,aA.Fd=cA,aA.f=lA,aA.N=0+cA,aA.Ab=eA,aA.Cd=iA,aA.ea=lA,aA.W=0+cA+iA,aA.Db=eA,aA.Ed=iA,12==tA&&(aA.F=lA,aA.J=0+cA+2*iA),aA.Tc=sA,aA.lb=nA)}if(eA=1,nA=rA.S,iA=rA.width,sA=rA.height,nA>=ZA&&13>nA)if(11>nA)tA=rA.f.RGBA,eA&=(oA=Math.abs(tA.A))*(sA-1)+iA<=tA.size,eA&=oA>=iA*jn[nA],eA&=null!=tA.eb;else{tA=rA.f.kb,oA=(iA+1)/2,cA=(sA+1)/2,aA=Math.abs(tA.fa),lA=Math.abs(tA.Ab);var uA=Math.abs(tA.Db),hA=Math.abs(tA.lb),dA=hA*(sA-1)+iA;eA&=aA*(sA-1)+iA<=tA.Fd,eA&=lA*(cA-1)+oA<=tA.Cd,eA=(eA&=uA*(cA-1)+oA<=tA.Ed)&aA>=iA&lA>=oA&uA>=oA,eA&=null!=tA.y,eA&=null!=tA.f,eA&=null!=tA.ea,12==nA&&(eA&=hA>=iA,eA&=dA<=tA.Tc,eA&=null!=tA.F)}else eA=0;tA=eA?0:2}}return 0!=tA||null!=AA&&AA.fd&&(tA=Er(rA)),tA}var eA=64,AA=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215],rA=24,nA=32,iA=8,sA=[0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7];R(\"Predictor0\",\"PredictorAdd0\"),tA.Predictor0=function(){return 4278190080},tA.Predictor1=function(tA){return tA},tA.Predictor2=function(tA,eA,AA){return eA[AA+0]},tA.Predictor3=function(tA,eA,AA){return eA[AA+1]},tA.Predictor4=function(tA,eA,AA){return eA[AA-1]},tA.Predictor5=function(tA,eA,AA){return U(U(tA,eA[AA+1]),eA[AA+0])},tA.Predictor6=function(tA,eA,AA){return U(tA,eA[AA-1])},tA.Predictor7=function(tA,eA,AA){return U(tA,eA[AA+0])},tA.Predictor8=function(tA,eA,AA){return U(eA[AA-1],eA[AA+0])},tA.Predictor9=function(tA,eA,AA){return U(eA[AA+0],eA[AA+1])},tA.Predictor10=function(tA,eA,AA){return U(U(tA,eA[AA-1]),U(eA[AA+0],eA[AA+1]))},tA.Predictor11=function(tA,eA,AA){var rA=eA[AA+0];return 0>=W(rA>>24&255,tA>>24&255,(eA=eA[AA-1])>>24&255)+W(rA>>16&255,tA>>16&255,eA>>16&255)+W(rA>>8&255,tA>>8&255,eA>>8&255)+W(255&rA,255&tA,255&eA)?rA:tA},tA.Predictor12=function(tA,eA,AA){var rA=eA[AA+0];return(z((tA>>24&255)+(rA>>24&255)-((eA=eA[AA-1])>>24&255))<<24|z((tA>>16&255)+(rA>>16&255)-(eA>>16&255))<<16|z((tA>>8&255)+(rA>>8&255)-(eA>>8&255))<<8|z((255&tA)+(255&rA)-(255&eA)))>>>0},tA.Predictor13=function(tA,eA,AA){var rA=eA[AA-1];return(H((tA=U(tA,eA[AA+0]))>>24&255,rA>>24&255)<<24|H(tA>>16&255,rA>>16&255)<<16|H(tA>>8&255,rA>>8&255)<<8|H(tA>>0&255,rA>>0&255))>>>0};var oA=tA.PredictorAdd0;tA.PredictorAdd1=V,R(\"Predictor2\",\"PredictorAdd2\"),R(\"Predictor3\",\"PredictorAdd3\"),R(\"Predictor4\",\"PredictorAdd4\"),R(\"Predictor5\",\"PredictorAdd5\"),R(\"Predictor6\",\"PredictorAdd6\"),R(\"Predictor7\",\"PredictorAdd7\"),R(\"Predictor8\",\"PredictorAdd8\"),R(\"Predictor9\",\"PredictorAdd9\"),R(\"Predictor10\",\"PredictorAdd10\"),R(\"Predictor11\",\"PredictorAdd11\"),R(\"Predictor12\",\"PredictorAdd12\"),R(\"Predictor13\",\"PredictorAdd13\");var aA=tA.PredictorAdd2;X(\"ColorIndexInverseTransform\",\"MapARGB\",\"32b\",(function(tA){return tA>>8&255}),(function(tA){return tA})),X(\"VP8LColorIndexInverseTransformAlpha\",\"MapAlpha\",\"8b\",(function(tA){return tA}),(function(tA){return tA>>8&255}));var lA,cA=tA.ColorIndexInverseTransform,uA=tA.MapARGB,hA=tA.VP8LColorIndexInverseTransformAlpha,dA=tA.MapAlpha,fA=tA.VP8LPredictorsAdd=[];fA.length=16,(tA.VP8LPredictors=[]).length=16,(tA.VP8LPredictorsAdd_C=[]).length=16,(tA.VP8LPredictors_C=[]).length=16;var gA,pA,mA,wA,yA,BA,bA,vA,CA,SA,xA,FA,EA,QA,UA,PA,_A,LA,IA,NA,TA,kA,MA,OA,HA,DA,RA,VA,GA=a(511),jA=a(2041),KA=a(225),qA=a(767),zA=0,XA=jA,WA=KA,YA=qA,JA=GA,ZA=0,$A=1,Qr=2,Ur=3,Tr=4,Hr=5,Dr=6,Rr=7,Vr=8,Gr=9,Kr=10,zr=[2,3,7],Xr=[3,3,11],Wr=[280,256,256,256,40],Yr=[0,1,1,1,0],Jr=[17,18,0,1,2,3,4,5,16,6,7,8,9,10,11,12,13,14,15],Zr=[24,7,23,25,40,6,39,41,22,26,38,42,56,5,55,57,21,27,54,58,37,43,72,4,71,73,20,28,53,59,70,74,36,44,88,69,75,52,60,3,87,89,19,29,86,90,35,45,68,76,85,91,51,61,104,2,103,105,18,30,102,106,34,46,84,92,67,77,101,107,50,62,120,1,119,121,83,93,17,31,100,108,66,78,118,122,33,47,117,123,49,63,99,109,82,94,0,116,124,65,79,16,32,98,110,48,115,125,81,95,64,114,126,97,111,80,113,127,96,112],$r=[2954,2956,2958,2962,2970,2986,3018,3082,3212,3468,3980,5004],tn=8,en=[4,5,6,7,8,9,10,10,11,12,13,14,15,16,17,17,18,19,20,20,21,21,22,22,23,23,24,25,25,26,27,28,29,30,31,32,33,34,35,36,37,37,38,39,40,41,42,43,44,45,46,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,93,95,96,98,100,101,102,104,106,108,110,112,114,116,118,122,124,126,128,130,132,134,136,138,140,143,145,148,151,154,157],An=[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,119,122,125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,234,239,245,249,254,259,264,269,274,279,284],rn=null,nn=[[173,148,140,0],[176,155,140,135,0],[180,157,141,134,130,0],[254,254,243,230,196,177,153,140,133,130,129,0]],sn=[0,1,4,8,5,2,3,6,9,12,13,10,7,11,14,15],on=[-0,1,-1,2,-2,3,4,6,-3,5,-4,-5,-6,7,-7,8,-8,-9],an=[[[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]],[[253,136,254,255,228,219,128,128,128,128,128],[189,129,242,255,227,213,255,219,128,128,128],[106,126,227,252,214,209,255,255,128,128,128]],[[1,98,248,255,236,226,255,255,128,128,128],[181,133,238,254,221,234,255,154,128,128,128],[78,134,202,247,198,180,255,219,128,128,128]],[[1,185,249,255,243,255,128,128,128,128,128],[184,150,247,255,236,224,128,128,128,128,128],[77,110,216,255,236,230,128,128,128,128,128]],[[1,101,251,255,241,255,128,128,128,128,128],[170,139,241,252,236,209,255,255,128,128,128],[37,116,196,243,228,255,255,255,128,128,128]],[[1,204,254,255,245,255,128,128,128,128,128],[207,160,250,255,238,128,128,128,128,128,128],[102,103,231,255,211,171,128,128,128,128,128]],[[1,152,252,255,240,255,128,128,128,128,128],[177,135,243,255,234,225,128,128,128,128,128],[80,129,211,255,194,224,128,128,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[246,1,255,128,128,128,128,128,128,128,128],[255,128,128,128,128,128,128,128,128,128,128]]],[[[198,35,237,223,193,187,162,160,145,155,62],[131,45,198,221,172,176,220,157,252,221,1],[68,47,146,208,149,167,221,162,255,223,128]],[[1,149,241,255,221,224,255,255,128,128,128],[184,141,234,253,222,220,255,199,128,128,128],[81,99,181,242,176,190,249,202,255,255,128]],[[1,129,232,253,214,197,242,196,255,255,128],[99,121,210,250,201,198,255,202,128,128,128],[23,91,163,242,170,187,247,210,255,255,128]],[[1,200,246,255,234,255,128,128,128,128,128],[109,178,241,255,231,245,255,255,128,128,128],[44,130,201,253,205,192,255,255,128,128,128]],[[1,132,239,251,219,209,255,165,128,128,128],[94,136,225,251,218,190,255,255,128,128,128],[22,100,174,245,186,161,255,199,128,128,128]],[[1,182,249,255,232,235,128,128,128,128,128],[124,143,241,255,227,234,128,128,128,128,128],[35,77,181,251,193,211,255,205,128,128,128]],[[1,157,247,255,236,231,255,255,128,128,128],[121,141,235,255,225,227,255,255,128,128,128],[45,99,188,251,195,217,255,224,128,128,128]],[[1,1,251,255,213,255,128,128,128,128,128],[203,1,248,255,255,128,128,128,128,128,128],[137,1,177,255,224,255,128,128,128,128,128]]],[[[253,9,248,251,207,208,255,192,128,128,128],[175,13,224,243,193,185,249,198,255,255,128],[73,17,171,221,161,179,236,167,255,234,128]],[[1,95,247,253,212,183,255,255,128,128,128],[239,90,244,250,211,209,255,255,128,128,128],[155,77,195,248,188,195,255,255,128,128,128]],[[1,24,239,251,218,219,255,205,128,128,128],[201,51,219,255,196,186,128,128,128,128,128],[69,46,190,239,201,218,255,228,128,128,128]],[[1,191,251,255,255,128,128,128,128,128,128],[223,165,249,255,213,255,128,128,128,128,128],[141,124,248,255,255,128,128,128,128,128,128]],[[1,16,248,255,255,128,128,128,128,128,128],[190,36,230,255,236,255,128,128,128,128,128],[149,1,255,128,128,128,128,128,128,128,128]],[[1,226,255,128,128,128,128,128,128,128,128],[247,192,255,128,128,128,128,128,128,128,128],[240,128,255,128,128,128,128,128,128,128,128]],[[1,134,252,255,255,128,128,128,128,128,128],[213,62,250,255,255,128,128,128,128,128,128],[55,93,255,128,128,128,128,128,128,128,128]],[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]]],[[[202,24,213,235,186,191,220,160,240,175,255],[126,38,182,232,169,184,228,174,255,187,128],[61,46,138,219,151,178,240,170,255,216,128]],[[1,112,230,250,199,191,247,159,255,255,128],[166,109,228,252,211,215,255,174,128,128,128],[39,77,162,232,172,180,245,178,255,255,128]],[[1,52,220,246,198,199,249,220,255,255,128],[124,74,191,243,183,193,250,221,255,255,128],[24,71,130,219,154,170,243,182,255,255,128]],[[1,182,225,249,219,240,255,224,128,128,128],[149,150,226,252,216,205,255,171,128,128,128],[28,108,170,242,183,194,254,223,255,255,128]],[[1,81,230,252,204,203,255,192,128,128,128],[123,102,209,247,188,196,255,233,128,128,128],[20,95,153,243,164,173,255,203,128,128,128]],[[1,222,248,255,216,213,128,128,128,128,128],[168,175,246,252,235,205,255,255,128,128,128],[47,116,215,255,211,212,255,255,128,128,128]],[[1,121,236,253,212,214,255,255,128,128,128],[141,84,213,252,201,202,255,219,128,128,128],[42,80,160,240,162,185,255,205,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[244,1,255,128,128,128,128,128,128,128,128],[238,1,255,128,128,128,128,128,128,128,128]]]],cn=[[[231,120,48,89,115,113,120,152,112],[152,179,64,126,170,118,46,70,95],[175,69,143,80,85,82,72,155,103],[56,58,10,171,218,189,17,13,152],[114,26,17,163,44,195,21,10,173],[121,24,80,195,26,62,44,64,85],[144,71,10,38,171,213,144,34,26],[170,46,55,19,136,160,33,206,71],[63,20,8,114,114,208,12,9,226],[81,40,11,96,182,84,29,16,36]],[[134,183,89,137,98,101,106,165,148],[72,187,100,130,157,111,32,75,80],[66,102,167,99,74,62,40,234,128],[41,53,9,178,241,141,26,8,107],[74,43,26,146,73,166,49,23,157],[65,38,105,160,51,52,31,115,128],[104,79,12,27,217,255,87,17,7],[87,68,71,44,114,51,15,186,23],[47,41,14,110,182,183,21,17,194],[66,45,25,102,197,189,23,18,22]],[[88,88,147,150,42,46,45,196,205],[43,97,183,117,85,38,35,179,61],[39,53,200,87,26,21,43,232,171],[56,34,51,104,114,102,29,93,77],[39,28,85,171,58,165,90,98,64],[34,22,116,206,23,34,43,166,73],[107,54,32,26,51,1,81,43,31],[68,25,106,22,64,171,36,225,114],[34,19,21,102,132,188,16,76,124],[62,18,78,95,85,57,50,48,51]],[[193,101,35,159,215,111,89,46,111],[60,148,31,172,219,228,21,18,111],[112,113,77,85,179,255,38,120,114],[40,42,1,196,245,209,10,25,109],[88,43,29,140,166,213,37,43,154],[61,63,30,155,67,45,68,1,209],[100,80,8,43,154,1,51,26,71],[142,78,78,16,255,128,34,197,171],[41,40,5,102,211,183,4,1,221],[51,50,17,168,209,192,23,25,82]],[[138,31,36,171,27,166,38,44,229],[67,87,58,169,82,115,26,59,179],[63,59,90,180,59,166,93,73,154],[40,40,21,116,143,209,34,39,175],[47,15,16,183,34,223,49,45,183],[46,17,33,183,6,98,15,32,183],[57,46,22,24,128,1,54,17,37],[65,32,73,115,28,128,23,128,205],[40,3,9,115,51,192,18,6,223],[87,37,9,115,59,77,64,21,47]],[[104,55,44,218,9,54,53,130,226],[64,90,70,205,40,41,23,26,57],[54,57,112,184,5,41,38,166,213],[30,34,26,133,152,116,10,32,134],[39,19,53,221,26,114,32,73,255],[31,9,65,234,2,15,1,118,73],[75,32,12,51,192,255,160,43,51],[88,31,35,67,102,85,55,186,85],[56,21,23,111,59,205,45,37,192],[55,38,70,124,73,102,1,34,98]],[[125,98,42,88,104,85,117,175,82],[95,84,53,89,128,100,113,101,45],[75,79,123,47,51,128,81,171,1],[57,17,5,71,102,57,53,41,49],[38,33,13,121,57,73,26,1,85],[41,10,67,138,77,110,90,47,114],[115,21,2,10,102,255,166,23,6],[101,29,16,10,85,128,101,196,26],[57,18,10,102,102,213,34,20,43],[117,20,15,36,163,128,68,1,26]],[[102,61,71,37,34,53,31,243,192],[69,60,71,38,73,119,28,222,37],[68,45,128,34,1,47,11,245,171],[62,17,19,70,146,85,55,62,70],[37,43,37,154,100,163,85,160,1],[63,9,92,136,28,64,32,201,85],[75,15,9,9,64,255,184,119,16],[86,6,28,5,64,255,25,248,1],[56,8,17,132,137,255,55,116,128],[58,15,20,82,135,57,26,121,40]],[[164,50,31,137,154,133,25,35,218],[51,103,44,131,131,123,31,6,158],[86,40,64,135,148,224,45,183,128],[22,26,17,131,240,154,14,1,209],[45,16,21,91,64,222,7,1,197],[56,21,39,155,60,138,23,102,213],[83,12,13,54,192,255,68,47,28],[85,26,85,85,128,128,32,146,171],[18,11,7,63,144,171,4,4,246],[35,27,10,146,174,171,12,26,128]],[[190,80,35,99,180,80,126,54,45],[85,126,47,87,176,51,41,20,32],[101,75,128,139,118,146,116,128,85],[56,41,15,176,236,85,37,9,62],[71,30,17,119,118,255,17,18,138],[101,38,60,138,55,70,43,26,142],[146,36,19,30,171,255,97,27,20],[138,45,61,62,219,1,81,188,64],[32,41,20,117,151,142,20,21,163],[112,19,12,61,195,128,48,4,24]]],un=[[[[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]],[[176,246,255,255,255,255,255,255,255,255,255],[223,241,252,255,255,255,255,255,255,255,255],[249,253,253,255,255,255,255,255,255,255,255]],[[255,244,252,255,255,255,255,255,255,255,255],[234,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255]],[[255,246,254,255,255,255,255,255,255,255,255],[239,253,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[251,255,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[251,254,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,254,253,255,254,255,255,255,255,255,255],[250,255,254,255,254,255,255,255,255,255,255],[254,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]]],[[[217,255,255,255,255,255,255,255,255,255,255],[225,252,241,253,255,255,254,255,255,255,255],[234,250,241,250,253,255,253,254,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[223,254,254,255,255,255,255,255,255,255,255],[238,253,254,254,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[249,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,255,255,255,255,255,255,255,255,255],[247,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[252,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[254,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]]],[[[186,251,250,255,255,255,255,255,255,255,255],[234,251,244,254,255,255,255,255,255,255,255],[251,251,243,253,254,255,254,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[236,253,254,255,255,255,255,255,255,255,255],[251,253,253,254,254,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[254,254,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[254,254,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,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,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,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[248,255,255,255,255,255,255,255,255,255,255],[250,254,252,254,255,255,255,255,255,255,255],[248,254,249,253,255,255,255,255,255,255,255]],[[255,253,253,255,255,255,255,255,255,255,255],[246,253,253,255,255,255,255,255,255,255,255],[252,254,251,254,254,255,255,255,255,255,255]],[[255,254,252,255,255,255,255,255,255,255,255],[248,254,253,255,255,255,255,255,255,255,255],[253,255,254,254,255,255,255,255,255,255,255]],[[255,251,254,255,255,255,255,255,255,255,255],[245,251,254,255,255,255,255,255,255,255,255],[253,253,254,255,255,255,255,255,255,255,255]],[[255,251,253,255,255,255,255,255,255,255,255],[252,253,254,255,255,255,255,255,255,255,255],[255,254,255,255,255,255,255,255,255,255,255]],[[255,252,255,255,255,255,255,255,255,255,255],[249,255,254,255,255,255,255,255,255,255,255],[255,255,254,255,255,255,255,255,255,255,255]],[[255,255,253,255,255,255,255,255,255,255,255],[250,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],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]]],hn=[0,1,2,3,6,4,5,6,6,6,6,6,6,6,6,7,0],dn=[],fn=[],gn=[],pn=1,mn=2,wn=[],yn=[];vr(\"UpsampleRgbLinePair\",Ar,3),vr(\"UpsampleBgrLinePair\",xr,3),vr(\"UpsampleRgbaLinePair\",Ir,4),vr(\"UpsampleBgraLinePair\",kr,4),vr(\"UpsampleArgbLinePair\",Pr,4),vr(\"UpsampleRgba4444LinePair\",_r,2),vr(\"UpsampleRgb565LinePair\",Sr,2);var Bn=tA.UpsampleRgbLinePair,bn=tA.UpsampleBgrLinePair,vn=tA.UpsampleRgbaLinePair,Cn=tA.UpsampleBgraLinePair,Sn=tA.UpsampleArgbLinePair,xn=tA.UpsampleRgba4444LinePair,Fn=tA.UpsampleRgb565LinePair,En=16,Qn=1<<En-1,Un=-227,Pn=482,_n=6,Ln=(256<<_n)-1,In=0,Nn=a(256),Tn=a(256),kn=a(256),Mn=a(256),On=a(Pn-Un),Hn=a(Pn-Un);Fr(\"YuvToRgbRow\",Ar,3),Fr(\"YuvToBgrRow\",xr,3),Fr(\"YuvToRgbaRow\",Ir,4),Fr(\"YuvToBgraRow\",kr,4),Fr(\"YuvToArgbRow\",Pr,4),Fr(\"YuvToRgba4444Row\",_r,2),Fr(\"YuvToRgb565Row\",Sr,2);var Dn=[0,4,8,12,128,132,136,140,256,260,264,268,384,388,392,396],Rn=[0,2,8],Vn=[8,7,6,4,4,2,2,2,1,1,1,1],Gn=1;this.WebPDecodeRGBA=function(tA,eA,AA,rA,nA){var iA=$A,sA=new rr,oA=new ot;sA.ba=oA,oA.S=iA,oA.width=[oA.width],oA.height=[oA.height];var aA=oA.width,lA=oA.height,cA=new st;if(null==cA||null==tA)var uA=2;else e(null!=cA),uA=Br(tA,eA,AA,cA.width,cA.height,cA.Pd,cA.Qd,cA.format,null);if(0!=uA?aA=0:(null!=aA&&(aA[0]=cA.width[0]),null!=lA&&(lA[0]=cA.height[0]),aA=1),aA){oA.width=oA.width[0],oA.height=oA.height[0],null!=rA&&(rA[0]=oA.width),null!=nA&&(nA[0]=oA.height);t:{if(rA=new Gt,(nA=new nr).data=tA,nA.w=eA,nA.ha=AA,nA.kd=1,eA=[0],e(null!=nA),(0==(tA=Br(nA.data,nA.w,nA.ha,null,null,null,eA,null,nA))||7==tA)&&eA[0]&&(tA=4),0==(eA=tA)){if(e(null!=sA),rA.data=nA.data,rA.w=nA.w+nA.offset,rA.ha=nA.ha-nA.offset,rA.put=dt,rA.ac=ft,rA.bc=pt,rA.ma=sA,nA.xa){if(null==(tA=kt())){sA=1;break t}if(function(tA,eA){var AA=[0],rA=[0],nA=[0];e:for(;;){if(null==tA)return 0;if(null==eA)return tA.a=2,0;if(tA.l=eA,tA.a=0,v(tA.m,eA.data,eA.w,eA.ha),!gt(tA.m,AA,rA,nA)){tA.a=3;break e}if(tA.xb=mn,eA.width=AA[0],eA.height=rA[0],!It(AA[0],rA[0],1,tA,null))break e;return 1}return e(0!=tA.a),0}(tA,rA)){if(rA=0==(eA=qr(rA.width,rA.height,sA.Oa,sA.ba))){e:{rA=tA;A:for(;;){if(null==rA){rA=0;break e}if(e(null!=rA.s.yc),e(null!=rA.s.Ya),e(0<rA.s.Wb),e(null!=(AA=rA.l)),e(null!=(nA=AA.ma)),0!=rA.xb){if(rA.ca=nA.ba,rA.tb=nA.tb,e(null!=rA.ca),!Mr(nA.Oa,AA,Ur)){rA.a=2;break A}if(!Ft(rA,AA.width))break A;if(AA.da)break A;if((AA.da||nt(rA.ca.S))&&mr(),11>rA.ca.S||(alert(\"todo:WebPInitConvertARGBToYUV\"),null!=rA.ca.f.kb.F&&mr()),rA.Pb&&0<rA.s.ua&&null==rA.s.vb.X&&!O(rA.s.vb,rA.s.Wa.Xa)){rA.a=1;break A}rA.xb=0}if(!_t(rA,rA.V,rA.Ba,rA.c,rA.i,AA.o,Lt))break A;nA.Dc=rA.Ma,rA=1;break e}e(0!=rA.a),rA=0}rA=!rA}rA&&(eA=tA.a)}else eA=tA.a}else{if(null==(tA=new Yt)){sA=1;break t}if(tA.Fa=nA.na,tA.P=nA.P,tA.qc=nA.Sa,Kt(tA,rA)){if(0==(eA=qr(rA.width,rA.height,sA.Oa,sA.ba))){if(tA.Aa=0,AA=sA.Oa,e(null!=(nA=tA)),null!=AA){if(0<(aA=0>(aA=AA.Md)?0:100<aA?255:255*aA/100)){for(lA=cA=0;4>lA;++lA)12>(uA=nA.pb[lA]).lc&&(uA.ia=aA*Vn[0>uA.lc?0:uA.lc]>>3),cA|=uA.ia;cA&&(alert(\"todo:VP8InitRandom\"),nA.ia=1)}nA.Ga=AA.Id,100<nA.Ga?nA.Ga=100:0>nA.Ga&&(nA.Ga=0)}Qt(tA,rA)||(eA=tA.a)}}else eA=tA.a}0==eA&&null!=sA.Oa&&sA.Oa.fd&&(eA=Er(sA.ba))}sA=eA}iA=0!=sA?null:11>iA?oA.f.RGBA.eb:oA.f.kb.y}else iA=null;return iA};var jn=[3,4,3,4,4,2,2,4,4,4,2,1,1]};function u(tA,eA){for(var AA=\"\",rA=0;rA<4;rA++)AA+=String.fromCharCode(tA[eA++]);return AA}function h(tA,eA){return(tA[eA+0]<<0|tA[eA+1]<<8|tA[eA+2]<<16)>>>0}function l(tA,eA){return(tA[eA+0]<<0|tA[eA+1]<<8|tA[eA+2]<<16|tA[eA+3]<<24)>>>0}new c;var eA=[0],AA=[0],rA=[],nA=new c,iA=tA,sA=function(tA,eA){var AA={},rA=0,nA=!1,iA=0,sA=0;if(AA.frames=[],!\n/** @license\n * Copyright (c) 2017 Dominik Homberger\n Permission 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 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n THE 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 https://webpjs.appspot.com\n WebPRiffParser dominikhlbg@gmail.com\n */\nfunction(tA,eA,AA,rA){for(var nA=0;nA<4;nA++)if(tA[eA+nA]!=\"RIFF\".charCodeAt(nA))return!0;return!1}(tA,eA)){var oA,aA;for(l(tA,eA+=4),eA+=8;eA<tA.length;){var lA=u(tA,eA),cA=l(tA,eA+=4);eA+=4;var uA=cA+(1&cA);switch(lA){case\"VP8 \":case\"VP8L\":void 0===AA.frames[rA]&&(AA.frames[rA]={}),(fA=AA.frames[rA]).src_off=nA?sA:eA-8,fA.src_size=iA+cA+8,rA++,nA&&(nA=!1,iA=0,sA=0);break;case\"VP8X\":(fA=AA.header={}).feature_flags=tA[eA];var hA=eA+4;fA.canvas_width=1+h(tA,hA),hA+=3,fA.canvas_height=1+h(tA,hA),hA+=3;break;case\"ALPH\":nA=!0,iA=uA+8,sA=eA-8;break;case\"ANIM\":(fA=AA.header).bgcolor=l(tA,eA),hA=eA+4,fA.loop_count=(oA=tA)[(aA=hA)+0]<<0|oA[aA+1]<<8,hA+=2;break;case\"ANMF\":var dA,fA;(fA=AA.frames[rA]={}).offset_x=2*h(tA,eA),eA+=3,fA.offset_y=2*h(tA,eA),eA+=3,fA.width=1+h(tA,eA),eA+=3,fA.height=1+h(tA,eA),eA+=3,fA.duration=h(tA,eA),eA+=3,dA=tA[eA++],fA.dispose=1&dA,fA.blend=dA>>1&1}\"ANMF\"!=lA&&(eA+=uA)}return AA}}(iA,0);sA.response=iA,sA.rgbaoutput=!0,sA.dataurl=!1;var oA=sA.header?sA.header:null,aA=sA.frames?sA.frames:null;if(oA){oA.loop_counter=oA.loop_count,eA=[oA.canvas_height],AA=[oA.canvas_width];for(var lA=0;lA<aA.length&&0!=aA[lA].blend;lA++);}var cA=aA[0],uA=nA.WebPDecodeRGBA(iA,cA.src_off,cA.src_size,AA,eA);cA.rgba=uA,cA.imgwidth=AA[0],cA.imgheight=eA[0];for(var hA=0;hA<AA[0]*eA[0]*4;hA++)rA[hA]=uA[hA];return this.width=AA,this.height=eA,this.data=rA,this}!function(tA){var n=function(eA,AA,rA,nA){var iA=4,sA=s;switch(nA){case tA.image_compression.FAST:iA=1,sA=o;break;case tA.image_compression.MEDIUM:iA=6,sA=c;break;case tA.image_compression.SLOW:iA=9,sA=u}var oA=zlibSync(eA=i(eA,AA,rA,sA),{level:iA});return tA.__addimage__.arrayBufferToBinaryString(oA)},i=function(tA,eA,AA,rA){for(var nA,iA,sA,oA=tA.length/eA,aA=new Uint8Array(tA.length+oA),lA=l(),cA=0;cA<oA;cA+=1){if(sA=cA*eA,nA=tA.subarray(sA,sA+eA),rA)aA.set(rA(nA,AA,iA),sA+cA);else{for(var uA,hA=lA.length,dA=[];uA<hA;uA+=1)dA[uA]=lA[uA](nA,AA,iA);var fA=f(dA.concat());aA.set(dA[fA],sA+cA)}iA=nA}return aA},a=function(tA){var eA=Array.apply([],tA);return eA.unshift(0),eA},o=function(tA,eA){var AA,rA=[],nA=tA.length;rA[0]=1;for(var iA=0;iA<nA;iA+=1)AA=tA[iA-eA]||0,rA[iA+1]=tA[iA]-AA+256&255;return rA},s=function(tA,eA,AA){var rA,nA=[],iA=tA.length;nA[0]=2;for(var sA=0;sA<iA;sA+=1)rA=AA&&AA[sA]||0,nA[sA+1]=tA[sA]-rA+256&255;return nA},c=function(tA,eA,AA){var rA,nA,iA=[],sA=tA.length;iA[0]=3;for(var oA=0;oA<sA;oA+=1)rA=tA[oA-eA]||0,nA=AA&&AA[oA]||0,iA[oA+1]=tA[oA]+256-(rA+nA>>>1)&255;return iA},u=function(tA,eA,AA){var rA,nA,iA,sA,oA=[],aA=tA.length;oA[0]=4;for(var lA=0;lA<aA;lA+=1)rA=tA[lA-eA]||0,nA=AA&&AA[lA]||0,iA=AA&&AA[lA-eA]||0,sA=h(rA,nA,iA),oA[lA+1]=tA[lA]-sA+256&255;return oA},h=function(tA,eA,AA){if(tA===eA&&eA===AA)return tA;var rA=Math.abs(eA-AA),nA=Math.abs(tA-AA),iA=Math.abs(tA+eA-AA-AA);return rA<=nA&&rA<=iA?tA:nA<=iA?eA:AA},l=function(){return[a,o,s,c,u]},f=function(tA){var eA=tA.map((function(tA){return tA.reduce((function(tA,eA){return tA+Math.abs(eA)}),0)}));return eA.indexOf(Math.min.apply(null,eA))};tA.processPNG=function(eA,AA,rA,nA){var iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA,wA,yA,BA=this.decode.FLATE_DECODE,bA=\"\";if(this.__addimage__.isArrayBuffer(eA)&&(eA=new Uint8Array(eA)),this.__addimage__.isArrayBufferView(eA)){if(eA=(oA=new Si(eA)).imgData,sA=oA.bits,iA=oA.colorSpace,lA=oA.colors,-1!==[4,6].indexOf(oA.colorType)){if(8===oA.bits){dA=(hA=32==oA.pixelBitlength?new Uint32Array(oA.decodePixels().buffer):16==oA.pixelBitlength?new Uint16Array(oA.decodePixels().buffer):new Uint8Array(oA.decodePixels().buffer)).length,gA=new Uint8Array(dA*oA.colors),fA=new Uint8Array(dA);var vA,CA=oA.pixelBitlength-oA.bits;for(wA=0,yA=0;wA<dA;wA++){for(mA=hA[wA],vA=0;vA<CA;)gA[yA++]=mA>>>vA&255,vA+=oA.bits;fA[wA]=mA>>>vA&255}}if(16===oA.bits){dA=(hA=new Uint32Array(oA.decodePixels().buffer)).length,gA=new Uint8Array(dA*(32/oA.pixelBitlength)*oA.colors),fA=new Uint8Array(dA*(32/oA.pixelBitlength)),pA=oA.colors>1,wA=0,yA=0;for(var SA=0;wA<dA;)mA=hA[wA++],gA[yA++]=mA>>>0&255,pA&&(gA[yA++]=mA>>>16&255,mA=hA[wA++],gA[yA++]=mA>>>0&255),fA[SA++]=mA>>>16&255;sA=8}nA!==tA.image_compression.NONE?(eA=n(gA,oA.width*oA.colors,oA.colors,nA),uA=n(fA,oA.width,1,nA)):(eA=gA,uA=fA,BA=void 0)}if(3===oA.colorType&&(iA=this.color_spaces.INDEXED,cA=oA.palette,oA.transparency.indexed)){var xA=oA.transparency.indexed,FA=0;for(wA=0,dA=xA.length;wA<dA;++wA)FA+=xA[wA];if((FA/=255)==dA-1&&-1!==xA.indexOf(0))aA=[xA.indexOf(0)];else if(FA!==dA){for(hA=oA.decodePixels(),fA=new Uint8Array(hA.length),wA=0,dA=hA.length;wA<dA;wA++)fA[wA]=xA[hA[wA]];uA=n(fA,oA.width,1)}}var EA=function(eA){var AA;switch(eA){case tA.image_compression.FAST:AA=11;break;case tA.image_compression.MEDIUM:AA=13;break;case tA.image_compression.SLOW:AA=14;break;default:AA=12}return AA}(nA);return BA===this.decode.FLATE_DECODE&&(bA=\"/Predictor \"+EA+\" \"),bA+=\"/Colors \"+lA+\" /BitsPerComponent \"+sA+\" /Columns \"+oA.width,(this.__addimage__.isArrayBuffer(eA)||this.__addimage__.isArrayBufferView(eA))&&(eA=this.__addimage__.arrayBufferToBinaryString(eA)),(uA&&this.__addimage__.isArrayBuffer(uA)||this.__addimage__.isArrayBufferView(uA))&&(uA=this.__addimage__.arrayBufferToBinaryString(uA)),{alias:rA,data:eA,index:AA,filter:BA,decodeParameters:bA,transparency:aA,palette:cA,sMask:uA,predictor:EA,width:oA.width,height:oA.height,bitsPerComponent:sA,colorSpace:iA}}}}(E.API),function(tA){tA.processGIF89A=function(eA,AA,rA,nA){var iA=new Zt(eA),sA=iA.width,oA=iA.height,aA=[];iA.decodeAndBlitFrameRGBA(0,aA);var lA={data:aA,width:sA,height:oA},cA=new Qt(100).encode(lA,100);return tA.processJPEG.call(this,cA,AA,rA,nA)},tA.processGIF87A=tA.processGIF89A}(E.API),te.prototype.parseHeader=function(){if(this.fileSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.reserved=this.datav.getUint32(this.pos,!0),this.pos+=4,this.offset=this.datav.getUint32(this.pos,!0),this.pos+=4,this.headerSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.width=this.datav.getUint32(this.pos,!0),this.pos+=4,this.height=this.datav.getInt32(this.pos,!0),this.pos+=4,this.planes=this.datav.getUint16(this.pos,!0),this.pos+=2,this.bitPP=this.datav.getUint16(this.pos,!0),this.pos+=2,this.compress=this.datav.getUint32(this.pos,!0),this.pos+=4,this.rawSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.hr=this.datav.getUint32(this.pos,!0),this.pos+=4,this.vr=this.datav.getUint32(this.pos,!0),this.pos+=4,this.colors=this.datav.getUint32(this.pos,!0),this.pos+=4,this.importantColors=this.datav.getUint32(this.pos,!0),this.pos+=4,16===this.bitPP&&this.is_with_alpha&&(this.bitPP=15),this.bitPP<15){var tA=0===this.colors?1<<this.bitPP:this.colors;this.palette=new Array(tA);for(var eA=0;eA<tA;eA++){var AA=this.datav.getUint8(this.pos++,!0),rA=this.datav.getUint8(this.pos++,!0),nA=this.datav.getUint8(this.pos++,!0),iA=this.datav.getUint8(this.pos++,!0);this.palette[eA]={red:nA,green:rA,blue:AA,quad:iA}}}this.height<0&&(this.height*=-1,this.bottom_up=!1)},te.prototype.parseBGR=function(){this.pos=this.offset;try{var tA=\"bit\"+this.bitPP,eA=this.width*this.height*4;this.data=new Uint8Array(eA),this[tA]()}catch(tA){Rn.log(\"bit decode error:\"+tA)}},te.prototype.bit1=function(){var tA,eA=Math.ceil(this.width/8),AA=eA%4;for(tA=this.height-1;tA>=0;tA--){for(var rA=this.bottom_up?tA:this.height-1-tA,nA=0;nA<eA;nA++)for(var iA=this.datav.getUint8(this.pos++,!0),sA=rA*this.width*4+8*nA*4,oA=0;oA<8&&8*nA+oA<this.width;oA++){var aA=this.palette[iA>>7-oA&1];this.data[sA+4*oA]=aA.blue,this.data[sA+4*oA+1]=aA.green,this.data[sA+4*oA+2]=aA.red,this.data[sA+4*oA+3]=255}0!==AA&&(this.pos+=4-AA)}},te.prototype.bit4=function(){for(var tA=Math.ceil(this.width/2),eA=tA%4,AA=this.height-1;AA>=0;AA--){for(var rA=this.bottom_up?AA:this.height-1-AA,nA=0;nA<tA;nA++){var iA=this.datav.getUint8(this.pos++,!0),sA=rA*this.width*4+2*nA*4,oA=iA>>4,aA=15&iA,lA=this.palette[oA];if(this.data[sA]=lA.blue,this.data[sA+1]=lA.green,this.data[sA+2]=lA.red,this.data[sA+3]=255,2*nA+1>=this.width)break;lA=this.palette[aA],this.data[sA+4]=lA.blue,this.data[sA+4+1]=lA.green,this.data[sA+4+2]=lA.red,this.data[sA+4+3]=255}0!==eA&&(this.pos+=4-eA)}},te.prototype.bit8=function(){for(var tA=this.width%4,eA=this.height-1;eA>=0;eA--){for(var AA=this.bottom_up?eA:this.height-1-eA,rA=0;rA<this.width;rA++){var nA=this.datav.getUint8(this.pos++,!0),iA=AA*this.width*4+4*rA;if(nA<this.palette.length){var sA=this.palette[nA];this.data[iA]=sA.red,this.data[iA+1]=sA.green,this.data[iA+2]=sA.blue,this.data[iA+3]=255}else this.data[iA]=255,this.data[iA+1]=255,this.data[iA+2]=255,this.data[iA+3]=255}0!==tA&&(this.pos+=4-tA)}},te.prototype.bit15=function(){for(var tA=this.width%3,eA=parseInt(\"11111\",2),AA=this.height-1;AA>=0;AA--){for(var rA=this.bottom_up?AA:this.height-1-AA,nA=0;nA<this.width;nA++){var iA=this.datav.getUint16(this.pos,!0);this.pos+=2;var sA=(iA&eA)/eA*255|0,oA=(iA>>5&eA)/eA*255|0,aA=(iA>>10&eA)/eA*255|0,lA=iA>>15?255:0,cA=rA*this.width*4+4*nA;this.data[cA]=aA,this.data[cA+1]=oA,this.data[cA+2]=sA,this.data[cA+3]=lA}this.pos+=tA}},te.prototype.bit16=function(){for(var tA=this.width%3,eA=parseInt(\"11111\",2),AA=parseInt(\"111111\",2),rA=this.height-1;rA>=0;rA--){for(var nA=this.bottom_up?rA:this.height-1-rA,iA=0;iA<this.width;iA++){var sA=this.datav.getUint16(this.pos,!0);this.pos+=2;var oA=(sA&eA)/eA*255|0,aA=(sA>>5&AA)/AA*255|0,lA=(sA>>11)/eA*255|0,cA=nA*this.width*4+4*iA;this.data[cA]=lA,this.data[cA+1]=aA,this.data[cA+2]=oA,this.data[cA+3]=255}this.pos+=tA}},te.prototype.bit24=function(){for(var tA=this.height-1;tA>=0;tA--){for(var eA=this.bottom_up?tA:this.height-1-tA,AA=0;AA<this.width;AA++){var rA=this.datav.getUint8(this.pos++,!0),nA=this.datav.getUint8(this.pos++,!0),iA=this.datav.getUint8(this.pos++,!0),sA=eA*this.width*4+4*AA;this.data[sA]=iA,this.data[sA+1]=nA,this.data[sA+2]=rA,this.data[sA+3]=255}this.pos+=this.width%4}},te.prototype.bit32=function(){for(var tA=this.height-1;tA>=0;tA--)for(var eA=this.bottom_up?tA:this.height-1-tA,AA=0;AA<this.width;AA++){var rA=this.datav.getUint8(this.pos++,!0),nA=this.datav.getUint8(this.pos++,!0),iA=this.datav.getUint8(this.pos++,!0),sA=this.datav.getUint8(this.pos++,!0),oA=eA*this.width*4+4*AA;this.data[oA]=iA,this.data[oA+1]=nA,this.data[oA+2]=rA,this.data[oA+3]=sA}},te.prototype.getData=function(){return this.data},\n/**\n * @license\n * Copyright (c) 2018 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){tA.processBMP=function(eA,AA,rA,nA){var iA=new te(eA,!1),sA=iA.width,oA=iA.height,aA={data:iA.getData(),width:sA,height:oA},lA=new Qt(100).encode(aA,100);return tA.processJPEG.call(this,lA,AA,rA,nA)}}(E.API),ee.prototype.getData=function(){return this.data},\n/**\n * @license\n * Copyright (c) 2019 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){tA.processWEBP=function(eA,AA,rA,nA){var iA=new ee(eA),sA=iA.width,oA=iA.height,aA={data:iA.getData(),width:sA,height:oA},lA=new Qt(100).encode(aA,100);return tA.processJPEG.call(this,lA,AA,rA,nA)}}(E.API),E.API.processRGBA=function(tA,eA,AA){for(var rA=tA.data,nA=rA.length,iA=new Uint8Array(nA/4*3),sA=new Uint8Array(nA/4),oA=0,aA=0,lA=0;lA<nA;lA+=4){var cA=rA[lA],uA=rA[lA+1],hA=rA[lA+2],dA=rA[lA+3];iA[oA++]=cA,iA[oA++]=uA,iA[oA++]=hA,sA[aA++]=dA}var fA=this.__addimage__.arrayBufferToBinaryString(iA);return{alpha:this.__addimage__.arrayBufferToBinaryString(sA),data:fA,index:eA,alias:AA,colorSpace:\"DeviceRGB\",bitsPerComponent:8,width:tA.width,height:tA.height}},E.API.setLanguage=function(tA){return void 0===this.internal.languageSettings&&(this.internal.languageSettings={},this.internal.languageSettings.isSubscribed=!1),void 0!=={af:\"Afrikaans\",sq:\"Albanian\",ar:\"Arabic (Standard)\",\"ar-DZ\":\"Arabic (Algeria)\",\"ar-BH\":\"Arabic (Bahrain)\",\"ar-EG\":\"Arabic (Egypt)\",\"ar-IQ\":\"Arabic (Iraq)\",\"ar-JO\":\"Arabic (Jordan)\",\"ar-KW\":\"Arabic (Kuwait)\",\"ar-LB\":\"Arabic (Lebanon)\",\"ar-LY\":\"Arabic (Libya)\",\"ar-MA\":\"Arabic (Morocco)\",\"ar-OM\":\"Arabic (Oman)\",\"ar-QA\":\"Arabic (Qatar)\",\"ar-SA\":\"Arabic (Saudi Arabia)\",\"ar-SY\":\"Arabic (Syria)\",\"ar-TN\":\"Arabic (Tunisia)\",\"ar-AE\":\"Arabic (U.A.E.)\",\"ar-YE\":\"Arabic (Yemen)\",an:\"Aragonese\",hy:\"Armenian\",as:\"Assamese\",ast:\"Asturian\",az:\"Azerbaijani\",eu:\"Basque\",be:\"Belarusian\",bn:\"Bengali\",bs:\"Bosnian\",br:\"Breton\",bg:\"Bulgarian\",my:\"Burmese\",ca:\"Catalan\",ch:\"Chamorro\",ce:\"Chechen\",zh:\"Chinese\",\"zh-HK\":\"Chinese (Hong Kong)\",\"zh-CN\":\"Chinese (PRC)\",\"zh-SG\":\"Chinese (Singapore)\",\"zh-TW\":\"Chinese (Taiwan)\",cv:\"Chuvash\",co:\"Corsican\",cr:\"Cree\",hr:\"Croatian\",cs:\"Czech\",da:\"Danish\",nl:\"Dutch (Standard)\",\"nl-BE\":\"Dutch (Belgian)\",en:\"English\",\"en-AU\":\"English (Australia)\",\"en-BZ\":\"English (Belize)\",\"en-CA\":\"English (Canada)\",\"en-IE\":\"English (Ireland)\",\"en-JM\":\"English (Jamaica)\",\"en-NZ\":\"English (New Zealand)\",\"en-PH\":\"English (Philippines)\",\"en-ZA\":\"English (South Africa)\",\"en-TT\":\"English (Trinidad & Tobago)\",\"en-GB\":\"English (United Kingdom)\",\"en-US\":\"English (United States)\",\"en-ZW\":\"English (Zimbabwe)\",eo:\"Esperanto\",et:\"Estonian\",fo:\"Faeroese\",fj:\"Fijian\",fi:\"Finnish\",fr:\"French (Standard)\",\"fr-BE\":\"French (Belgium)\",\"fr-CA\":\"French (Canada)\",\"fr-FR\":\"French (France)\",\"fr-LU\":\"French (Luxembourg)\",\"fr-MC\":\"French (Monaco)\",\"fr-CH\":\"French (Switzerland)\",fy:\"Frisian\",fur:\"Friulian\",gd:\"Gaelic (Scots)\",\"gd-IE\":\"Gaelic (Irish)\",gl:\"Galacian\",ka:\"Georgian\",de:\"German (Standard)\",\"de-AT\":\"German (Austria)\",\"de-DE\":\"German (Germany)\",\"de-LI\":\"German (Liechtenstein)\",\"de-LU\":\"German (Luxembourg)\",\"de-CH\":\"German (Switzerland)\",el:\"Greek\",gu:\"Gujurati\",ht:\"Haitian\",he:\"Hebrew\",hi:\"Hindi\",hu:\"Hungarian\",is:\"Icelandic\",id:\"Indonesian\",iu:\"Inuktitut\",ga:\"Irish\",it:\"Italian (Standard)\",\"it-CH\":\"Italian (Switzerland)\",ja:\"Japanese\",kn:\"Kannada\",ks:\"Kashmiri\",kk:\"Kazakh\",km:\"Khmer\",ky:\"Kirghiz\",tlh:\"Klingon\",ko:\"Korean\",\"ko-KP\":\"Korean (North Korea)\",\"ko-KR\":\"Korean (South Korea)\",la:\"Latin\",lv:\"Latvian\",lt:\"Lithuanian\",lb:\"Luxembourgish\",mk:\"North Macedonia\",ms:\"Malay\",ml:\"Malayalam\",mt:\"Maltese\",mi:\"Maori\",mr:\"Marathi\",mo:\"Moldavian\",nv:\"Navajo\",ng:\"Ndonga\",ne:\"Nepali\",no:\"Norwegian\",nb:\"Norwegian (Bokmal)\",nn:\"Norwegian (Nynorsk)\",oc:\"Occitan\",or:\"Oriya\",om:\"Oromo\",fa:\"Persian\",\"fa-IR\":\"Persian/Iran\",pl:\"Polish\",pt:\"Portuguese\",\"pt-BR\":\"Portuguese (Brazil)\",pa:\"Punjabi\",\"pa-IN\":\"Punjabi (India)\",\"pa-PK\":\"Punjabi (Pakistan)\",qu:\"Quechua\",rm:\"Rhaeto-Romanic\",ro:\"Romanian\",\"ro-MO\":\"Romanian (Moldavia)\",ru:\"Russian\",\"ru-MO\":\"Russian (Moldavia)\",sz:\"Sami (Lappish)\",sg:\"Sango\",sa:\"Sanskrit\",sc:\"Sardinian\",sd:\"Sindhi\",si:\"Singhalese\",sr:\"Serbian\",sk:\"Slovak\",sl:\"Slovenian\",so:\"Somani\",sb:\"Sorbian\",es:\"Spanish\",\"es-AR\":\"Spanish (Argentina)\",\"es-BO\":\"Spanish (Bolivia)\",\"es-CL\":\"Spanish (Chile)\",\"es-CO\":\"Spanish (Colombia)\",\"es-CR\":\"Spanish (Costa Rica)\",\"es-DO\":\"Spanish (Dominican Republic)\",\"es-EC\":\"Spanish (Ecuador)\",\"es-SV\":\"Spanish (El Salvador)\",\"es-GT\":\"Spanish (Guatemala)\",\"es-HN\":\"Spanish (Honduras)\",\"es-MX\":\"Spanish (Mexico)\",\"es-NI\":\"Spanish (Nicaragua)\",\"es-PA\":\"Spanish (Panama)\",\"es-PY\":\"Spanish (Paraguay)\",\"es-PE\":\"Spanish (Peru)\",\"es-PR\":\"Spanish (Puerto Rico)\",\"es-ES\":\"Spanish (Spain)\",\"es-UY\":\"Spanish (Uruguay)\",\"es-VE\":\"Spanish (Venezuela)\",sx:\"Sutu\",sw:\"Swahili\",sv:\"Swedish\",\"sv-FI\":\"Swedish (Finland)\",\"sv-SV\":\"Swedish (Sweden)\",ta:\"Tamil\",tt:\"Tatar\",te:\"Teluga\",th:\"Thai\",tig:\"Tigre\",ts:\"Tsonga\",tn:\"Tswana\",tr:\"Turkish\",tk:\"Turkmen\",uk:\"Ukrainian\",hsb:\"Upper Sorbian\",ur:\"Urdu\",ve:\"Venda\",vi:\"Vietnamese\",vo:\"Volapuk\",wa:\"Walloon\",cy:\"Welsh\",xh:\"Xhosa\",ji:\"Yiddish\",zu:\"Zulu\"}[tA]&&(this.internal.languageSettings.languageCode=tA,!1===this.internal.languageSettings.isSubscribed&&(this.internal.events.subscribe(\"putCatalog\",(function(){this.internal.write(\"/Lang (\"+this.internal.languageSettings.languageCode+\")\")})),this.internal.languageSettings.isSubscribed=!0)),this},yi=E.API,Bi=yi.getCharWidthsArray=function(tA,eA){var AA,rA,nA=(eA=eA||{}).font||this.internal.getFont(),iA=eA.fontSize||this.internal.getFontSize(),sA=eA.charSpace||this.internal.getCharSpace(),oA=eA.widths?eA.widths:nA.metadata.Unicode.widths,aA=oA.fof?oA.fof:1,lA=eA.kerning?eA.kerning:nA.metadata.Unicode.kerning,cA=lA.fof?lA.fof:1,uA=!1!==eA.doKerning,hA=0,dA=tA.length,fA=0,gA=oA[0]||aA,pA=[];for(AA=0;AA<dA;AA++)rA=tA.charCodeAt(AA),\"function\"==typeof nA.metadata.widthOfString?pA.push((nA.metadata.widthOfGlyph(nA.metadata.characterToGlyph(rA))+sA*(1e3/iA)||0)/1e3):(hA=uA&&\"object\"===_typeof$1(lA[rA])&&!isNaN(parseInt(lA[rA][fA],10))?lA[rA][fA]/cA:0,pA.push((oA[rA]||gA)/aA+hA)),fA=rA;return pA},bi=yi.getStringUnitWidth=function(tA,eA){var AA=(eA=eA||{}).fontSize||this.internal.getFontSize(),rA=eA.font||this.internal.getFont(),nA=eA.charSpace||this.internal.getCharSpace();return yi.processArabic&&(tA=yi.processArabic(tA)),\"function\"==typeof rA.metadata.widthOfString?rA.metadata.widthOfString(tA,AA,nA)/AA:Bi.apply(this,arguments).reduce((function(tA,eA){return tA+eA}),0)},vi=function(tA,eA,AA,rA){for(var nA=[],iA=0,sA=tA.length,oA=0;iA!==sA&&oA+eA[iA]<AA;)oA+=eA[iA],iA++;nA.push(tA.slice(0,iA));var aA=iA;for(oA=0;iA!==sA;)oA+eA[iA]>rA&&(nA.push(tA.slice(aA,iA)),oA=0,aA=iA),oA+=eA[iA],iA++;return aA!==iA&&nA.push(tA.slice(aA,iA)),nA},Ci=function(tA,eA,AA){AA||(AA={});var rA,nA,iA,sA,oA,aA,lA,cA=[],uA=[cA],hA=AA.textIndent||0,dA=0,fA=0,gA=tA.split(\" \"),pA=Bi.apply(this,[\" \",AA])[0];if(aA=-1===AA.lineIndent?gA[0].length+2:AA.lineIndent||0){var mA=Array(aA).join(\" \"),wA=[];gA.map((function(tA){(tA=tA.split(/\\s*\\n/)).length>1?wA=wA.concat(tA.map((function(tA,eA){return(eA&&tA.length?\"\\n\":\"\")+tA}))):wA.push(tA[0])})),gA=wA,aA=bi.apply(this,[mA,AA])}for(iA=0,sA=gA.length;iA<sA;iA++){var yA=0;if(rA=gA[iA],aA&&\"\\n\"==rA[0]&&(rA=rA.substr(1),yA=1),hA+dA+(fA=(nA=Bi.apply(this,[rA,AA])).reduce((function(tA,eA){return tA+eA}),0))>eA||yA){if(fA>eA){for(oA=vi.apply(this,[rA,nA,eA-(hA+dA),eA]),cA.push(oA.shift()),cA=[oA.pop()];oA.length;)uA.push([oA.shift()]);fA=nA.slice(rA.length-(cA[0]?cA[0].length:0)).reduce((function(tA,eA){return tA+eA}),0)}else cA=[rA];uA.push(cA),hA=fA+aA,dA=pA}else cA.push(rA),hA+=dA+fA,dA=pA}return lA=aA?function(tA,eA){return(eA?mA:\"\")+tA.join(\" \")}:function(tA){return tA.join(\" \")},uA.map(lA)},yi.splitTextToSize=function(tA,eA,AA){var rA,nA=(AA=AA||{}).fontSize||this.internal.getFontSize(),iA=function(tA){if(tA.widths&&tA.kerning)return{widths:tA.widths,kerning:tA.kerning};var eA=this.internal.getFont(tA.fontName,tA.fontStyle);return eA.metadata.Unicode?{widths:eA.metadata.Unicode.widths||{0:1},kerning:eA.metadata.Unicode.kerning||{}}:{font:eA.metadata,fontSize:this.internal.getFontSize(),charSpace:this.internal.getCharSpace()}}.call(this,AA);rA=Array.isArray(tA)?tA:String(tA).split(/\\r?\\n/);var sA=1*this.internal.scaleFactor*eA/nA;iA.textIndent=AA.textIndent?1*AA.textIndent*this.internal.scaleFactor/nA:0,iA.lineIndent=AA.lineIndent;var oA,aA,lA=[];for(oA=0,aA=rA.length;oA<aA;oA++)lA=lA.concat(Ci.apply(this,[rA[oA],sA,iA]));return lA},function(tA){tA.__fontmetrics__=tA.__fontmetrics__||{};for(var eA=\"klmnopqrstuvwxyz\",AA={},rA={},nA=0;nA<eA.length;nA++)AA[eA[nA]]=\"0123456789abcdef\"[nA],rA[\"0123456789abcdef\"[nA]]=eA[nA];var o=function(tA){return\"0x\"+parseInt(tA,10).toString(16)},iA=tA.__fontmetrics__.compress=function(tA){var eA,AA,nA,sA,oA=[\"{\"];for(var aA in tA){if(eA=tA[aA],isNaN(parseInt(aA,10))?AA=\"'\"+aA+\"'\":(aA=parseInt(aA,10),AA=(AA=o(aA).slice(2)).slice(0,-1)+rA[AA.slice(-1)]),\"number\"==typeof eA)eA<0?(nA=o(eA).slice(3),sA=\"-\"):(nA=o(eA).slice(2),sA=\"\"),nA=sA+nA.slice(0,-1)+rA[nA.slice(-1)];else{if(\"object\"!==_typeof$1(eA))throw new Error(\"Don't know what to do with value type \"+_typeof$1(eA)+\".\");nA=iA(eA)}oA.push(AA+nA)}return oA.push(\"}\"),oA.join(\"\")},sA=tA.__fontmetrics__.uncompress=function(tA){if(\"string\"!=typeof tA)throw new Error(\"Invalid argument passed to uncompress.\");for(var eA,rA,nA,iA,sA={},oA=1,aA=sA,lA=[],cA=\"\",uA=\"\",hA=tA.length-1,dA=1;dA<hA;dA+=1)\"'\"==(iA=tA[dA])?eA?(nA=eA.join(\"\"),eA=void 0):eA=[]:eA?eA.push(iA):\"{\"==iA?(lA.push([aA,nA]),aA={},nA=void 0):\"}\"==iA?((rA=lA.pop())[0][rA[1]]=aA,nA=void 0,aA=rA[0]):\"-\"==iA?oA=-1:void 0===nA?AA.hasOwnProperty(iA)?(cA+=AA[iA],nA=parseInt(cA,16)*oA,oA=1,cA=\"\"):cA+=iA:AA.hasOwnProperty(iA)?(uA+=AA[iA],aA[nA]=parseInt(uA,16)*oA,oA=1,nA=void 0,uA=\"\"):uA+=iA;return sA},oA={codePages:[\"WinAnsiEncoding\"],WinAnsiEncoding:sA(\"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\")},aA={Unicode:{Courier:oA,\"Courier-Bold\":oA,\"Courier-BoldOblique\":oA,\"Courier-Oblique\":oA,Helvetica:oA,\"Helvetica-Bold\":oA,\"Helvetica-BoldOblique\":oA,\"Helvetica-Oblique\":oA,\"Times-Roman\":oA,\"Times-Bold\":oA,\"Times-BoldItalic\":oA,\"Times-Italic\":oA}},lA={Unicode:{\"Courier-Oblique\":sA(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\"Times-BoldItalic\":sA(\"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}\"),\"Helvetica-Bold\":sA(\"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"),Courier:sA(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\"Courier-BoldOblique\":sA(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\"Times-Bold\":sA(\"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}\"),Symbol:sA(\"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"),Helvetica:sA(\"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"),\"Helvetica-BoldOblique\":sA(\"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"),ZapfDingbats:sA(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\"Courier-Bold\":sA(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\"Times-Italic\":sA(\"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}\"),\"Times-Roman\":sA(\"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}\"),\"Helvetica-Oblique\":sA(\"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\")}};tA.events.push([\"addFont\",function(tA){var eA=tA.font,AA=lA.Unicode[eA.postScriptName];AA&&(eA.metadata.Unicode={},eA.metadata.Unicode.widths=AA.widths,eA.metadata.Unicode.kerning=AA.kerning);var rA=aA.Unicode[eA.postScriptName];rA&&(eA.metadata.Unicode.encoding=rA,eA.encoding=rA.codePages[0])}])}(E.API),\n/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){var e=function(tA){for(var eA=tA.length,AA=new Uint8Array(eA),rA=0;rA<eA;rA++)AA[rA]=tA.charCodeAt(rA);return AA};tA.API.events.push([\"addFont\",function(eA){var AA=void 0,rA=eA.font,nA=eA.instance;if(!rA.isStandardFont){if(void 0===nA)throw new Error(\"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\"+rA.postScriptName+\"').\");if(\"string\"!=typeof(AA=!1===nA.existsFileInVFS(rA.postScriptName)?nA.loadFile(rA.postScriptName):nA.getFileFromVFS(rA.postScriptName)))throw new Error(\"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\"+rA.postScriptName+\"').\");!function(eA,AA){AA=/^\\x00\\x01\\x00\\x00/.test(AA)?e(AA):e(Vn(AA)),eA.metadata=tA.API.TTFFont.open(AA),eA.metadata.Unicode=eA.metadata.Unicode||{encoding:{},kerning:{},widths:[]},eA.metadata.glyIdsUsed=[0]}(rA,AA)}}])}(E),\n/** @license\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\nfunction(tA){function e(){return(Dn.canvg?Promise.resolve(Dn.canvg):Promise.resolve().then((function(){return Av}))).catch((function(tA){return Promise.reject(new Error(\"Could not load canvg: \"+tA))})).then((function(tA){return tA.default?tA.default:tA}))}E.API.addSvgAsImage=function(tA,eA,AA,rA,nA,iA,sA,oA){if(isNaN(eA)||isNaN(AA))throw Rn.error(\"jsPDF.addSvgAsImage: Invalid coordinates\",arguments),new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");if(isNaN(rA)||isNaN(nA))throw Rn.error(\"jsPDF.addSvgAsImage: Invalid measurements\",arguments),new Error(\"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\");var aA=document.createElement(\"canvas\");aA.width=rA,aA.height=nA;var lA=aA.getContext(\"2d\");lA.fillStyle=\"#fff\",lA.fillRect(0,0,aA.width,aA.height);var cA={ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0},uA=this;return e().then((function(eA){return eA.fromString(lA,tA,cA)}),(function(){return Promise.reject(new Error(\"Could not load canvg.\"))})).then((function(tA){return tA.render(cA)})).then((function(){uA.addImage(aA.toDataURL(\"image/jpeg\",1),eA,AA,rA,nA,sA,oA)}))}}(),E.API.putTotalPages=function(tA){var eA,AA=0;parseInt(this.internal.getFont().id.substr(1),10)<15?(eA=new RegExp(tA,\"g\"),AA=this.internal.getNumberOfPages()):(eA=new RegExp(this.pdfEscape16(tA,this.internal.getFont()),\"g\"),AA=this.pdfEscape16(this.internal.getNumberOfPages()+\"\",this.internal.getFont()));for(var rA=1;rA<=this.internal.getNumberOfPages();rA++)for(var nA=0;nA<this.internal.pages[rA].length;nA++)this.internal.pages[rA][nA]=this.internal.pages[rA][nA].replace(eA,AA);return this},E.API.viewerPreferences=function(tA,eA){var AA;tA=tA||{},eA=eA||!1;var rA,nA,iA,sA={HideToolbar:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideMenubar:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideWindowUI:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},FitWindow:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},CenterWindow:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},DisplayDocTitle:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.4},NonFullScreenPageMode:{defaultValue:\"UseNone\",value:\"UseNone\",type:\"name\",explicitSet:!1,valueSet:[\"UseNone\",\"UseOutlines\",\"UseThumbs\",\"UseOC\"],pdfVersion:1.3},Direction:{defaultValue:\"L2R\",value:\"L2R\",type:\"name\",explicitSet:!1,valueSet:[\"L2R\",\"R2L\"],pdfVersion:1.3},ViewArea:{defaultValue:\"CropBox\",value:\"CropBox\",type:\"name\",explicitSet:!1,valueSet:[\"MediaBox\",\"CropBox\",\"TrimBox\",\"BleedBox\",\"ArtBox\"],pdfVersion:1.4},ViewClip:{defaultValue:\"CropBox\",value:\"CropBox\",type:\"name\",explicitSet:!1,valueSet:[\"MediaBox\",\"CropBox\",\"TrimBox\",\"BleedBox\",\"ArtBox\"],pdfVersion:1.4},PrintArea:{defaultValue:\"CropBox\",value:\"CropBox\",type:\"name\",explicitSet:!1,valueSet:[\"MediaBox\",\"CropBox\",\"TrimBox\",\"BleedBox\",\"ArtBox\"],pdfVersion:1.4},PrintClip:{defaultValue:\"CropBox\",value:\"CropBox\",type:\"name\",explicitSet:!1,valueSet:[\"MediaBox\",\"CropBox\",\"TrimBox\",\"BleedBox\",\"ArtBox\"],pdfVersion:1.4},PrintScaling:{defaultValue:\"AppDefault\",value:\"AppDefault\",type:\"name\",explicitSet:!1,valueSet:[\"AppDefault\",\"None\"],pdfVersion:1.6},Duplex:{defaultValue:\"\",value:\"none\",type:\"name\",explicitSet:!1,valueSet:[\"Simplex\",\"DuplexFlipShortEdge\",\"DuplexFlipLongEdge\",\"none\"],pdfVersion:1.7},PickTrayByPDFSize:{defaultValue:!1,value:!1,type:\"boolean\",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.7},PrintPageRange:{defaultValue:\"\",value:\"\",type:\"array\",explicitSet:!1,valueSet:null,pdfVersion:1.7},NumCopies:{defaultValue:1,value:1,type:\"integer\",explicitSet:!1,valueSet:null,pdfVersion:1.7}},oA=Object.keys(sA),aA=[],lA=0,cA=0,uA=0;function d(tA,eA){var AA,rA=!1;for(AA=0;AA<tA.length;AA+=1)tA[AA]===eA&&(rA=!0);return rA}if(void 0===this.internal.viewerpreferences&&(this.internal.viewerpreferences={},this.internal.viewerpreferences.configuration=JSON.parse(JSON.stringify(sA)),this.internal.viewerpreferences.isSubscribed=!1),AA=this.internal.viewerpreferences.configuration,\"reset\"===tA||!0===eA){var hA=oA.length;for(uA=0;uA<hA;uA+=1)AA[oA[uA]].value=AA[oA[uA]].defaultValue,AA[oA[uA]].explicitSet=!1}if(\"object\"===_typeof$1(tA))for(nA in tA)if(iA=tA[nA],d(oA,nA)&&void 0!==iA){if(\"boolean\"===AA[nA].type&&\"boolean\"==typeof iA)AA[nA].value=iA;else if(\"name\"===AA[nA].type&&d(AA[nA].valueSet,iA))AA[nA].value=iA;else if(\"integer\"===AA[nA].type&&Number.isInteger(iA))AA[nA].value=iA;else if(\"array\"===AA[nA].type){for(lA=0;lA<iA.length;lA+=1)if(rA=!0,1===iA[lA].length&&\"number\"==typeof iA[lA][0])aA.push(String(iA[lA]-1));else if(iA[lA].length>1){for(cA=0;cA<iA[lA].length;cA+=1)\"number\"!=typeof iA[lA][cA]&&(rA=!1);!0===rA&&aA.push([iA[lA][0]-1,iA[lA][1]-1].join(\" \"))}AA[nA].value=\"[\"+aA.join(\" \")+\"]\"}else AA[nA].value=AA[nA].defaultValue;AA[nA].explicitSet=!0}return!1===this.internal.viewerpreferences.isSubscribed&&(this.internal.events.subscribe(\"putCatalog\",(function(){var tA,eA=[];for(tA in AA)!0===AA[tA].explicitSet&&(\"name\"===AA[tA].type?eA.push(\"/\"+tA+\" /\"+AA[tA].value):eA.push(\"/\"+tA+\" \"+AA[tA].value));0!==eA.length&&this.internal.write(\"/ViewerPreferences\\n<<\\n\"+eA.join(\"\\n\")+\"\\n>>\")})),this.internal.viewerpreferences.isSubscribed=!0),this.internal.viewerpreferences.configuration=AA,this},\n/** ====================================================================\n * @license\n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\nfunction(tA){var e=function(){var tA='<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"><rdf:Description rdf:about=\"\" xmlns:jspdf=\"'+this.internal.__metadata__.namespaceuri+'\"><jspdf:metadata>',eA=unescape(encodeURIComponent('<x:xmpmeta xmlns:x=\"adobe:ns:meta/\">')),AA=unescape(encodeURIComponent(tA)),rA=unescape(encodeURIComponent(this.internal.__metadata__.metadata)),nA=unescape(encodeURIComponent(\"</jspdf:metadata></rdf:Description></rdf:RDF>\")),iA=unescape(encodeURIComponent(\"</x:xmpmeta>\")),sA=AA.length+rA.length+nA.length+eA.length+iA.length;this.internal.__metadata__.metadata_object_number=this.internal.newObject(),this.internal.write(\"<< /Type /Metadata /Subtype /XML /Length \"+sA+\" >>\"),this.internal.write(\"stream\"),this.internal.write(eA+AA+rA+nA+iA),this.internal.write(\"endstream\"),this.internal.write(\"endobj\")},r=function(){this.internal.__metadata__.metadata_object_number&&this.internal.write(\"/Metadata \"+this.internal.__metadata__.metadata_object_number+\" 0 R\")};tA.addMetadata=function(tA,eA){return void 0===this.internal.__metadata__&&(this.internal.__metadata__={metadata:tA,namespaceuri:eA||\"http://jspdf.default.namespaceuri/\"},this.internal.events.subscribe(\"putCatalog\",r),this.internal.events.subscribe(\"postPutResources\",e)),this}}(E.API),function(tA){var eA=tA.API,AA=eA.pdfEscape16=function(tA,eA){for(var AA,rA=eA.metadata.Unicode.widths,nA=[\"\",\"0\",\"00\",\"000\",\"0000\"],iA=[\"\"],sA=0,oA=tA.length;sA<oA;++sA){if(AA=eA.metadata.characterToGlyph(tA.charCodeAt(sA)),eA.metadata.glyIdsUsed.push(AA),eA.metadata.toUnicode[AA]=tA.charCodeAt(sA),-1==rA.indexOf(AA)&&(rA.push(AA),rA.push([parseInt(eA.metadata.widthOfGlyph(AA),10)])),\"0\"==AA)return iA.join(\"\");AA=AA.toString(16),iA.push(nA[4-AA.length],AA)}return iA.join(\"\")},n=function(tA){var eA,AA,rA,nA,iA,sA,oA;for(iA=\"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000><ffff>\\nendcodespacerange\",rA=[],sA=0,oA=(AA=Object.keys(tA).sort((function(tA,eA){return tA-eA}))).length;sA<oA;sA++)eA=AA[sA],rA.length>=100&&(iA+=\"\\n\"+rA.length+\" beginbfchar\\n\"+rA.join(\"\\n\")+\"\\nendbfchar\",rA=[]),void 0!==tA[eA]&&null!==tA[eA]&&\"function\"==typeof tA[eA].toString&&(nA=(\"0000\"+tA[eA].toString(16)).slice(-4),eA=(\"0000\"+(+eA).toString(16)).slice(-4),rA.push(\"<\"+eA+\"><\"+nA+\">\"));return rA.length&&(iA+=\"\\n\"+rA.length+\" beginbfchar\\n\"+rA.join(\"\\n\")+\"\\nendbfchar\\n\"),iA+\"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\"};eA.events.push([\"putFont\",function(eA){!function(eA){var AA=eA.font,rA=eA.out,nA=eA.newObject,iA=eA.putStream;if(AA.metadata instanceof tA.API.TTFFont&&\"Identity-H\"===AA.encoding){for(var sA=AA.metadata.Unicode.widths,oA=AA.metadata.subset.encode(AA.metadata.glyIdsUsed,1),aA=\"\",lA=0;lA<oA.length;lA++)aA+=String.fromCharCode(oA[lA]);var cA=nA();iA({data:aA,addLength1:!0,objectId:cA}),rA(\"endobj\");var uA=nA();iA({data:n(AA.metadata.toUnicode),addLength1:!0,objectId:uA}),rA(\"endobj\");var hA=nA();rA(\"<<\"),rA(\"/Type /FontDescriptor\"),rA(\"/FontName /\"+F(AA.fontName)),rA(\"/FontFile2 \"+cA+\" 0 R\"),rA(\"/FontBBox \"+tA.API.PDFObject.convert(AA.metadata.bbox)),rA(\"/Flags \"+AA.metadata.flags),rA(\"/StemV \"+AA.metadata.stemV),rA(\"/ItalicAngle \"+AA.metadata.italicAngle),rA(\"/Ascent \"+AA.metadata.ascender),rA(\"/Descent \"+AA.metadata.decender),rA(\"/CapHeight \"+AA.metadata.capHeight),rA(\">>\"),rA(\"endobj\");var dA=nA();rA(\"<<\"),rA(\"/Type /Font\"),rA(\"/BaseFont /\"+F(AA.fontName)),rA(\"/FontDescriptor \"+hA+\" 0 R\"),rA(\"/W \"+tA.API.PDFObject.convert(sA)),rA(\"/CIDToGIDMap /Identity\"),rA(\"/DW 1000\"),rA(\"/Subtype /CIDFontType2\"),rA(\"/CIDSystemInfo\"),rA(\"<<\"),rA(\"/Supplement 0\"),rA(\"/Registry (Adobe)\"),rA(\"/Ordering (\"+AA.encoding+\")\"),rA(\">>\"),rA(\">>\"),rA(\"endobj\"),AA.objectNumber=nA(),rA(\"<<\"),rA(\"/Type /Font\"),rA(\"/Subtype /Type0\"),rA(\"/ToUnicode \"+uA+\" 0 R\"),rA(\"/BaseFont /\"+F(AA.fontName)),rA(\"/Encoding /\"+AA.encoding),rA(\"/DescendantFonts [\"+dA+\" 0 R]\"),rA(\">>\"),rA(\"endobj\"),AA.isAlreadyPutted=!0}}(eA)}]),eA.events.push([\"putFont\",function(eA){!function(eA){var AA=eA.font,rA=eA.out,nA=eA.newObject,iA=eA.putStream;if(AA.metadata instanceof tA.API.TTFFont&&\"WinAnsiEncoding\"===AA.encoding){for(var sA=AA.metadata.rawData,oA=\"\",aA=0;aA<sA.length;aA++)oA+=String.fromCharCode(sA[aA]);var lA=nA();iA({data:oA,addLength1:!0,objectId:lA}),rA(\"endobj\");var cA=nA();iA({data:n(AA.metadata.toUnicode),addLength1:!0,objectId:cA}),rA(\"endobj\");var uA=nA();rA(\"<<\"),rA(\"/Descent \"+AA.metadata.decender),rA(\"/CapHeight \"+AA.metadata.capHeight),rA(\"/StemV \"+AA.metadata.stemV),rA(\"/Type /FontDescriptor\"),rA(\"/FontFile2 \"+lA+\" 0 R\"),rA(\"/Flags 96\"),rA(\"/FontBBox \"+tA.API.PDFObject.convert(AA.metadata.bbox)),rA(\"/FontName /\"+F(AA.fontName)),rA(\"/ItalicAngle \"+AA.metadata.italicAngle),rA(\"/Ascent \"+AA.metadata.ascender),rA(\">>\"),rA(\"endobj\"),AA.objectNumber=nA();for(var hA=0;hA<AA.metadata.hmtx.widths.length;hA++)AA.metadata.hmtx.widths[hA]=parseInt(AA.metadata.hmtx.widths[hA]*(1e3/AA.metadata.head.unitsPerEm));rA(\"<</Subtype/TrueType/Type/Font/ToUnicode \"+cA+\" 0 R/BaseFont/\"+F(AA.fontName)+\"/FontDescriptor \"+uA+\" 0 R/Encoding/\"+AA.encoding+\" /FirstChar 29 /LastChar 255 /Widths \"+tA.API.PDFObject.convert(AA.metadata.hmtx.widths)+\">>\"),rA(\"endobj\"),AA.isAlreadyPutted=!0}}(eA)}]);var i=function(tA){var eA,rA=tA.text||\"\",nA=tA.x,iA=tA.y,sA=tA.options||{},oA=tA.mutex||{},aA=oA.pdfEscape,lA=oA.activeFontKey,cA=oA.fonts,uA=lA,hA=\"\",dA=0,fA=\"\",gA=cA[uA].encoding;if(\"Identity-H\"!==cA[uA].encoding)return{text:rA,x:nA,y:iA,options:sA,mutex:oA};for(fA=rA,uA=lA,Array.isArray(rA)&&(fA=rA[0]),dA=0;dA<fA.length;dA+=1)cA[uA].metadata.hasOwnProperty(\"cmap\")&&(eA=cA[uA].metadata.cmap.unicode.codeMap[fA[dA].charCodeAt(0)]),eA||fA[dA].charCodeAt(0)<256&&cA[uA].metadata.hasOwnProperty(\"Unicode\")?hA+=fA[dA]:hA+=\"\";var pA=\"\";return parseInt(uA.slice(1))<14||\"WinAnsiEncoding\"===gA?pA=aA(hA,uA).split(\"\").map((function(tA){return tA.charCodeAt(0).toString(16)})).join(\"\"):\"Identity-H\"===gA&&(pA=AA(hA,cA[uA])),oA.isHex=!0,{text:pA,x:nA,y:iA,options:sA,mutex:oA}};eA.events.push([\"postProcessText\",function(tA){var eA=tA.text||\"\",AA=[],rA={text:eA,x:tA.x,y:tA.y,options:tA.options,mutex:tA.mutex};if(Array.isArray(eA)){var nA=0;for(nA=0;nA<eA.length;nA+=1)Array.isArray(eA[nA])&&3===eA[nA].length?AA.push([i(Object.assign({},rA,{text:eA[nA][0]})).text,eA[nA][1],eA[nA][2]]):AA.push(i(Object.assign({},rA,{text:eA[nA]})).text);tA.text=AA}else tA.text=i(Object.assign({},rA,{text:eA})).text}])}(E),\n/**\n * @license\n * jsPDF virtual FileSystem functionality\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\nfunction(tA){var e=function(){return void 0===this.internal.vFS&&(this.internal.vFS={}),!0};tA.existsFileInVFS=function(tA){return e.call(this),void 0!==this.internal.vFS[tA]},tA.addFileToVFS=function(tA,eA){return e.call(this),this.internal.vFS[tA]=eA,this},tA.getFileFromVFS=function(tA){return e.call(this),void 0!==this.internal.vFS[tA]?this.internal.vFS[tA]:null}}(E.API),\n/**\n * @license\n * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)\n * MIT License\n */\nfunction(tA){tA.__bidiEngine__=tA.prototype.__bidiEngine__=function(tA){var AA,rA,nA,iA,sA,oA,aA,lA=eA,cA=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],uA=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],hA={L:0,R:1,EN:2,AN:3,N:4,B:5,S:6},dA={0:0,5:1,6:2,7:3,32:4,251:5,254:6,255:7},fA=[\"(\",\")\",\"(\",\"<\",\">\",\"<\",\"[\",\"]\",\"[\",\"{\",\"}\",\"{\",\"«\",\"»\",\"«\",\"\",\"\",\"\",\"⁅\",\"⁆\",\"⁅\",\"⁽\",\"⁾\",\"⁽\",\"₍\",\"₎\",\"₍\",\"≤\",\"≥\",\"≤\",\"〈\",\"〉\",\"〈\",\"﹙\",\"﹚\",\"﹙\",\"﹛\",\"﹜\",\"﹛\",\"﹝\",\"﹞\",\"﹝\",\"﹤\",\"﹥\",\"﹤\"],gA=new RegExp(/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/),pA=!1,mA=0;this.__bidiEngine__={};var b=function(tA){var eA=tA.charCodeAt(),AA=eA>>8,rA=dA[AA];return void 0!==rA?lA[256*rA+(255&eA)]:252===AA||253===AA?\"AL\":gA.test(AA)?\"L\":8===AA?\"R\":\"N\"},y=function(tA){for(var eA,AA=0;AA<tA.length;AA++){if(\"L\"===(eA=b(tA.charAt(AA))))return!1;if(\"R\"===eA)return!0}return!1},w=function(tA,eA,sA,oA){var aA,lA,cA,uA,hA=eA[oA];switch(hA){case\"L\":case\"R\":case\"LRE\":case\"RLE\":case\"LRO\":case\"RLO\":case\"PDF\":pA=!1;break;case\"N\":case\"AN\":break;case\"EN\":pA&&(hA=\"AN\");break;case\"AL\":pA=!0,hA=\"R\";break;case\"WS\":case\"BN\":hA=\"N\";break;case\"CS\":oA<1||oA+1>=eA.length||\"EN\"!==(aA=sA[oA-1])&&\"AN\"!==aA||\"EN\"!==(lA=eA[oA+1])&&\"AN\"!==lA?hA=\"N\":pA&&(lA=\"AN\"),hA=lA===aA?lA:\"N\";break;case\"ES\":hA=\"EN\"===(aA=oA>0?sA[oA-1]:\"B\")&&oA+1<eA.length&&\"EN\"===eA[oA+1]?\"EN\":\"N\";break;case\"ET\":if(oA>0&&\"EN\"===sA[oA-1]){hA=\"EN\";break}if(pA){hA=\"N\";break}for(cA=oA+1,uA=eA.length;cA<uA&&\"ET\"===eA[cA];)cA++;hA=cA<uA&&\"EN\"===eA[cA]?\"EN\":\"N\";break;case\"NSM\":if(nA&&!iA){for(uA=eA.length,cA=oA+1;cA<uA&&\"NSM\"===eA[cA];)cA++;if(cA<uA){var dA=tA[oA],fA=dA>=1425&&dA<=2303||64286===dA;if(aA=eA[cA],fA&&(\"R\"===aA||\"AL\"===aA)){hA=\"R\";break}}}hA=oA<1||\"B\"===(aA=eA[oA-1])?\"N\":sA[oA-1];break;case\"B\":pA=!1,AA=!0,hA=mA;break;case\"S\":rA=!0,hA=\"N\"}return hA},N=function(tA,eA,AA){var rA=tA.split(\"\");return AA&&L(rA,AA,{hiLevel:mA}),rA.reverse(),eA&&eA.reverse(),rA.join(\"\")},L=function(tA,eA,nA){var iA,sA,oA,aA,lA,dA=-1,fA=tA.length,gA=0,wA=[],yA=mA?uA:cA,BA=[];for(pA=!1,AA=!1,rA=!1,sA=0;sA<fA;sA++)BA[sA]=b(tA[sA]);for(oA=0;oA<fA;oA++){if(lA=gA,wA[oA]=w(tA,BA,wA,oA),iA=240&(gA=yA[lA][hA[wA[oA]]]),gA&=15,eA[oA]=aA=yA[gA][5],iA>0)if(16===iA){for(sA=dA;sA<oA;sA++)eA[sA]=1;dA=-1}else dA=-1;if(yA[gA][6])-1===dA&&(dA=oA);else if(dA>-1){for(sA=dA;sA<oA;sA++)eA[sA]=aA;dA=-1}\"B\"===BA[oA]&&(eA[oA]=0),nA.hiLevel|=aA}rA&&function(tA,eA,AA){for(var rA=0;rA<AA;rA++)if(\"S\"===tA[rA]){eA[rA]=mA;for(var nA=rA-1;nA>=0&&\"WS\"===tA[nA];nA--)eA[nA]=mA}}(BA,eA,fA)},A=function(tA,eA,rA,nA,iA){if(!(iA.hiLevel<tA)){if(1===tA&&1===mA&&!AA)return eA.reverse(),void(rA&&rA.reverse());for(var sA,oA,aA,lA,cA=eA.length,uA=0;uA<cA;){if(nA[uA]>=tA){for(aA=uA+1;aA<cA&&nA[aA]>=tA;)aA++;for(lA=uA,oA=aA-1;lA<oA;lA++,oA--)sA=eA[lA],eA[lA]=eA[oA],eA[oA]=sA,rA&&(sA=rA[lA],rA[lA]=rA[oA],rA[oA]=sA);uA=aA}uA++}}},x=function(tA,eA,AA){var rA=tA.split(\"\"),nA={hiLevel:mA};return AA||(AA=[]),L(rA,AA,nA),function(tA,eA,AA){if(0!==AA.hiLevel&&aA)for(var rA,nA=0;nA<tA.length;nA++)1===eA[nA]&&(rA=fA.indexOf(tA[nA]))>=0&&(tA[nA]=fA[rA+1])}(rA,AA,nA),A(2,rA,eA,AA,nA),A(1,rA,eA,AA,nA),rA.join(\"\")};return this.__bidiEngine__.doBidiReorder=function(tA,eA,AA){if(function(tA,eA){if(eA)for(var AA=0;AA<tA.length;AA++)eA[AA]=AA;void 0===iA&&(iA=y(tA)),void 0===oA&&(oA=y(tA))}(tA,eA),nA||!sA||oA)if(nA&&sA&&iA^oA)mA=iA?1:0,tA=N(tA,eA,AA);else if(!nA&&sA&&oA)mA=iA?1:0,tA=x(tA,eA,AA),tA=N(tA,eA);else if(!nA||iA||sA||oA){if(nA&&!sA&&iA^oA)tA=N(tA,eA),iA?(mA=0,tA=x(tA,eA,AA)):(mA=1,tA=x(tA,eA,AA),tA=N(tA,eA));else if(nA&&iA&&!sA&&oA)mA=1,tA=x(tA,eA,AA),tA=N(tA,eA);else if(!nA&&!sA&&iA^oA){var rA=aA;iA?(mA=1,tA=x(tA,eA,AA),mA=0,aA=!1,tA=x(tA,eA,AA),aA=rA):(mA=0,tA=x(tA,eA,AA),tA=N(tA,eA),mA=1,aA=!1,tA=x(tA,eA,AA),aA=rA,tA=N(tA,eA))}}else mA=0,tA=x(tA,eA,AA);else mA=iA?1:0,tA=x(tA,eA,AA);return tA},this.__bidiEngine__.setOptions=function(tA){tA&&(nA=tA.isInputVisual,sA=tA.isOutputVisual,iA=tA.isInputRtl,oA=tA.isOutputRtl,aA=tA.isSymmetricSwapping)},this.__bidiEngine__.setOptions(tA),this.__bidiEngine__};var eA=[\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"S\",\"B\",\"S\",\"WS\",\"B\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"B\",\"B\",\"B\",\"S\",\"WS\",\"N\",\"N\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ES\",\"CS\",\"ES\",\"CS\",\"CS\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"CS\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"B\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"CS\",\"N\",\"ET\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"L\",\"N\",\"N\",\"BN\",\"N\",\"N\",\"ET\",\"ET\",\"EN\",\"EN\",\"N\",\"L\",\"N\",\"N\",\"N\",\"EN\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ET\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"R\",\"NSM\",\"R\",\"NSM\",\"NSM\",\"R\",\"NSM\",\"NSM\",\"R\",\"NSM\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"N\",\"N\",\"N\",\"N\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"N\",\"N\",\"AL\",\"ET\",\"ET\",\"AL\",\"CS\",\"AL\",\"N\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AL\",\"AL\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"AN\",\"ET\",\"AN\",\"AN\",\"AL\",\"AL\",\"AL\",\"NSM\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AN\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AL\",\"AL\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"N\",\"AL\",\"AL\",\"NSM\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"N\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"AL\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"R\",\"R\",\"N\",\"N\",\"N\",\"N\",\"R\",\"N\",\"N\",\"N\",\"N\",\"N\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"WS\",\"BN\",\"BN\",\"BN\",\"L\",\"R\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"WS\",\"B\",\"LRE\",\"RLE\",\"PDF\",\"LRO\",\"RLO\",\"CS\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"CS\",\"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\",\"WS\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"N\",\"LRI\",\"RLI\",\"FSI\",\"PDI\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"BN\",\"EN\",\"L\",\"N\",\"N\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"ES\",\"ES\",\"N\",\"N\",\"N\",\"L\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"ES\",\"ES\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"R\",\"NSM\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"ES\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"N\",\"R\",\"N\",\"R\",\"R\",\"N\",\"R\",\"R\",\"N\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"R\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"NSM\",\"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\",\"CS\",\"N\",\"CS\",\"N\",\"N\",\"CS\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ET\",\"N\",\"N\",\"ES\",\"ES\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"N\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"AL\",\"N\",\"N\",\"BN\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"N\",\"N\",\"ES\",\"CS\",\"ES\",\"CS\",\"CS\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"EN\",\"CS\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"L\",\"L\",\"L\",\"L\",\"L\",\"L\",\"N\",\"N\",\"L\",\"L\",\"L\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"N\",\"N\",\"N\",\"ET\",\"ET\",\"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\"],AA=new tA.__bidiEngine__({isInputVisual:!0});tA.API.events.push([\"postProcessText\",function(tA){var eA=tA.text,rA=(tA.x,tA.y,tA.options||{}),nA=(tA.mutex,rA.lang,[]);if(rA.isInputVisual=\"boolean\"!=typeof rA.isInputVisual||rA.isInputVisual,AA.setOptions(rA),\"[object Array]\"===Object.prototype.toString.call(eA)){var iA=0;for(nA=[],iA=0;iA<eA.length;iA+=1)\"[object Array]\"===Object.prototype.toString.call(eA[iA])?nA.push([AA.doBidiReorder(eA[iA][0]),eA[iA][1],eA[iA][2]]):nA.push([AA.doBidiReorder(eA[iA])]);tA.text=nA}else tA.text=AA.doBidiReorder(eA);AA.setOptions({isInputVisual:!0})}])}(E),E.API.TTFFont=function(){function t(tA){var eA;if(this.rawData=tA,eA=this.contents=new Fi(tA),this.contents.pos=4,\"ttcf\"===eA.readString(4))throw new Error(\"TTCF not supported.\");eA.pos=0,this.parse(),this.subset=new Gi(this),this.registerTTF()}return t.open=function(tA){return new t(tA)},t.prototype.parse=function(){return this.directory=new Ei(this.contents),this.head=new Ui(this),this.name=new Ti(this),this.cmap=new _i(this),this.toUnicode={},this.hhea=new Li(this),this.maxp=new ki(this),this.hmtx=new Mi(this),this.post=new Ni(this),this.os2=new Ii(this),this.loca=new Vi(this),this.glyf=new Hi(this),this.ascender=this.os2.exists&&this.os2.ascender||this.hhea.ascender,this.decender=this.os2.exists&&this.os2.decender||this.hhea.decender,this.lineGap=this.os2.exists&&this.os2.lineGap||this.hhea.lineGap,this.bbox=[this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax]},t.prototype.registerTTF=function(){var tA,eA,AA,rA,nA;if(this.scaleFactor=1e3/this.head.unitsPerEm,this.bbox=function(){var eA,AA,rA,nA;for(nA=[],eA=0,AA=(rA=this.bbox).length;eA<AA;eA++)tA=rA[eA],nA.push(Math.round(tA*this.scaleFactor));return nA}.call(this),this.stemV=0,this.post.exists?(AA=255&(rA=this.post.italic_angle),0!=(32768&(eA=rA>>16))&&(eA=-(1+(65535^eA))),this.italicAngle=+(eA+\".\"+AA)):this.italicAngle=0,this.ascender=Math.round(this.ascender*this.scaleFactor),this.decender=Math.round(this.decender*this.scaleFactor),this.lineGap=Math.round(this.lineGap*this.scaleFactor),this.capHeight=this.os2.exists&&this.os2.capHeight||this.ascender,this.xHeight=this.os2.exists&&this.os2.xHeight||0,this.familyClass=(this.os2.exists&&this.os2.familyClass||0)>>8,this.isSerif=1===(nA=this.familyClass)||2===nA||3===nA||4===nA||5===nA||7===nA,this.isScript=10===this.familyClass,this.flags=0,this.post.isFixedPitch&&(this.flags|=1),this.isSerif&&(this.flags|=2),this.isScript&&(this.flags|=8),0!==this.italicAngle&&(this.flags|=64),this.flags|=32,!this.cmap.unicode)throw new Error(\"No unicode cmap for font\")},t.prototype.characterToGlyph=function(tA){var eA;return(null!=(eA=this.cmap.unicode)?eA.codeMap[tA]:void 0)||0},t.prototype.widthOfGlyph=function(tA){var eA;return eA=1e3/this.head.unitsPerEm,this.hmtx.forGlyph(tA).advance*eA},t.prototype.widthOfString=function(tA,eA,AA){var rA,nA,iA,sA;for(iA=0,nA=0,sA=(tA=\"\"+tA).length;0<=sA?nA<sA:nA>sA;nA=0<=sA?++nA:--nA)rA=tA.charCodeAt(nA),iA+=this.widthOfGlyph(this.characterToGlyph(rA))+AA*(1e3/eA)||0;return iA*(eA/1e3)},t.prototype.lineHeight=function(tA,eA){var AA;return null==eA&&(eA=!1),AA=eA?this.lineGap:0,(this.ascender+AA-this.decender)/1e3*tA},t}();var xi,Fi=function(){function t(tA){this.data=null!=tA?tA:[],this.pos=0,this.length=this.data.length}return t.prototype.readByte=function(){return this.data[this.pos++]},t.prototype.writeByte=function(tA){return this.data[this.pos++]=tA},t.prototype.readUInt32=function(){return 16777216*this.readByte()+(this.readByte()<<16)+(this.readByte()<<8)+this.readByte()},t.prototype.writeUInt32=function(tA){return this.writeByte(tA>>>24&255),this.writeByte(tA>>16&255),this.writeByte(tA>>8&255),this.writeByte(255&tA)},t.prototype.readInt32=function(){var tA;return(tA=this.readUInt32())>=2147483648?tA-4294967296:tA},t.prototype.writeInt32=function(tA){return tA<0&&(tA+=4294967296),this.writeUInt32(tA)},t.prototype.readUInt16=function(){return this.readByte()<<8|this.readByte()},t.prototype.writeUInt16=function(tA){return this.writeByte(tA>>8&255),this.writeByte(255&tA)},t.prototype.readInt16=function(){var tA;return(tA=this.readUInt16())>=32768?tA-65536:tA},t.prototype.writeInt16=function(tA){return tA<0&&(tA+=65536),this.writeUInt16(tA)},t.prototype.readString=function(tA){var eA,AA;for(AA=[],eA=0;0<=tA?eA<tA:eA>tA;eA=0<=tA?++eA:--eA)AA[eA]=String.fromCharCode(this.readByte());return AA.join(\"\")},t.prototype.writeString=function(tA){var eA,AA,rA;for(rA=[],eA=0,AA=tA.length;0<=AA?eA<AA:eA>AA;eA=0<=AA?++eA:--eA)rA.push(this.writeByte(tA.charCodeAt(eA)));return rA},t.prototype.readShort=function(){return this.readInt16()},t.prototype.writeShort=function(tA){return this.writeInt16(tA)},t.prototype.readLongLong=function(){var tA,eA,AA,rA,nA,iA,sA,oA;return tA=this.readByte(),eA=this.readByte(),AA=this.readByte(),rA=this.readByte(),nA=this.readByte(),iA=this.readByte(),sA=this.readByte(),oA=this.readByte(),128&tA?-1*(72057594037927940*(255^tA)+281474976710656*(255^eA)+1099511627776*(255^AA)+4294967296*(255^rA)+16777216*(255^nA)+65536*(255^iA)+256*(255^sA)+(255^oA)+1):72057594037927940*tA+281474976710656*eA+1099511627776*AA+4294967296*rA+16777216*nA+65536*iA+256*sA+oA},t.prototype.writeLongLong=function(tA){var eA,AA;return eA=Math.floor(tA/4294967296),AA=4294967295&tA,this.writeByte(eA>>24&255),this.writeByte(eA>>16&255),this.writeByte(eA>>8&255),this.writeByte(255&eA),this.writeByte(AA>>24&255),this.writeByte(AA>>16&255),this.writeByte(AA>>8&255),this.writeByte(255&AA)},t.prototype.readInt=function(){return this.readInt32()},t.prototype.writeInt=function(tA){return this.writeInt32(tA)},t.prototype.read=function(tA){var eA,AA;for(eA=[],AA=0;0<=tA?AA<tA:AA>tA;AA=0<=tA?++AA:--AA)eA.push(this.readByte());return eA},t.prototype.write=function(tA){var eA,AA,rA,nA;for(nA=[],AA=0,rA=tA.length;AA<rA;AA++)eA=tA[AA],nA.push(this.writeByte(eA));return nA},t}(),Ei=function(){var tA;function e(tA){var eA,AA,rA;for(this.scalarType=tA.readInt(),this.tableCount=tA.readShort(),this.searchRange=tA.readShort(),this.entrySelector=tA.readShort(),this.rangeShift=tA.readShort(),this.tables={},AA=0,rA=this.tableCount;0<=rA?AA<rA:AA>rA;AA=0<=rA?++AA:--AA)eA={tag:tA.readString(4),checksum:tA.readInt(),offset:tA.readInt(),length:tA.readInt()},this.tables[eA.tag]=eA}return e.prototype.encode=function(eA){var AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA;for(fA in hA=Object.keys(eA).length,oA=Math.log(2),cA=16*Math.floor(Math.log(hA)/oA),iA=Math.floor(cA/oA),lA=16*hA-cA,(rA=new Fi).writeInt(this.scalarType),rA.writeShort(hA),rA.writeShort(cA),rA.writeShort(iA),rA.writeShort(lA),nA=16*hA,aA=rA.pos+nA,sA=null,dA=[],eA)for(uA=eA[fA],rA.writeString(fA),rA.writeInt(tA(uA)),rA.writeInt(aA),rA.writeInt(uA.length),dA=dA.concat(uA),\"head\"===fA&&(sA=aA),aA+=uA.length;aA%4;)dA.push(0),aA++;return rA.write(dA),AA=2981146554-tA(rA.data),rA.pos=sA+8,rA.writeUInt32(AA),rA.data},tA=function(tA){var eA,AA,rA,nA;for(tA=Oi.call(tA);tA.length%4;)tA.push(0);for(rA=new Fi(tA),AA=0,eA=0,nA=tA.length;eA<nA;eA=eA+=4)AA+=rA.readUInt32();return 4294967295&AA},e}(),Qi={}.hasOwnProperty,oe=function(tA,eA){for(var AA in eA)Qi.call(eA,AA)&&(tA[AA]=eA[AA]);function n(){this.constructor=tA}return n.prototype=eA.prototype,tA.prototype=new n,tA.__super__=eA.prototype,tA};xi=function(){function t(tA){var eA;this.file=tA,eA=this.file.directory.tables[this.tag],this.exists=!!eA,eA&&(this.offset=eA.offset,this.length=eA.length,this.parse(this.file.contents))}return t.prototype.parse=function(){},t.prototype.encode=function(){},t.prototype.raw=function(){return this.exists?(this.file.contents.pos=this.offset,this.file.contents.read(this.length)):null},t}();var Ui=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"head\",e.prototype.parse=function(tA){return tA.pos=this.offset,this.version=tA.readInt(),this.revision=tA.readInt(),this.checkSumAdjustment=tA.readInt(),this.magicNumber=tA.readInt(),this.flags=tA.readShort(),this.unitsPerEm=tA.readShort(),this.created=tA.readLongLong(),this.modified=tA.readLongLong(),this.xMin=tA.readShort(),this.yMin=tA.readShort(),this.xMax=tA.readShort(),this.yMax=tA.readShort(),this.macStyle=tA.readShort(),this.lowestRecPPEM=tA.readShort(),this.fontDirectionHint=tA.readShort(),this.indexToLocFormat=tA.readShort(),this.glyphDataFormat=tA.readShort()},e.prototype.encode=function(tA){var eA;return(eA=new Fi).writeInt(this.version),eA.writeInt(this.revision),eA.writeInt(this.checkSumAdjustment),eA.writeInt(this.magicNumber),eA.writeShort(this.flags),eA.writeShort(this.unitsPerEm),eA.writeLongLong(this.created),eA.writeLongLong(this.modified),eA.writeShort(this.xMin),eA.writeShort(this.yMin),eA.writeShort(this.xMax),eA.writeShort(this.yMax),eA.writeShort(this.macStyle),eA.writeShort(this.lowestRecPPEM),eA.writeShort(this.fontDirectionHint),eA.writeShort(tA),eA.writeShort(this.glyphDataFormat),eA.data},e}(),Pi=function(){function t(tA,eA){var AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA,wA;switch(this.platformID=tA.readUInt16(),this.encodingID=tA.readShort(),this.offset=eA+tA.readInt(),cA=tA.pos,tA.pos=this.offset,this.format=tA.readUInt16(),this.length=tA.readUInt16(),this.language=tA.readUInt16(),this.isUnicode=3===this.platformID&&1===this.encodingID&&4===this.format||0===this.platformID&&4===this.format,this.codeMap={},this.format){case 0:for(oA=0;oA<256;++oA)this.codeMap[oA]=tA.readByte();break;case 4:for(hA=tA.readUInt16(),uA=hA/2,tA.pos+=6,nA=function(){var eA,AA;for(AA=[],oA=eA=0;0<=uA?eA<uA:eA>uA;oA=0<=uA?++eA:--eA)AA.push(tA.readUInt16());return AA}(),tA.pos+=2,fA=function(){var eA,AA;for(AA=[],oA=eA=0;0<=uA?eA<uA:eA>uA;oA=0<=uA?++eA:--eA)AA.push(tA.readUInt16());return AA}(),aA=function(){var eA,AA;for(AA=[],oA=eA=0;0<=uA?eA<uA:eA>uA;oA=0<=uA?++eA:--eA)AA.push(tA.readUInt16());return AA}(),lA=function(){var eA,AA;for(AA=[],oA=eA=0;0<=uA?eA<uA:eA>uA;oA=0<=uA?++eA:--eA)AA.push(tA.readUInt16());return AA}(),rA=(this.length-tA.pos+this.offset)/2,sA=function(){var eA,AA;for(AA=[],oA=eA=0;0<=rA?eA<rA:eA>rA;oA=0<=rA?++eA:--eA)AA.push(tA.readUInt16());return AA}(),oA=pA=0,wA=nA.length;pA<wA;oA=++pA)for(gA=nA[oA],AA=mA=dA=fA[oA];dA<=gA?mA<=gA:mA>=gA;AA=dA<=gA?++mA:--mA)0===lA[oA]?iA=AA+aA[oA]:0!==(iA=sA[lA[oA]/2+(AA-dA)-(uA-oA)]||0)&&(iA+=aA[oA]),this.codeMap[AA]=65535&iA}tA.pos=cA}return t.encode=function(tA,eA){var AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA,wA,yA,BA,bA,vA,CA,SA,xA,FA,EA,QA,UA,PA,_A,LA,IA,NA,TA,kA,MA,OA,HA,DA,RA,VA,GA,jA,KA,qA,zA;switch(UA=new Fi,iA=Object.keys(tA).sort((function(tA,eA){return tA-eA})),eA){case\"macroman\":for(fA=0,gA=function(){var tA=[];for(dA=0;dA<256;++dA)tA.push(0);return tA}(),mA={0:0},nA={},PA=0,NA=iA.length;PA<NA;PA++)null==mA[jA=tA[rA=iA[PA]]]&&(mA[jA]=++fA),nA[rA]={old:tA[rA],new:mA[tA[rA]]},gA[rA]=mA[tA[rA]];return UA.writeUInt16(1),UA.writeUInt16(0),UA.writeUInt32(12),UA.writeUInt16(0),UA.writeUInt16(262),UA.writeUInt16(0),UA.write(gA),{charMap:nA,subtable:UA.data,maxGlyphID:fA+1};case\"unicode\":for(EA=[],cA=[],wA=0,mA={},AA={},pA=aA=null,_A=0,TA=iA.length;_A<TA;_A++)null==mA[BA=tA[rA=iA[_A]]]&&(mA[BA]=++wA),AA[rA]={old:BA,new:mA[BA]},sA=mA[BA]-rA,null!=pA&&sA===aA||(pA&&cA.push(pA),EA.push(rA),aA=sA),pA=rA;for(pA&&cA.push(pA),cA.push(65535),EA.push(65535),xA=2*(SA=EA.length),CA=2*Math.pow(Math.log(SA)/Math.LN2,2),uA=Math.log(CA/2)/Math.LN2,vA=2*SA-CA,oA=[],bA=[],hA=[],dA=LA=0,kA=EA.length;LA<kA;dA=++LA){if(FA=EA[dA],lA=cA[dA],65535===FA){oA.push(0),bA.push(0);break}if(FA-(QA=AA[FA].new)>=32768)for(oA.push(0),bA.push(2*(hA.length+SA-dA)),rA=IA=FA;FA<=lA?IA<=lA:IA>=lA;rA=FA<=lA?++IA:--IA)hA.push(AA[rA].new);else oA.push(QA-FA),bA.push(0)}for(UA.writeUInt16(3),UA.writeUInt16(1),UA.writeUInt32(12),UA.writeUInt16(4),UA.writeUInt16(16+8*SA+2*hA.length),UA.writeUInt16(0),UA.writeUInt16(xA),UA.writeUInt16(CA),UA.writeUInt16(uA),UA.writeUInt16(vA),VA=0,MA=cA.length;VA<MA;VA++)rA=cA[VA],UA.writeUInt16(rA);for(UA.writeUInt16(0),GA=0,OA=EA.length;GA<OA;GA++)rA=EA[GA],UA.writeUInt16(rA);for(KA=0,HA=oA.length;KA<HA;KA++)sA=oA[KA],UA.writeUInt16(sA);for(qA=0,DA=bA.length;qA<DA;qA++)yA=bA[qA],UA.writeUInt16(yA);for(zA=0,RA=hA.length;zA<RA;zA++)fA=hA[zA],UA.writeUInt16(fA);return{charMap:AA,subtable:UA.data,maxGlyphID:wA+1}}},t}(),_i=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"cmap\",e.prototype.parse=function(tA){var eA,AA,rA;for(tA.pos=this.offset,this.version=tA.readUInt16(),rA=tA.readUInt16(),this.tables=[],this.unicode=null,AA=0;0<=rA?AA<rA:AA>rA;AA=0<=rA?++AA:--AA)eA=new Pi(tA,this.offset),this.tables.push(eA),eA.isUnicode&&null==this.unicode&&(this.unicode=eA);return!0},e.encode=function(tA,eA){var AA,rA;return null==eA&&(eA=\"macroman\"),AA=Pi.encode(tA,eA),(rA=new Fi).writeUInt16(0),rA.writeUInt16(1),AA.table=rA.data.concat(AA.subtable),AA},e}(),Li=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"hhea\",e.prototype.parse=function(tA){return tA.pos=this.offset,this.version=tA.readInt(),this.ascender=tA.readShort(),this.decender=tA.readShort(),this.lineGap=tA.readShort(),this.advanceWidthMax=tA.readShort(),this.minLeftSideBearing=tA.readShort(),this.minRightSideBearing=tA.readShort(),this.xMaxExtent=tA.readShort(),this.caretSlopeRise=tA.readShort(),this.caretSlopeRun=tA.readShort(),this.caretOffset=tA.readShort(),tA.pos+=8,this.metricDataFormat=tA.readShort(),this.numberOfMetrics=tA.readUInt16()},e}(),Ii=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"OS/2\",e.prototype.parse=function(tA){if(tA.pos=this.offset,this.version=tA.readUInt16(),this.averageCharWidth=tA.readShort(),this.weightClass=tA.readUInt16(),this.widthClass=tA.readUInt16(),this.type=tA.readShort(),this.ySubscriptXSize=tA.readShort(),this.ySubscriptYSize=tA.readShort(),this.ySubscriptXOffset=tA.readShort(),this.ySubscriptYOffset=tA.readShort(),this.ySuperscriptXSize=tA.readShort(),this.ySuperscriptYSize=tA.readShort(),this.ySuperscriptXOffset=tA.readShort(),this.ySuperscriptYOffset=tA.readShort(),this.yStrikeoutSize=tA.readShort(),this.yStrikeoutPosition=tA.readShort(),this.familyClass=tA.readShort(),this.panose=function(){var eA,AA;for(AA=[],eA=0;eA<10;++eA)AA.push(tA.readByte());return AA}(),this.charRange=function(){var eA,AA;for(AA=[],eA=0;eA<4;++eA)AA.push(tA.readInt());return AA}(),this.vendorID=tA.readString(4),this.selection=tA.readShort(),this.firstCharIndex=tA.readShort(),this.lastCharIndex=tA.readShort(),this.version>0&&(this.ascent=tA.readShort(),this.descent=tA.readShort(),this.lineGap=tA.readShort(),this.winAscent=tA.readShort(),this.winDescent=tA.readShort(),this.codePageRange=function(){var eA,AA;for(AA=[],eA=0;eA<2;eA=++eA)AA.push(tA.readInt());return AA}(),this.version>1))return this.xHeight=tA.readShort(),this.capHeight=tA.readShort(),this.defaultChar=tA.readShort(),this.breakChar=tA.readShort(),this.maxContext=tA.readShort()},e}(),Ni=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"post\",e.prototype.parse=function(tA){var eA,AA,rA;switch(tA.pos=this.offset,this.format=tA.readInt(),this.italicAngle=tA.readInt(),this.underlinePosition=tA.readShort(),this.underlineThickness=tA.readShort(),this.isFixedPitch=tA.readInt(),this.minMemType42=tA.readInt(),this.maxMemType42=tA.readInt(),this.minMemType1=tA.readInt(),this.maxMemType1=tA.readInt(),this.format){case 65536:case 196608:break;case 131072:var nA;for(AA=tA.readUInt16(),this.glyphNameIndex=[],nA=0;0<=AA?nA<AA:nA>AA;nA=0<=AA?++nA:--nA)this.glyphNameIndex.push(tA.readUInt16());for(this.names=[],rA=[];tA.pos<this.offset+this.length;)eA=tA.readByte(),rA.push(this.names.push(tA.readString(eA)));return rA;case 151552:return AA=tA.readUInt16(),this.offsets=tA.read(AA);case 262144:return this.map=function(){var eA,AA,rA;for(rA=[],nA=eA=0,AA=this.file.maxp.numGlyphs;0<=AA?eA<AA:eA>AA;nA=0<=AA?++eA:--eA)rA.push(tA.readUInt32());return rA}.call(this)}},e}(),de=function(tA,eA){this.raw=tA,this.length=tA.length,this.platformID=eA.platformID,this.encodingID=eA.encodingID,this.languageID=eA.languageID},Ti=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"name\",e.prototype.parse=function(tA){var eA,AA,rA,nA,iA,sA,oA,aA,lA,cA,uA;for(tA.pos=this.offset,tA.readShort(),eA=tA.readShort(),sA=tA.readShort(),AA=[],nA=0;0<=eA?nA<eA:nA>eA;nA=0<=eA?++nA:--nA)AA.push({platformID:tA.readShort(),encodingID:tA.readShort(),languageID:tA.readShort(),nameID:tA.readShort(),length:tA.readShort(),offset:this.offset+sA+tA.readShort()});for(oA={},nA=lA=0,cA=AA.length;lA<cA;nA=++lA)rA=AA[nA],tA.pos=rA.offset,aA=tA.readString(rA.length),iA=new de(aA,rA),null==oA[uA=rA.nameID]&&(oA[uA]=[]),oA[rA.nameID].push(iA);this.strings=oA,this.copyright=oA[0],this.fontFamily=oA[1],this.fontSubfamily=oA[2],this.uniqueSubfamily=oA[3],this.fontName=oA[4],this.version=oA[5];try{this.postscriptName=oA[6][0].raw.replace(/[\\x00-\\x19\\x80-\\xff]/g,\"\")}catch(tA){this.postscriptName=oA[4][0].raw.replace(/[\\x00-\\x19\\x80-\\xff]/g,\"\")}return this.trademark=oA[7],this.manufacturer=oA[8],this.designer=oA[9],this.description=oA[10],this.vendorUrl=oA[11],this.designerUrl=oA[12],this.license=oA[13],this.licenseUrl=oA[14],this.preferredFamily=oA[15],this.preferredSubfamily=oA[17],this.compatibleFull=oA[18],this.sampleText=oA[19]},e}(),ki=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"maxp\",e.prototype.parse=function(tA){return tA.pos=this.offset,this.version=tA.readInt(),this.numGlyphs=tA.readUInt16(),this.maxPoints=tA.readUInt16(),this.maxContours=tA.readUInt16(),this.maxCompositePoints=tA.readUInt16(),this.maxComponentContours=tA.readUInt16(),this.maxZones=tA.readUInt16(),this.maxTwilightPoints=tA.readUInt16(),this.maxStorage=tA.readUInt16(),this.maxFunctionDefs=tA.readUInt16(),this.maxInstructionDefs=tA.readUInt16(),this.maxStackElements=tA.readUInt16(),this.maxSizeOfInstructions=tA.readUInt16(),this.maxComponentElements=tA.readUInt16(),this.maxComponentDepth=tA.readUInt16()},e}(),Mi=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"hmtx\",e.prototype.parse=function(tA){var eA,AA,rA,nA,iA,sA,oA;for(tA.pos=this.offset,this.metrics=[],eA=0,sA=this.file.hhea.numberOfMetrics;0<=sA?eA<sA:eA>sA;eA=0<=sA?++eA:--eA)this.metrics.push({advance:tA.readUInt16(),lsb:tA.readInt16()});for(rA=this.file.maxp.numGlyphs-this.file.hhea.numberOfMetrics,this.leftSideBearings=function(){var AA,nA;for(nA=[],eA=AA=0;0<=rA?AA<rA:AA>rA;eA=0<=rA?++AA:--AA)nA.push(tA.readInt16());return nA}(),this.widths=function(){var tA,eA,AA,rA;for(rA=[],tA=0,eA=(AA=this.metrics).length;tA<eA;tA++)nA=AA[tA],rA.push(nA.advance);return rA}.call(this),AA=this.widths[this.widths.length-1],oA=[],eA=iA=0;0<=rA?iA<rA:iA>rA;eA=0<=rA?++iA:--iA)oA.push(this.widths.push(AA));return oA},e.prototype.forGlyph=function(tA){return tA in this.metrics?this.metrics[tA]:{advance:this.metrics[this.metrics.length-1].advance,lsb:this.leftSideBearings[tA-this.metrics.length]}},e}(),Oi=[].slice,Hi=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"glyf\",e.prototype.parse=function(){return this.cache={}},e.prototype.glyphFor=function(tA){var eA,AA,rA,nA,iA,sA,oA,aA,lA,cA;return tA in this.cache?this.cache[tA]:(nA=this.file.loca,eA=this.file.contents,AA=nA.indexOf(tA),0===(rA=nA.lengthOf(tA))?this.cache[tA]=null:(eA.pos=this.offset+AA,iA=(sA=new Fi(eA.read(rA))).readShort(),aA=sA.readShort(),cA=sA.readShort(),oA=sA.readShort(),lA=sA.readShort(),this.cache[tA]=-1===iA?new Ri(sA,aA,cA,oA,lA):new Di(sA,iA,aA,cA,oA,lA),this.cache[tA]))},e.prototype.encode=function(tA,eA,AA){var rA,nA,iA,sA,oA;for(iA=[],nA=[],sA=0,oA=eA.length;sA<oA;sA++)rA=tA[eA[sA]],nA.push(iA.length),rA&&(iA=iA.concat(rA.encode(AA)));return nA.push(iA.length),{table:iA,offsets:nA}},e}(),Di=function(){function t(tA,eA,AA,rA,nA,iA){this.raw=tA,this.numberOfContours=eA,this.xMin=AA,this.yMin=rA,this.xMax=nA,this.yMax=iA,this.compound=!1}return t.prototype.encode=function(){return this.raw.data},t}(),Ri=function(){function t(tA,eA,AA,rA,nA){var iA,sA;for(this.raw=tA,this.xMin=eA,this.yMin=AA,this.xMax=rA,this.yMax=nA,this.compound=!0,this.glyphIDs=[],this.glyphOffsets=[],iA=this.raw;sA=iA.readShort(),this.glyphOffsets.push(iA.pos),this.glyphIDs.push(iA.readUInt16()),32&sA;)iA.pos+=1&sA?4:2,128&sA?iA.pos+=8:64&sA?iA.pos+=4:8&sA&&(iA.pos+=2)}return t.prototype.encode=function(){var tA,eA,AA;for(eA=new Fi(Oi.call(this.raw.data)),tA=0,AA=this.glyphIDs.length;tA<AA;++tA)eA.pos=this.glyphOffsets[tA];return eA.data},t}(),Vi=function(tA){function e(){return e.__super__.constructor.apply(this,arguments)}return oe(e,xi),e.prototype.tag=\"loca\",e.prototype.parse=function(tA){var eA,AA;return tA.pos=this.offset,eA=this.file.head.indexToLocFormat,this.offsets=0===eA?function(){var eA,rA;for(rA=[],AA=0,eA=this.length;AA<eA;AA+=2)rA.push(2*tA.readUInt16());return rA}.call(this):function(){var eA,rA;for(rA=[],AA=0,eA=this.length;AA<eA;AA+=4)rA.push(tA.readUInt32());return rA}.call(this)},e.prototype.indexOf=function(tA){return this.offsets[tA]},e.prototype.lengthOf=function(tA){return this.offsets[tA+1]-this.offsets[tA]},e.prototype.encode=function(tA,eA){for(var AA=new Uint32Array(this.offsets.length),rA=0,nA=0,iA=0;iA<AA.length;++iA)if(AA[iA]=rA,nA<eA.length&&eA[nA]==iA){++nA,AA[iA]=rA;var sA=this.offsets[iA],oA=this.offsets[iA+1]-sA;oA>0&&(rA+=oA)}for(var aA=new Array(4*AA.length),lA=0;lA<AA.length;++lA)aA[4*lA+3]=255&AA[lA],aA[4*lA+2]=(65280&AA[lA])>>8,aA[4*lA+1]=(16711680&AA[lA])>>16,aA[4*lA]=(4278190080&AA[lA])>>24;return aA},e}(),Gi=function(){function t(tA){this.font=tA,this.subset={},this.unicodes={},this.next=33}return t.prototype.generateCmap=function(){var tA,eA,AA,rA,nA;for(eA in rA=this.font.cmap.tables[0].codeMap,tA={},nA=this.subset)AA=nA[eA],tA[eA]=rA[AA];return tA},t.prototype.glyphsFor=function(tA){var eA,AA,rA,nA,iA,sA,oA;for(rA={},iA=0,sA=tA.length;iA<sA;iA++)rA[nA=tA[iA]]=this.font.glyf.glyphFor(nA);for(nA in eA=[],rA)(null!=(AA=rA[nA])?AA.compound:void 0)&&eA.push.apply(eA,AA.glyphIDs);if(eA.length>0)for(nA in oA=this.glyphsFor(eA))AA=oA[nA],rA[nA]=AA;return rA},t.prototype.encode=function(tA,eA){var AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA;for(rA in AA=_i.encode(this.generateCmap(),\"unicode\"),iA=this.glyphsFor(tA),hA={0:0},pA=AA.charMap)hA[(oA=pA[rA]).old]=oA.new;for(dA in uA=AA.maxGlyphID,iA)dA in hA||(hA[dA]=uA++);return lA=function(tA){var eA,AA;for(eA in AA={},tA)AA[tA[eA]]=eA;return AA}(hA),cA=Object.keys(lA).sort((function(tA,eA){return tA-eA})),fA=function(){var tA,eA,AA;for(AA=[],tA=0,eA=cA.length;tA<eA;tA++)sA=cA[tA],AA.push(lA[sA]);return AA}(),nA=this.font.glyf.encode(iA,fA,hA),aA=this.font.loca.encode(nA.offsets,fA),gA={cmap:this.font.cmap.raw(),glyf:nA.table,loca:aA,hmtx:this.font.hmtx.raw(),hhea:this.font.hhea.raw(),maxp:this.font.maxp.raw(),post:this.font.post.raw(),name:this.font.name.raw(),head:this.font.head.encode(eA)},this.font.os2.exists&&(gA[\"OS/2\"]=this.font.os2.raw()),this.font.directory.encode(gA)},t}();E.API.PDFObject=function(){var tA;function e(){}return tA=function(tA,eA){return(Array(eA+1).join(\"0\")+tA).slice(-eA)},e.convert=function(eA){var AA,rA,nA,iA;if(Array.isArray(eA))return\"[\"+function(){var tA,rA,nA;for(nA=[],tA=0,rA=eA.length;tA<rA;tA++)AA=eA[tA],nA.push(e.convert(AA));return nA}().join(\" \")+\"]\";if(\"string\"==typeof eA)return\"/\"+eA;if(null!=eA?eA.isString:void 0)return\"(\"+eA+\")\";if(eA instanceof Date)return\"(D:\"+tA(eA.getUTCFullYear(),4)+tA(eA.getUTCMonth(),2)+tA(eA.getUTCDate(),2)+tA(eA.getUTCHours(),2)+tA(eA.getUTCMinutes(),2)+tA(eA.getUTCSeconds(),2)+\"Z)\";if(\"[object Object]\"==={}.toString.call(eA)){for(rA in nA=[\"<<\"],eA)iA=eA[rA],nA.push(\"/\"+rA+\" \"+e.convert(iA));return nA.push(\">>\"),nA.join(\"\\n\")}return\"\"+eA},e}();var ji=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{},Ki={}.hasOwnProperty,qi=/[ -,\\.\\/:-@\\[-\\^`\\{-~]/,zi=/[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/,Xi=/(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g,Wi=function cssesc(tA,eA){\"single\"!=(eA=function merge(tA,eA){if(!tA)return eA;var AA={};for(var rA in eA)AA[rA]=Ki.call(tA,rA)?tA[rA]:eA[rA];return AA}(eA,cssesc.options)).quotes&&\"double\"!=eA.quotes&&(eA.quotes=\"single\");for(var AA=\"double\"==eA.quotes?'\"':\"'\",rA=eA.isIdentifier,nA=tA.charAt(0),iA=\"\",sA=0,oA=tA.length;sA<oA;){var aA=tA.charAt(sA++),lA=aA.charCodeAt(),cA=void 0;if(lA<32||lA>126){if(lA>=55296&&lA<=56319&&sA<oA){var uA=tA.charCodeAt(sA++);56320==(64512&uA)?lA=((1023&lA)<<10)+(1023&uA)+65536:sA--}cA=\"\\\\\"+lA.toString(16).toUpperCase()+\" \"}else cA=eA.escapeEverything?qi.test(aA)?\"\\\\\"+aA:\"\\\\\"+lA.toString(16).toUpperCase()+\" \":/[\\t\\n\\f\\r\\x0B]/.test(aA)?\"\\\\\"+lA.toString(16).toUpperCase()+\" \":\"\\\\\"==aA||!rA&&('\"'==aA&&AA==aA||\"'\"==aA&&AA==aA)||rA&&zi.test(aA)?\"\\\\\"+aA:aA;iA+=cA}return rA&&(/^-[-\\d]/.test(iA)?iA=\"\\\\-\"+iA.slice(1):/\\d/.test(nA)&&(iA=\"\\\\3\"+nA+\" \"+iA.slice(1))),iA=iA.replace(Xi,(function(tA,eA,AA){return eA&&eA.length%2?tA:(eA||\"\")+AA})),!rA&&eA.wrap?AA+iA+AA:iA};\n/*! https://mths.be/cssesc v3.0.0 by @mathias */Wi.options={escapeEverything:!1,isIdentifier:!1,quotes:\"single\",wrap:!1},Wi.version=\"3.0.0\";var Yi=Wi,Ji=/[a-z0-9_-]/i,Zi=/[\\s\\t]/,fontFamilyPapandreou_parse=function(tA){for(var eA,AA,rA=!0,nA=0,iA=\"\",sA=0,oA=[];;){if(AA=tA[sA],0===nA){if(!AA&&rA)break;if(!AA&&!rA)throw new Error(\"Parse error\");if('\"'===AA||\"'\"===AA)eA=AA,nA=1,rA=!1;else if(Zi.test(AA));else{if(!Ji.test(AA))throw new Error(\"Parse error\");nA=3,rA=!1,sA--}}else if(1===nA){if(!AA)throw new Error(\"Parse Error\");\"\\\\\"===AA?nA=2:AA===eA?(oA.push(iA),iA=\"\",nA=4):iA+=AA}else if(2===nA){if(AA!==eA&&\"\\\\\"!==AA)throw new Error(\"Parse error\");iA+=AA,nA=1}else if(3===nA){if(!AA){oA.push(iA);break}Ji.test(AA)?iA+=AA:\",\"===AA?(oA.push(iA),iA=\"\",nA=0):Zi.test(AA)?nA=5:\"\\\\\"===AA&&(nA=6)}else if(6===nA){if(/[0-9a-f]/i.test(AA))throw new Error(\"Parse error\");iA+=AA,nA=3}else if(5===nA){if(!AA){oA.push(iA);break}if(Ji.test(AA))iA+=\" \"+AA,nA=3;else if(\",\"===AA)oA.push(iA),iA=\"\",nA=0;else if(!Zi.test(AA))throw new Error(\"Parse error\")}else if(4===nA){if(!AA)break;if(\",\"===AA)nA=0;else if(!Zi.test(AA))throw new Error(\"Parse error\")}sA++}return oA},$i={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},ts=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];function isDigit(tA){return tA>=48&&tA<=57}function State(tA){this.index=0,this.path=tA,this.max=tA.length,this.result=[],this.param=0,this.err=\"\",this.segmentStart=0,this.data=[]}function skipSpaces(tA){for(;tA.index<tA.max&&(10===(eA=tA.path.charCodeAt(tA.index))||13===eA||8232===eA||8233===eA||32===eA||9===eA||11===eA||12===eA||160===eA||eA>=5760&&ts.indexOf(eA)>=0);)tA.index++;var eA}function scanFlag(tA){var eA=tA.path.charCodeAt(tA.index);return 48===eA?(tA.param=0,void tA.index++):49===eA?(tA.param=1,void tA.index++):void(tA.err=\"SvgPath: arc flag can be 0 or 1 only (at pos \"+tA.index+\")\")}function scanParam(tA){var eA,AA=tA.index,rA=AA,nA=tA.max,iA=!1,sA=!1,oA=!1,aA=!1;if(rA>=nA)tA.err=\"SvgPath: missed param (at pos \"+rA+\")\";else if(43!==(eA=tA.path.charCodeAt(rA))&&45!==eA||(eA=++rA<nA?tA.path.charCodeAt(rA):0),isDigit(eA)||46===eA){if(46!==eA){if(iA=48===eA,eA=++rA<nA?tA.path.charCodeAt(rA):0,iA&&rA<nA&&eA&&isDigit(eA))return void(tA.err=\"SvgPath: numbers started with `0` such as `09` are illegal (at pos \"+AA+\")\");for(;rA<nA&&isDigit(tA.path.charCodeAt(rA));)rA++,sA=!0;eA=rA<nA?tA.path.charCodeAt(rA):0}if(46===eA){for(aA=!0,rA++;isDigit(tA.path.charCodeAt(rA));)rA++,oA=!0;eA=rA<nA?tA.path.charCodeAt(rA):0}if(101===eA||69===eA){if(aA&&!sA&&!oA)return void(tA.err=\"SvgPath: invalid float exponent (at pos \"+rA+\")\");if(43!==(eA=++rA<nA?tA.path.charCodeAt(rA):0)&&45!==eA||rA++,!(rA<nA&&isDigit(tA.path.charCodeAt(rA))))return void(tA.err=\"SvgPath: invalid float exponent (at pos \"+rA+\")\");for(;rA<nA&&isDigit(tA.path.charCodeAt(rA));)rA++}tA.index=rA,tA.param=parseFloat(tA.path.slice(AA,rA))+0}else tA.err=\"SvgPath: param should start with 0..9 or `.` (at pos \"+rA+\")\"}function finalizeSegment(tA){var eA,AA;AA=(eA=tA.path[tA.segmentStart]).toLowerCase();var rA=tA.data;if(\"m\"===AA&&rA.length>2&&(tA.result.push([eA,rA[0],rA[1]]),rA=rA.slice(2),AA=\"l\",eA=\"m\"===eA?\"l\":\"L\"),\"r\"===AA)tA.result.push([eA].concat(rA));else for(;rA.length>=$i[AA]&&(tA.result.push([eA].concat(rA.splice(0,$i[AA]))),$i[AA]););}function scanSegment(tA){var eA,AA,rA,nA,iA,sA=tA.max;if(tA.segmentStart=tA.index,AA=function isArc(tA){return 97==(32|tA)}(eA=tA.path.charCodeAt(tA.index)),function isCommand(tA){switch(32|tA){case 109:case 122:case 108:case 104:case 118:case 99:case 115:case 113:case 116:case 97:case 114:return!0}return!1}(eA))if(nA=$i[tA.path[tA.index].toLowerCase()],tA.index++,skipSpaces(tA),tA.data=[],nA){for(rA=!1;;){for(iA=nA;iA>0;iA--){if(!AA||3!==iA&&4!==iA?scanParam(tA):scanFlag(tA),tA.err.length)return;tA.data.push(tA.param),skipSpaces(tA),rA=!1,tA.index<sA&&44===tA.path.charCodeAt(tA.index)&&(tA.index++,skipSpaces(tA),rA=!0)}if(!rA){if(tA.index>=tA.max)break;if(!((oA=tA.path.charCodeAt(tA.index))>=48&&oA<=57||43===oA||45===oA||46===oA))break}}var oA;finalizeSegment(tA)}else finalizeSegment(tA);else tA.err=\"SvgPath: bad command \"+tA.path[tA.index]+\" (at pos \"+tA.index+\")\"}function Matrix$2(){if(!(this instanceof Matrix$2))return new Matrix$2;this.queue=[],this.cache=null}Matrix$2.prototype.matrix=function(tA){return 1===tA[0]&&0===tA[1]&&0===tA[2]&&1===tA[3]&&0===tA[4]&&0===tA[5]||(this.cache=null,this.queue.push(tA)),this},Matrix$2.prototype.translate=function(tA,eA){return 0===tA&&0===eA||(this.cache=null,this.queue.push([1,0,0,1,tA,eA])),this},Matrix$2.prototype.scale=function(tA,eA){return 1===tA&&1===eA||(this.cache=null,this.queue.push([tA,0,0,eA,0,0])),this},Matrix$2.prototype.rotate=function(tA,eA,AA){var rA,nA,iA;return 0!==tA&&(this.translate(eA,AA),rA=tA*Math.PI/180,nA=Math.cos(rA),iA=Math.sin(rA),this.queue.push([nA,iA,-iA,nA,0,0]),this.cache=null,this.translate(-eA,-AA)),this},Matrix$2.prototype.skewX=function(tA){return 0!==tA&&(this.cache=null,this.queue.push([1,0,Math.tan(tA*Math.PI/180),1,0,0])),this},Matrix$2.prototype.skewY=function(tA){return 0!==tA&&(this.cache=null,this.queue.push([1,Math.tan(tA*Math.PI/180),0,1,0,0])),this},Matrix$2.prototype.toArray=function(){if(this.cache)return this.cache;if(!this.queue.length)return this.cache=[1,0,0,1,0,0],this.cache;if(this.cache=this.queue[0],1===this.queue.length)return this.cache;for(var tA=1;tA<this.queue.length;tA++)this.cache=(eA=this.cache,AA=this.queue[tA],[eA[0]*AA[0]+eA[2]*AA[1],eA[1]*AA[0]+eA[3]*AA[1],eA[0]*AA[2]+eA[2]*AA[3],eA[1]*AA[2]+eA[3]*AA[3],eA[0]*AA[4]+eA[2]*AA[5]+eA[4],eA[1]*AA[4]+eA[3]*AA[5]+eA[5]]);var eA,AA;return this.cache},Matrix$2.prototype.calc=function(tA,eA,AA){var rA;return this.queue.length?(this.cache||(this.cache=this.toArray()),[tA*(rA=this.cache)[0]+eA*rA[2]+(AA?0:rA[4]),tA*rA[1]+eA*rA[3]+(AA?0:rA[5])]):[tA,eA]};var es=Matrix$2,As=es,rs={matrix:!0,scale:!0,rotate:!0,translate:!0,skewX:!0,skewY:!0},ns=/\\s*(matrix|translate|scale|rotate|skewX|skewY)\\s*\\(\\s*(.+?)\\s*\\)[\\s,]*/,is=/[\\s,]+/,ss=2*Math.PI;function unit_vector_angle(tA,eA,AA,rA){var nA=tA*AA+eA*rA;return nA>1&&(nA=1),nA<-1&&(nA=-1),(tA*rA-eA*AA<0?-1:1)*Math.acos(nA)}function approximate_unit_arc(tA,eA){var AA=4/3*Math.tan(eA/4),rA=Math.cos(tA),nA=Math.sin(tA),iA=Math.cos(tA+eA),sA=Math.sin(tA+eA);return[rA,nA,rA-nA*AA,nA+rA*AA,iA+sA*AA,sA-iA*AA,iA,sA]}var os=Math.PI/180;function Ellipse$1(tA,eA,AA){if(!(this instanceof Ellipse$1))return new Ellipse$1(tA,eA,AA);this.rx=tA,this.ry=eA,this.ax=AA}Ellipse$1.prototype.transform=function(tA){var eA=Math.cos(this.ax*os),AA=Math.sin(this.ax*os),rA=[this.rx*(tA[0]*eA+tA[2]*AA),this.rx*(tA[1]*eA+tA[3]*AA),this.ry*(-tA[0]*AA+tA[2]*eA),this.ry*(-tA[1]*AA+tA[3]*eA)],nA=rA[0]*rA[0]+rA[2]*rA[2],iA=rA[1]*rA[1]+rA[3]*rA[3],sA=((rA[0]-rA[3])*(rA[0]-rA[3])+(rA[2]+rA[1])*(rA[2]+rA[1]))*((rA[0]+rA[3])*(rA[0]+rA[3])+(rA[2]-rA[1])*(rA[2]-rA[1])),oA=(nA+iA)/2;if(sA<1e-10*oA)return this.rx=this.ry=Math.sqrt(oA),this.ax=0,this;var aA=rA[0]*rA[1]+rA[2]*rA[3],lA=oA+(sA=Math.sqrt(sA))/2,cA=oA-sA/2;return this.ax=Math.abs(aA)<1e-10&&Math.abs(lA-iA)<1e-10?90:180*Math.atan(Math.abs(aA)>Math.abs(lA-iA)?(lA-nA)/aA:aA/(lA-iA))/Math.PI,this.ax>=0?(this.rx=Math.sqrt(lA),this.ry=Math.sqrt(cA)):(this.ax+=90,this.rx=Math.sqrt(cA),this.ry=Math.sqrt(lA)),this},Ellipse$1.prototype.isDegenerate=function(){return this.rx<1e-10*this.ry||this.ry<1e-10*this.rx};var as=function pathParse(tA){var eA=new State(tA),AA=eA.max;for(skipSpaces(eA);eA.index<AA&&!eA.err.length;)scanSegment(eA);return eA.err.length?eA.result=[]:eA.result.length&&(\"mM\".indexOf(eA.result[0][0])<0?(eA.err=\"SvgPath: string should start with `M` or `m`\",eA.result=[]):eA.result[0][0]=\"M\"),{err:eA.err,segments:eA.result}},ls=function transformParse(tA){var eA,AA,rA=new As;return tA.split(ns).forEach((function(tA){if(tA.length)if(void 0===rs[tA])switch(AA=tA.split(is).map((function(tA){return+tA||0})),eA){case\"matrix\":return void(6===AA.length&&rA.matrix(AA));case\"scale\":return void(1===AA.length?rA.scale(AA[0],AA[0]):2===AA.length&&rA.scale(AA[0],AA[1]));case\"rotate\":return void(1===AA.length?rA.rotate(AA[0],0,0):3===AA.length&&rA.rotate(AA[0],AA[1],AA[2]));case\"translate\":return void(1===AA.length?rA.translate(AA[0],0):2===AA.length&&rA.translate(AA[0],AA[1]));case\"skewX\":return void(1===AA.length&&rA.skewX(AA[0]));case\"skewY\":return void(1===AA.length&&rA.skewY(AA[0]))}else eA=tA})),rA},cs=es,us=function a2c(tA,eA,AA,rA,nA,iA,sA,oA,aA){var lA=Math.sin(aA*ss/360),cA=Math.cos(aA*ss/360),uA=cA*(tA-AA)/2+lA*(eA-rA)/2,hA=-lA*(tA-AA)/2+cA*(eA-rA)/2;if(0===uA&&0===hA)return[];if(0===sA||0===oA)return[];sA=Math.abs(sA),oA=Math.abs(oA);var dA=uA*uA/(sA*sA)+hA*hA/(oA*oA);dA>1&&(sA*=Math.sqrt(dA),oA*=Math.sqrt(dA));var fA=function get_arc_center(tA,eA,AA,rA,nA,iA,sA,oA,aA,lA){var cA=lA*(tA-AA)/2+aA*(eA-rA)/2,uA=-aA*(tA-AA)/2+lA*(eA-rA)/2,hA=sA*sA,dA=oA*oA,fA=cA*cA,gA=uA*uA,pA=hA*dA-hA*gA-dA*fA;pA<0&&(pA=0),pA/=hA*gA+dA*fA;var mA=(pA=Math.sqrt(pA)*(nA===iA?-1:1))*sA/oA*uA,wA=pA*-oA/sA*cA,yA=lA*mA-aA*wA+(tA+AA)/2,BA=aA*mA+lA*wA+(eA+rA)/2,bA=(cA-mA)/sA,vA=(uA-wA)/oA,CA=(-cA-mA)/sA,SA=(-uA-wA)/oA,xA=unit_vector_angle(1,0,bA,vA),FA=unit_vector_angle(bA,vA,CA,SA);return 0===iA&&FA>0&&(FA-=ss),1===iA&&FA<0&&(FA+=ss),[yA,BA,xA,FA]}(tA,eA,AA,rA,nA,iA,sA,oA,lA,cA),gA=[],pA=fA[2],mA=fA[3],wA=Math.max(Math.ceil(Math.abs(mA)/(ss/4)),1);mA/=wA;for(var yA=0;yA<wA;yA++)gA.push(approximate_unit_arc(pA,mA)),pA+=mA;return gA.map((function(tA){for(var eA=0;eA<tA.length;eA+=2){var AA=tA[eA+0],rA=tA[eA+1],nA=cA*(AA*=sA)-lA*(rA*=oA),iA=lA*AA+cA*rA;tA[eA+0]=nA+fA[0],tA[eA+1]=iA+fA[1]}return tA}))},hs=Ellipse$1;function SvgPath(tA){if(!(this instanceof SvgPath))return new SvgPath(tA);var eA=as(tA);this.segments=eA.segments,this.err=eA.err,this.__stack=[]}SvgPath.from=function(tA){if(\"string\"==typeof tA)return new SvgPath(tA);if(tA instanceof SvgPath){var eA=new SvgPath(\"\");return eA.err=tA.err,eA.segments=tA.segments.map((function(tA){return tA.slice()})),eA.__stack=tA.__stack.map((function(tA){return cs().matrix(tA.toArray())})),eA}throw new Error(\"SvgPath.from: invalid param type \"+tA)},SvgPath.prototype.__matrix=function(tA){var eA,AA=this;tA.queue.length&&this.iterate((function(rA,nA,iA,sA){var oA,aA,lA,cA;switch(rA[0]){case\"v\":aA=0===(oA=tA.calc(0,rA[1],!0))[0]?[\"v\",oA[1]]:[\"l\",oA[0],oA[1]];break;case\"V\":aA=(oA=tA.calc(iA,rA[1],!1))[0]===tA.calc(iA,sA,!1)[0]?[\"V\",oA[1]]:[\"L\",oA[0],oA[1]];break;case\"h\":aA=0===(oA=tA.calc(rA[1],0,!0))[1]?[\"h\",oA[0]]:[\"l\",oA[0],oA[1]];break;case\"H\":aA=(oA=tA.calc(rA[1],sA,!1))[1]===tA.calc(iA,sA,!1)[1]?[\"H\",oA[0]]:[\"L\",oA[0],oA[1]];break;case\"a\":case\"A\":var uA=tA.toArray(),hA=hs(rA[1],rA[2],rA[3]).transform(uA);if(uA[0]*uA[3]-uA[1]*uA[2]<0&&(rA[5]=rA[5]?\"0\":\"1\"),oA=tA.calc(rA[6],rA[7],\"a\"===rA[0]),\"A\"===rA[0]&&rA[6]===iA&&rA[7]===sA||\"a\"===rA[0]&&0===rA[6]&&0===rA[7]){aA=[\"a\"===rA[0]?\"l\":\"L\",oA[0],oA[1]];break}aA=hA.isDegenerate()?[\"a\"===rA[0]?\"l\":\"L\",oA[0],oA[1]]:[rA[0],hA.rx,hA.ry,hA.ax,rA[4],rA[5],oA[0],oA[1]];break;case\"m\":cA=nA>0,aA=[\"m\",(oA=tA.calc(rA[1],rA[2],cA))[0],oA[1]];break;default:for(aA=[lA=rA[0]],cA=lA.toLowerCase()===lA,eA=1;eA<rA.length;eA+=2)oA=tA.calc(rA[eA],rA[eA+1],cA),aA.push(oA[0],oA[1])}AA.segments[nA]=aA}),!0)},SvgPath.prototype.__evaluateStack=function(){var tA,eA;if(this.__stack.length){if(1===this.__stack.length)return this.__matrix(this.__stack[0]),void(this.__stack=[]);for(tA=cs(),eA=this.__stack.length;--eA>=0;)tA.matrix(this.__stack[eA].toArray());this.__matrix(tA),this.__stack=[]}},SvgPath.prototype.toString=function(){var tA,eA,AA=[];this.__evaluateStack();for(var rA=0;rA<this.segments.length;rA++)eA=this.segments[rA][0],tA=rA>0&&\"m\"!==eA&&\"M\"!==eA&&eA===this.segments[rA-1][0],AA=AA.concat(tA?this.segments[rA].slice(1):this.segments[rA]);return AA.join(\" \").replace(/ ?([achlmqrstvz]) ?/gi,\"$1\").replace(/ \\-/g,\"-\").replace(/zm/g,\"z m\")},SvgPath.prototype.translate=function(tA,eA){return this.__stack.push(cs().translate(tA,eA||0)),this},SvgPath.prototype.scale=function(tA,eA){return this.__stack.push(cs().scale(tA,eA||0===eA?eA:tA)),this},SvgPath.prototype.rotate=function(tA,eA,AA){return this.__stack.push(cs().rotate(tA,eA||0,AA||0)),this},SvgPath.prototype.skewX=function(tA){return this.__stack.push(cs().skewX(tA)),this},SvgPath.prototype.skewY=function(tA){return this.__stack.push(cs().skewY(tA)),this},SvgPath.prototype.matrix=function(tA){return this.__stack.push(cs().matrix(tA)),this},SvgPath.prototype.transform=function(tA){return tA.trim()?(this.__stack.push(ls(tA)),this):this},SvgPath.prototype.round=function(tA){var eA,AA=0,rA=0,nA=0,iA=0;return tA=tA||0,this.__evaluateStack(),this.segments.forEach((function(sA){var oA=sA[0].toLowerCase()===sA[0];switch(sA[0]){case\"H\":case\"h\":return oA&&(sA[1]+=nA),nA=sA[1]-sA[1].toFixed(tA),void(sA[1]=+sA[1].toFixed(tA));case\"V\":case\"v\":return oA&&(sA[1]+=iA),iA=sA[1]-sA[1].toFixed(tA),void(sA[1]=+sA[1].toFixed(tA));case\"Z\":case\"z\":return nA=AA,void(iA=rA);case\"M\":case\"m\":return oA&&(sA[1]+=nA,sA[2]+=iA),nA=sA[1]-sA[1].toFixed(tA),iA=sA[2]-sA[2].toFixed(tA),AA=nA,rA=iA,sA[1]=+sA[1].toFixed(tA),void(sA[2]=+sA[2].toFixed(tA));case\"A\":case\"a\":return oA&&(sA[6]+=nA,sA[7]+=iA),nA=sA[6]-sA[6].toFixed(tA),iA=sA[7]-sA[7].toFixed(tA),sA[1]=+sA[1].toFixed(tA),sA[2]=+sA[2].toFixed(tA),sA[3]=+sA[3].toFixed(tA+2),sA[6]=+sA[6].toFixed(tA),void(sA[7]=+sA[7].toFixed(tA));default:return eA=sA.length,oA&&(sA[eA-2]+=nA,sA[eA-1]+=iA),nA=sA[eA-2]-sA[eA-2].toFixed(tA),iA=sA[eA-1]-sA[eA-1].toFixed(tA),void sA.forEach((function(eA,AA){AA&&(sA[AA]=+sA[AA].toFixed(tA))}))}})),this},SvgPath.prototype.iterate=function(tA,eA){var AA,rA,nA,iA=this.segments,sA={},oA=!1,aA=0,lA=0,cA=0,uA=0;if(eA||this.__evaluateStack(),iA.forEach((function(eA,AA){var rA=tA(eA,AA,aA,lA);Array.isArray(rA)&&(sA[AA]=rA,oA=!0);var nA=eA[0]===eA[0].toLowerCase();switch(eA[0]){case\"m\":case\"M\":return aA=eA[1]+(nA?aA:0),lA=eA[2]+(nA?lA:0),cA=aA,void(uA=lA);case\"h\":case\"H\":return void(aA=eA[1]+(nA?aA:0));case\"v\":case\"V\":return void(lA=eA[1]+(nA?lA:0));case\"z\":case\"Z\":return aA=cA,void(lA=uA);default:aA=eA[eA.length-2]+(nA?aA:0),lA=eA[eA.length-1]+(nA?lA:0)}})),!oA)return this;for(nA=[],AA=0;AA<iA.length;AA++)if(void 0!==sA[AA])for(rA=0;rA<sA[AA].length;rA++)nA.push(sA[AA][rA]);else nA.push(iA[AA]);return this.segments=nA,this},SvgPath.prototype.abs=function(){return this.iterate((function(tA,eA,AA,rA){var nA,iA=tA[0],sA=iA.toUpperCase();if(iA!==sA)switch(tA[0]=sA,iA){case\"v\":return void(tA[1]+=rA);case\"a\":return tA[6]+=AA,void(tA[7]+=rA);default:for(nA=1;nA<tA.length;nA++)tA[nA]+=nA%2?AA:rA}}),!0),this},SvgPath.prototype.rel=function(){return this.iterate((function(tA,eA,AA,rA){var nA,iA=tA[0],sA=iA.toLowerCase();if(iA!==sA&&(0!==eA||\"M\"!==iA))switch(tA[0]=sA,iA){case\"V\":return void(tA[1]-=rA);case\"A\":return tA[6]-=AA,void(tA[7]-=rA);default:for(nA=1;nA<tA.length;nA++)tA[nA]-=nA%2?AA:rA}}),!0),this},SvgPath.prototype.unarc=function(){return this.iterate((function(tA,eA,AA,rA){var nA,iA,sA,oA=[],aA=tA[0];return\"A\"!==aA&&\"a\"!==aA?null:(\"a\"===aA?(iA=AA+tA[6],sA=rA+tA[7]):(iA=tA[6],sA=tA[7]),0===(nA=us(AA,rA,iA,sA,tA[4],tA[5],tA[1],tA[2],tA[3])).length?[[\"a\"===tA[0]?\"l\":\"L\",tA[6],tA[7]]]:(nA.forEach((function(tA){oA.push([\"C\",tA[2],tA[3],tA[4],tA[5],tA[6],tA[7]])})),oA))})),this},SvgPath.prototype.unshort=function(){var tA,eA,AA,rA,nA,iA=this.segments;return this.iterate((function(sA,oA,aA,lA){var cA,uA=sA[0],hA=uA.toUpperCase();oA&&(\"T\"===hA?(cA=\"t\"===uA,\"Q\"===(AA=iA[oA-1])[0]?(tA=AA[1]-aA,eA=AA[2]-lA):\"q\"===AA[0]?(tA=AA[1]-AA[3],eA=AA[2]-AA[4]):(tA=0,eA=0),rA=-tA,nA=-eA,cA||(rA+=aA,nA+=lA),iA[oA]=[cA?\"q\":\"Q\",rA,nA,sA[1],sA[2]]):\"S\"===hA&&(cA=\"s\"===uA,\"C\"===(AA=iA[oA-1])[0]?(tA=AA[3]-aA,eA=AA[4]-lA):\"c\"===AA[0]?(tA=AA[3]-AA[5],eA=AA[4]-AA[6]):(tA=0,eA=0),rA=-tA,nA=-eA,cA||(rA+=aA,nA+=lA),iA[oA]=[cA?\"c\":\"C\",rA,nA,sA[1],sA[2],sA[3],sA[4]]))})),this};var ds=SvgPath,calculateSingle=function(tA){var eA,AA,rA=tA,nA={a:0,b:0,c:0},iA=[];return eA=function(eA,AA){var sA,oA,aA,lA,cA,uA;if(eA.test(rA))for(oA=0,aA=(sA=rA.match(eA)).length;oA<aA;oA+=1)nA[AA]+=1,lA=sA[oA],cA=rA.indexOf(lA),uA=lA.length,iA.push({selector:tA.substr(cA,uA),type:AA,index:cA,length:uA}),rA=rA.replace(lA,Array(uA+1).join(\" \"))},AA=function(tA){var eA,AA,nA,iA;if(tA.test(rA))for(AA=0,nA=(eA=rA.match(tA)).length;AA<nA;AA+=1)iA=eA[AA],rA=rA.replace(iA,Array(iA.length+1).join(\"A\"))},AA(/\\\\[0-9A-Fa-f]{6}\\s?/g),AA(/\\\\[0-9A-Fa-f]{1,5}\\s/g),AA(/\\\\./g),function(){var tA,eA,AA,nA,iA=/{[^]*/gm;if(iA.test(rA))for(eA=0,AA=(tA=rA.match(iA)).length;eA<AA;eA+=1)nA=tA[eA],rA=rA.replace(nA,Array(nA.length+1).join(\" \"))}(),eA(/(\\[[^\\]]+\\])/g,\"b\"),eA(/(#[^\\#\\s\\+>~\\.\\[:\\)]+)/g,\"a\"),eA(/(\\.[^\\s\\+>~\\.\\[:\\)]+)/g,\"b\"),eA(/(::[^\\s\\+>~\\.\\[:]+|:first-line|:first-letter|:before|:after)/gi,\"c\"),eA(/(:(?!not|global|local)[\\w-]+\\([^\\)]*\\))/gi,\"b\"),eA(/(:(?!not|global|local)[^\\s\\+>~\\.\\[:]+)/g,\"b\"),rA=(rA=(rA=(rA=(rA=(rA=rA.replace(/[\\*\\s\\+>~]/g,\" \")).replace(/[#\\.]/g,\" \")).replace(/:not/g,\" \")).replace(/:local/g,\" \")).replace(/:global/g,\" \")).replace(/[\\(\\)]/g,\" \"),eA(/([^\\s\\+>~\\.\\[:]+)/g,\"c\"),iA.sort((function(tA,eA){return tA.index-eA.index})),{selector:tA,specificity:\"0,\"+nA.a.toString()+\",\"+nA.b.toString()+\",\"+nA.c.toString(),specificityArray:[0,nA.a,nA.b,nA.c],parts:iA}},extendStatics=function(tA,eA){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(tA,eA){tA.__proto__=eA}||function(tA,eA){for(var AA in eA)eA.hasOwnProperty(AA)&&(tA[AA]=eA[AA])},extendStatics(tA,eA)};function __extends(tA,eA){function __(){this.constructor=tA}extendStatics(tA,eA),tA.prototype=null===eA?Object.create(eA):(__.prototype=eA.prototype,new __)}var __assign=function(){return __assign=Object.assign||function __assign(tA){for(var eA,AA=1,rA=arguments.length;AA<rA;AA++)for(var nA in eA=arguments[AA])Object.prototype.hasOwnProperty.call(eA,nA)&&(tA[nA]=eA[nA]);return tA},__assign.apply(this,arguments)};function __awaiter(tA,eA,AA,rA){return new(AA||(AA=Promise))((function(nA,iA){function fulfilled(tA){try{step(rA.next(tA))}catch(tA){iA(tA)}}function rejected(tA){try{step(rA.throw(tA))}catch(tA){iA(tA)}}function step(tA){tA.done?nA(tA.value):function adopt(tA){return tA instanceof AA?tA:new AA((function(eA){eA(tA)}))}(tA.value).then(fulfilled,rejected)}step((rA=rA.apply(tA,eA||[])).next())}))}function __generator(tA,eA){var AA,rA,nA,iA,sA={label:0,sent:function(){if(1&nA[0])throw nA[1];return nA[1]},trys:[],ops:[]};return iA={next:verb(0),throw:verb(1),return:verb(2)},\"function\"==typeof Symbol&&(iA[Symbol.iterator]=function(){return this}),iA;function verb(iA){return function(oA){return function step(iA){if(AA)throw new TypeError(\"Generator is already executing.\");for(;sA;)try{if(AA=1,rA&&(nA=2&iA[0]?rA.return:iA[0]?rA.throw||((nA=rA.return)&&nA.call(rA),0):rA.next)&&!(nA=nA.call(rA,iA[1])).done)return nA;switch(rA=0,nA&&(iA=[2&iA[0],nA.value]),iA[0]){case 0:case 1:nA=iA;break;case 4:return sA.label++,{value:iA[1],done:!1};case 5:sA.label++,rA=iA[1],iA=[0];continue;case 7:iA=sA.ops.pop(),sA.trys.pop();continue;default:if(!(nA=sA.trys,(nA=nA.length>0&&nA[nA.length-1])||6!==iA[0]&&2!==iA[0])){sA=0;continue}if(3===iA[0]&&(!nA||iA[1]>nA[0]&&iA[1]<nA[3])){sA.label=iA[1];break}if(6===iA[0]&&sA.label<nA[1]){sA.label=nA[1],nA=iA;break}if(nA&&sA.label<nA[2]){sA.label=nA[2],sA.ops.push(iA);break}nA[2]&&sA.ops.pop(),sA.trys.pop();continue}iA=eA.call(tA,sA)}catch(tA){iA=[6,tA],rA=0}finally{AA=nA=0}if(5&iA[0])throw iA[1];return{value:iA[0]?iA[1]:void 0,done:!0}}([iA,oA])}}}var fs=function(){function RGBColor(tA){if(this.a=void 0,this.r=0,this.g=0,this.b=0,this.simpleColors={},this.colorDefs=[],this.ok=!1,tA){for(var eA in\"#\"==tA.charAt(0)&&(tA=tA.substr(1,6)),tA=(tA=tA.replace(/ /g,\"\")).toLowerCase(),this.simpleColors={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"00ffff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000000\",blanchedalmond:\"ffebcd\",blue:\"0000ff\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"00ffff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgrey:\"a9a9a9\",darkgreen:\"006400\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",feldspar:\"d19275\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"ff00ff\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",grey:\"808080\",green:\"008000\",greenyellow:\"adff2f\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgrey:\"d3d3d3\",lightgreen:\"90ee90\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslateblue:\"8470ff\",lightslategray:\"778899\",lightslategrey:\"778899\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"00ff00\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"ff00ff\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370d8\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"d87093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",red:\"ff0000\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",violetred:\"d02090\",wheat:\"f5deb3\",white:\"ffffff\",whitesmoke:\"f5f5f5\",yellow:\"ffff00\",yellowgreen:\"9acd32\"},this.simpleColors)tA==eA&&(tA=this.simpleColors[eA]);this.colorDefs=[{re:/^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,example:[\"rgb(123, 234, 45)\",\"rgb(255,234,245)\"],process:function(tA){return[parseInt(tA[1]),parseInt(tA[2]),parseInt(tA[3])]}},{re:/^(\\w{2})(\\w{2})(\\w{2})$/,example:[\"#00ff00\",\"336699\"],process:function(tA){return[parseInt(tA[1],16),parseInt(tA[2],16),parseInt(tA[3],16)]}},{re:/^(\\w{1})(\\w{1})(\\w{1})$/,example:[\"#fb0\",\"f0f\"],process:function(tA){return[parseInt(tA[1]+tA[1],16),parseInt(tA[2]+tA[2],16),parseInt(tA[3]+tA[3],16)]}}];for(var AA=0;AA<this.colorDefs.length;AA++){var rA=this.colorDefs[AA].re,nA=this.colorDefs[AA].process,iA=rA.exec(tA);if(iA){var sA=nA(iA);this.r=sA[0],this.g=sA[1],this.b=sA[2],this.ok=!0}}this.r=this.r<0||isNaN(this.r)?0:this.r>255?255:this.r,this.g=this.g<0||isNaN(this.g)?0:this.g>255?255:this.g,this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b}}return RGBColor.prototype.toRGB=function(){return\"rgb(\"+this.r+\", \"+this.g+\", \"+this.b+\")\"},RGBColor.prototype.toRGBA=function(){return\"rgba(\"+this.r+\", \"+this.g+\", \"+this.b+\", \"+(this.a||\"1\")+\")\"},RGBColor.prototype.toHex=function(){var tA=this.r.toString(16),eA=this.g.toString(16),AA=this.b.toString(16);return 1==tA.length&&(tA=\"0\"+tA),1==eA.length&&(eA=\"0\"+eA),1==AA.length&&(AA=\"0\"+AA),\"#\"+tA+eA+AA},RGBColor.prototype.getHelpXML=function(){for(var tA=[],eA=0;eA<this.colorDefs.length;eA++)for(var AA=this.colorDefs[eA].example,rA=0;rA<AA.length;rA++)tA[tA.length]=AA[rA];for(var nA in this.simpleColors)tA[tA.length]=nA;var iA=document.createElement(\"ul\");iA.setAttribute(\"id\",\"rgbcolor-examples\");for(eA=0;eA<tA.length;eA++)try{var sA=document.createElement(\"li\"),oA=new RGBColor(tA[eA]),aA=document.createElement(\"div\");aA.style.cssText=\"margin: 3px; border: 1px solid black; background:\"+oA.toHex()+\"; color:\"+oA.toHex(),aA.appendChild(document.createTextNode(\"test\"));var lA=document.createTextNode(\" \"+tA[eA]+\" -> \"+oA.toRGB()+\" -> \"+oA.toHex());sA.appendChild(aA),sA.appendChild(lA),iA.appendChild(sA)}catch(tA){}return iA},RGBColor}(),gs=function(){function ColorFill(tA){this.color=tA}return ColorFill.prototype.getFillData=function(tA,eA){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(tA){return[2,void 0]}))}))},ColorFill}(),ps=function(){function AttributeState(){this.xmlSpace=\"\",this.fill=null,this.fillOpacity=1,this.fontFamily=\"\",this.fontSize=16,this.fontStyle=\"\",this.fontWeight=\"\",this.opacity=1,this.stroke=null,this.strokeDasharray=null,this.strokeDashoffset=0,this.strokeLinecap=\"\",this.strokeLinejoin=\"\",this.strokeMiterlimit=4,this.strokeOpacity=1,this.strokeWidth=1,this.alignmentBaseline=\"\",this.textAnchor=\"\",this.visibility=\"\",this.color=null}return AttributeState.prototype.clone=function(){var tA=new AttributeState;return tA.xmlSpace=this.xmlSpace,tA.fill=this.fill,tA.fillOpacity=this.fillOpacity,tA.fontFamily=this.fontFamily,tA.fontSize=this.fontSize,tA.fontStyle=this.fontStyle,tA.fontWeight=this.fontWeight,tA.opacity=this.opacity,tA.stroke=this.stroke,tA.strokeDasharray=this.strokeDasharray,tA.strokeDashoffset=this.strokeDashoffset,tA.strokeLinecap=this.strokeLinecap,tA.strokeLinejoin=this.strokeLinejoin,tA.strokeMiterlimit=this.strokeMiterlimit,tA.strokeOpacity=this.strokeOpacity,tA.strokeWidth=this.strokeWidth,tA.textAnchor=this.textAnchor,tA.alignmentBaseline=this.alignmentBaseline,tA.visibility=this.visibility,tA.color=this.color,tA},AttributeState.default=function(){var tA=new AttributeState;return tA.xmlSpace=\"default\",tA.fill=new gs(new fs(\"rgb(0, 0, 0)\")),tA.fillOpacity=1,tA.fontFamily=\"times\",tA.fontSize=16,tA.fontStyle=\"normal\",tA.fontWeight=\"normal\",tA.opacity=1,tA.stroke=null,tA.strokeDasharray=null,tA.strokeDashoffset=0,tA.strokeLinecap=\"butt\",tA.strokeLinejoin=\"miter\",tA.strokeMiterlimit=4,tA.strokeOpacity=1,tA.strokeWidth=1,tA.alignmentBaseline=\"baseline\",tA.textAnchor=\"start\",tA.visibility=\"visible\",tA.color=new fs(\"rgb(0, 0, 0)\"),tA},AttributeState}(),ms=/url\\([\"']?#([^\"']+)[\"']?\\)/,ws={bottom:\"bottom\",\"text-bottom\":\"bottom\",top:\"top\",\"text-top\":\"top\",hanging:\"hanging\",middle:\"middle\",central:\"middle\",center:\"middle\",mathematical:\"middle\",ideographic:\"ideographic\",alphabetic:\"alphabetic\",baseline:\"alphabetic\"},ys=function(){function TextMeasure(){this.measureMethods={}}return TextMeasure.prototype.getTextOffset=function(tA,eA){var AA=eA.textAnchor;if(\"start\"===AA)return 0;var rA=this.measureTextWidth(tA,eA),nA=0;switch(AA){case\"end\":nA=rA;break;case\"middle\":nA=rA/2}return nA},TextMeasure.prototype.measureTextWidth=function(tA,eA){if(0===tA.length)return 0;var AA=eA.fontFamily;return this.getMeasureFunction(AA).call(this,tA,eA.fontFamily,eA.fontSize+\"px\",eA.fontStyle,eA.fontWeight)},TextMeasure.prototype.getMeasurementTextNode=function(){if(!this.textMeasuringTextElement){this.textMeasuringTextElement=document.createElementNS(\"http://www.w3.org/2000/svg\",\"text\");var tA=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");tA.appendChild(this.textMeasuringTextElement),tA.style.setProperty(\"position\",\"absolute\"),tA.style.setProperty(\"visibility\",\"hidden\"),document.body.appendChild(tA)}return this.textMeasuringTextElement},TextMeasure.prototype.canvasTextMeasure=function(tA,eA,AA,rA,nA){var iA=document.createElement(\"canvas\").getContext(\"2d\");return null!=iA?(iA.font=[rA,nA,AA,eA].join(\" \"),iA.measureText(tA).width):0},TextMeasure.prototype.svgTextMeasure=function(tA,eA,AA,rA,nA,iA){void 0===iA&&(iA=this.getMeasurementTextNode());var sA=iA;return sA.setAttribute(\"font-family\",eA),sA.setAttribute(\"font-size\",AA),sA.setAttribute(\"font-style\",rA),sA.setAttribute(\"font-weight\",nA),sA.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\",\"xml:space\",\"preserve\"),sA.textContent=tA,sA.getBBox().width},TextMeasure.prototype.getMeasureFunction=function(tA){var eA=this.measureMethods[tA];if(!eA){var AA=\"16px\",rA=\"normal\",nA=\"normal\",iA=this.canvasTextMeasure(TextMeasure.testString,tA,AA,rA,nA),sA=this.svgTextMeasure(TextMeasure.testString,tA,AA,rA,nA);eA=Math.abs(iA-sA)<TextMeasure.epsilon?this.canvasTextMeasure:this.svgTextMeasure,this.measureMethods[tA]=eA}return eA},TextMeasure.prototype.cleanupTextMeasuring=function(){if(this.textMeasuringTextElement){var tA=this.textMeasuringTextElement.parentNode;tA&&document.body.removeChild(tA),this.textMeasuringTextElement=void 0}},TextMeasure.testString=\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789!\\\"$%&/()=?'\\\\+*-_.:,;^}][{#~|<>\",TextMeasure.epsilon=.1,TextMeasure}(),Bs=function(){function Context(tA,eA){var AA,rA,nA,iA,sA,oA;this.pdf=tA,this.svg2pdfParameters=eA.svg2pdfParameters,this.attributeState=eA.attributeState?eA.attributeState.clone():ps.default(),this.viewport=eA.viewport,this.refsHandler=null!==(AA=eA.refsHandler)&&void 0!==AA?AA:null,this.styleSheets=null!==(rA=eA.styleSheets)&&void 0!==rA?rA:null,this.textMeasure=null!==(nA=eA.textMeasure)&&void 0!==nA?nA:new ys,this.transform=null!==(iA=eA.transform)&&void 0!==iA?iA:this.pdf.unitMatrix,this.withinClipPath=null!==(sA=eA.withinClipPath)&&void 0!==sA&&sA,this.withinUse=null!==(oA=eA.withinUse)&&void 0!==oA&&oA}return Context.prototype.clone=function(tA){var eA,AA,rA,nA,iA,sA,oA,aA;return void 0===tA&&(tA={}),new Context(this.pdf,{svg2pdfParameters:null!==(eA=tA.svg2pdfParameters)&&void 0!==eA?eA:this.svg2pdfParameters,attributeState:tA.attributeState?tA.attributeState.clone():this.attributeState.clone(),viewport:null!==(AA=tA.viewport)&&void 0!==AA?AA:this.viewport,refsHandler:null!==(rA=tA.refsHandler)&&void 0!==rA?rA:this.refsHandler,styleSheets:null!==(nA=tA.styleSheets)&&void 0!==nA?nA:this.styleSheets,textMeasure:null!==(iA=tA.textMeasure)&&void 0!==iA?iA:this.textMeasure,transform:null!==(sA=tA.transform)&&void 0!==sA?sA:this.transform,withinClipPath:null!==(oA=tA.withinClipPath)&&void 0!==oA?oA:this.withinClipPath,withinUse:null!==(aA=tA.withinUse)&&void 0!==aA?aA:this.withinUse})},Context}(),bs=function(){function ReferencesHandler(tA){this.renderedElements={},this.idMap=tA,this.idPrefix=String(ReferencesHandler.instanceCounter++)}return ReferencesHandler.prototype.getRendered=function(tA,eA,AA){return __awaiter(this,void 0,void 0,(function(){var rA,nA;return __generator(this,(function(iA){switch(iA.label){case 0:return rA=this.generateKey(tA,eA),this.renderedElements.hasOwnProperty(rA)?[2,this.renderedElements[tA]]:(nA=this.get(tA),this.renderedElements[rA]=nA,[4,AA(nA)]);case 1:return iA.sent(),[2,nA]}}))}))},ReferencesHandler.prototype.get=function(tA){return this.idMap[Yi(tA,{isIdentifier:!0})]},ReferencesHandler.prototype.generateKey=function(tA,eA){return this.idPrefix+\"|\"+tA+\"|\"+(eA||new fs(\"rgb(0,0,0)\")).toRGBA()},ReferencesHandler.instanceCounter=0,ReferencesHandler}();function getAngle(tA,eA){return Math.atan2(eA[1]-tA[1],eA[0]-tA[0])}var vs=2/3;function toCubic(tA,eA){return[vs*(eA[0]-tA[0])+tA[0],vs*(eA[1]-tA[1])+tA[1]]}function normalize$1(tA){var eA=Math.sqrt(tA[0]*tA[0]+tA[1]*tA[1]);return[tA[0]/eA,tA[1]/eA]}function getDirectionVector(tA,eA){return normalize$1([eA[0]-tA[0],eA[1]-tA[1]])}function addVectors(tA,eA){return[tA[0]+eA[0],tA[1]+eA[1]]}function multVecMatrix(tA,eA){var AA=tA[0],rA=tA[1];return[eA.a*AA+eA.c*rA+eA.e,eA.b*AA+eA.d*rA+eA.f]}var Cs=function(){function Path(){this.segments=[]}return Path.prototype.moveTo=function(tA,eA){return this.segments.push(new Ss(tA,eA)),this},Path.prototype.lineTo=function(tA,eA){return this.segments.push(new xs(tA,eA)),this},Path.prototype.curveTo=function(tA,eA,AA,rA,nA,iA){return this.segments.push(new Fs(tA,eA,AA,rA,nA,iA)),this},Path.prototype.close=function(){return this.segments.push(new Es),this},Path.prototype.transform=function(tA){this.segments.forEach((function(eA){if(eA instanceof Ss||eA instanceof xs||eA instanceof Fs){var AA=multVecMatrix([eA.x,eA.y],tA);eA.x=AA[0],eA.y=AA[1]}if(eA instanceof Fs){var rA=multVecMatrix([eA.x1,eA.y1],tA),nA=multVecMatrix([eA.x2,eA.y2],tA);eA.x1=rA[0],eA.y1=rA[1],eA.x2=nA[0],eA.y2=nA[1]}}))},Path.prototype.draw=function(tA){var eA=tA.pdf;this.segments.forEach((function(tA){tA instanceof Ss?eA.moveTo(tA.x,tA.y):tA instanceof xs?eA.lineTo(tA.x,tA.y):tA instanceof Fs?eA.curveTo(tA.x1,tA.y1,tA.x2,tA.y2,tA.x,tA.y):eA.close()}))},Path}(),Ss=function Ss(tA,eA){this.x=tA,this.y=eA},xs=function xs(tA,eA){this.x=tA,this.y=eA},Fs=function Fs(tA,eA,AA,rA,nA,iA){this.x1=tA,this.y1=eA,this.x2=AA,this.y2=rA,this.x=nA,this.y=iA},Es=function Es(){};function nodeIs(tA,eA){return eA.split(\",\").indexOf((tA.nodeName||tA.tagName).toLowerCase())>=0}function getAttribute(tA,eA,AA,rA){var nA;void 0===rA&&(rA=AA);var iA=null===(nA=tA.style)||void 0===nA?void 0:nA.getPropertyValue(rA);if(iA)return iA;var sA=eA.getPropertyValue(tA,rA);return sA||(tA.hasAttribute(AA)&&tA.getAttribute(AA)||void 0)}function svgNodeIsVisible(tA,eA,AA){if(\"none\"===getAttribute(tA.element,AA.styleSheets,\"display\"))return!1;var rA=eA,nA=getAttribute(tA.element,AA.styleSheets,\"visibility\");return nA&&(rA=\"hidden\"!==nA),rA}function svgNodeAndChildrenVisible(tA,eA,AA){var rA=svgNodeIsVisible(tA,eA,AA);return 0!==tA.element.childNodes.length&&(tA.children.forEach((function(tA){tA.isVisible(rA,AA)&&(rA=!0)})),rA)}var Qs=function(){function MarkerList(){this.markers=[]}return MarkerList.prototype.addMarker=function(tA){this.markers.push(tA)},MarkerList.prototype.draw=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA,sA,oA;return __generator(this,(function(aA){switch(aA.label){case 0:eA=0,aA.label=1;case 1:return eA<this.markers.length?(AA=this.markers[eA],rA=void 0,nA=AA.angle,iA=AA.anchor,sA=Math.cos(nA),oA=Math.sin(nA),rA=tA.pdf.Matrix(sA,oA,-oA,sA,iA[0],iA[1]),rA=tA.pdf.matrixMult(tA.pdf.Matrix(tA.attributeState.strokeWidth,0,0,tA.attributeState.strokeWidth,0,0),rA),rA=tA.pdf.matrixMult(rA,tA.transform),tA.pdf.saveGraphicsState(),[4,tA.refsHandler.getRendered(AA.id,null,(function(eA){return eA.apply(tA)}))]):[3,4];case 2:aA.sent(),tA.pdf.doFormObject(AA.id,rA),tA.pdf.restoreGraphicsState(),aA.label=3;case 3:return eA++,[3,1];case 4:return[2]}}))}))},MarkerList}(),Us=function Us(tA,eA,AA){this.id=tA,this.anchor=eA,this.angle=AA};function toPixels(tA,eA){var AA;return(AA=tA&&tA.toString().match(/^([\\-0-9.]+)em$/))?parseFloat(AA[1])*eA:(AA=tA&&tA.toString().match(/^([\\-0-9.]+)(px|)$/))?parseFloat(AA[1]):0}function mapAlignmentBaseline(tA){return ws[tA]||\"alphabetic\"}function parseFloats(tA){for(var eA,AA=[],rA=/[+-]?(?:(?:\\d+\\.?\\d*)|(?:\\d*\\.?\\d+))(?:[eE][+-]?\\d+)?/g;eA=rA.exec(tA);)AA.push(parseFloat(eA[0]));return AA}function parseColor(tA,eA){if(\"transparent\"===tA){var AA=new fs(\"rgb(0,0,0)\");return AA.a=0,AA}if(\"currentcolor\"===tA.toLowerCase())return eA||new fs(\"rgb(0,0,0)\");var rA=/\\s*rgba\\(((?:[^,\\)]*,){3}[^,\\)]*)\\)\\s*/.exec(tA);if(rA){var nA=parseFloats(rA[1]),iA=new fs(\"rgb(\"+nA.slice(0,3).join(\",\")+\")\");return iA.a=nA[3],iA}return new fs(tA)}var Ps={\"sans-serif\":\"helvetica\",verdana:\"helvetica\",arial:\"helvetica\",fixed:\"courier\",monospace:\"courier\",terminal:\"courier\",serif:\"times\",cursive:\"times\",fantasy:\"times\"};var _s,Ls=(_s=E.version.split(\".\"),2===parseFloat(_s[0])&&3===parseFloat(_s[1]));function combineFontStyleAndFontWeight(tA,eA){return Ls?400==eA?\"italic\"==tA?\"italic\":\"normal\":700==eA&&\"italic\"!==tA?\"bold\":tA+\"\"+eA:400==eA||\"normal\"===eA?\"italic\"===tA?\"italic\":\"normal\":700!=eA&&\"bold\"!==eA||\"normal\"!==tA?(700==eA?\"bold\":eA)+\"\"+tA:\"bold\"}function getBoundingBoxByChildren(tA,eA){if(\"none\"===getAttribute(eA.element,tA.styleSheets,\"display\"))return[0,0,0,0];var AA=[0,0,0,0];return eA.children.forEach((function(eA){var rA=eA.getBoundingBox(tA);AA=[Math.min(AA[0],rA[0]),Math.min(AA[1],rA[1]),Math.max(AA[0]+AA[2],rA[0]+rA[2])-Math.min(AA[0],rA[0]),Math.max(AA[1]+AA[3],rA[1]+rA[3])-Math.min(AA[1],rA[1])]})),AA}function defaultBoundingBox(tA,eA){var AA=parseFloat,rA=AA(tA.getAttribute(\"x1\"))||AA(getAttribute(tA,eA.styleSheets,\"x\"))||AA(getAttribute(tA,eA.styleSheets,\"cx\"))-AA(getAttribute(tA,eA.styleSheets,\"r\"))||0,nA=AA(tA.getAttribute(\"x2\"))||rA+AA(getAttribute(tA,eA.styleSheets,\"width\"))||AA(getAttribute(tA,eA.styleSheets,\"cx\"))+AA(getAttribute(tA,eA.styleSheets,\"r\"))||0,iA=AA(tA.getAttribute(\"y1\"))||AA(getAttribute(tA,eA.styleSheets,\"y\"))||AA(getAttribute(tA,eA.styleSheets,\"cy\"))-AA(getAttribute(tA,eA.styleSheets,\"r\"))||0,sA=AA(tA.getAttribute(\"y2\"))||iA+AA(getAttribute(tA,eA.styleSheets,\"height\"))||AA(getAttribute(tA,eA.styleSheets,\"cy\"))+AA(getAttribute(tA,eA.styleSheets,\"r\"))||0;return[Math.min(rA,nA),Math.min(iA,sA),Math.max(rA,nA)-Math.min(rA,nA),Math.max(iA,sA)-Math.min(iA,sA)]}function computeViewBoxTransform(tA,eA,AA,rA,nA,iA,sA,oA){void 0===oA&&(oA=!1);var aA,lA,cA=eA[0],uA=eA[1],hA=eA[2],dA=eA[3],fA=nA/hA,gA=iA/dA,pA=tA.getAttribute(\"preserveAspectRatio\");if(pA){var mA=pA.split(\" \");\"defer\"===mA[0]&&(mA=mA.slice(1)),aA=mA[0],lA=mA[1]||\"meet\"}else aA=\"xMidYMid\",lA=\"meet\";if(\"none\"!==aA&&(\"meet\"===lA?fA=gA=Math.min(fA,gA):\"slice\"===lA&&(fA=gA=Math.max(fA,gA))),oA)return sA.pdf.Matrix(fA,0,0,gA,0,0);var wA=AA-cA*fA,yA=rA-uA*gA;aA.indexOf(\"xMid\")>=0?wA+=(nA-hA*fA)/2:aA.indexOf(\"xMax\")>=0&&(wA+=nA-hA*fA),aA.indexOf(\"YMid\")>=0?yA+=(iA-dA*gA)/2:aA.indexOf(\"YMax\")>=0&&(yA+=iA-dA*gA);var BA=sA.pdf.Matrix(1,0,0,1,wA,yA),bA=sA.pdf.Matrix(fA,0,0,gA,0,0);return sA.pdf.matrixMult(bA,BA)}function parseTransform$1(tA,eA){if(!tA||\"none\"===tA)return eA.pdf.unitMatrix;for(var AA,rA,nA=/^[\\s,]*matrix\\(([^)]+)\\)\\s*/,iA=/^[\\s,]*translate\\(([^)]+)\\)\\s*/,sA=/^[\\s,]*rotate\\(([^)]+)\\)\\s*/,oA=/^[\\s,]*scale\\(([^)]+)\\)\\s*/,aA=/^[\\s,]*skewX\\(([^)]+)\\)\\s*/,lA=/^[\\s,]*skewY\\(([^)]+)\\)\\s*/,cA=eA.pdf.unitMatrix;tA.length>0&&tA.length!==rA;){rA=tA.length;var uA=nA.exec(tA);if(uA&&(AA=parseFloats(uA[1]),cA=eA.pdf.matrixMult(eA.pdf.Matrix(AA[0],AA[1],AA[2],AA[3],AA[4],AA[5]),cA),tA=tA.substr(uA[0].length)),uA=sA.exec(tA)){AA=parseFloats(uA[1]);var hA=Math.PI*AA[0]/180;if(cA=eA.pdf.matrixMult(eA.pdf.Matrix(Math.cos(hA),Math.sin(hA),-Math.sin(hA),Math.cos(hA),0,0),cA),AA[1]||AA[2]){var dA=eA.pdf.Matrix(1,0,0,1,AA[1],AA[2]),fA=eA.pdf.Matrix(1,0,0,1,-AA[1],-AA[2]);cA=eA.pdf.matrixMult(fA,eA.pdf.matrixMult(cA,dA))}tA=tA.substr(uA[0].length)}(uA=iA.exec(tA))&&(AA=parseFloats(uA[1]),cA=eA.pdf.matrixMult(eA.pdf.Matrix(1,0,0,1,AA[0],AA[1]||0),cA),tA=tA.substr(uA[0].length)),(uA=oA.exec(tA))&&((AA=parseFloats(uA[1]))[1]||(AA[1]=AA[0]),cA=eA.pdf.matrixMult(eA.pdf.Matrix(AA[0],0,0,AA[1],0,0),cA),tA=tA.substr(uA[0].length)),(uA=aA.exec(tA))&&(AA=parseFloat(uA[1]),AA*=Math.PI/180,cA=eA.pdf.matrixMult(eA.pdf.Matrix(1,0,Math.tan(AA),1,0,0),cA),tA=tA.substr(uA[0].length)),(uA=lA.exec(tA))&&(AA=parseFloat(uA[1]),AA*=Math.PI/180,cA=eA.pdf.matrixMult(eA.pdf.Matrix(1,Math.tan(AA),0,1,0,0),cA),tA=tA.substr(uA[0].length))}return cA}var Is=function(){function SvgNode(tA,eA){this.element=tA,this.children=eA,this.parent=null}return SvgNode.prototype.setParent=function(tA){this.parent=tA},SvgNode.prototype.getParent=function(){return this.parent},SvgNode.prototype.getBoundingBox=function(tA){return\"none\"===getAttribute(this.element,tA.styleSheets,\"display\")?[0,0,0,0]:this.getBoundingBoxCore(tA)},SvgNode.prototype.computeNodeTransform=function(tA){var eA=this.computeNodeTransformCore(tA),AA=getAttribute(this.element,tA.styleSheets,\"transform\");return AA?tA.pdf.matrixMult(eA,parseTransform$1(AA,tA)):eA},SvgNode}(),Ns=function(tA){function NonRenderedNode(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(NonRenderedNode,tA),NonRenderedNode.prototype.render=function(tA){return Promise.resolve()},NonRenderedNode.prototype.getBoundingBoxCore=function(tA){return[]},NonRenderedNode.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},NonRenderedNode}(Is),Ts=function(tA){function Gradient(eA,AA,rA){var nA=tA.call(this,AA,rA)||this;return nA.pdfGradientType=eA,nA.contextColor=void 0,nA}return __extends(Gradient,tA),Gradient.prototype.apply=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA,sA;return __generator(this,(function(oA){return(eA=this.element.getAttribute(\"id\"))?(AA=this.getStops(tA.styleSheets),rA=0,nA=!1,AA.forEach((function(tA){var eA=tA.opacity;eA&&1!==eA&&(rA+=eA,nA=!0)})),nA&&(iA=new j({opacity:rA/AA.length})),sA=new B(this.pdfGradientType,this.getCoordinates(),AA,iA),tA.pdf.addShadingPattern(eA,sA),[2]):[2]}))}))},Gradient.prototype.getStops=function(tA){var eA=this;if(this.stops)return this.stops;if(void 0===this.contextColor){this.contextColor=null;for(var AA=this;AA;){var rA=getAttribute(AA.element,tA,\"color\");if(rA){this.contextColor=parseColor(rA,null);break}AA=AA.getParent()}}var nA=[];return this.children.forEach((function(AA){if(\"stop\"===AA.element.tagName.toLowerCase()){var rA=getAttribute(AA.element,tA,\"color\"),iA=parseColor(getAttribute(AA.element,tA,\"stop-color\")||\"\",rA?parseColor(rA,null):eA.contextColor),sA=parseFloat(getAttribute(AA.element,tA,\"stop-opacity\")||\"1\");nA.push({offset:Gradient.parseGradientOffset(AA.element.getAttribute(\"offset\")||\"0\"),color:[iA.r,iA.g,iA.b],opacity:sA})}})),this.stops=nA},Gradient.prototype.getBoundingBoxCore=function(tA){return defaultBoundingBox(this.element,tA)},Gradient.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},Gradient.prototype.isVisible=function(tA,eA){return svgNodeAndChildrenVisible(this,tA,eA)},Gradient.parseGradientOffset=function(tA){var eA=parseFloat(tA);return!isNaN(eA)&&tA.indexOf(\"%\")>=0?eA/100:eA},Gradient}(Ns),ks=function(tA){function LinearGradient(eA,AA){return tA.call(this,\"axial\",eA,AA)||this}return __extends(LinearGradient,tA),LinearGradient.prototype.getCoordinates=function(){return[parseFloat(this.element.getAttribute(\"x1\")||\"0\"),parseFloat(this.element.getAttribute(\"y1\")||\"0\"),parseFloat(this.element.getAttribute(\"x2\")||\"1\"),parseFloat(this.element.getAttribute(\"y2\")||\"0\")]},LinearGradient}(Ts),Ms=function(tA){function RadialGradient(eA,AA){return tA.call(this,\"radial\",eA,AA)||this}return __extends(RadialGradient,tA),RadialGradient.prototype.getCoordinates=function(){var tA=this.element.getAttribute(\"cx\"),eA=this.element.getAttribute(\"cy\"),AA=this.element.getAttribute(\"fx\"),rA=this.element.getAttribute(\"fy\");return[parseFloat(AA||tA||\"0.5\"),parseFloat(rA||eA||\"0.5\"),0,parseFloat(tA||\"0.5\"),parseFloat(eA||\"0.5\"),parseFloat(this.element.getAttribute(\"r\")||\"0.5\")]},RadialGradient}(Ts),Os=function(){function GradientFill(tA,eA){this.key=tA,this.gradient=eA}return GradientFill.prototype.getFillData=function(tA,eA){return __awaiter(this,void 0,void 0,(function(){var AA,rA,nA;return __generator(this,(function(iA){switch(iA.label){case 0:return[4,eA.refsHandler.getRendered(this.key,null,(function(tA){return tA.apply(new Bs(eA.pdf,{refsHandler:eA.refsHandler,textMeasure:eA.textMeasure,styleSheets:eA.styleSheets,viewport:eA.viewport,svg2pdfParameters:eA.svg2pdfParameters}))}))];case 1:return iA.sent(),this.gradient.element.hasAttribute(\"gradientUnits\")&&\"objectboundingbox\"!==this.gradient.element.getAttribute(\"gradientUnits\").toLowerCase()?AA=eA.pdf.unitMatrix:(rA=tA.getBoundingBox(eA),AA=eA.pdf.Matrix(rA[2],0,0,rA[3],rA[0],rA[1])),nA=parseTransform$1(getAttribute(this.gradient.element,eA.styleSheets,\"gradientTransform\",\"transform\"),eA),[2,{key:this.key,matrix:eA.pdf.matrixMult(nA,AA)}]}}))}))},GradientFill}(),Hs=function(tA){function Pattern(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(Pattern,tA),Pattern.prototype.apply=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA;return __generator(this,(function(sA){switch(sA.label){case 0:if(!(eA=this.element.getAttribute(\"id\")))return[2];AA=this.getBoundingBox(tA),rA=new M([AA[0],AA[1],AA[0]+AA[2],AA[1]+AA[3]],AA[2],AA[3]),tA.pdf.beginTilingPattern(rA),nA=0,iA=this.children,sA.label=1;case 1:return nA<iA.length?[4,iA[nA].render(new Bs(tA.pdf,{attributeState:tA.attributeState,refsHandler:tA.refsHandler,styleSheets:tA.styleSheets,viewport:tA.viewport,svg2pdfParameters:tA.svg2pdfParameters}))]:[3,4];case 2:sA.sent(),sA.label=3;case 3:return nA++,[3,1];case 4:return tA.pdf.endTilingPattern(eA,rA),[2]}}))}))},Pattern.prototype.getBoundingBoxCore=function(tA){return defaultBoundingBox(this.element,tA)},Pattern.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},Pattern.prototype.isVisible=function(tA,eA){return svgNodeAndChildrenVisible(this,tA,eA)},Pattern}(Ns),Ds=function(){function PatternFill(tA,eA){this.key=tA,this.pattern=eA}return PatternFill.prototype.getFillData=function(tA,eA){return __awaiter(this,void 0,void 0,(function(){var AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA;return __generator(this,(function(fA){switch(fA.label){case 0:return[4,eA.refsHandler.getRendered(this.key,null,(function(tA){return tA.apply(new Bs(eA.pdf,{refsHandler:eA.refsHandler,textMeasure:eA.textMeasure,styleSheets:eA.styleSheets,viewport:eA.viewport,svg2pdfParameters:eA.svg2pdfParameters}))}))];case 1:return fA.sent(),AA={key:this.key,boundingBox:void 0,xStep:0,yStep:0,matrix:void 0},nA=eA.pdf.unitMatrix,this.pattern.element.hasAttribute(\"patternUnits\")&&\"objectboundingbox\"!==this.pattern.element.getAttribute(\"patternUnits\").toLowerCase()||(rA=tA.getBoundingBox(eA),nA=eA.pdf.Matrix(1,0,0,1,rA[0],rA[1]),sA=this.pattern.getBoundingBox(eA),oA=sA[0]*rA[0]||0,aA=sA[1]*rA[1]||0,lA=sA[2]*rA[2]||0,cA=sA[3]*rA[3]||0,AA.boundingBox=[oA,aA,oA+lA,aA+cA],AA.xStep=lA,AA.yStep=cA),iA=eA.pdf.unitMatrix,this.pattern.element.hasAttribute(\"patternContentUnits\")&&\"objectboundingbox\"===this.pattern.element.getAttribute(\"patternContentUnits\").toLowerCase()&&(rA||(rA=tA.getBoundingBox(eA)),iA=eA.pdf.Matrix(rA[2],0,0,rA[3],0,0),sA=AA.boundingBox||this.pattern.getBoundingBox(eA),oA=sA[0]/rA[0]||0,aA=sA[1]/rA[1]||0,lA=sA[2]/rA[2]||0,cA=sA[3]/rA[3]||0,AA.boundingBox=[oA,aA,oA+lA,aA+cA],AA.xStep=lA,AA.yStep=cA),uA=eA.pdf.unitMatrix,(hA=getAttribute(this.pattern.element,eA.styleSheets,\"patternTransform\",\"transform\"))&&(uA=parseTransform$1(hA,eA)),dA=iA,dA=eA.pdf.matrixMult(dA,nA),dA=eA.pdf.matrixMult(dA,uA),dA=eA.pdf.matrixMult(dA,eA.transform),AA.matrix=dA,[2,AA]}}))}))},PatternFill}();function parseFill(tA,eA){var AA=ms.exec(tA);if(AA){var rA=AA[1],nA=eA.refsHandler.get(rA);return nA&&(nA instanceof ks||nA instanceof Ms)?function getGradientFill(tA,eA,AA){var rA=eA.getStops(AA.styleSheets);if(0===rA.length)return null;if(1===rA.length){var nA=rA[0].color,iA=new fs;return iA.ok=!0,iA.r=nA[0],iA.g=nA[1],iA.b=nA[2],iA.a=rA[0].opacity,new gs(iA)}return new Os(tA,eA)}(rA,nA,eA):nA&&nA instanceof Hs?new Ds(rA,nA):new gs(new fs(\"rgb(0, 0, 0)\"))}var iA=parseColor(tA,eA.attributeState.color);return iA.ok?new gs(iA):null}function parseAttributes(tA,eA,AA){var rA=AA||eA.element,nA=getAttribute(rA,tA.styleSheets,\"color\");if(nA){var iA=parseColor(nA,tA.attributeState.color);iA.ok?tA.attributeState.color=iA:tA.attributeState.color=new fs(\"rgb(0,0,0)\")}var sA=getAttribute(rA,tA.styleSheets,\"visibility\");sA&&(tA.attributeState.visibility=sA);var oA=getAttribute(rA,tA.styleSheets,\"fill\");oA&&(tA.attributeState.fill=parseFill(oA,tA));var aA=getAttribute(rA,tA.styleSheets,\"fill-opacity\");aA&&(tA.attributeState.fillOpacity=parseFloat(aA));var lA=getAttribute(rA,tA.styleSheets,\"stroke-opacity\");lA&&(tA.attributeState.strokeOpacity=parseFloat(lA));var cA=getAttribute(rA,tA.styleSheets,\"opacity\");cA&&(tA.attributeState.opacity=parseFloat(cA));var uA=getAttribute(rA,tA.styleSheets,\"stroke-width\");void 0!==uA&&\"\"!==uA&&(tA.attributeState.strokeWidth=Math.abs(parseFloat(uA)));var hA=getAttribute(rA,tA.styleSheets,\"stroke\");if(hA)if(\"none\"===hA)tA.attributeState.stroke=null;else{var dA=parseColor(hA,tA.attributeState.color);dA.ok&&(tA.attributeState.stroke=new gs(dA))}var fA=getAttribute(rA,tA.styleSheets,\"stroke-linecap\");fA&&(tA.attributeState.strokeLinecap=fA);var gA=getAttribute(rA,tA.styleSheets,\"stroke-linejoin\");gA&&(tA.attributeState.strokeLinejoin=gA);var pA=getAttribute(rA,tA.styleSheets,\"stroke-dasharray\");if(pA){var mA=parseInt(getAttribute(rA,tA.styleSheets,\"stroke-dashoffset\")||\"0\");tA.attributeState.strokeDasharray=parseFloats(pA),tA.attributeState.strokeDashoffset=mA}var wA=getAttribute(rA,tA.styleSheets,\"stroke-miterlimit\");void 0!==wA&&\"\"!==wA&&(tA.attributeState.strokeMiterlimit=parseFloat(wA));var yA=rA.getAttribute(\"xml:space\");yA&&(tA.attributeState.xmlSpace=yA);var BA=getAttribute(rA,tA.styleSheets,\"font-weight\");BA&&(tA.attributeState.fontWeight=BA);var bA=getAttribute(rA,tA.styleSheets,\"font-style\");bA&&(tA.attributeState.fontStyle=bA);var vA=getAttribute(rA,tA.styleSheets,\"font-family\");if(vA){var CA=fontFamilyPapandreou_parse(vA);tA.attributeState.fontFamily=function findFirstAvailableFontFamily(tA,eA,AA){var rA=combineFontStyleAndFontWeight(tA.fontStyle,tA.fontWeight),nA=AA.pdf.getFontList(),iA=\"\";return eA.some((function(tA){var eA=nA[tA];return eA&&eA.indexOf(rA)>=0?(iA=tA,!0):(tA=tA.toLowerCase(),!!Ps.hasOwnProperty(tA)&&(iA=tA,!0))}))||(iA=\"times\"),iA}(tA.attributeState,CA,tA)}var SA=getAttribute(rA,tA.styleSheets,\"font-size\");if(SA){var xA=tA.pdf.getFontSize();tA.attributeState.fontSize=toPixels(SA,xA)}var FA=getAttribute(rA,tA.styleSheets,\"vertical-align\")||getAttribute(rA,tA.styleSheets,\"alignment-baseline\");if(FA){var EA=FA.match(/(baseline|text-bottom|alphabetic|ideographic|middle|central|mathematical|text-top|bottom|center|top|hanging)/);EA&&(tA.attributeState.alignmentBaseline=EA[0])}var QA=getAttribute(rA,tA.styleSheets,\"text-anchor\");QA&&(tA.attributeState.textAnchor=QA)}function applyAttributes(tA,eA,AA){var rA=1,nA=1;rA*=tA.attributeState.fillOpacity,rA*=tA.attributeState.opacity,tA.attributeState.fill instanceof gs&&void 0!==tA.attributeState.fill.color.a&&(rA*=tA.attributeState.fill.color.a),nA*=tA.attributeState.strokeOpacity,nA*=tA.attributeState.opacity,tA.attributeState.stroke instanceof gs&&void 0!==tA.attributeState.stroke.color.a&&(nA*=tA.attributeState.stroke.color.a);var iA,sA,oA=rA<1,aA=nA<1;if(nodeIs(AA,\"use\")?(oA=!0,aA=!0,rA*=tA.attributeState.fill?1:0,nA*=tA.attributeState.stroke?1:0):tA.withinUse&&(tA.attributeState.fill!==eA.attributeState.fill?(oA=!0,rA*=tA.attributeState.fill?1:0):oA&&!tA.attributeState.fill&&(rA=0),tA.attributeState.stroke!==eA.attributeState.stroke?(aA=!0,nA*=tA.attributeState.stroke?1:0):aA&&!tA.attributeState.stroke&&(nA=0)),oA||aA){var lA={};oA&&(lA.opacity=rA),aA&&(lA[\"stroke-opacity\"]=nA),tA.pdf.setGState(new j(lA))}if(tA.attributeState.fill&&tA.attributeState.fill!==eA.attributeState.fill&&tA.attributeState.fill instanceof gs&&tA.attributeState.fill.color.ok&&!nodeIs(AA,\"text\")&&tA.pdf.setFillColor(tA.attributeState.fill.color.r,tA.attributeState.fill.color.g,tA.attributeState.fill.color.b),tA.attributeState.strokeWidth!==eA.attributeState.strokeWidth&&tA.pdf.setLineWidth(tA.attributeState.strokeWidth),tA.attributeState.stroke!==eA.attributeState.stroke&&tA.attributeState.stroke instanceof gs&&tA.pdf.setDrawColor(tA.attributeState.stroke.color.r,tA.attributeState.stroke.color.g,tA.attributeState.stroke.color.b),tA.attributeState.strokeLinecap!==eA.attributeState.strokeLinecap&&tA.pdf.setLineCap(tA.attributeState.strokeLinecap),tA.attributeState.strokeLinejoin!==eA.attributeState.strokeLinejoin&&tA.pdf.setLineJoin(tA.attributeState.strokeLinejoin),tA.attributeState.strokeDasharray===eA.attributeState.strokeDasharray&&tA.attributeState.strokeDashoffset===eA.attributeState.strokeDashoffset||!tA.attributeState.strokeDasharray||tA.pdf.setLineDashPattern(tA.attributeState.strokeDasharray,tA.attributeState.strokeDashoffset),tA.attributeState.strokeMiterlimit!==eA.attributeState.strokeMiterlimit&&tA.pdf.setLineMiterLimit(tA.attributeState.strokeMiterlimit),tA.attributeState.fontFamily!==eA.attributeState.fontFamily&&(iA=Ps.hasOwnProperty(tA.attributeState.fontFamily)?Ps[tA.attributeState.fontFamily]:tA.attributeState.fontFamily),tA.attributeState.fill&&tA.attributeState.fill!==eA.attributeState.fill&&tA.attributeState.fill instanceof gs&&tA.attributeState.fill.color.ok){var cA=tA.attributeState.fill.color;tA.pdf.setTextColor(cA.r,cA.g,cA.b)}tA.attributeState.fontWeight===eA.attributeState.fontWeight&&tA.attributeState.fontStyle===eA.attributeState.fontStyle||(sA=combineFontStyleAndFontWeight(tA.attributeState.fontStyle,tA.attributeState.fontWeight)),void 0===iA&&void 0===sA||(void 0===iA&&(iA=Ps.hasOwnProperty(tA.attributeState.fontFamily)?Ps[tA.attributeState.fontFamily]:tA.attributeState.fontFamily),tA.pdf.setFont(iA,sA)),tA.attributeState.fontSize!==eA.attributeState.fontSize&&tA.pdf.setFontSize(tA.attributeState.fontSize*tA.pdf.internal.scaleFactor)}function getClipPathNode(tA,eA,AA){var rA=ms.exec(tA);if(rA){var nA=rA[1];return AA.refsHandler.get(nA)||void 0}}function applyClipPath(tA,eA,AA){return __awaiter(this,void 0,void 0,(function(){var rA,nA;return __generator(this,(function(iA){switch(iA.label){case 0:return rA=AA.clone(),eA.element.hasAttribute(\"clipPathUnits\")&&\"objectboundingbox\"===eA.element.getAttribute(\"clipPathUnits\").toLowerCase()&&(nA=tA.getBoundingBox(AA),rA.transform=AA.pdf.matrixMult(AA.pdf.Matrix(nA[2],0,0,nA[3],nA[0],nA[1]),AA.transform)),[4,eA.apply(rA)];case 1:return iA.sent(),[2]}}))}))}var Rs=function(tA){function RenderedNode(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(RenderedNode,tA),RenderedNode.prototype.render=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA;return __generator(this,(function(iA){switch(iA.label){case 0:return this.isVisible(\"hidden\"!==tA.attributeState.visibility,tA)?((eA=tA.clone()).transform=eA.pdf.matrixMult(this.computeNodeTransform(eA),tA.transform),parseAttributes(eA,this),AA=getAttribute(this.element,eA.styleSheets,\"clip-path\"),(rA=AA&&\"none\"!==AA)?(nA=getClipPathNode(AA,0,eA))?nA.isVisible(!0,eA)?(eA.pdf.saveGraphicsState(),[4,applyClipPath(this,nA,eA)]):[3,2]:[3,4]:[3,5]):[2];case 1:return iA.sent(),[3,3];case 2:return[2];case 3:return[3,5];case 4:rA=!1,iA.label=5;case 5:return eA.withinClipPath||eA.pdf.saveGraphicsState(),applyAttributes(eA,tA,this.element),[4,this.renderCore(eA)];case 6:return iA.sent(),eA.withinClipPath||eA.pdf.restoreGraphicsState(),rA&&eA.pdf.restoreGraphicsState(),[2]}}))}))},RenderedNode}(Is),Vs=function(tA){function GraphicsNode(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(GraphicsNode,tA),GraphicsNode}(Rs),Gs=function(tA){function GeometryNode(eA,AA,rA){var nA=tA.call(this,AA,rA)||this;return nA.cachedPath=null,nA.hasMarkers=eA,nA}return __extends(GeometryNode,tA),GeometryNode.prototype.renderCore=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA;return __generator(this,(function(AA){switch(AA.label){case 0:return null===(eA=this.getCachedPath(tA))||0===eA.segments.length?[2]:(tA.withinClipPath?eA.transform(tA.transform):tA.pdf.setCurrentTransformationMatrix(tA.transform),eA.draw(tA),[4,this.fillOrStroke(tA)]);case 1:return AA.sent(),this.hasMarkers?[4,this.drawMarkers(tA,eA)]:[3,3];case 2:AA.sent(),AA.label=3;case 3:return[2]}}))}))},GeometryNode.prototype.getCachedPath=function(tA){return this.cachedPath||(this.cachedPath=this.getPath(tA))},GeometryNode.prototype.drawMarkers=function(tA,eA){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(AA){switch(AA.label){case 0:return[4,this.getMarkers(eA,tA).draw(tA.clone({transform:tA.pdf.unitMatrix}))];case 1:return AA.sent(),[2]}}))}))},GeometryNode.prototype.fillOrStroke=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA;return __generator(this,(function(sA){switch(sA.label){case 0:return tA.withinClipPath?[2]:(eA=tA.attributeState.fill,AA=tA.attributeState.stroke&&0!==tA.attributeState.strokeWidth,eA?[4,eA.getFillData(this,tA)]:[3,2]);case 1:return nA=sA.sent(),[3,3];case 2:nA=void 0,sA.label=3;case 3:return rA=nA,iA=\"evenodd\"===getAttribute(this.element,tA.styleSheets,\"fill-rule\"),eA&&AA||tA.withinUse?iA?tA.pdf.fillStrokeEvenOdd(rA):tA.pdf.fillStroke(rA):eA?iA?tA.pdf.fillEvenOdd(rA):tA.pdf.fill(rA):AA?tA.pdf.stroke():tA.pdf.discardPath(),[2]}}))}))},GeometryNode.prototype.getBoundingBoxCore=function(tA){var eA=this.getCachedPath(tA);if(!eA)return[0,0,0,0];for(var AA=Number.POSITIVE_INFINITY,rA=Number.POSITIVE_INFINITY,nA=Number.NEGATIVE_INFINITY,iA=Number.NEGATIVE_INFINITY,sA=0,oA=0,aA=0;aA<eA.segments.length;aA++){var lA=eA.segments[aA];(lA instanceof Ss||lA instanceof xs||lA instanceof Fs)&&(sA=lA.x,oA=lA.y),lA instanceof Fs?(AA=Math.min(AA,sA,lA.x1,lA.x2,lA.x),nA=Math.max(nA,sA,lA.x1,lA.x2,lA.x),rA=Math.min(rA,oA,lA.y1,lA.y2,lA.y),iA=Math.max(iA,oA,lA.y1,lA.y2,lA.y)):(AA=Math.min(AA,sA),nA=Math.max(nA,sA),rA=Math.min(rA,oA),iA=Math.max(iA,oA))}return[AA,rA,nA-AA,iA-rA]},GeometryNode.prototype.getMarkers=function(tA,eA){var AA=getAttribute(this.element,eA.styleSheets,\"marker-start\"),rA=getAttribute(this.element,eA.styleSheets,\"marker-mid\"),nA=getAttribute(this.element,eA.styleSheets,\"marker-end\"),iA=new Qs;if(AA||rA||nA){nA&&(nA=iri(nA)),AA&&(AA=iri(AA)),rA&&(rA=iri(rA));for(var sA=tA.segments,oA=[1,0],aA=void 0,lA=!1,cA=[1,0],uA=!1,_loop_1=function(tA){var eA=sA[tA],hA=AA&&(1===tA||!(sA[tA]instanceof Ss)&&sA[tA-1]instanceof Ss);hA&&sA.forEach((function(eA,AA){if(!uA&&eA instanceof Es&&AA>tA){var rA=sA[AA-1];uA=(rA instanceof Ss||rA instanceof xs||rA instanceof Fs)&&rA}}));var dA=nA&&(tA===sA.length-1||!(sA[tA]instanceof Ss)&&sA[tA+1]instanceof Ss),fA=rA&&tA>0&&!(1===tA&&sA[tA-1]instanceof Ss),gA=sA[tA-1]||null;if(gA instanceof Ss||gA instanceof xs||gA instanceof Fs){if(eA instanceof Fs)hA&&iA.addMarker(new Us(AA,[gA.x,gA.y],getAngle(uA?[uA.x,uA.y]:[gA.x,gA.y],[eA.x1,eA.y1]))),dA&&iA.addMarker(new Us(nA,[eA.x,eA.y],getAngle([eA.x2,eA.y2],[eA.x,eA.y]))),fA&&(aA=getDirectionVector([gA.x,gA.y],[eA.x1,eA.y1]),aA=gA instanceof Ss?aA:normalize$1(addVectors(oA,aA)),iA.addMarker(new Us(rA,[gA.x,gA.y],Math.atan2(aA[1],aA[0])))),oA=getDirectionVector([eA.x2,eA.y2],[eA.x,eA.y]);else if(eA instanceof Ss||eA instanceof xs){if(aA=getDirectionVector([gA.x,gA.y],[eA.x,eA.y]),hA){var pA=uA?getDirectionVector([uA.x,uA.y],[eA.x,eA.y]):aA;iA.addMarker(new Us(AA,[gA.x,gA.y],Math.atan2(pA[1],pA[0])))}if(dA&&iA.addMarker(new Us(nA,[eA.x,eA.y],Math.atan2(aA[1],aA[0]))),fA){pA=eA instanceof Ss?oA:gA instanceof Ss?aA:normalize$1(addVectors(oA,aA));iA.addMarker(new Us(rA,[gA.x,gA.y],Math.atan2(pA[1],pA[0])))}oA=aA}else if(eA instanceof Es){if(aA=getDirectionVector([gA.x,gA.y],[lA.x,lA.y]),fA){pA=gA instanceof Ss?aA:normalize$1(addVectors(oA,aA));iA.addMarker(new Us(rA,[gA.x,gA.y],Math.atan2(pA[1],pA[0])))}if(dA){pA=normalize$1(addVectors(aA,cA));iA.addMarker(new Us(nA,[lA.x,lA.y],Math.atan2(pA[1],pA[0])))}oA=aA}}else{lA=eA instanceof Ss&&eA;var mA=sA[tA+1];(mA instanceof Ss||mA instanceof xs||mA instanceof Fs)&&(cA=getDirectionVector([lA.x,lA.y],[mA.x,mA.y]))}},hA=0;hA<sA.length;hA++)_loop_1(hA)}return iA},GeometryNode}(Vs);function iri(tA){var eA=ms.exec(tA);return eA&&eA[1]||void 0}var js=function(tA){function Line(eA,AA){return tA.call(this,!0,eA,AA)||this}return __extends(Line,tA),Line.prototype.getPath=function(tA){if(tA.withinClipPath||null===tA.attributeState.stroke)return null;var eA=parseFloat(this.element.getAttribute(\"x1\")||\"0\"),AA=parseFloat(this.element.getAttribute(\"y1\")||\"0\"),rA=parseFloat(this.element.getAttribute(\"x2\")||\"0\"),nA=parseFloat(this.element.getAttribute(\"y2\")||\"0\");return eA||rA||AA||nA?(new Cs).moveTo(eA,AA).lineTo(rA,nA):null},Line.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},Line.prototype.isVisible=function(tA,eA){return svgNodeIsVisible(this,tA,eA)},Line.prototype.fillOrStroke=function(eA){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(AA){switch(AA.label){case 0:return eA.attributeState.fill=null,[4,tA.prototype.fillOrStroke.call(this,eA)];case 1:return AA.sent(),[2]}}))}))},Line}(Gs),Ks=function(tA){function Symbol(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(Symbol,tA),Symbol.prototype.apply=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA;return __generator(this,(function(sA){switch(sA.label){case 0:return this.isVisible(\"hidden\"!==tA.attributeState.visibility,tA)?((eA=tA.clone()).transform=eA.pdf.unitMatrix,parseAttributes(eA,this),AA=getAttribute(this.element,eA.styleSheets,\"clip-path\"),AA&&\"none\"!==AA&&(rA=getClipPathNode(AA,0,eA))?rA.isVisible(!0,eA)?[4,applyClipPath(this,rA,eA)]:[3,2]:[3,3]):[2];case 1:return sA.sent(),[3,3];case 2:return[2];case 3:applyAttributes(eA,tA,this.element),nA=0,iA=this.children,sA.label=4;case 4:return nA<iA.length?[4,iA[nA].render(eA)]:[3,7];case 5:sA.sent(),sA.label=6;case 6:return nA++,[3,4];case 7:return[2]}}))}))},Symbol.prototype.getBoundingBoxCore=function(tA){return getBoundingBoxByChildren(tA,this)},Symbol.prototype.isVisible=function(tA,eA){return svgNodeAndChildrenVisible(this,tA,eA)},Symbol.prototype.computeNodeTransformCore=function(tA){var eA=parseFloat(getAttribute(this.element,tA.styleSheets,\"x\")||\"0\"),AA=parseFloat(getAttribute(this.element,tA.styleSheets,\"y\")||\"0\"),rA=this.element.getAttribute(\"viewBox\");if(rA){var nA=parseFloats(rA),iA=parseFloat(getAttribute(this.element,tA.styleSheets,\"width\")||getAttribute(this.element.ownerSVGElement,tA.styleSheets,\"width\")||rA[2]),sA=parseFloat(getAttribute(this.element,tA.styleSheets,\"height\")||getAttribute(this.element.ownerSVGElement,tA.styleSheets,\"height\")||rA[3]);return computeViewBoxTransform(this.element,nA,eA,AA,iA,sA,tA)}return tA.pdf.Matrix(1,0,0,1,eA,AA)},Symbol}(Ns),qs=function qs(tA,eA){this.width=tA,this.height=eA},zs=function(tA){function Use(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(Use,tA),Use.prototype.renderCore=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA;return __generator(this,(function(fA){switch(fA.label){case 0:return eA=parseFloat,(AA=this.element.getAttribute(\"href\")||this.element.getAttribute(\"xlink:href\"))?(rA=AA.substring(1),nA=tA.refsHandler.get(rA),iA=nodeIs(nA.element,\"symbol,svg\")&&nA.element.hasAttribute(\"viewBox\"),sA=eA(getAttribute(this.element,tA.styleSheets,\"x\")||\"0\"),oA=eA(getAttribute(this.element,tA.styleSheets,\"y\")||\"0\"),aA=void 0,lA=void 0,iA?(aA=eA(getAttribute(this.element,tA.styleSheets,\"width\")||getAttribute(nA.element,tA.styleSheets,\"width\")||\"0\"),lA=eA(getAttribute(this.element,tA.styleSheets,\"height\")||getAttribute(nA.element,tA.styleSheets,\"height\")||\"0\"),sA+=eA(getAttribute(nA.element,tA.styleSheets,\"x\")||\"0\"),oA+=eA(getAttribute(nA.element,tA.styleSheets,\"y\")||\"0\"),uA=parseFloats(nA.element.getAttribute(\"viewBox\")),cA=computeViewBoxTransform(nA.element,uA,sA,oA,aA,lA,tA)):cA=tA.pdf.Matrix(1,0,0,1,sA,oA),hA=new Bs(tA.pdf,{refsHandler:tA.refsHandler,styleSheets:tA.styleSheets,withinUse:!0,viewport:iA?new qs(aA,lA):tA.viewport,svg2pdfParameters:tA.svg2pdfParameters}),dA=tA.attributeState.color,[4,tA.refsHandler.getRendered(rA,dA,(function(tA){return Use.renderReferencedNode(tA,rA,dA,hA)}))]):[2];case 1:return fA.sent(),tA.pdf.saveGraphicsState(),tA.pdf.setCurrentTransformationMatrix(tA.transform),iA&&\"visible\"!==getAttribute(nA.element,tA.styleSheets,\"overflow\")&&(tA.pdf.rect(sA,oA,aA,lA),tA.pdf.clip().discardPath()),tA.pdf.doFormObject(tA.refsHandler.generateKey(rA,dA),cA),tA.pdf.restoreGraphicsState(),[2]}}))}))},Use.renderReferencedNode=function(tA,eA,AA,rA){return __awaiter(this,void 0,void 0,(function(){var nA;return __generator(this,(function(iA){switch(iA.label){case 0:return nA=[(nA=tA.getBoundingBox(rA))[0]-.5*nA[2],nA[1]-.5*nA[3],2*nA[2],2*nA[3]],rA.attributeState.color=AA,rA.pdf.beginFormObject(nA[0],nA[1],nA[2],nA[3],rA.pdf.unitMatrix),tA instanceof Ks?[4,tA.apply(rA)]:[3,2];case 1:return iA.sent(),[3,4];case 2:return[4,tA.render(rA)];case 3:iA.sent(),iA.label=4;case 4:return rA.pdf.endFormObject(rA.refsHandler.generateKey(eA,AA)),[2]}}))}))},Use.prototype.getBoundingBoxCore=function(tA){return defaultBoundingBox(this.element,tA)},Use.prototype.isVisible=function(tA,eA){return svgNodeIsVisible(this,tA,eA)},Use.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},Use}(Vs),Xs=function(tA){function Rect(eA,AA){return tA.call(this,!1,eA,AA)||this}return __extends(Rect,tA),Rect.prototype.getPath=function(tA){var eA=parseFloat(getAttribute(this.element,tA.styleSheets,\"width\")||\"0\"),AA=parseFloat(getAttribute(this.element,tA.styleSheets,\"height\")||\"0\");if(!isFinite(eA)||eA<=0||!isFinite(AA)||AA<=0)return null;var rA=getAttribute(this.element,tA.styleSheets,\"rx\"),nA=getAttribute(this.element,tA.styleSheets,\"ry\"),iA=Math.min(parseFloat(rA||nA||\"0\"),.5*eA),sA=Math.min(parseFloat(nA||rA||\"0\"),.5*AA),oA=parseFloat(getAttribute(this.element,tA.styleSheets,\"x\")||\"0\"),aA=parseFloat(getAttribute(this.element,tA.styleSheets,\"y\")||\"0\"),lA=4/3*(Math.SQRT2-1);return 0===iA&&0===sA?(new Cs).moveTo(oA,aA).lineTo(oA+eA,aA).lineTo(oA+eA,aA+AA).lineTo(oA,aA+AA).close():(new Cs).moveTo(oA+=iA,aA).lineTo(oA+=eA-2*iA,aA).curveTo(oA+iA*lA,aA,oA+iA,aA+(sA-sA*lA),oA+=iA,aA+=sA).lineTo(oA,aA+=AA-2*sA).curveTo(oA,aA+sA*lA,oA-iA*lA,aA+sA,oA-=iA,aA+=sA).lineTo(oA+=2*iA-eA,aA).curveTo(oA-iA*lA,aA,oA-iA,aA-sA*lA,oA-=iA,aA-=sA).lineTo(oA,aA+=2*sA-AA).curveTo(oA,aA-sA*lA,oA+iA*lA,aA-sA,oA+=iA,aA-=sA).close()},Rect.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},Rect.prototype.isVisible=function(tA,eA){return svgNodeIsVisible(this,tA,eA)},Rect}(Gs),Ws=function(tA){function EllipseBase(eA,AA){return tA.call(this,!1,eA,AA)||this}return __extends(EllipseBase,tA),EllipseBase.prototype.getPath=function(tA){var eA=this.getRx(tA),AA=this.getRy(tA);if(!isFinite(eA)||AA<=0||!isFinite(AA)||AA<=0)return null;var rA=parseFloat(getAttribute(this.element,tA.styleSheets,\"cx\")||\"0\"),nA=parseFloat(getAttribute(this.element,tA.styleSheets,\"cy\")||\"0\"),iA=4/3*(Math.SQRT2-1)*eA,sA=4/3*(Math.SQRT2-1)*AA;return(new Cs).moveTo(rA+eA,nA).curveTo(rA+eA,nA-sA,rA+iA,nA-AA,rA,nA-AA).curveTo(rA-iA,nA-AA,rA-eA,nA-sA,rA-eA,nA).curveTo(rA-eA,nA+sA,rA-iA,nA+AA,rA,nA+AA).curveTo(rA+iA,nA+AA,rA+eA,nA+sA,rA+eA,nA)},EllipseBase.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},EllipseBase.prototype.isVisible=function(tA,eA){return svgNodeIsVisible(this,tA,eA)},EllipseBase}(Gs),Ys=function(tA){function Ellipse(eA,AA){return tA.call(this,eA,AA)||this}return __extends(Ellipse,tA),Ellipse.prototype.getRx=function(tA){return parseFloat(getAttribute(this.element,tA.styleSheets,\"rx\")||\"0\")},Ellipse.prototype.getRy=function(tA){return parseFloat(getAttribute(this.element,tA.styleSheets,\"ry\")||\"0\")},Ellipse}(Ws);function getTextRenderingMode(tA){var eA=\"invisible\";return tA.fill&&tA.stroke?eA=\"fillThenStroke\":tA.fill?eA=\"fill\":tA.stroke&&(eA=\"stroke\"),eA}function removeNewlines(tA){return tA.replace(/[\\n\\r]/g,\"\")}function replaceTabsBySpace(tA){return tA.replace(/[\\t]/g,\" \")}function consolidateSpaces(tA){return tA.replace(/ +/g,\" \")}function transformText(tA,eA,AA){switch(getAttribute(tA,AA.styleSheets,\"text-transform\")){case\"uppercase\":return eA.toUpperCase();case\"lowercase\":return eA.toLowerCase();default:return eA}}var Js=function(){function TextChunk(tA,eA,AA,rA){this.textNode=tA,this.texts=[],this.textNodes=[],this.contexts=[],this.textAnchor=eA,this.originX=AA,this.originY=rA,this.textMeasures=[]}return TextChunk.prototype.setX=function(tA){this.originX=tA},TextChunk.prototype.setY=function(tA){this.originY=tA},TextChunk.prototype.add=function(tA,eA,AA){this.texts.push(eA),this.textNodes.push(tA),this.contexts.push(AA)},TextChunk.prototype.rightTrimText=function(){for(var tA=this.texts.length-1;tA>=0;tA--)if(\"default\"===this.contexts[tA].attributeState.xmlSpace&&(this.texts[tA]=this.texts[tA].replace(/\\s+$/,\"\")),this.texts[tA].match(/[^\\s]/))return!1;return!0},TextChunk.prototype.measureText=function(tA){for(var eA=0;eA<this.texts.length;eA++)this.textMeasures.push({width:tA.textMeasure.measureTextWidth(this.texts[eA],this.contexts[eA].attributeState),length:this.texts[eA].length})},TextChunk.prototype.put=function(tA,eA){var AA,rA,nA,iA,sA=[],oA=[],aA=[],lA=this.originX,cA=this.originY,uA=lA,hA=lA;for(AA=0;AA<this.textNodes.length;AA++){rA=this.textNodes[AA],nA=this.contexts[AA],iA=this.textMeasures[AA]||{width:tA.textMeasure.measureTextWidth(this.texts[AA],this.contexts[AA].attributeState),length:this.texts[AA].length};var dA=lA,fA=cA;if(\"#text\"!==rA.nodeName&&!sA.includes(rA)){sA.push(rA);var gA=rA.getAttribute(\"dx\");null!==gA&&(dA+=toPixels(gA,nA.attributeState.fontSize));var pA=rA.getAttribute(\"dy\");null!==pA&&(fA+=toPixels(pA,nA.attributeState.fontSize))}oA[AA]=dA,aA[AA]=fA,lA=dA+iA.width+iA.length*eA,cA=fA,uA=Math.min(uA,dA),hA=Math.max(hA,lA)}var mA=0;switch(this.textAnchor){case\"start\":mA=0;break;case\"middle\":mA=(hA-uA)/2;break;case\"end\":mA=hA-uA}for(AA=0;AA<this.textNodes.length;AA++)if(rA=this.textNodes[AA],nA=this.contexts[AA],\"#text\"===rA.nodeName||\"hidden\"!==nA.attributeState.visibility){tA.pdf.saveGraphicsState(),applyAttributes(nA,tA,rA);var wA=nA.attributeState.alignmentBaseline,yA=getTextRenderingMode(nA.attributeState);tA.pdf.text(this.texts[AA],oA[AA]-mA,aA[AA],{baseline:mapAlignmentBaseline(wA),angle:tA.transform,renderingMode:\"fill\"===yA?void 0:yA,charSpace:0===eA?void 0:eA}),tA.pdf.restoreGraphicsState()}return[lA,cA]},TextChunk}(),Zs=function(tA){function TextNode(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(TextNode,tA),TextNode.prototype.processTSpans=function(tA,eA,AA,rA,nA,iA){for(var sA=AA.pdf.getFontSize(),oA=AA.attributeState.xmlSpace,aA=!0,lA=!1,cA=0;cA<eA.childNodes.length;cA++){var uA=eA.childNodes[cA];if(uA.textContent){var hA=uA.textContent;if(\"#text\"===uA.nodeName){var dA=removeNewlines(hA);dA=replaceTabsBySpace(dA),\"default\"===oA&&(dA=consolidateSpaces(dA),aA&&dA.match(/^\\s/)&&(lA=!0),dA.match(/[^\\s]/)&&(aA=!1),iA.prevText.match(/\\s$/)&&(dA=dA.replace(/^\\s+/,\"\")));var fA=transformText(eA,dA,AA);nA.add(eA,fA,AA),iA.prevText=hA,iA.prevContext=AA}else if(nodeIs(uA,\"title\"));else if(nodeIs(uA,\"tspan\")){var gA=uA,pA=gA.getAttribute(\"x\");if(null!==pA){var mA=toPixels(pA,sA);nA=new Js(this,getAttribute(gA,AA.styleSheets,\"text-anchor\")||AA.attributeState.textAnchor,mA,0),rA.push({type:\"y\",chunk:nA})}var wA=gA.getAttribute(\"y\");if(null!==wA){var yA=toPixels(wA,sA);nA=new Js(this,getAttribute(gA,AA.styleSheets,\"text-anchor\")||AA.attributeState.textAnchor,0,yA),rA.push({type:\"x\",chunk:nA})}var BA=AA.clone();parseAttributes(BA,tA,gA),this.processTSpans(tA,gA,BA,rA,nA,iA)}}}return lA},TextNode.prototype.renderCore=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA,wA,yA,BA,bA,vA,CA;return __generator(this,(function(SA){if(tA.pdf.saveGraphicsState(),eA=0,AA=0,rA=1,nA=tA.pdf.getFontSize(),iA=toPixels(this.element.getAttribute(\"x\"),nA),sA=toPixels(this.element.getAttribute(\"y\"),nA),oA=toPixels(this.element.getAttribute(\"dx\"),nA),aA=toPixels(this.element.getAttribute(\"dy\"),nA),lA=parseFloat(this.element.getAttribute(\"textLength\")||\"0\"),cA=tA.attributeState.visibility,0===this.element.childElementCount)uA=this.element.textContent||\"\",hA=function transformXmlSpace(tA,eA){return tA=replaceTabsBySpace(tA=removeNewlines(tA)),\"default\"===eA.xmlSpace&&(tA=consolidateSpaces(tA=tA.trim())),tA}(uA,tA.attributeState),dA=transformText(this.element,hA,tA),eA=tA.textMeasure.getTextOffset(dA,tA.attributeState),lA>0&&(fA=tA.textMeasure.measureTextWidth(dA,tA.attributeState),\"default\"===tA.attributeState.xmlSpace&&uA.match(/^\\s/)&&(rA=0),AA=(lA-fA)/(dA.length-rA)||0),\"visible\"===cA&&(gA=tA.attributeState.alignmentBaseline,pA=getTextRenderingMode(tA.attributeState),tA.pdf.text(dA,iA+oA-eA,sA+aA,{baseline:mapAlignmentBaseline(gA),angle:tA.transform,renderingMode:\"fill\"===pA?void 0:pA,charSpace:0===AA?void 0:AA}));else{for(mA=[],wA=new Js(this,tA.attributeState.textAnchor,iA+oA,sA+aA),mA.push({type:\"\",chunk:wA}),yA=this.processTSpans(this,this.element,tA,mA,wA,{prevText:\" \",prevContext:tA}),rA=yA?0:1,BA=!0,bA=mA.length-1;bA>=0;bA--)BA&&(BA=mA[bA].chunk.rightTrimText());lA>0&&(vA=0,CA=0,mA.forEach((function(eA){var AA=eA.chunk;AA.measureText(tA),AA.textMeasures.forEach((function(tA){var eA=tA.width,AA=tA.length;vA+=eA,CA+=AA}))})),AA=(lA-vA)/(CA-rA)),mA.reduce((function(eA,rA){var nA=rA.type,iA=rA.chunk;return\"x\"===nA?iA.setX(eA[0]):\"y\"===nA&&iA.setY(eA[1]),iA.put(tA,AA)}),[0,0])}return tA.pdf.restoreGraphicsState(),[2]}))}))},TextNode.prototype.isVisible=function(tA,eA){return svgNodeAndChildrenVisible(this,tA,eA)},TextNode.prototype.getBoundingBoxCore=function(tA){return defaultBoundingBox(this.element,tA)},TextNode.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},TextNode}(Vs),$s=function(tA){function PathNode(eA,AA){return tA.call(this,!0,eA,AA)||this}return __extends(PathNode,tA),PathNode.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},PathNode.prototype.isVisible=function(tA,eA){return svgNodeIsVisible(this,tA,eA)},PathNode.prototype.getPath=function(tA){var eA,AA,rA=new ds(getAttribute(this.element,tA.styleSheets,\"d\")||\"\").unshort().unarc().abs(),nA=new Cs;return rA.iterate((function(tA){switch(tA[0]){case\"M\":nA.moveTo(tA[1],tA[2]);break;case\"L\":nA.lineTo(tA[1],tA[2]);break;case\"H\":nA.lineTo(tA[1],AA);break;case\"V\":nA.lineTo(eA,tA[1]);break;case\"C\":nA.curveTo(tA[1],tA[2],tA[3],tA[4],tA[5],tA[6]);break;case\"Q\":var rA=toCubic([eA,AA],[tA[1],tA[2]]),iA=toCubic([tA[3],tA[4]],[tA[1],tA[2]]);nA.curveTo(rA[0],rA[1],iA[0],iA[1],tA[3],tA[4]);break;case\"Z\":nA.close()}switch(tA[0]){case\"M\":case\"L\":eA=tA[1],AA=tA[2];break;case\"H\":eA=tA[1];break;case\"V\":AA=tA[1];break;case\"C\":eA=tA[5],AA=tA[6];break;case\"Q\":eA=tA[3],AA=tA[4]}})),nA},PathNode}(Gs),to=/^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*\\s*)$/i,eo=function(tA){function ImageNode(eA,AA){var rA=tA.call(this,eA,AA)||this;return rA.imageLoadingPromise=null,rA.imageUrl=rA.element.getAttribute(\"xlink:href\")||rA.element.getAttribute(\"href\"),rA.imageUrl&&(rA.imageLoadingPromise=ImageNode.fetchImageData(rA.imageUrl)),rA}return __extends(ImageNode,tA),ImageNode.prototype.renderCore=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA;return __generator(this,(function(dA){switch(dA.label){case 0:return this.imageLoadingPromise?(tA.pdf.setCurrentTransformationMatrix(tA.transform),eA=parseFloat(getAttribute(this.element,tA.styleSheets,\"width\")||\"0\"),AA=parseFloat(getAttribute(this.element,tA.styleSheets,\"height\")||\"0\"),rA=parseFloat(getAttribute(this.element,tA.styleSheets,\"x\")||\"0\"),nA=parseFloat(getAttribute(this.element,tA.styleSheets,\"y\")||\"0\"),!isFinite(eA)||eA<=0||!isFinite(AA)||AA<=0?[2]:[4,this.imageLoadingPromise]):[2];case 1:return iA=dA.sent(),sA=iA.data,0!==(oA=iA.format).indexOf(\"svg\")?[3,3]:(aA=new DOMParser,lA=aA.parseFromString(sA,\"image/svg+xml\").firstElementChild,(!(cA=this.element.getAttribute(\"preserveAspectRatio\"))||cA.indexOf(\"defer\")<0||!lA.getAttribute(\"preserveAspectRatio\"))&&lA.setAttribute(\"preserveAspectRatio\",cA||\"\"),lA.setAttribute(\"x\",String(rA)),lA.setAttribute(\"y\",String(nA)),lA.setAttribute(\"width\",String(eA)),lA.setAttribute(\"height\",String(AA)),[4,parse(lA,uA={}).render(new Bs(tA.pdf,{refsHandler:new bs(uA),styleSheets:tA.styleSheets,viewport:new qs(eA,AA),svg2pdfParameters:tA.svg2pdfParameters}))]);case 2:return dA.sent(),[2];case 3:hA=\"data:image/\"+oA+\";base64,\"+btoa(sA);try{tA.pdf.addImage(hA,\"\",rA,nA,eA,AA)}catch(tA){\"object\"==typeof console&&console.warn&&console.warn(\"Could not load image \"+this.imageUrl+\".\\n\"+tA)}dA.label=4;case 4:return[2]}}))}))},ImageNode.prototype.getBoundingBoxCore=function(tA){return defaultBoundingBox(this.element,tA)},ImageNode.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},ImageNode.prototype.isVisible=function(tA,eA){return svgNodeIsVisible(this,tA,eA)},ImageNode.fetchImageData=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA;return __generator(this,(function(sA){switch(sA.label){case 0:if(!(rA=tA.match(to)))return[3,1];if(nA=rA[2],\"image\"!==(iA=nA.split(\"/\"))[0])throw new Error(\"Unsupported image URL: \"+tA);return AA=iA[1],eA=rA[5],eA=\"base64\"===rA[4]?atob(eA):decodeURIComponent(eA),[3,3];case 1:return[4,ImageNode.fetchImage(tA)];case 2:eA=sA.sent(),AA=tA.substring(tA.lastIndexOf(\".\")+1),sA.label=3;case 3:return[2,{data:eA,format:AA}]}}))}))},ImageNode.fetchImage=function(tA){return new Promise((function(eA,AA){var rA=new XMLHttpRequest;rA.open(\"GET\",tA,!0),rA.responseType=\"arraybuffer\",rA.onload=function(){if(200!==rA.status)throw new Error(\"Error \"+rA.status+\": Failed to load image '\"+tA+\"'\");for(var AA=new Uint8Array(rA.response),nA=\"\",iA=0;iA<AA.length;iA++)nA+=String.fromCharCode(AA[iA]);eA(nA)},rA.onerror=AA,rA.onabort=AA,rA.send(null)}))},ImageNode.getMimeType=function(tA){switch(tA=tA.toLowerCase()){case\"jpg\":case\"jpeg\":return\"image/jpeg\";default:return\"image/\"+tA}},ImageNode}(Vs),Ao=function(tA){function Traverse(eA,AA,rA){var nA=tA.call(this,!0,AA,rA)||this;return nA.closed=eA,nA}return __extends(Traverse,tA),Traverse.prototype.getPath=function(tA){if(!this.element.hasAttribute(\"points\")||\"\"===this.element.getAttribute(\"points\"))return null;var eA=Traverse.parsePointsString(this.element.getAttribute(\"points\")),AA=new Cs;if(eA.length<1)return AA;AA.moveTo(eA[0][0],eA[0][1]);for(var rA=1;rA<eA.length;rA++)AA.lineTo(eA[rA][0],eA[rA][1]);return this.closed&&AA.close(),AA},Traverse.prototype.isVisible=function(tA,eA){return svgNodeIsVisible(this,tA,eA)},Traverse.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},Traverse.parsePointsString=function(tA){for(var eA=parseFloats(tA),AA=[],rA=0;rA<eA.length-1;rA+=2){var nA=eA[rA],iA=eA[rA+1];AA.push([nA,iA])}return AA},Traverse}(Gs),ro=function(tA){function Polygon(eA,AA){return tA.call(this,!0,eA,AA)||this}return __extends(Polygon,tA),Polygon}(Ao),no=function(tA){function VoidNode(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(VoidNode,tA),VoidNode.prototype.render=function(tA){return Promise.resolve()},VoidNode.prototype.getBoundingBoxCore=function(tA){return[0,0,0,0]},VoidNode.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},VoidNode.prototype.isVisible=function(tA,eA){return svgNodeIsVisible(this,tA,eA)},VoidNode}(Is),io=function(tA){function MarkerNode(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(MarkerNode,tA),MarkerNode.prototype.apply=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA;return __generator(this,(function(sA){switch(sA.label){case 0:eA=this.computeNodeTransform(tA),AA=this.getBoundingBox(tA),tA.pdf.beginFormObject(AA[0],AA[1],AA[2],AA[3],eA),function applyContext(tA){var eA=tA.attributeState,AA=tA.pdf,rA=1,nA=1;rA*=eA.fillOpacity,rA*=eA.opacity,eA.fill instanceof gs&&void 0!==eA.fill.color.a&&(rA*=eA.fill.color.a),nA*=eA.strokeOpacity,nA*=eA.opacity,eA.stroke instanceof gs&&void 0!==eA.stroke.color.a&&(nA*=eA.stroke.color.a);var iA,sA={};if(sA.opacity=rA,sA[\"stroke-opacity\"]=nA,AA.setGState(new j(sA)),eA.fill&&eA.fill instanceof gs&&eA.fill.color.ok?AA.setFillColor(eA.fill.color.r,eA.fill.color.g,eA.fill.color.b):AA.setFillColor(0,0,0),AA.setLineWidth(eA.strokeWidth),eA.stroke instanceof gs?AA.setDrawColor(eA.stroke.color.r,eA.stroke.color.g,eA.stroke.color.b):AA.setDrawColor(0,0,0),AA.setLineCap(eA.strokeLinecap),AA.setLineJoin(eA.strokeLinejoin),eA.strokeDasharray?AA.setLineDashPattern(eA.strokeDasharray,eA.strokeDashoffset):AA.setLineDashPattern([],0),AA.setLineMiterLimit(eA.strokeMiterlimit),iA=Ps.hasOwnProperty(eA.fontFamily)?Ps[eA.fontFamily]:eA.fontFamily,eA.fill&&eA.fill instanceof gs&&eA.fill.color.ok){var oA=eA.fill.color;AA.setTextColor(oA.r,oA.g,oA.b)}else AA.setTextColor(0,0,0);var aA=\"\";\"bold\"===eA.fontWeight&&(aA=\"bold\"),\"italic\"===eA.fontStyle&&(aA+=\"italic\"),\"\"===aA&&(aA=\"normal\"),void 0!==iA||void 0!==aA?(void 0===iA&&(iA=Ps.hasOwnProperty(eA.fontFamily)?Ps[eA.fontFamily]:eA.fontFamily),AA.setFont(iA,aA)):AA.setFont(\"helvetica\",aA),AA.setFontSize(eA.fontSize*AA.internal.scaleFactor)}(rA=new Bs(tA.pdf,{refsHandler:tA.refsHandler,styleSheets:tA.styleSheets,viewport:tA.viewport,svg2pdfParameters:tA.svg2pdfParameters})),nA=0,iA=this.children,sA.label=1;case 1:return nA<iA.length?[4,iA[nA].render(rA)]:[3,4];case 2:sA.sent(),sA.label=3;case 3:return nA++,[3,1];case 4:return tA.pdf.endFormObject(this.element.getAttribute(\"id\")),[2]}}))}))},MarkerNode.prototype.getBoundingBoxCore=function(tA){var eA,AA=this.element.getAttribute(\"viewBox\");return AA&&(eA=parseFloats(AA)),[eA&&eA[0]||0,eA&&eA[1]||0,eA&&eA[2]||parseFloat(this.element.getAttribute(\"markerWidth\")||\"3\"),eA&&eA[3]||parseFloat(this.element.getAttribute(\"markerHeight\")||\"3\")]},MarkerNode.prototype.computeNodeTransformCore=function(tA){var eA,AA=parseFloat(this.element.getAttribute(\"refX\")||\"0\"),rA=parseFloat(this.element.getAttribute(\"refY\")||\"0\"),nA=this.element.getAttribute(\"viewBox\");if(nA){var iA=parseFloats(nA);eA=computeViewBoxTransform(this.element,iA,0,0,parseFloat(this.element.getAttribute(\"markerWidth\")||\"3\"),parseFloat(this.element.getAttribute(\"markerHeight\")||\"3\"),tA,!0),eA=tA.pdf.matrixMult(tA.pdf.Matrix(1,0,0,1,-AA,-rA),eA)}else eA=tA.pdf.Matrix(1,0,0,1,-AA,-rA);return eA},MarkerNode.prototype.isVisible=function(tA,eA){return svgNodeAndChildrenVisible(this,tA,eA)},MarkerNode}(Ns),so=function(tA){function Circle(eA,AA){return tA.call(this,eA,AA)||this}return __extends(Circle,tA),Circle.prototype.getR=function(tA){var eA;return null!==(eA=this.r)&&void 0!==eA?eA:this.r=parseFloat(getAttribute(this.element,tA.styleSheets,\"r\")||\"0\")},Circle.prototype.getRx=function(tA){return this.getR(tA)},Circle.prototype.getRy=function(tA){return this.getR(tA)},Circle}(Ws),oo=function(tA){function Polyline(eA,AA){return tA.call(this,!1,eA,AA)||this}return __extends(Polyline,tA),Polyline}(Ao),ao=function(tA){function ContainerNode(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(ContainerNode,tA),ContainerNode.prototype.renderCore=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA;return __generator(this,(function(rA){switch(rA.label){case 0:eA=0,AA=this.children,rA.label=1;case 1:return eA<AA.length?[4,AA[eA].render(tA)]:[3,4];case 2:rA.sent(),rA.label=3;case 3:return eA++,[3,1];case 4:return[2]}}))}))},ContainerNode.prototype.getBoundingBoxCore=function(tA){return getBoundingBoxByChildren(tA,this)},ContainerNode}(Rs),lo=function(tA){function Svg(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(Svg,tA),Svg.prototype.isVisible=function(tA,eA){return svgNodeAndChildrenVisible(this,tA,eA)},Svg.prototype.render=function(eA){return __awaiter(this,void 0,void 0,(function(){var AA,rA,nA,iA,sA;return __generator(this,(function(oA){switch(oA.label){case 0:return this.isVisible(\"hidden\"!==eA.attributeState.visibility,eA)?(AA=this.getX(eA),rA=this.getY(eA),nA=this.getWidth(eA),iA=this.getHeight(eA),eA.pdf.saveGraphicsState(),sA=eA.transform,this.element.hasAttribute(\"transform\")&&(sA=eA.pdf.matrixMult(parseTransform$1(this.element.getAttribute(\"transform\"),eA),sA)),eA.pdf.setCurrentTransformationMatrix(sA),eA.withinUse||\"visible\"===getAttribute(this.element,eA.styleSheets,\"overflow\")||eA.pdf.rect(AA,rA,nA,iA).clip().discardPath(),[4,tA.prototype.render.call(this,eA.clone({transform:eA.pdf.unitMatrix,viewport:eA.withinUse?eA.viewport:new qs(nA,iA)}))]):[2];case 1:return oA.sent(),eA.pdf.restoreGraphicsState(),[2]}}))}))},Svg.prototype.computeNodeTransform=function(tA){return this.computeNodeTransformCore(tA)},Svg.prototype.computeNodeTransformCore=function(tA){if(tA.withinUse)return tA.pdf.unitMatrix;var eA,AA=this.getX(tA),rA=this.getY(tA),nA=this.getViewBox();if(nA){var iA=this.getWidth(tA),sA=this.getHeight(tA);eA=computeViewBoxTransform(this.element,nA,AA,rA,iA,sA,tA)}else eA=tA.pdf.Matrix(1,0,0,1,AA,rA);return eA},Svg.prototype.getWidth=function(tA){if(void 0!==this.width)return this.width;var eA,AA,rA=tA.svg2pdfParameters;if(this.isOutermostSvg(tA))if(null!=rA.width)eA=rA.width;else if(AA=getAttribute(this.element,tA.styleSheets,\"width\"))eA=parseFloat(AA);else{var nA=this.getViewBox();if(nA&&(null!=rA.height||getAttribute(this.element,tA.styleSheets,\"height\"))){var iA=nA[2]/nA[3];eA=this.getHeight(tA)*iA}else eA=Math.min(300,tA.viewport.width,2*tA.viewport.height)}else eA=(AA=getAttribute(this.element,tA.styleSheets,\"width\"))?parseFloat(AA):tA.viewport.width;return this.width=eA},Svg.prototype.getHeight=function(tA){if(void 0!==this.height)return this.height;var eA,AA,rA=tA.svg2pdfParameters;if(this.isOutermostSvg(tA))if(null!=rA.height)eA=rA.height;else if(AA=getAttribute(this.element,tA.styleSheets,\"height\"))eA=parseFloat(AA);else{var nA=this.getViewBox();if(nA){var iA=nA[2]/nA[3];eA=this.getWidth(tA)/iA}else eA=Math.min(150,tA.viewport.width/2,tA.viewport.height)}else eA=(AA=getAttribute(this.element,tA.styleSheets,\"height\"))?parseFloat(AA):tA.viewport.height;return this.height=eA},Svg.prototype.getX=function(tA){if(void 0!==this.x)return this.x;if(this.isOutermostSvg(tA))return this.x=0;var eA=getAttribute(this.element,tA.styleSheets,\"x\");return this.x=eA?parseFloat(eA):0},Svg.prototype.getY=function(tA){if(void 0!==this.y)return this.y;if(this.isOutermostSvg(tA))return this.y=0;var eA=getAttribute(this.element,tA.styleSheets,\"y\");return this.y=eA?parseFloat(eA):0},Svg.prototype.getViewBox=function(){if(void 0!==this.viewBox)return this.viewBox;var tA=this.element.getAttribute(\"viewBox\");return this.viewBox=tA?parseFloats(tA):void 0},Svg.prototype.isOutermostSvg=function(tA){return tA.svg2pdfParameters.element===this.element},Svg}(ao),co=function(tA){function Group(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(Group,tA),Group.prototype.isVisible=function(tA,eA){return svgNodeAndChildrenVisible(this,tA,eA)},Group.prototype.computeNodeTransformCore=function(tA){return tA.pdf.unitMatrix},Group}(ao),uo=function(tA){function ClipPath(){return null!==tA&&tA.apply(this,arguments)||this}return __extends(ClipPath,tA),ClipPath.prototype.apply=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA;return __generator(this,(function(nA){switch(nA.label){case 0:if(!this.isVisible(!0,tA))return[2];eA=tA.pdf.matrixMult(this.computeNodeTransform(tA),tA.transform),tA.pdf.setCurrentTransformationMatrix(eA),AA=0,rA=this.children,nA.label=1;case 1:return AA<rA.length?[4,rA[AA].render(new Bs(tA.pdf,{refsHandler:tA.refsHandler,styleSheets:tA.styleSheets,viewport:tA.viewport,withinClipPath:!0,svg2pdfParameters:tA.svg2pdfParameters}))]:[3,4];case 2:nA.sent(),nA.label=3;case 3:return AA++,[3,1];case 4:return tA.pdf.clip().discardPath(),tA.pdf.setCurrentTransformationMatrix(eA.inversed()),[2]}}))}))},ClipPath.prototype.getBoundingBoxCore=function(tA){return getBoundingBoxByChildren(tA,this)},ClipPath.prototype.isVisible=function(tA,eA){return svgNodeAndChildrenVisible(this,tA,eA)},ClipPath}(Ns);function parse(tA,eA){var AA,rA=[];switch(function forEachChild(tA,eA){for(var AA=[],rA=0;rA<tA.childNodes.length;rA++){var nA=tA.childNodes[rA];\"#\"!==nA.nodeName.charAt(0)&&AA.push(nA)}for(rA=0;rA<AA.length;rA++)eA(rA,AA[rA])}(tA,(function(tA,AA){return rA.push(parse(AA,eA))})),tA.tagName.toLowerCase()){case\"a\":case\"g\":AA=new co(tA,rA);break;case\"circle\":AA=new so(tA,rA);break;case\"clippath\":AA=new uo(tA,rA);break;case\"ellipse\":AA=new Ys(tA,rA);break;case\"lineargradient\":AA=new ks(tA,rA);break;case\"image\":AA=new eo(tA,rA);break;case\"line\":AA=new js(tA,rA);break;case\"marker\":AA=new io(tA,rA);break;case\"path\":AA=new $s(tA,rA);break;case\"pattern\":AA=new Hs(tA,rA);break;case\"polygon\":AA=new ro(tA,rA);break;case\"polyline\":AA=new oo(tA,rA);break;case\"radialgradient\":AA=new Ms(tA,rA);break;case\"rect\":AA=new Xs(tA,rA);break;case\"svg\":AA=new lo(tA,rA);break;case\"symbol\":AA=new Ks(tA,rA);break;case\"text\":AA=new Zs(tA,rA);break;case\"use\":AA=new zs(tA,rA);break;default:AA=new no(tA,rA)}if(null!=eA&&AA.element.hasAttribute(\"id\")){var nA=Yi(AA.element.id,{isIdentifier:!0});eA[nA]=eA[nA]||AA}return AA.children.forEach((function(tA){return tA.setParent(AA)})),AA}var ho=function(){function StyleSheets(tA,eA){this.rootSvg=tA,this.loadExternalSheets=eA,this.styleSheets=[]}return StyleSheets.prototype.load=function(){return __awaiter(this,void 0,void 0,(function(){var tA;return __generator(this,(function(eA){switch(eA.label){case 0:return[4,this.collectStyleSheetTexts()];case 1:return tA=eA.sent(),this.parseCssSheets(tA),[2]}}))}))},StyleSheets.prototype.collectStyleSheetTexts=function(){return __awaiter(this,void 0,void 0,(function(){var tA,eA,AA,rA,nA;return __generator(this,(function(iA){switch(iA.label){case 0:if(tA=[],this.loadExternalSheets&&this.rootSvg.ownerDocument)for(rA=0;rA<this.rootSvg.ownerDocument.childNodes.length;rA++)\"xml-stylesheet\"===(eA=this.rootSvg.ownerDocument.childNodes[rA]).nodeName&&\"string\"==typeof eA.data&&tA.push(StyleSheets.loadSheet(eA.data.match(/href=[\"'].*?[\"']/)[0].split(\"=\")[1].slice(1,-1)));for(AA=this.rootSvg.querySelectorAll(\"style,link\"),rA=0;rA<AA.length;rA++)nodeIs(nA=AA[rA],\"style\")?tA.push(nA.textContent):this.loadExternalSheets&&nodeIs(nA,\"link\")&&\"stylesheet\"===nA.getAttribute(\"rel\")&&nA.hasAttribute(\"href\")&&tA.push(StyleSheets.loadSheet(nA.getAttribute(\"href\")));return[4,Promise.all(tA)];case 1:return[2,iA.sent().filter((function(tA){return null!==tA}))]}}))}))},StyleSheets.prototype.parseCssSheets=function(tA){for(var eA=document.implementation.createHTMLDocument(\"\"),AA=0,rA=tA;AA<rA.length;AA++){var nA=rA[AA],iA=eA.createElement(\"style\");iA.textContent=nA,eA.body.appendChild(iA);var sA=iA.sheet;if(sA instanceof CSSStyleSheet){for(var oA=sA.cssRules.length-1;oA>=0;oA--){var aA=sA.cssRules[oA];if(aA instanceof CSSStyleRule){var lA=aA;if(lA.selectorText.indexOf(\",\")>=0){sA.deleteRule(oA);for(var cA=lA.cssText.substring(lA.selectorText.length),uA=StyleSheets.splitSelectorAtCommas(lA.selectorText),hA=0;hA<uA.length;hA++)sA.insertRule(uA[hA]+cA,oA+hA)}}else sA.deleteRule(oA)}this.styleSheets.push(sA)}}},StyleSheets.splitSelectorAtCommas=function(tA){for(var eA,AA=/,|[\"']/g,rA=/[^\\\\][\"]/g,nA=/[^\\\\][']/g,iA=[],sA=\"initial\",oA=-1,aA=rA,lA=0;lA<tA.length;)switch(sA){case\"initial\":AA.lastIndex=lA,(eA=AA.exec(tA))?(\",\"===eA[0]?(iA.push(tA.substring(oA+1,AA.lastIndex-1).trim()),oA=AA.lastIndex-1):(sA=\"withinQuotes\",aA='\"'===eA[0]?rA:nA),lA=AA.lastIndex):(iA.push(tA.substring(oA+1).trim()),lA=tA.length);break;case\"withinQuotes\":aA.lastIndex=lA,(eA=aA.exec(tA))&&(lA=aA.lastIndex,sA=\"initial\")}return iA},StyleSheets.loadSheet=function(tA){return new Promise((function(eA,AA){var rA=new XMLHttpRequest;rA.open(\"GET\",tA,!0),rA.responseType=\"text\",rA.onload=function(){200!==rA.status&&AA(new Error(\"Error \"+rA.status+\": Failed to load '\"+tA+\"'\")),eA(rA.responseText)},rA.onerror=AA,rA.onabort=AA,rA.send(null)})).catch((function(){return null}))},StyleSheets.prototype.getPropertyValue=function(tA,eA){for(var AA=[],rA=0,nA=this.styleSheets;rA<nA.length;rA++)for(var iA=nA[rA],sA=0;sA<iA.cssRules.length;sA++){var oA=iA.cssRules[sA];oA.style.getPropertyValue(eA)&&tA.matches(oA.selectorText)&&AA.push(oA)}if(0!==AA.length){var compare$1=function(tA,AA){var rA=tA.style.getPropertyPriority(eA);return rA!==AA.style.getPropertyPriority(eA)?\"important\"===rA?1:-1:function(tA,eA){var AA,rA,nA;if(\"string\"==typeof tA){if(-1!==tA.indexOf(\",\"))throw\"Invalid CSS selector\";AA=calculateSingle(tA).specificityArray}else{if(!Array.isArray(tA))throw\"Invalid CSS selector or specificity array\";if(4!==tA.filter((function(tA){return\"number\"==typeof tA})).length)throw\"Invalid specificity array\";AA=tA}if(\"string\"==typeof eA){if(-1!==eA.indexOf(\",\"))throw\"Invalid CSS selector\";rA=calculateSingle(eA).specificityArray}else{if(!Array.isArray(eA))throw\"Invalid CSS selector or specificity array\";if(4!==eA.filter((function(tA){return\"number\"==typeof tA})).length)throw\"Invalid specificity array\";rA=eA}for(nA=0;nA<4;nA+=1){if(AA[nA]<rA[nA])return-1;if(AA[nA]>rA[nA])return 1}return 0}(tA.selectorText,AA.selectorText)};return AA.reduce((function(tA,eA){return 1===compare$1(tA,eA)?tA:eA})).style.getPropertyValue(eA)||void 0}},StyleSheets}();E.API.svg=function(tA,eA){return void 0===eA&&(eA={}),function svg2pdf(tA,eA,AA){var rA,nA,iA;return void 0===AA&&(AA={}),__awaiter(this,void 0,void 0,(function(){var sA,oA,aA,lA,cA,uA,hA,dA,fA,gA;return __generator(this,(function(pA){switch(pA.label){case 0:return sA=null!==(rA=AA.x)&&void 0!==rA?rA:0,oA=null!==(nA=AA.y)&&void 0!==nA?nA:0,aA=null!==(iA=AA.loadExternalStyleSheets)&&void 0!==iA&&iA,cA=new bs(lA={}),[4,(uA=new ho(tA,aA)).load()];case 1:return pA.sent(),hA=new qs(eA.internal.pageSize.getWidth(),eA.internal.pageSize.getHeight()),dA=__assign(__assign({},AA),{element:tA}),fA=new Bs(eA,{refsHandler:cA,styleSheets:uA,viewport:hA,svg2pdfParameters:dA}),eA.advancedAPI(),eA.saveGraphicsState(),eA.setCurrentTransformationMatrix(eA.Matrix(1,0,0,1,sA,oA)),eA.setLineWidth(fA.attributeState.strokeWidth),gA=fA.attributeState.fill.color,eA.setFillColor(gA.r,gA.g,gA.b),eA.setFont(fA.attributeState.fontFamily),eA.setFontSize(fA.attributeState.fontSize*eA.internal.scaleFactor),[4,parse(tA,lA).render(fA)];case 2:return pA.sent(),eA.restoreGraphicsState(),eA.compatAPI(),fA.textMeasure.cleanupTextMeasuring(),[2,eA]}}))}))}(tA,this,eA)};var fo={exports:{}},go=fo.exports=function(){\n/*! *****************************************************************************\n Copyright (c) Microsoft Corporation.\n Permission to use, copy, modify, and/or distribute this software for any\n purpose with or without fee is hereby granted.\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n PERFORMANCE OF THIS SOFTWARE.\n ***************************************************************************** */\nvar extendStatics=function(tA,eA){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(tA,eA){tA.__proto__=eA}||function(tA,eA){for(var AA in eA)Object.prototype.hasOwnProperty.call(eA,AA)&&(tA[AA]=eA[AA])},extendStatics(tA,eA)};function __extends(tA,eA){if(\"function\"!=typeof eA&&null!==eA)throw new TypeError(\"Class extends value \"+String(eA)+\" is not a constructor or null\");function __(){this.constructor=tA}extendStatics(tA,eA),tA.prototype=null===eA?Object.create(eA):(__.prototype=eA.prototype,new __)}var __assign=function(){return __assign=Object.assign||function __assign(tA){for(var eA,AA=1,rA=arguments.length;AA<rA;AA++)for(var nA in eA=arguments[AA])Object.prototype.hasOwnProperty.call(eA,nA)&&(tA[nA]=eA[nA]);return tA},__assign.apply(this,arguments)};function __awaiter(tA,eA,AA,rA){function adopt(tA){return tA instanceof AA?tA:new AA((function(eA){eA(tA)}))}return new(AA||(AA=Promise))((function(AA,nA){function fulfilled(tA){try{step(rA.next(tA))}catch(tA){nA(tA)}}function rejected(tA){try{step(rA.throw(tA))}catch(tA){nA(tA)}}function step(tA){tA.done?AA(tA.value):adopt(tA.value).then(fulfilled,rejected)}step((rA=rA.apply(tA,eA||[])).next())}))}function __generator(tA,eA){var AA,rA,nA,iA,sA={label:0,sent:function(){if(1&nA[0])throw nA[1];return nA[1]},trys:[],ops:[]};return iA={next:verb(0),throw:verb(1),return:verb(2)},\"function\"==typeof Symbol&&(iA[Symbol.iterator]=function(){return this}),iA;function verb(tA){return function(eA){return step([tA,eA])}}function step(iA){if(AA)throw new TypeError(\"Generator is already executing.\");for(;sA;)try{if(AA=1,rA&&(nA=2&iA[0]?rA.return:iA[0]?rA.throw||((nA=rA.return)&&nA.call(rA),0):rA.next)&&!(nA=nA.call(rA,iA[1])).done)return nA;switch(rA=0,nA&&(iA=[2&iA[0],nA.value]),iA[0]){case 0:case 1:nA=iA;break;case 4:return sA.label++,{value:iA[1],done:!1};case 5:sA.label++,rA=iA[1],iA=[0];continue;case 7:iA=sA.ops.pop(),sA.trys.pop();continue;default:if(!((nA=(nA=sA.trys).length>0&&nA[nA.length-1])||6!==iA[0]&&2!==iA[0])){sA=0;continue}if(3===iA[0]&&(!nA||iA[1]>nA[0]&&iA[1]<nA[3])){sA.label=iA[1];break}if(6===iA[0]&&sA.label<nA[1]){sA.label=nA[1],nA=iA;break}if(nA&&sA.label<nA[2]){sA.label=nA[2],sA.ops.push(iA);break}nA[2]&&sA.ops.pop(),sA.trys.pop();continue}iA=eA.call(tA,sA)}catch(tA){iA=[6,tA],rA=0}finally{AA=nA=0}if(5&iA[0])throw iA[1];return{value:iA[0]?iA[1]:void 0,done:!0}}}function __spreadArray(tA,eA,AA){if(AA||2===arguments.length)for(var rA,nA=0,iA=eA.length;nA<iA;nA++)!rA&&nA in eA||(rA||(rA=Array.prototype.slice.call(eA,0,nA)),rA[nA]=eA[nA]);return tA.concat(rA||eA)}for(var tA=function(){function Bounds(tA,eA,AA,rA){this.left=tA,this.top=eA,this.width=AA,this.height=rA}return Bounds.prototype.add=function(tA,eA,AA,rA){return new Bounds(this.left+tA,this.top+eA,this.width+AA,this.height+rA)},Bounds.fromClientRect=function(tA,eA){return new Bounds(eA.left+tA.windowBounds.left,eA.top+tA.windowBounds.top,eA.width,eA.height)},Bounds.fromDOMRectList=function(tA,eA){var AA=Array.from(eA).find((function(tA){return 0!==tA.width}));return AA?new Bounds(AA.left+tA.windowBounds.left,AA.top+tA.windowBounds.top,AA.width,AA.height):Bounds.EMPTY},Bounds.EMPTY=new Bounds(0,0,0,0),Bounds}(),parseBounds=function(eA,AA){return tA.fromClientRect(eA,AA.getBoundingClientRect())},parseDocumentSize=function(eA){var AA=eA.body,rA=eA.documentElement;if(!AA||!rA)throw new Error(\"Unable to get document size\");var nA=Math.max(Math.max(AA.scrollWidth,rA.scrollWidth),Math.max(AA.offsetWidth,rA.offsetWidth),Math.max(AA.clientWidth,rA.clientWidth)),iA=Math.max(Math.max(AA.scrollHeight,rA.scrollHeight),Math.max(AA.offsetHeight,rA.offsetHeight),Math.max(AA.clientHeight,rA.clientHeight));return new tA(0,0,nA,iA)},toCodePoints$1=function(tA){for(var eA=[],AA=0,rA=tA.length;AA<rA;){var nA=tA.charCodeAt(AA++);if(nA>=55296&&nA<=56319&&AA<rA){var iA=tA.charCodeAt(AA++);56320==(64512&iA)?eA.push(((1023&nA)<<10)+(1023&iA)+65536):(eA.push(nA),AA--)}else eA.push(nA)}return eA},fromCodePoint$1=function(){for(var tA=[],eA=0;eA<arguments.length;eA++)tA[eA]=arguments[eA];if(String.fromCodePoint)return String.fromCodePoint.apply(String,tA);var AA=tA.length;if(!AA)return\"\";for(var rA=[],nA=-1,iA=\"\";++nA<AA;){var sA=tA[nA];sA<=65535?rA.push(sA):(sA-=65536,rA.push(55296+(sA>>10),sA%1024+56320)),(nA+1===AA||rA.length>16384)&&(iA+=String.fromCharCode.apply(String,rA),rA.length=0)}return iA},eA=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",AA=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),rA=0;rA<eA.length;rA++)AA[eA.charCodeAt(rA)]=rA;for(var nA=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",iA=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),sA=0;sA<nA.length;sA++)iA[nA.charCodeAt(sA)]=sA;for(var decode$1=function(tA){var eA,AA,rA,nA,sA,oA=.75*tA.length,aA=tA.length,lA=0;\"=\"===tA[tA.length-1]&&(oA--,\"=\"===tA[tA.length-2]&&oA--);var cA=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(oA):new Array(oA),uA=Array.isArray(cA)?cA:new Uint8Array(cA);for(eA=0;eA<aA;eA+=4)AA=iA[tA.charCodeAt(eA)],rA=iA[tA.charCodeAt(eA+1)],nA=iA[tA.charCodeAt(eA+2)],sA=iA[tA.charCodeAt(eA+3)],uA[lA++]=AA<<2|rA>>4,uA[lA++]=(15&rA)<<4|nA>>2,uA[lA++]=(3&nA)<<6|63&sA;return cA},polyUint16Array$1=function(tA){for(var eA=tA.length,AA=[],rA=0;rA<eA;rA+=2)AA.push(tA[rA+1]<<8|tA[rA]);return AA},polyUint32Array$1=function(tA){for(var eA=tA.length,AA=[],rA=0;rA<eA;rA+=4)AA.push(tA[rA+3]<<24|tA[rA+2]<<16|tA[rA+1]<<8|tA[rA]);return AA},oA=5,aA=11,lA=2,cA=65536>>oA,uA=(1<<oA)-1,hA=cA+(1024>>oA)+32,dA=65536>>aA,fA=(1<<aA-oA)-1,slice16$1=function(tA,eA,AA){return tA.slice?tA.slice(eA,AA):new Uint16Array(Array.prototype.slice.call(tA,eA,AA))},slice32$1=function(tA,eA,AA){return tA.slice?tA.slice(eA,AA):new Uint32Array(Array.prototype.slice.call(tA,eA,AA))},createTrieFromBase64$1=function(tA,eA){var AA=decode$1(tA),rA=Array.isArray(AA)?polyUint32Array$1(AA):new Uint32Array(AA),nA=Array.isArray(AA)?polyUint16Array$1(AA):new Uint16Array(AA),iA=24,sA=slice16$1(nA,iA/2,rA[4]/2),oA=2===rA[5]?slice16$1(nA,(iA+rA[4])/2):slice32$1(rA,Math.ceil((iA+rA[4])/4));return new gA(rA[0],rA[1],rA[2],rA[3],sA,oA)},gA=function(){function Trie(tA,eA,AA,rA,nA,iA){this.initialValue=tA,this.errorValue=eA,this.highStart=AA,this.highValueIndex=rA,this.index=nA,this.data=iA}return Trie.prototype.get=function(tA){var eA;if(tA>=0){if(tA<55296||tA>56319&&tA<=65535)return eA=((eA=this.index[tA>>oA])<<lA)+(tA&uA),this.data[eA];if(tA<=65535)return eA=((eA=this.index[cA+(tA-55296>>oA)])<<lA)+(tA&uA),this.data[eA];if(tA<this.highStart)return eA=hA-dA+(tA>>aA),eA=this.index[eA],eA+=tA>>oA&fA,eA=((eA=this.index[eA])<<lA)+(tA&uA),this.data[eA];if(tA<=1114111)return this.data[this.highValueIndex]}return this.errorValue},Trie}(),pA=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",mA=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),wA=0;wA<pA.length;wA++)mA[pA.charCodeAt(wA)]=wA;var yA=50,BA=1,bA=2,vA=3,CA=4,SA=5,xA=7,FA=8,EA=9,QA=10,UA=11,PA=12,_A=13,LA=14,IA=15,NA=16,TA=17,kA=18,MA=19,OA=20,HA=21,DA=22,RA=23,VA=24,GA=25,jA=26,KA=27,qA=28,zA=29,XA=30,WA=31,YA=32,JA=33,ZA=34,$A=35,Qr=36,Ur=37,Tr=38,Hr=39,Dr=40,Rr=41,Vr=42,Gr=43,Kr=[9001,65288],zr=\"!\",Xr=\"×\",Wr=\"÷\",Yr=createTrieFromBase64$1(\"KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==\"),Jr=[XA,Qr],Zr=[BA,bA,vA,SA],$r=[QA,FA],tn=[KA,jA],en=Zr.concat($r),An=[Tr,Hr,Dr,ZA,$A],rn=[IA,_A],codePointsToCharacterClasses=function(tA,eA){void 0===eA&&(eA=\"strict\");var AA=[],rA=[],nA=[];return tA.forEach((function(tA,iA){var sA=Yr.get(tA);if(sA>yA?(nA.push(!0),sA-=yA):nA.push(!1),-1!==[\"normal\",\"auto\",\"loose\"].indexOf(eA)&&-1!==[8208,8211,12316,12448].indexOf(tA))return rA.push(iA),AA.push(NA);if(sA===CA||sA===UA){if(0===iA)return rA.push(iA),AA.push(XA);var oA=AA[iA-1];return-1===en.indexOf(oA)?(rA.push(rA[iA-1]),AA.push(oA)):(rA.push(iA),AA.push(XA))}return rA.push(iA),sA===WA?AA.push(\"strict\"===eA?HA:Ur):sA===Vr||sA===zA?AA.push(XA):sA===Gr?tA>=131072&&tA<=196605||tA>=196608&&tA<=262141?AA.push(Ur):AA.push(XA):void AA.push(sA)})),[rA,AA,nA]},isAdjacentWithSpaceIgnored=function(tA,eA,AA,rA){var nA=rA[AA];if(Array.isArray(tA)?-1!==tA.indexOf(nA):tA===nA)for(var iA=AA;iA<=rA.length;){if((aA=rA[++iA])===eA)return!0;if(aA!==QA)break}if(nA===QA)for(iA=AA;iA>0;){var sA=rA[--iA];if(Array.isArray(tA)?-1!==tA.indexOf(sA):tA===sA)for(var oA=AA;oA<=rA.length;){var aA;if((aA=rA[++oA])===eA)return!0;if(aA!==QA)break}if(sA!==QA)break}return!1},previousNonSpaceClassType=function(tA,eA){for(var AA=tA;AA>=0;){var rA=eA[AA];if(rA!==QA)return rA;AA--}return 0},_lineBreakAtIndex=function(tA,eA,AA,rA,nA){if(0===AA[rA])return Xr;var iA=rA-1;if(Array.isArray(nA)&&!0===nA[iA])return Xr;var sA=iA-1,oA=iA+1,aA=eA[iA],lA=sA>=0?eA[sA]:0,cA=eA[oA];if(aA===bA&&cA===vA)return Xr;if(-1!==Zr.indexOf(aA))return zr;if(-1!==Zr.indexOf(cA))return Xr;if(-1!==$r.indexOf(cA))return Xr;if(previousNonSpaceClassType(iA,eA)===FA)return Wr;if(Yr.get(tA[iA])===UA)return Xr;if((aA===YA||aA===JA)&&Yr.get(tA[oA])===UA)return Xr;if(aA===xA||cA===xA)return Xr;if(aA===EA)return Xr;if(-1===[QA,_A,IA].indexOf(aA)&&cA===EA)return Xr;if(-1!==[TA,kA,MA,VA,qA].indexOf(cA))return Xr;if(previousNonSpaceClassType(iA,eA)===DA)return Xr;if(isAdjacentWithSpaceIgnored(RA,DA,iA,eA))return Xr;if(isAdjacentWithSpaceIgnored([TA,kA],HA,iA,eA))return Xr;if(isAdjacentWithSpaceIgnored(PA,PA,iA,eA))return Xr;if(aA===QA)return Wr;if(aA===RA||cA===RA)return Xr;if(cA===NA||aA===NA)return Wr;if(-1!==[_A,IA,HA].indexOf(cA)||aA===LA)return Xr;if(lA===Qr&&-1!==rn.indexOf(aA))return Xr;if(aA===qA&&cA===Qr)return Xr;if(cA===OA)return Xr;if(-1!==Jr.indexOf(cA)&&aA===GA||-1!==Jr.indexOf(aA)&&cA===GA)return Xr;if(aA===KA&&-1!==[Ur,YA,JA].indexOf(cA)||-1!==[Ur,YA,JA].indexOf(aA)&&cA===jA)return Xr;if(-1!==Jr.indexOf(aA)&&-1!==tn.indexOf(cA)||-1!==tn.indexOf(aA)&&-1!==Jr.indexOf(cA))return Xr;if(-1!==[KA,jA].indexOf(aA)&&(cA===GA||-1!==[DA,IA].indexOf(cA)&&eA[oA+1]===GA)||-1!==[DA,IA].indexOf(aA)&&cA===GA||aA===GA&&-1!==[GA,qA,VA].indexOf(cA))return Xr;if(-1!==[GA,qA,VA,TA,kA].indexOf(cA))for(var uA=iA;uA>=0;){if((hA=eA[uA])===GA)return Xr;if(-1===[qA,VA].indexOf(hA))break;uA--}if(-1!==[KA,jA].indexOf(cA))for(uA=-1!==[TA,kA].indexOf(aA)?sA:iA;uA>=0;){var hA;if((hA=eA[uA])===GA)return Xr;if(-1===[qA,VA].indexOf(hA))break;uA--}if(Tr===aA&&-1!==[Tr,Hr,ZA,$A].indexOf(cA)||-1!==[Hr,ZA].indexOf(aA)&&-1!==[Hr,Dr].indexOf(cA)||-1!==[Dr,$A].indexOf(aA)&&cA===Dr)return Xr;if(-1!==An.indexOf(aA)&&-1!==[OA,jA].indexOf(cA)||-1!==An.indexOf(cA)&&aA===KA)return Xr;if(-1!==Jr.indexOf(aA)&&-1!==Jr.indexOf(cA))return Xr;if(aA===VA&&-1!==Jr.indexOf(cA))return Xr;if(-1!==Jr.concat(GA).indexOf(aA)&&cA===DA&&-1===Kr.indexOf(tA[oA])||-1!==Jr.concat(GA).indexOf(cA)&&aA===kA)return Xr;if(aA===Rr&&cA===Rr){for(var dA=AA[iA],fA=1;dA>0&&eA[--dA]===Rr;)fA++;if(fA%2!=0)return Xr}return aA===YA&&cA===JA?Xr:Wr},cssFormattedClasses=function(tA,eA){eA||(eA={lineBreak:\"normal\",wordBreak:\"normal\"});var AA=codePointsToCharacterClasses(tA,eA.lineBreak),rA=AA[0],nA=AA[1],iA=AA[2];\"break-all\"!==eA.wordBreak&&\"break-word\"!==eA.wordBreak||(nA=nA.map((function(tA){return-1!==[GA,XA,Vr].indexOf(tA)?Ur:tA})));var sA=\"keep-all\"===eA.wordBreak?iA.map((function(eA,AA){return eA&&tA[AA]>=19968&&tA[AA]<=40959})):void 0;return[rA,nA,sA]},nn=function(){function Break(tA,eA,AA,rA){this.codePoints=tA,this.required=eA===zr,this.start=AA,this.end=rA}return Break.prototype.slice=function(){return fromCodePoint$1.apply(void 0,this.codePoints.slice(this.start,this.end))},Break}(),LineBreaker=function(tA,eA){var AA=toCodePoints$1(tA),rA=cssFormattedClasses(AA,eA),nA=rA[0],iA=rA[1],sA=rA[2],oA=AA.length,aA=0,lA=0;return{next:function(){if(lA>=oA)return{done:!0,value:null};for(var tA=Xr;lA<oA&&(tA=_lineBreakAtIndex(AA,iA,nA,++lA,sA))===Xr;);if(tA!==Xr||lA===oA){var eA=new nn(AA,tA,aA,lA);return aA=lA,{value:eA,done:!1}}return{done:!0,value:null}}}},sn=1,on=2,an=4,cn=8,un=10,hn=47,dn=92,fn=9,gn=32,pn=34,mn=61,wn=35,yn=36,Bn=37,bn=39,vn=40,Cn=41,Sn=95,xn=45,Fn=33,En=60,Qn=62,Un=64,Pn=91,_n=93,Ln=61,In=123,Nn=63,Tn=125,kn=124,Mn=126,On=128,Hn=65533,Dn=42,Rn=43,Vn=44,Gn=58,jn=59,Kn=46,qn=0,zn=8,Xn=11,Wn=14,Yn=31,Jn=127,Zn=-1,$n=48,ti=97,ei=101,Ai=102,ri=117,ni=122,ii=65,si=69,oi=70,ai=85,li=90,isDigit=function(tA){return tA>=$n&&tA<=57},isSurrogateCodePoint=function(tA){return tA>=55296&&tA<=57343},isHex=function(tA){return isDigit(tA)||tA>=ii&&tA<=oi||tA>=ti&&tA<=Ai},isLowerCaseLetter=function(tA){return tA>=ti&&tA<=ni},isUpperCaseLetter=function(tA){return tA>=ii&&tA<=li},isLetter=function(tA){return isLowerCaseLetter(tA)||isUpperCaseLetter(tA)},isNonASCIICodePoint=function(tA){return tA>=On},isWhiteSpace=function(tA){return tA===un||tA===fn||tA===gn},isNameStartCodePoint=function(tA){return isLetter(tA)||isNonASCIICodePoint(tA)||tA===Sn},isNameCodePoint=function(tA){return isNameStartCodePoint(tA)||isDigit(tA)||tA===xn},isNonPrintableCodePoint=function(tA){return tA>=qn&&tA<=zn||tA===Xn||tA>=Wn&&tA<=Yn||tA===Jn},isValidEscape=function(tA,eA){return tA===dn&&eA!==un},isIdentifierStart=function(tA,eA,AA){return tA===xn?isNameStartCodePoint(eA)||isValidEscape(eA,AA):!!isNameStartCodePoint(tA)||!(tA!==dn||!isValidEscape(tA,eA))},isNumberStart=function(tA,eA,AA){return tA===Rn||tA===xn?!!isDigit(eA)||eA===Kn&&isDigit(AA):isDigit(tA===Kn?eA:tA)},stringToNumber=function(tA){var eA=0,AA=1;tA[eA]!==Rn&&tA[eA]!==xn||(tA[eA]===xn&&(AA=-1),eA++);for(var rA=[];isDigit(tA[eA]);)rA.push(tA[eA++]);var nA=rA.length?parseInt(fromCodePoint$1.apply(void 0,rA),10):0;tA[eA]===Kn&&eA++;for(var iA=[];isDigit(tA[eA]);)iA.push(tA[eA++]);var sA=iA.length,oA=sA?parseInt(fromCodePoint$1.apply(void 0,iA),10):0;tA[eA]!==si&&tA[eA]!==ei||eA++;var aA=1;tA[eA]!==Rn&&tA[eA]!==xn||(tA[eA]===xn&&(aA=-1),eA++);for(var lA=[];isDigit(tA[eA]);)lA.push(tA[eA++]);var cA=lA.length?parseInt(fromCodePoint$1.apply(void 0,lA),10):0;return AA*(nA+oA*Math.pow(10,-sA))*Math.pow(10,aA*cA)},ci={type:2},ui={type:3},hi={type:4},di={type:13},fi={type:8},gi={type:21},pi={type:9},mi={type:10},wi={type:11},yi={type:12},Bi={type:14},bi={type:23},vi={type:1},Ci={type:25},Si={type:24},xi={type:26},Fi={type:27},Ei={type:28},Qi={type:29},Ui={type:31},Pi={type:32},_i=function(){function Tokenizer(){this._value=[]}return Tokenizer.prototype.write=function(tA){this._value=this._value.concat(toCodePoints$1(tA))},Tokenizer.prototype.read=function(){for(var tA=[],eA=this.consumeToken();eA!==Pi;)tA.push(eA),eA=this.consumeToken();return tA},Tokenizer.prototype.consumeToken=function(){var tA=this.consumeCodePoint();switch(tA){case pn:return this.consumeStringToken(pn);case wn:var eA=this.peekCodePoint(0),AA=this.peekCodePoint(1),rA=this.peekCodePoint(2);if(isNameCodePoint(eA)||isValidEscape(AA,rA)){var nA=isIdentifierStart(eA,AA,rA)?on:sn;return{type:5,value:this.consumeName(),flags:nA}}break;case yn:if(this.peekCodePoint(0)===mn)return this.consumeCodePoint(),di;break;case bn:return this.consumeStringToken(bn);case vn:return ci;case Cn:return ui;case Dn:if(this.peekCodePoint(0)===mn)return this.consumeCodePoint(),Bi;break;case Rn:if(isNumberStart(tA,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(tA),this.consumeNumericToken();break;case Vn:return hi;case xn:var iA=tA,sA=this.peekCodePoint(0),oA=this.peekCodePoint(1);if(isNumberStart(iA,sA,oA))return this.reconsumeCodePoint(tA),this.consumeNumericToken();if(isIdentifierStart(iA,sA,oA))return this.reconsumeCodePoint(tA),this.consumeIdentLikeToken();if(sA===xn&&oA===Qn)return this.consumeCodePoint(),this.consumeCodePoint(),Si;break;case Kn:if(isNumberStart(tA,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(tA),this.consumeNumericToken();break;case hn:if(this.peekCodePoint(0)===Dn)for(this.consumeCodePoint();;){var aA=this.consumeCodePoint();if(aA===Dn&&(aA=this.consumeCodePoint())===hn)return this.consumeToken();if(aA===Zn)return this.consumeToken()}break;case Gn:return xi;case jn:return Fi;case En:if(this.peekCodePoint(0)===Fn&&this.peekCodePoint(1)===xn&&this.peekCodePoint(2)===xn)return this.consumeCodePoint(),this.consumeCodePoint(),Ci;break;case Un:var lA=this.peekCodePoint(0),cA=this.peekCodePoint(1),uA=this.peekCodePoint(2);if(isIdentifierStart(lA,cA,uA))return{type:7,value:this.consumeName()};break;case Pn:return Ei;case dn:if(isValidEscape(tA,this.peekCodePoint(0)))return this.reconsumeCodePoint(tA),this.consumeIdentLikeToken();break;case _n:return Qi;case Ln:if(this.peekCodePoint(0)===mn)return this.consumeCodePoint(),fi;break;case In:return wi;case Tn:return yi;case ri:case ai:var hA=this.peekCodePoint(0),dA=this.peekCodePoint(1);return hA!==Rn||!isHex(dA)&&dA!==Nn||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(tA),this.consumeIdentLikeToken();case kn:if(this.peekCodePoint(0)===mn)return this.consumeCodePoint(),pi;if(this.peekCodePoint(0)===kn)return this.consumeCodePoint(),gi;break;case Mn:if(this.peekCodePoint(0)===mn)return this.consumeCodePoint(),mi;break;case Zn:return Pi}return isWhiteSpace(tA)?(this.consumeWhiteSpace(),Ui):isDigit(tA)?(this.reconsumeCodePoint(tA),this.consumeNumericToken()):isNameStartCodePoint(tA)?(this.reconsumeCodePoint(tA),this.consumeIdentLikeToken()):{type:6,value:fromCodePoint$1(tA)}},Tokenizer.prototype.consumeCodePoint=function(){var tA=this._value.shift();return void 0===tA?-1:tA},Tokenizer.prototype.reconsumeCodePoint=function(tA){this._value.unshift(tA)},Tokenizer.prototype.peekCodePoint=function(tA){return tA>=this._value.length?-1:this._value[tA]},Tokenizer.prototype.consumeUnicodeRangeToken=function(){for(var tA=[],eA=this.consumeCodePoint();isHex(eA)&&tA.length<6;)tA.push(eA),eA=this.consumeCodePoint();for(var AA=!1;eA===Nn&&tA.length<6;)tA.push(eA),eA=this.consumeCodePoint(),AA=!0;if(AA)return{type:30,start:parseInt(fromCodePoint$1.apply(void 0,tA.map((function(tA){return tA===Nn?$n:tA}))),16),end:parseInt(fromCodePoint$1.apply(void 0,tA.map((function(tA){return tA===Nn?oi:tA}))),16)};var rA=parseInt(fromCodePoint$1.apply(void 0,tA),16);if(this.peekCodePoint(0)===xn&&isHex(this.peekCodePoint(1))){this.consumeCodePoint(),eA=this.consumeCodePoint();for(var nA=[];isHex(eA)&&nA.length<6;)nA.push(eA),eA=this.consumeCodePoint();return{type:30,start:rA,end:parseInt(fromCodePoint$1.apply(void 0,nA),16)}}return{type:30,start:rA,end:rA}},Tokenizer.prototype.consumeIdentLikeToken=function(){var tA=this.consumeName();return\"url\"===tA.toLowerCase()&&this.peekCodePoint(0)===vn?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===vn?(this.consumeCodePoint(),{type:19,value:tA}):{type:20,value:tA}},Tokenizer.prototype.consumeUrlToken=function(){var tA=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===Zn)return{type:22,value:\"\"};var eA=this.peekCodePoint(0);if(eA===bn||eA===pn){var AA=this.consumeStringToken(this.consumeCodePoint());return 0===AA.type&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===Zn||this.peekCodePoint(0)===Cn)?(this.consumeCodePoint(),{type:22,value:AA.value}):(this.consumeBadUrlRemnants(),bi)}for(;;){var rA=this.consumeCodePoint();if(rA===Zn||rA===Cn)return{type:22,value:fromCodePoint$1.apply(void 0,tA)};if(isWhiteSpace(rA))return this.consumeWhiteSpace(),this.peekCodePoint(0)===Zn||this.peekCodePoint(0)===Cn?(this.consumeCodePoint(),{type:22,value:fromCodePoint$1.apply(void 0,tA)}):(this.consumeBadUrlRemnants(),bi);if(rA===pn||rA===bn||rA===vn||isNonPrintableCodePoint(rA))return this.consumeBadUrlRemnants(),bi;if(rA===dn){if(!isValidEscape(rA,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),bi;tA.push(this.consumeEscapedCodePoint())}else tA.push(rA)}},Tokenizer.prototype.consumeWhiteSpace=function(){for(;isWhiteSpace(this.peekCodePoint(0));)this.consumeCodePoint()},Tokenizer.prototype.consumeBadUrlRemnants=function(){for(;;){var tA=this.consumeCodePoint();if(tA===Cn||tA===Zn)return;isValidEscape(tA,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},Tokenizer.prototype.consumeStringSlice=function(tA){for(var eA=5e4,AA=\"\";tA>0;){var rA=Math.min(eA,tA);AA+=fromCodePoint$1.apply(void 0,this._value.splice(0,rA)),tA-=rA}return this._value.shift(),AA},Tokenizer.prototype.consumeStringToken=function(tA){for(var eA=\"\",AA=0;;){var rA=this._value[AA];if(rA===Zn||void 0===rA||rA===tA)return{type:0,value:eA+=this.consumeStringSlice(AA)};if(rA===un)return this._value.splice(0,AA),vi;if(rA===dn){var nA=this._value[AA+1];nA!==Zn&&void 0!==nA&&(nA===un?(eA+=this.consumeStringSlice(AA),AA=-1,this._value.shift()):isValidEscape(rA,nA)&&(eA+=this.consumeStringSlice(AA),eA+=fromCodePoint$1(this.consumeEscapedCodePoint()),AA=-1))}AA++}},Tokenizer.prototype.consumeNumber=function(){var tA=[],eA=an,AA=this.peekCodePoint(0);for(AA!==Rn&&AA!==xn||tA.push(this.consumeCodePoint());isDigit(this.peekCodePoint(0));)tA.push(this.consumeCodePoint());AA=this.peekCodePoint(0);var rA=this.peekCodePoint(1);if(AA===Kn&&isDigit(rA))for(tA.push(this.consumeCodePoint(),this.consumeCodePoint()),eA=cn;isDigit(this.peekCodePoint(0));)tA.push(this.consumeCodePoint());AA=this.peekCodePoint(0),rA=this.peekCodePoint(1);var nA=this.peekCodePoint(2);if((AA===si||AA===ei)&&((rA===Rn||rA===xn)&&isDigit(nA)||isDigit(rA)))for(tA.push(this.consumeCodePoint(),this.consumeCodePoint()),eA=cn;isDigit(this.peekCodePoint(0));)tA.push(this.consumeCodePoint());return[stringToNumber(tA),eA]},Tokenizer.prototype.consumeNumericToken=function(){var tA=this.consumeNumber(),eA=tA[0],AA=tA[1],rA=this.peekCodePoint(0),nA=this.peekCodePoint(1),iA=this.peekCodePoint(2);return isIdentifierStart(rA,nA,iA)?{type:15,number:eA,flags:AA,unit:this.consumeName()}:rA===Bn?(this.consumeCodePoint(),{type:16,number:eA,flags:AA}):{type:17,number:eA,flags:AA}},Tokenizer.prototype.consumeEscapedCodePoint=function(){var tA=this.consumeCodePoint();if(isHex(tA)){for(var eA=fromCodePoint$1(tA);isHex(this.peekCodePoint(0))&&eA.length<6;)eA+=fromCodePoint$1(this.consumeCodePoint());isWhiteSpace(this.peekCodePoint(0))&&this.consumeCodePoint();var AA=parseInt(eA,16);return 0===AA||isSurrogateCodePoint(AA)||AA>1114111?Hn:AA}return tA===Zn?Hn:tA},Tokenizer.prototype.consumeName=function(){for(var tA=\"\";;){var eA=this.consumeCodePoint();if(isNameCodePoint(eA))tA+=fromCodePoint$1(eA);else{if(!isValidEscape(eA,this.peekCodePoint(0)))return this.reconsumeCodePoint(eA),tA;tA+=fromCodePoint$1(this.consumeEscapedCodePoint())}}},Tokenizer}(),Li=function(){function Parser(tA){this._tokens=tA}return Parser.create=function(tA){var eA=new _i;return eA.write(tA),new Parser(eA.read())},Parser.parseValue=function(tA){return Parser.create(tA).parseComponentValue()},Parser.parseValues=function(tA){return Parser.create(tA).parseComponentValues()},Parser.prototype.parseComponentValue=function(){for(var tA=this.consumeToken();31===tA.type;)tA=this.consumeToken();if(32===tA.type)throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");this.reconsumeToken(tA);var eA=this.consumeComponentValue();do{tA=this.consumeToken()}while(31===tA.type);if(32===tA.type)return eA;throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\")},Parser.prototype.parseComponentValues=function(){for(var tA=[];;){var eA=this.consumeComponentValue();if(32===eA.type)return tA;tA.push(eA),tA.push()}},Parser.prototype.consumeComponentValue=function(){var tA=this.consumeToken();switch(tA.type){case 11:case 28:case 2:return this.consumeSimpleBlock(tA.type);case 19:return this.consumeFunction(tA)}return tA},Parser.prototype.consumeSimpleBlock=function(tA){for(var eA={type:tA,values:[]},AA=this.consumeToken();;){if(32===AA.type||isEndingTokenFor(AA,tA))return eA;this.reconsumeToken(AA),eA.values.push(this.consumeComponentValue()),AA=this.consumeToken()}},Parser.prototype.consumeFunction=function(tA){for(var eA={name:tA.value,values:[],type:18};;){var AA=this.consumeToken();if(32===AA.type||3===AA.type)return eA;this.reconsumeToken(AA),eA.values.push(this.consumeComponentValue())}},Parser.prototype.consumeToken=function(){var tA=this._tokens.shift();return void 0===tA?Pi:tA},Parser.prototype.reconsumeToken=function(tA){this._tokens.unshift(tA)},Parser}(),isDimensionToken=function(tA){return 15===tA.type},isNumberToken=function(tA){return 17===tA.type},isIdentToken=function(tA){return 20===tA.type},isStringToken=function(tA){return 0===tA.type},isIdentWithValue=function(tA,eA){return isIdentToken(tA)&&tA.value===eA},nonWhiteSpace=function(tA){return 31!==tA.type},nonFunctionArgSeparator=function(tA){return 31!==tA.type&&4!==tA.type},parseFunctionArgs=function(tA){var eA=[],AA=[];return tA.forEach((function(tA){if(4===tA.type){if(0===AA.length)throw new Error(\"Error parsing function args, zero tokens for arg\");return eA.push(AA),void(AA=[])}31!==tA.type&&AA.push(tA)})),AA.length&&eA.push(AA),eA},isEndingTokenFor=function(tA,eA){return 11===eA&&12===tA.type||28===eA&&29===tA.type||2===eA&&3===tA.type},isLength=function(tA){return 17===tA.type||15===tA.type},isLengthPercentage=function(tA){return 16===tA.type||isLength(tA)},parseLengthPercentageTuple=function(tA){return tA.length>1?[tA[0],tA[1]]:[tA[0]]},Ii={type:17,number:0,flags:an},Ni={type:16,number:50,flags:an},Ti={type:16,number:100,flags:an},getAbsoluteValueForTuple=function(tA,eA,AA){var rA=tA[0],nA=tA[1];return[getAbsoluteValue(rA,eA),getAbsoluteValue(void 0!==nA?nA:rA,AA)]},getAbsoluteValue=function(tA,eA){if(16===tA.type)return tA.number/100*eA;if(isDimensionToken(tA))switch(tA.unit){case\"rem\":case\"em\":return 16*tA.number;default:return tA.number}return tA.number},ki=\"deg\",Mi=\"grad\",Oi=\"rad\",Hi=\"turn\",Di={name:\"angle\",parse:function(tA,eA){if(15===eA.type)switch(eA.unit){case ki:return Math.PI*eA.number/180;case Mi:return Math.PI/200*eA.number;case Oi:return eA.number;case Hi:return 2*Math.PI*eA.number}throw new Error(\"Unsupported angle type\")}},isAngle=function(tA){return 15===tA.type&&(tA.unit===ki||tA.unit===Mi||tA.unit===Oi||tA.unit===Hi)},parseNamedSide=function(tA){switch(tA.filter(isIdentToken).map((function(tA){return tA.value})).join(\" \")){case\"to bottom right\":case\"to right bottom\":case\"left top\":case\"top left\":return[Ii,Ii];case\"to top\":case\"bottom\":return deg(0);case\"to bottom left\":case\"to left bottom\":case\"right top\":case\"top right\":return[Ii,Ti];case\"to right\":case\"left\":return deg(90);case\"to top left\":case\"to left top\":case\"right bottom\":case\"bottom right\":return[Ti,Ti];case\"to bottom\":case\"top\":return deg(180);case\"to top right\":case\"to right top\":case\"left bottom\":case\"bottom left\":return[Ti,Ii];case\"to left\":case\"right\":return deg(270)}return 0},deg=function(tA){return Math.PI*tA/180},Ri={name:\"color\",parse:function(tA,eA){if(18===eA.type){var AA=Vi[eA.name];if(void 0===AA)throw new Error('Attempting to parse an unsupported color function \"'+eA.name+'\"');return AA(tA,eA.values)}if(5===eA.type){if(3===eA.value.length){var rA=eA.value.substring(0,1),nA=eA.value.substring(1,2),iA=eA.value.substring(2,3);return pack(parseInt(rA+rA,16),parseInt(nA+nA,16),parseInt(iA+iA,16),1)}if(4===eA.value.length){rA=eA.value.substring(0,1),nA=eA.value.substring(1,2),iA=eA.value.substring(2,3);var sA=eA.value.substring(3,4);return pack(parseInt(rA+rA,16),parseInt(nA+nA,16),parseInt(iA+iA,16),parseInt(sA+sA,16)/255)}if(6===eA.value.length)return rA=eA.value.substring(0,2),nA=eA.value.substring(2,4),iA=eA.value.substring(4,6),pack(parseInt(rA,16),parseInt(nA,16),parseInt(iA,16),1);if(8===eA.value.length)return rA=eA.value.substring(0,2),nA=eA.value.substring(2,4),iA=eA.value.substring(4,6),sA=eA.value.substring(6,8),pack(parseInt(rA,16),parseInt(nA,16),parseInt(iA,16),parseInt(sA,16)/255)}if(20===eA.type){var oA=Gi[eA.value.toUpperCase()];if(void 0!==oA)return oA}return Gi.TRANSPARENT}},isTransparent=function(tA){return 0==(255&tA)},asString=function(tA){var eA=255&tA,AA=255&tA>>8,rA=255&tA>>16,nA=255&tA>>24;return eA<255?\"rgba(\"+nA+\",\"+rA+\",\"+AA+\",\"+eA/255+\")\":\"rgb(\"+nA+\",\"+rA+\",\"+AA+\")\"},pack=function(tA,eA,AA,rA){return(tA<<24|eA<<16|AA<<8|Math.round(255*rA)<<0)>>>0},getTokenColorValue=function(tA,eA){if(17===tA.type)return tA.number;if(16===tA.type){var AA=3===eA?1:255;return 3===eA?tA.number/100*AA:Math.round(tA.number/100*AA)}return 0},rgb=function(tA,eA){var AA=eA.filter(nonFunctionArgSeparator);if(3===AA.length){var rA=AA.map(getTokenColorValue),nA=rA[0],iA=rA[1],sA=rA[2];return pack(nA,iA,sA,1)}if(4===AA.length){var oA=AA.map(getTokenColorValue),aA=(nA=oA[0],iA=oA[1],sA=oA[2],oA[3]);return pack(nA,iA,sA,aA)}return 0};function hue2rgb(tA,eA,AA){return AA<0&&(AA+=1),AA>=1&&(AA-=1),AA<1/6?(eA-tA)*AA*6+tA:AA<.5?eA:AA<2/3?6*(eA-tA)*(2/3-AA)+tA:tA}var hsl=function(tA,eA){var AA=eA.filter(nonFunctionArgSeparator),rA=AA[0],nA=AA[1],iA=AA[2],sA=AA[3],oA=(17===rA.type?deg(rA.number):Di.parse(tA,rA))/(2*Math.PI),aA=isLengthPercentage(nA)?nA.number/100:0,lA=isLengthPercentage(iA)?iA.number/100:0,cA=void 0!==sA&&isLengthPercentage(sA)?getAbsoluteValue(sA,1):1;if(0===aA)return pack(255*lA,255*lA,255*lA,1);var uA=lA<=.5?lA*(aA+1):lA+aA-lA*aA,hA=2*lA-uA,dA=hue2rgb(hA,uA,oA+1/3),fA=hue2rgb(hA,uA,oA),gA=hue2rgb(hA,uA,oA-1/3);return pack(255*dA,255*fA,255*gA,cA)},Vi={hsl:hsl,hsla:hsl,rgb:rgb,rgba:rgb},parseColor=function(tA,eA){return Ri.parse(tA,Li.create(eA).parseComponentValue())},Gi={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},ji={name:\"background-clip\",initialValue:\"border-box\",prefix:!1,type:1,parse:function(tA,eA){return eA.map((function(tA){if(isIdentToken(tA))switch(tA.value){case\"padding-box\":return 1;case\"content-box\":return 2}return 0}))}},Ki={name:\"background-color\",initialValue:\"transparent\",prefix:!1,type:3,format:\"color\"},parseColorStop=function(tA,eA){var AA=Ri.parse(tA,eA[0]),rA=eA[1];return rA&&isLengthPercentage(rA)?{color:AA,stop:rA}:{color:AA,stop:null}},processColorStops=function(tA,eA){var AA=tA[0],rA=tA[tA.length-1];null===AA.stop&&(AA.stop=Ii),null===rA.stop&&(rA.stop=Ti);for(var nA=[],iA=0,sA=0;sA<tA.length;sA++){var oA=tA[sA].stop;if(null!==oA){var aA=getAbsoluteValue(oA,eA);aA>iA?nA.push(aA):nA.push(iA),iA=aA}else nA.push(null)}var lA=null;for(sA=0;sA<nA.length;sA++){var cA=nA[sA];if(null===cA)null===lA&&(lA=sA);else if(null!==lA){for(var uA=sA-lA,hA=(cA-nA[lA-1])/(uA+1),dA=1;dA<=uA;dA++)nA[lA+dA-1]=hA*dA;lA=null}}return tA.map((function(tA,AA){return{color:tA.color,stop:Math.max(Math.min(1,nA[AA]/eA),0)}}))},getAngleFromCorner=function(tA,eA,AA){var rA=eA/2,nA=AA/2,iA=getAbsoluteValue(tA[0],eA)-rA,sA=nA-getAbsoluteValue(tA[1],AA);return(Math.atan2(sA,iA)+2*Math.PI)%(2*Math.PI)},calculateGradientDirection=function(tA,eA,AA){var rA=\"number\"==typeof tA?tA:getAngleFromCorner(tA,eA,AA),nA=Math.abs(eA*Math.sin(rA))+Math.abs(AA*Math.cos(rA)),iA=eA/2,sA=AA/2,oA=nA/2,aA=Math.sin(rA-Math.PI/2)*oA,lA=Math.cos(rA-Math.PI/2)*oA;return[nA,iA-lA,iA+lA,sA-aA,sA+aA]},distance=function(tA,eA){return Math.sqrt(tA*tA+eA*eA)},findCorner=function(tA,eA,AA,rA,nA){return[[0,0],[0,eA],[tA,0],[tA,eA]].reduce((function(tA,eA){var iA=eA[0],sA=eA[1],oA=distance(AA-iA,rA-sA);return(nA?oA<tA.optimumDistance:oA>tA.optimumDistance)?{optimumCorner:eA,optimumDistance:oA}:tA}),{optimumDistance:nA?1/0:-1/0,optimumCorner:null}).optimumCorner},calculateRadius=function(tA,eA,AA,rA,nA){var iA=0,sA=0;switch(tA.size){case 0:0===tA.shape?iA=sA=Math.min(Math.abs(eA),Math.abs(eA-rA),Math.abs(AA),Math.abs(AA-nA)):1===tA.shape&&(iA=Math.min(Math.abs(eA),Math.abs(eA-rA)),sA=Math.min(Math.abs(AA),Math.abs(AA-nA)));break;case 2:if(0===tA.shape)iA=sA=Math.min(distance(eA,AA),distance(eA,AA-nA),distance(eA-rA,AA),distance(eA-rA,AA-nA));else if(1===tA.shape){var oA=Math.min(Math.abs(AA),Math.abs(AA-nA))/Math.min(Math.abs(eA),Math.abs(eA-rA)),aA=findCorner(rA,nA,eA,AA,!0),lA=aA[0],cA=aA[1];sA=oA*(iA=distance(lA-eA,(cA-AA)/oA))}break;case 1:0===tA.shape?iA=sA=Math.max(Math.abs(eA),Math.abs(eA-rA),Math.abs(AA),Math.abs(AA-nA)):1===tA.shape&&(iA=Math.max(Math.abs(eA),Math.abs(eA-rA)),sA=Math.max(Math.abs(AA),Math.abs(AA-nA)));break;case 3:if(0===tA.shape)iA=sA=Math.max(distance(eA,AA),distance(eA,AA-nA),distance(eA-rA,AA),distance(eA-rA,AA-nA));else if(1===tA.shape){oA=Math.max(Math.abs(AA),Math.abs(AA-nA))/Math.max(Math.abs(eA),Math.abs(eA-rA));var uA=findCorner(rA,nA,eA,AA,!1);lA=uA[0],cA=uA[1],sA=oA*(iA=distance(lA-eA,(cA-AA)/oA))}}return Array.isArray(tA.size)&&(iA=getAbsoluteValue(tA.size[0],rA),sA=2===tA.size.length?getAbsoluteValue(tA.size[1],nA):iA),[iA,sA]},linearGradient=function(tA,eA){var AA=deg(180),rA=[];return parseFunctionArgs(eA).forEach((function(eA,nA){if(0===nA){var iA=eA[0];if(20===iA.type&&\"to\"===iA.value)return void(AA=parseNamedSide(eA));if(isAngle(iA))return void(AA=Di.parse(tA,iA))}var sA=parseColorStop(tA,eA);rA.push(sA)})),{angle:AA,stops:rA,type:1}},prefixLinearGradient=function(tA,eA){var AA=deg(180),rA=[];return parseFunctionArgs(eA).forEach((function(eA,nA){if(0===nA){var iA=eA[0];if(20===iA.type&&-1!==[\"top\",\"left\",\"right\",\"bottom\"].indexOf(iA.value))return void(AA=parseNamedSide(eA));if(isAngle(iA))return void(AA=(Di.parse(tA,iA)+deg(270))%deg(360))}var sA=parseColorStop(tA,eA);rA.push(sA)})),{angle:AA,stops:rA,type:1}},webkitGradient=function(tA,eA){var AA=deg(180),rA=[],nA=1,iA=0,sA=3,oA=[];return parseFunctionArgs(eA).forEach((function(eA,AA){var iA=eA[0];if(0===AA){if(isIdentToken(iA)&&\"linear\"===iA.value)return void(nA=1);if(isIdentToken(iA)&&\"radial\"===iA.value)return void(nA=2)}if(18===iA.type)if(\"from\"===iA.name){var sA=Ri.parse(tA,iA.values[0]);rA.push({stop:Ii,color:sA})}else if(\"to\"===iA.name)sA=Ri.parse(tA,iA.values[0]),rA.push({stop:Ti,color:sA});else if(\"color-stop\"===iA.name){var oA=iA.values.filter(nonFunctionArgSeparator);if(2===oA.length){sA=Ri.parse(tA,oA[1]);var aA=oA[0];isNumberToken(aA)&&rA.push({stop:{type:16,number:100*aA.number,flags:aA.flags},color:sA})}}})),1===nA?{angle:(AA+deg(180))%deg(360),stops:rA,type:nA}:{size:sA,shape:iA,stops:rA,position:oA,type:nA}},qi=\"closest-side\",zi=\"farthest-side\",Xi=\"closest-corner\",Wi=\"farthest-corner\",Yi=\"circle\",Ji=\"ellipse\",Zi=\"cover\",$i=\"contain\",radialGradient=function(tA,eA){var AA=0,rA=3,nA=[],iA=[];return parseFunctionArgs(eA).forEach((function(eA,sA){var oA=!0;if(0===sA){var aA=!1;oA=eA.reduce((function(tA,eA){if(aA)if(isIdentToken(eA))switch(eA.value){case\"center\":return iA.push(Ni),tA;case\"top\":case\"left\":return iA.push(Ii),tA;case\"right\":case\"bottom\":return iA.push(Ti),tA}else(isLengthPercentage(eA)||isLength(eA))&&iA.push(eA);else if(isIdentToken(eA))switch(eA.value){case Yi:return AA=0,!1;case Ji:return AA=1,!1;case\"at\":return aA=!0,!1;case qi:return rA=0,!1;case Zi:case zi:return rA=1,!1;case $i:case Xi:return rA=2,!1;case Wi:return rA=3,!1}else if(isLength(eA)||isLengthPercentage(eA))return Array.isArray(rA)||(rA=[]),rA.push(eA),!1;return tA}),oA)}if(oA){var lA=parseColorStop(tA,eA);nA.push(lA)}})),{size:rA,shape:AA,stops:nA,position:iA,type:2}},prefixRadialGradient=function(tA,eA){var AA=0,rA=3,nA=[],iA=[];return parseFunctionArgs(eA).forEach((function(eA,sA){var oA=!0;if(0===sA?oA=eA.reduce((function(tA,eA){if(isIdentToken(eA))switch(eA.value){case\"center\":return iA.push(Ni),!1;case\"top\":case\"left\":return iA.push(Ii),!1;case\"right\":case\"bottom\":return iA.push(Ti),!1}else if(isLengthPercentage(eA)||isLength(eA))return iA.push(eA),!1;return tA}),oA):1===sA&&(oA=eA.reduce((function(tA,eA){if(isIdentToken(eA))switch(eA.value){case Yi:return AA=0,!1;case Ji:return AA=1,!1;case $i:case qi:return rA=0,!1;case zi:return rA=1,!1;case Xi:return rA=2,!1;case Zi:case Wi:return rA=3,!1}else if(isLength(eA)||isLengthPercentage(eA))return Array.isArray(rA)||(rA=[]),rA.push(eA),!1;return tA}),oA)),oA){var aA=parseColorStop(tA,eA);nA.push(aA)}})),{size:rA,shape:AA,stops:nA,position:iA,type:2}},isLinearGradient=function(tA){return 1===tA.type},isRadialGradient=function(tA){return 2===tA.type},ts={name:\"image\",parse:function(tA,eA){if(22===eA.type){var AA={url:eA.value,type:0};return tA.cache.addImage(eA.value),AA}if(18===eA.type){var rA=As[eA.name];if(void 0===rA)throw new Error('Attempting to parse an unsupported image function \"'+eA.name+'\"');return rA(tA,eA.values)}throw new Error(\"Unsupported image type \"+eA.type)}};function isSupportedImage(tA){return!(20===tA.type&&\"none\"===tA.value||18===tA.type&&!As[tA.name])}var es,As={\"linear-gradient\":linearGradient,\"-moz-linear-gradient\":prefixLinearGradient,\"-ms-linear-gradient\":prefixLinearGradient,\"-o-linear-gradient\":prefixLinearGradient,\"-webkit-linear-gradient\":prefixLinearGradient,\"radial-gradient\":radialGradient,\"-moz-radial-gradient\":prefixRadialGradient,\"-ms-radial-gradient\":prefixRadialGradient,\"-o-radial-gradient\":prefixRadialGradient,\"-webkit-radial-gradient\":prefixRadialGradient,\"-webkit-gradient\":webkitGradient},rs={name:\"background-image\",initialValue:\"none\",type:1,prefix:!1,parse:function(tA,eA){if(0===eA.length)return[];var AA=eA[0];return 20===AA.type&&\"none\"===AA.value?[]:eA.filter((function(tA){return nonFunctionArgSeparator(tA)&&isSupportedImage(tA)})).map((function(eA){return ts.parse(tA,eA)}))}},ns={name:\"background-origin\",initialValue:\"border-box\",prefix:!1,type:1,parse:function(tA,eA){return eA.map((function(tA){if(isIdentToken(tA))switch(tA.value){case\"padding-box\":return 1;case\"content-box\":return 2}return 0}))}},is={name:\"background-position\",initialValue:\"0% 0%\",type:1,prefix:!1,parse:function(tA,eA){return parseFunctionArgs(eA).map((function(tA){return tA.filter(isLengthPercentage)})).map(parseLengthPercentageTuple)}},ss={name:\"background-repeat\",initialValue:\"repeat\",prefix:!1,type:1,parse:function(tA,eA){return parseFunctionArgs(eA).map((function(tA){return tA.filter(isIdentToken).map((function(tA){return tA.value})).join(\" \")})).map(parseBackgroundRepeat)}},parseBackgroundRepeat=function(tA){switch(tA){case\"no-repeat\":return 1;case\"repeat-x\":case\"repeat no-repeat\":return 2;case\"repeat-y\":case\"no-repeat repeat\":return 3;default:return 0}};!function(tA){tA.AUTO=\"auto\",tA.CONTAIN=\"contain\",tA.COVER=\"cover\"}(es||(es={}));var os,as={name:\"background-size\",initialValue:\"0\",prefix:!1,type:1,parse:function(tA,eA){return parseFunctionArgs(eA).map((function(tA){return tA.filter(isBackgroundSizeInfoToken)}))}},isBackgroundSizeInfoToken=function(tA){return isIdentToken(tA)||isLengthPercentage(tA)},borderColorForSide=function(tA){return{name:\"border-\"+tA+\"-color\",initialValue:\"transparent\",prefix:!1,type:3,format:\"color\"}},ls=borderColorForSide(\"top\"),cs=borderColorForSide(\"right\"),us=borderColorForSide(\"bottom\"),hs=borderColorForSide(\"left\"),borderRadiusForSide=function(tA){return{name:\"border-radius-\"+tA,initialValue:\"0 0\",prefix:!1,type:1,parse:function(tA,eA){return parseLengthPercentageTuple(eA.filter(isLengthPercentage))}}},ds=borderRadiusForSide(\"top-left\"),fs=borderRadiusForSide(\"top-right\"),gs=borderRadiusForSide(\"bottom-right\"),ps=borderRadiusForSide(\"bottom-left\"),borderStyleForSide=function(tA){return{name:\"border-\"+tA+\"-style\",initialValue:\"solid\",prefix:!1,type:2,parse:function(tA,eA){switch(eA){case\"none\":return 0;case\"dashed\":return 2;case\"dotted\":return 3;case\"double\":return 4}return 1}}},ms=borderStyleForSide(\"top\"),ws=borderStyleForSide(\"right\"),ys=borderStyleForSide(\"bottom\"),Bs=borderStyleForSide(\"left\"),borderWidthForSide=function(tA){return{name:\"border-\"+tA+\"-width\",initialValue:\"0\",type:0,prefix:!1,parse:function(tA,eA){return isDimensionToken(eA)?eA.number:0}}},bs=borderWidthForSide(\"top\"),vs=borderWidthForSide(\"right\"),Cs=borderWidthForSide(\"bottom\"),Ss=borderWidthForSide(\"left\"),xs={name:\"color\",initialValue:\"transparent\",prefix:!1,type:3,format:\"color\"},Fs={name:\"direction\",initialValue:\"ltr\",prefix:!1,type:2,parse:function(tA,eA){return\"rtl\"===eA?1:0}},Es={name:\"display\",initialValue:\"inline-block\",prefix:!1,type:1,parse:function(tA,eA){return eA.filter(isIdentToken).reduce((function(tA,eA){return tA|parseDisplayValue(eA.value)}),0)}},parseDisplayValue=function(tA){switch(tA){case\"block\":case\"-webkit-box\":return 2;case\"inline\":return 4;case\"run-in\":return 8;case\"flow\":return 16;case\"flow-root\":return 32;case\"table\":return 64;case\"flex\":case\"-webkit-flex\":return 128;case\"grid\":case\"-ms-grid\":return 256;case\"ruby\":return 512;case\"subgrid\":return 1024;case\"list-item\":return 2048;case\"table-row-group\":return 4096;case\"table-header-group\":return 8192;case\"table-footer-group\":return 16384;case\"table-row\":return 32768;case\"table-cell\":return 65536;case\"table-column-group\":return 131072;case\"table-column\":return 262144;case\"table-caption\":return 524288;case\"ruby-base\":return 1048576;case\"ruby-text\":return 2097152;case\"ruby-base-container\":return 4194304;case\"ruby-text-container\":return 8388608;case\"contents\":return 16777216;case\"inline-block\":return 33554432;case\"inline-list-item\":return 67108864;case\"inline-table\":return 134217728;case\"inline-flex\":return 268435456;case\"inline-grid\":return 536870912}return 0},Qs={name:\"float\",initialValue:\"none\",prefix:!1,type:2,parse:function(tA,eA){switch(eA){case\"left\":return 1;case\"right\":return 2;case\"inline-start\":return 3;case\"inline-end\":return 4}return 0}},Us={name:\"letter-spacing\",initialValue:\"0\",prefix:!1,type:0,parse:function(tA,eA){return 20===eA.type&&\"normal\"===eA.value?0:17===eA.type||15===eA.type?eA.number:0}};!function(tA){tA.NORMAL=\"normal\",tA.STRICT=\"strict\"}(os||(os={}));var Ps,_s={name:\"line-break\",initialValue:\"normal\",prefix:!1,type:2,parse:function(tA,eA){return\"strict\"===eA?os.STRICT:os.NORMAL}},Ls={name:\"line-height\",initialValue:\"normal\",prefix:!1,type:4},computeLineHeight=function(tA,eA){return isIdentToken(tA)&&\"normal\"===tA.value?1.2*eA:17===tA.type?eA*tA.number:isLengthPercentage(tA)?getAbsoluteValue(tA,eA):eA},Is={name:\"list-style-image\",initialValue:\"none\",type:0,prefix:!1,parse:function(tA,eA){return 20===eA.type&&\"none\"===eA.value?null:ts.parse(tA,eA)}},Ns={name:\"list-style-position\",initialValue:\"outside\",prefix:!1,type:2,parse:function(tA,eA){return\"inside\"===eA?0:1}},Ts={name:\"list-style-type\",initialValue:\"none\",prefix:!1,type:2,parse:function(tA,eA){switch(eA){case\"disc\":return 0;case\"circle\":return 1;case\"square\":return 2;case\"decimal\":return 3;case\"cjk-decimal\":return 4;case\"decimal-leading-zero\":return 5;case\"lower-roman\":return 6;case\"upper-roman\":return 7;case\"lower-greek\":return 8;case\"lower-alpha\":return 9;case\"upper-alpha\":return 10;case\"arabic-indic\":return 11;case\"armenian\":return 12;case\"bengali\":return 13;case\"cambodian\":return 14;case\"cjk-earthly-branch\":return 15;case\"cjk-heavenly-stem\":return 16;case\"cjk-ideographic\":return 17;case\"devanagari\":return 18;case\"ethiopic-numeric\":return 19;case\"georgian\":return 20;case\"gujarati\":return 21;case\"gurmukhi\":case\"hebrew\":return 22;case\"hiragana\":return 23;case\"hiragana-iroha\":return 24;case\"japanese-formal\":return 25;case\"japanese-informal\":return 26;case\"kannada\":return 27;case\"katakana\":return 28;case\"katakana-iroha\":return 29;case\"khmer\":return 30;case\"korean-hangul-formal\":return 31;case\"korean-hanja-formal\":return 32;case\"korean-hanja-informal\":return 33;case\"lao\":return 34;case\"lower-armenian\":return 35;case\"malayalam\":return 36;case\"mongolian\":return 37;case\"myanmar\":return 38;case\"oriya\":return 39;case\"persian\":return 40;case\"simp-chinese-formal\":return 41;case\"simp-chinese-informal\":return 42;case\"tamil\":return 43;case\"telugu\":return 44;case\"thai\":return 45;case\"tibetan\":return 46;case\"trad-chinese-formal\":return 47;case\"trad-chinese-informal\":return 48;case\"upper-armenian\":return 49;case\"disclosure-open\":return 50;case\"disclosure-closed\":return 51;default:return-1}}},marginForSide=function(tA){return{name:\"margin-\"+tA,initialValue:\"0\",prefix:!1,type:4}},ks=marginForSide(\"top\"),Ms=marginForSide(\"right\"),Os=marginForSide(\"bottom\"),Hs=marginForSide(\"left\"),Ds={name:\"overflow\",initialValue:\"visible\",prefix:!1,type:1,parse:function(tA,eA){return eA.filter(isIdentToken).map((function(tA){switch(tA.value){case\"hidden\":return 1;case\"scroll\":return 2;case\"clip\":return 3;case\"auto\":return 4;default:return 0}}))}},Rs={name:\"overflow-wrap\",initialValue:\"normal\",prefix:!1,type:2,parse:function(tA,eA){return\"break-word\"===eA?\"break-word\":\"normal\"}},paddingForSide=function(tA){return{name:\"padding-\"+tA,initialValue:\"0\",prefix:!1,type:3,format:\"length-percentage\"}},Vs=paddingForSide(\"top\"),Gs=paddingForSide(\"right\"),js=paddingForSide(\"bottom\"),Ks=paddingForSide(\"left\"),qs={name:\"text-align\",initialValue:\"left\",prefix:!1,type:2,parse:function(tA,eA){switch(eA){case\"right\":return 2;case\"center\":case\"justify\":return 1;default:return 0}}},zs={name:\"position\",initialValue:\"static\",prefix:!1,type:2,parse:function(tA,eA){switch(eA){case\"relative\":return 1;case\"absolute\":return 2;case\"fixed\":return 3;case\"sticky\":return 4}return 0}},Xs={name:\"text-shadow\",initialValue:\"none\",type:1,prefix:!1,parse:function(tA,eA){return 1===eA.length&&isIdentWithValue(eA[0],\"none\")?[]:parseFunctionArgs(eA).map((function(eA){for(var AA={color:Gi.TRANSPARENT,offsetX:Ii,offsetY:Ii,blur:Ii},rA=0,nA=0;nA<eA.length;nA++){var iA=eA[nA];isLength(iA)?(0===rA?AA.offsetX=iA:1===rA?AA.offsetY=iA:AA.blur=iA,rA++):AA.color=Ri.parse(tA,iA)}return AA}))}},Ws={name:\"text-transform\",initialValue:\"none\",prefix:!1,type:2,parse:function(tA,eA){switch(eA){case\"uppercase\":return 2;case\"lowercase\":return 1;case\"capitalize\":return 3}return 0}},Ys={name:\"transform\",initialValue:\"none\",prefix:!0,type:0,parse:function(tA,eA){if(20===eA.type&&\"none\"===eA.value)return null;if(18===eA.type){var AA=Js[eA.name];if(void 0===AA)throw new Error('Attempting to parse an unsupported transform function \"'+eA.name+'\"');return AA(eA.values)}return null}},matrix=function(tA){var eA=tA.filter((function(tA){return 17===tA.type})).map((function(tA){return tA.number}));return 6===eA.length?eA:null},matrix3d=function(tA){var eA=tA.filter((function(tA){return 17===tA.type})).map((function(tA){return tA.number})),AA=eA[0],rA=eA[1];eA[2],eA[3];var nA=eA[4],iA=eA[5];eA[6],eA[7],eA[8],eA[9],eA[10],eA[11];var sA=eA[12],oA=eA[13];return eA[14],eA[15],16===eA.length?[AA,rA,nA,iA,sA,oA]:null},Js={matrix:matrix,matrix3d:matrix3d},Zs={type:16,number:50,flags:an},$s=[Zs,Zs],to={name:\"transform-origin\",initialValue:\"50% 50%\",prefix:!0,type:1,parse:function(tA,eA){var AA=eA.filter(isLengthPercentage);return 2!==AA.length?$s:[AA[0],AA[1]]}},eo={name:\"visible\",initialValue:\"none\",prefix:!1,type:2,parse:function(tA,eA){switch(eA){case\"hidden\":return 1;case\"collapse\":return 2;default:return 0}}};!function(tA){tA.NORMAL=\"normal\",tA.BREAK_ALL=\"break-all\",tA.KEEP_ALL=\"keep-all\"}(Ps||(Ps={}));for(var Ao={name:\"word-break\",initialValue:\"normal\",prefix:!1,type:2,parse:function(tA,eA){switch(eA){case\"break-all\":return Ps.BREAK_ALL;case\"keep-all\":return Ps.KEEP_ALL;default:return Ps.NORMAL}}},ro={name:\"z-index\",initialValue:\"auto\",prefix:!1,type:0,parse:function(tA,eA){if(20===eA.type)return{auto:!0,order:0};if(isNumberToken(eA))return{auto:!1,order:eA.number};throw new Error(\"Invalid z-index number parsed\")}},no={name:\"time\",parse:function(tA,eA){if(15===eA.type)switch(eA.unit.toLowerCase()){case\"s\":return 1e3*eA.number;case\"ms\":return eA.number}throw new Error(\"Unsupported time type\")}},io={name:\"opacity\",initialValue:\"1\",type:0,prefix:!1,parse:function(tA,eA){return isNumberToken(eA)?eA.number:1}},so={name:\"text-decoration-color\",initialValue:\"transparent\",prefix:!1,type:3,format:\"color\"},oo={name:\"text-decoration-line\",initialValue:\"none\",prefix:!1,type:1,parse:function(tA,eA){return eA.filter(isIdentToken).map((function(tA){switch(tA.value){case\"underline\":return 1;case\"overline\":return 2;case\"line-through\":return 3;case\"none\":return 4}return 0})).filter((function(tA){return 0!==tA}))}},ao={name:\"font-family\",initialValue:\"\",prefix:!1,type:1,parse:function(tA,eA){var AA=[],rA=[];return eA.forEach((function(tA){switch(tA.type){case 20:case 0:AA.push(tA.value);break;case 17:AA.push(tA.number.toString());break;case 4:rA.push(AA.join(\" \")),AA.length=0}})),AA.length&&rA.push(AA.join(\" \")),rA.map((function(tA){return-1===tA.indexOf(\" \")?tA:\"'\"+tA+\"'\"}))}},lo={name:\"font-size\",initialValue:\"0\",prefix:!1,type:3,format:\"length\"},co={name:\"font-weight\",initialValue:\"normal\",type:0,prefix:!1,parse:function(tA,eA){return isNumberToken(eA)?eA.number:isIdentToken(eA)&&\"bold\"===eA.value?700:400}},uo={name:\"font-variant\",initialValue:\"none\",type:1,prefix:!1,parse:function(tA,eA){return eA.filter(isIdentToken).map((function(tA){return tA.value}))}},ho={name:\"font-style\",initialValue:\"normal\",prefix:!1,type:2,parse:function(tA,eA){switch(eA){case\"oblique\":return\"oblique\";case\"italic\":return\"italic\";default:return\"normal\"}}},contains=function(tA,eA){return 0!=(tA&eA)},fo={name:\"content\",initialValue:\"none\",type:1,prefix:!1,parse:function(tA,eA){if(0===eA.length)return[];var AA=eA[0];return 20===AA.type&&\"none\"===AA.value?[]:eA}},go={name:\"counter-increment\",initialValue:\"none\",prefix:!0,type:1,parse:function(tA,eA){if(0===eA.length)return null;var AA=eA[0];if(20===AA.type&&\"none\"===AA.value)return null;for(var rA=[],nA=eA.filter(nonWhiteSpace),iA=0;iA<nA.length;iA++){var sA=nA[iA],oA=nA[iA+1];if(20===sA.type){var aA=oA&&isNumberToken(oA)?oA.number:1;rA.push({counter:sA.value,increment:aA})}}return rA}},po={name:\"counter-reset\",initialValue:\"none\",prefix:!0,type:1,parse:function(tA,eA){if(0===eA.length)return[];for(var AA=[],rA=eA.filter(nonWhiteSpace),nA=0;nA<rA.length;nA++){var iA=rA[nA],sA=rA[nA+1];if(isIdentToken(iA)&&\"none\"!==iA.value){var oA=sA&&isNumberToken(sA)?sA.number:0;AA.push({counter:iA.value,reset:oA})}}return AA}},mo={name:\"duration\",initialValue:\"0s\",prefix:!1,type:1,parse:function(tA,eA){return eA.filter(isDimensionToken).map((function(eA){return no.parse(tA,eA)}))}},wo={name:\"quotes\",initialValue:\"none\",prefix:!0,type:1,parse:function(tA,eA){if(0===eA.length)return null;var AA=eA[0];if(20===AA.type&&\"none\"===AA.value)return null;var rA=[],nA=eA.filter(isStringToken);if(nA.length%2!=0)return null;for(var iA=0;iA<nA.length;iA+=2){var sA=nA[iA].value,oA=nA[iA+1].value;rA.push({open:sA,close:oA})}return rA}},getQuote=function(tA,eA,AA){if(!tA)return\"\";var rA=tA[Math.min(eA,tA.length-1)];return rA?AA?rA.open:rA.close:\"\"},yo={name:\"box-shadow\",initialValue:\"none\",type:1,prefix:!1,parse:function(tA,eA){return 1===eA.length&&isIdentWithValue(eA[0],\"none\")?[]:parseFunctionArgs(eA).map((function(eA){for(var AA={color:255,offsetX:Ii,offsetY:Ii,blur:Ii,spread:Ii,inset:!1},rA=0,nA=0;nA<eA.length;nA++){var iA=eA[nA];isIdentWithValue(iA,\"inset\")?AA.inset=!0:isLength(iA)?(0===rA?AA.offsetX=iA:1===rA?AA.offsetY=iA:2===rA?AA.blur=iA:AA.spread=iA,rA++):AA.color=Ri.parse(tA,iA)}return AA}))}},Bo={name:\"paint-order\",initialValue:\"normal\",prefix:!1,type:1,parse:function(tA,eA){var AA=[0,1,2],rA=[];return eA.filter(isIdentToken).forEach((function(tA){switch(tA.value){case\"stroke\":rA.push(1);break;case\"fill\":rA.push(0);break;case\"markers\":rA.push(2)}})),AA.forEach((function(tA){-1===rA.indexOf(tA)&&rA.push(tA)})),rA}},bo={name:\"-webkit-text-stroke-color\",initialValue:\"currentcolor\",prefix:!1,type:3,format:\"color\"},vo={name:\"-webkit-text-stroke-width\",initialValue:\"0\",type:0,prefix:!1,parse:function(tA,eA){return isDimensionToken(eA)?eA.number:0}},Co=function(){function CSSParsedDeclaration(tA,eA){var AA,rA;this.animationDuration=parse(tA,mo,eA.animationDuration),this.backgroundClip=parse(tA,ji,eA.backgroundClip),this.backgroundColor=parse(tA,Ki,eA.backgroundColor),this.backgroundImage=parse(tA,rs,eA.backgroundImage),this.backgroundOrigin=parse(tA,ns,eA.backgroundOrigin),this.backgroundPosition=parse(tA,is,eA.backgroundPosition),this.backgroundRepeat=parse(tA,ss,eA.backgroundRepeat),this.backgroundSize=parse(tA,as,eA.backgroundSize),this.borderTopColor=parse(tA,ls,eA.borderTopColor),this.borderRightColor=parse(tA,cs,eA.borderRightColor),this.borderBottomColor=parse(tA,us,eA.borderBottomColor),this.borderLeftColor=parse(tA,hs,eA.borderLeftColor),this.borderTopLeftRadius=parse(tA,ds,eA.borderTopLeftRadius),this.borderTopRightRadius=parse(tA,fs,eA.borderTopRightRadius),this.borderBottomRightRadius=parse(tA,gs,eA.borderBottomRightRadius),this.borderBottomLeftRadius=parse(tA,ps,eA.borderBottomLeftRadius),this.borderTopStyle=parse(tA,ms,eA.borderTopStyle),this.borderRightStyle=parse(tA,ws,eA.borderRightStyle),this.borderBottomStyle=parse(tA,ys,eA.borderBottomStyle),this.borderLeftStyle=parse(tA,Bs,eA.borderLeftStyle),this.borderTopWidth=parse(tA,bs,eA.borderTopWidth),this.borderRightWidth=parse(tA,vs,eA.borderRightWidth),this.borderBottomWidth=parse(tA,Cs,eA.borderBottomWidth),this.borderLeftWidth=parse(tA,Ss,eA.borderLeftWidth),this.boxShadow=parse(tA,yo,eA.boxShadow),this.color=parse(tA,xs,eA.color),this.direction=parse(tA,Fs,eA.direction),this.display=parse(tA,Es,eA.display),this.float=parse(tA,Qs,eA.cssFloat),this.fontFamily=parse(tA,ao,eA.fontFamily),this.fontSize=parse(tA,lo,eA.fontSize),this.fontStyle=parse(tA,ho,eA.fontStyle),this.fontVariant=parse(tA,uo,eA.fontVariant),this.fontWeight=parse(tA,co,eA.fontWeight),this.letterSpacing=parse(tA,Us,eA.letterSpacing),this.lineBreak=parse(tA,_s,eA.lineBreak),this.lineHeight=parse(tA,Ls,eA.lineHeight),this.listStyleImage=parse(tA,Is,eA.listStyleImage),this.listStylePosition=parse(tA,Ns,eA.listStylePosition),this.listStyleType=parse(tA,Ts,eA.listStyleType),this.marginTop=parse(tA,ks,eA.marginTop),this.marginRight=parse(tA,Ms,eA.marginRight),this.marginBottom=parse(tA,Os,eA.marginBottom),this.marginLeft=parse(tA,Hs,eA.marginLeft),this.opacity=parse(tA,io,eA.opacity);var nA=parse(tA,Ds,eA.overflow);this.overflowX=nA[0],this.overflowY=nA[nA.length>1?1:0],this.overflowWrap=parse(tA,Rs,eA.overflowWrap),this.paddingTop=parse(tA,Vs,eA.paddingTop),this.paddingRight=parse(tA,Gs,eA.paddingRight),this.paddingBottom=parse(tA,js,eA.paddingBottom),this.paddingLeft=parse(tA,Ks,eA.paddingLeft),this.paintOrder=parse(tA,Bo,eA.paintOrder),this.position=parse(tA,zs,eA.position),this.textAlign=parse(tA,qs,eA.textAlign),this.textDecorationColor=parse(tA,so,null!==(AA=eA.textDecorationColor)&&void 0!==AA?AA:eA.color),this.textDecorationLine=parse(tA,oo,null!==(rA=eA.textDecorationLine)&&void 0!==rA?rA:eA.textDecoration),this.textShadow=parse(tA,Xs,eA.textShadow),this.textTransform=parse(tA,Ws,eA.textTransform),this.transform=parse(tA,Ys,eA.transform),this.transformOrigin=parse(tA,to,eA.transformOrigin),this.visibility=parse(tA,eo,eA.visibility),this.webkitTextStrokeColor=parse(tA,bo,eA.webkitTextStrokeColor),this.webkitTextStrokeWidth=parse(tA,vo,eA.webkitTextStrokeWidth),this.wordBreak=parse(tA,Ao,eA.wordBreak),this.zIndex=parse(tA,ro,eA.zIndex)}return CSSParsedDeclaration.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},CSSParsedDeclaration.prototype.isTransparent=function(){return isTransparent(this.backgroundColor)},CSSParsedDeclaration.prototype.isTransformed=function(){return null!==this.transform},CSSParsedDeclaration.prototype.isPositioned=function(){return 0!==this.position},CSSParsedDeclaration.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},CSSParsedDeclaration.prototype.isFloating=function(){return 0!==this.float},CSSParsedDeclaration.prototype.isInlineLevel=function(){return contains(this.display,4)||contains(this.display,33554432)||contains(this.display,268435456)||contains(this.display,536870912)||contains(this.display,67108864)||contains(this.display,134217728)},CSSParsedDeclaration}(),So=function(){function CSSParsedPseudoDeclaration(tA,eA){this.content=parse(tA,fo,eA.content),this.quotes=parse(tA,wo,eA.quotes)}return CSSParsedPseudoDeclaration}(),xo=function(){function CSSParsedCounterDeclaration(tA,eA){this.counterIncrement=parse(tA,go,eA.counterIncrement),this.counterReset=parse(tA,po,eA.counterReset)}return CSSParsedCounterDeclaration}(),parse=function(tA,eA,AA){var rA=new _i,nA=null!=AA?AA.toString():eA.initialValue;rA.write(nA);var iA=new Li(rA.read());switch(eA.type){case 2:var sA=iA.parseComponentValue();return eA.parse(tA,isIdentToken(sA)?sA.value:eA.initialValue);case 0:return eA.parse(tA,iA.parseComponentValue());case 1:return eA.parse(tA,iA.parseComponentValues());case 4:return iA.parseComponentValue();case 3:switch(eA.format){case\"angle\":return Di.parse(tA,iA.parseComponentValue());case\"color\":return Ri.parse(tA,iA.parseComponentValue());case\"image\":return ts.parse(tA,iA.parseComponentValue());case\"length\":var oA=iA.parseComponentValue();return isLength(oA)?oA:Ii;case\"length-percentage\":var aA=iA.parseComponentValue();return isLengthPercentage(aA)?aA:Ii;case\"time\":return no.parse(tA,iA.parseComponentValue())}}},Fo=\"data-html2canvas-debug\",getElementDebugType=function(tA){switch(tA.getAttribute(Fo)){case\"all\":return 1;case\"clone\":return 2;case\"parse\":return 3;case\"render\":return 4;default:return 0}},isDebugging=function(tA,eA){var AA=getElementDebugType(tA);return 1===AA||eA===AA},Eo=function(){function ElementContainer(tA,eA){this.context=tA,this.textNodes=[],this.elements=[],this.flags=0,isDebugging(eA,3),this.styles=new Co(tA,window.getComputedStyle(eA,null)),isHTMLElementNode(eA)&&(this.styles.animationDuration.some((function(tA){return tA>0}))&&(eA.style.animationDuration=\"0s\"),null!==this.styles.transform&&(eA.style.transform=\"none\")),this.bounds=parseBounds(this.context,eA),isDebugging(eA,4)&&(this.flags|=16)}return ElementContainer}(),Qo=\"AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=\",Uo=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",Po=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),_o=0;_o<Uo.length;_o++)Po[Uo.charCodeAt(_o)]=_o;for(var decode=function(tA){var eA,AA,rA,nA,iA,sA=.75*tA.length,oA=tA.length,aA=0;\"=\"===tA[tA.length-1]&&(sA--,\"=\"===tA[tA.length-2]&&sA--);var lA=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(sA):new Array(sA),cA=Array.isArray(lA)?lA:new Uint8Array(lA);for(eA=0;eA<oA;eA+=4)AA=Po[tA.charCodeAt(eA)],rA=Po[tA.charCodeAt(eA+1)],nA=Po[tA.charCodeAt(eA+2)],iA=Po[tA.charCodeAt(eA+3)],cA[aA++]=AA<<2|rA>>4,cA[aA++]=(15&rA)<<4|nA>>2,cA[aA++]=(3&nA)<<6|63&iA;return lA},polyUint16Array=function(tA){for(var eA=tA.length,AA=[],rA=0;rA<eA;rA+=2)AA.push(tA[rA+1]<<8|tA[rA]);return AA},polyUint32Array=function(tA){for(var eA=tA.length,AA=[],rA=0;rA<eA;rA+=4)AA.push(tA[rA+3]<<24|tA[rA+2]<<16|tA[rA+1]<<8|tA[rA]);return AA},Lo=5,Io=11,No=2,To=65536>>Lo,ko=(1<<Lo)-1,Mo=To+(1024>>Lo)+32,Oo=65536>>Io,Ho=(1<<Io-Lo)-1,slice16=function(tA,eA,AA){return tA.slice?tA.slice(eA,AA):new Uint16Array(Array.prototype.slice.call(tA,eA,AA))},slice32=function(tA,eA,AA){return tA.slice?tA.slice(eA,AA):new Uint32Array(Array.prototype.slice.call(tA,eA,AA))},createTrieFromBase64=function(tA,eA){var AA=decode(tA),rA=Array.isArray(AA)?polyUint32Array(AA):new Uint32Array(AA),nA=Array.isArray(AA)?polyUint16Array(AA):new Uint16Array(AA),iA=24,sA=slice16(nA,iA/2,rA[4]/2),oA=2===rA[5]?slice16(nA,(iA+rA[4])/2):slice32(rA,Math.ceil((iA+rA[4])/4));return new Do(rA[0],rA[1],rA[2],rA[3],sA,oA)},Do=function(){function Trie(tA,eA,AA,rA,nA,iA){this.initialValue=tA,this.errorValue=eA,this.highStart=AA,this.highValueIndex=rA,this.index=nA,this.data=iA}return Trie.prototype.get=function(tA){var eA;if(tA>=0){if(tA<55296||tA>56319&&tA<=65535)return eA=((eA=this.index[tA>>Lo])<<No)+(tA&ko),this.data[eA];if(tA<=65535)return eA=((eA=this.index[To+(tA-55296>>Lo)])<<No)+(tA&ko),this.data[eA];if(tA<this.highStart)return eA=Mo-Oo+(tA>>Io),eA=this.index[eA],eA+=tA>>Lo&Ho,eA=((eA=this.index[eA])<<No)+(tA&ko),this.data[eA];if(tA<=1114111)return this.data[this.highValueIndex]}return this.errorValue},Trie}(),Ro=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",Vo=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),Go=0;Go<Ro.length;Go++)Vo[Ro.charCodeAt(Go)]=Go;var jo,Ko=1,qo=2,zo=3,Xo=4,Wo=5,Yo=7,Jo=8,Zo=9,$o=10,ta=11,ea=12,Aa=13,ra=14,na=15,toCodePoints=function(tA){for(var eA=[],AA=0,rA=tA.length;AA<rA;){var nA=tA.charCodeAt(AA++);if(nA>=55296&&nA<=56319&&AA<rA){var iA=tA.charCodeAt(AA++);56320==(64512&iA)?eA.push(((1023&nA)<<10)+(1023&iA)+65536):(eA.push(nA),AA--)}else eA.push(nA)}return eA},fromCodePoint=function(){for(var tA=[],eA=0;eA<arguments.length;eA++)tA[eA]=arguments[eA];if(String.fromCodePoint)return String.fromCodePoint.apply(String,tA);var AA=tA.length;if(!AA)return\"\";for(var rA=[],nA=-1,iA=\"\";++nA<AA;){var sA=tA[nA];sA<=65535?rA.push(sA):(sA-=65536,rA.push(55296+(sA>>10),sA%1024+56320)),(nA+1===AA||rA.length>16384)&&(iA+=String.fromCharCode.apply(String,rA),rA.length=0)}return iA},ia=createTrieFromBase64(Qo),sa=\"×\",oa=\"÷\",codePointToClass=function(tA){return ia.get(tA)},_graphemeBreakAtIndex=function(tA,eA,AA){var rA=AA-2,nA=eA[rA],iA=eA[AA-1],sA=eA[AA];if(iA===qo&&sA===zo)return sa;if(iA===qo||iA===zo||iA===Xo)return oa;if(sA===qo||sA===zo||sA===Xo)return oa;if(iA===Jo&&-1!==[Jo,Zo,ta,ea].indexOf(sA))return sa;if(!(iA!==ta&&iA!==Zo||sA!==Zo&&sA!==$o))return sa;if((iA===ea||iA===$o)&&sA===$o)return sa;if(sA===Aa||sA===Wo)return sa;if(sA===Yo)return sa;if(iA===Ko)return sa;if(iA===Aa&&sA===ra){for(;nA===Wo;)nA=eA[--rA];if(nA===ra)return sa}if(iA===na&&sA===na){for(var oA=0;nA===na;)oA++,nA=eA[--rA];if(oA%2==0)return sa}return oa},GraphemeBreaker=function(tA){var eA=toCodePoints(tA),AA=eA.length,rA=0,nA=0,iA=eA.map(codePointToClass);return{next:function(){if(rA>=AA)return{done:!0,value:null};for(var tA=sa;rA<AA&&(tA=_graphemeBreakAtIndex(eA,iA,++rA))===sa;);if(tA!==sa||rA===AA){var sA=fromCodePoint.apply(null,eA.slice(nA,rA));return nA=rA,{value:sA,done:!1}}return{done:!0,value:null}}}},splitGraphemes=function(tA){for(var eA,AA=GraphemeBreaker(tA),rA=[];!(eA=AA.next()).done;)eA.value&&rA.push(eA.value.slice());return rA},testRangeBounds=function(tA){var eA=123;if(tA.createRange){var AA=tA.createRange();if(AA.getBoundingClientRect){var rA=tA.createElement(\"boundtest\");rA.style.height=eA+\"px\",rA.style.display=\"block\",tA.body.appendChild(rA),AA.selectNode(rA);var nA=AA.getBoundingClientRect(),iA=Math.round(nA.height);if(tA.body.removeChild(rA),iA===eA)return!0}}return!1},testIOSLineBreak=function(tA){var eA=tA.createElement(\"boundtest\");eA.style.width=\"50px\",eA.style.display=\"block\",eA.style.fontSize=\"12px\",eA.style.letterSpacing=\"0px\",eA.style.wordSpacing=\"0px\",tA.body.appendChild(eA);var AA=tA.createRange();eA.innerHTML=\"function\"==typeof\"\".repeat?\"&#128104;\".repeat(10):\"\";var rA=eA.firstChild,nA=toCodePoints$1(rA.data).map((function(tA){return fromCodePoint$1(tA)})),iA=0,sA={},oA=nA.every((function(tA,eA){AA.setStart(rA,iA),AA.setEnd(rA,iA+tA.length);var nA=AA.getBoundingClientRect();iA+=tA.length;var oA=nA.x>sA.x||nA.y>sA.y;return sA=nA,0===eA||oA}));return tA.body.removeChild(eA),oA},testCORS=function(){return void 0!==(new Image).crossOrigin},testResponseType=function(){return\"string\"==typeof(new XMLHttpRequest).responseType},testSVG=function(tA){var eA=new Image,AA=tA.createElement(\"canvas\"),rA=AA.getContext(\"2d\");if(!rA)return!1;eA.src=\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";try{rA.drawImage(eA,0,0),AA.toDataURL()}catch(tA){return!1}return!0},isGreenPixel=function(tA){return 0===tA[0]&&255===tA[1]&&0===tA[2]&&255===tA[3]},testForeignObject=function(tA){var eA=tA.createElement(\"canvas\"),AA=100;eA.width=AA,eA.height=AA;var rA=eA.getContext(\"2d\");if(!rA)return Promise.reject(!1);rA.fillStyle=\"rgb(0, 255, 0)\",rA.fillRect(0,0,AA,AA);var nA=new Image,iA=eA.toDataURL();nA.src=iA;var sA=createForeignObjectSVG(AA,AA,0,0,nA);return rA.fillStyle=\"red\",rA.fillRect(0,0,AA,AA),loadSerializedSVG$1(sA).then((function(eA){rA.drawImage(eA,0,0);var nA=rA.getImageData(0,0,AA,AA).data;rA.fillStyle=\"red\",rA.fillRect(0,0,AA,AA);var sA=tA.createElement(\"div\");return sA.style.backgroundImage=\"url(\"+iA+\")\",sA.style.height=AA+\"px\",isGreenPixel(nA)?loadSerializedSVG$1(createForeignObjectSVG(AA,AA,0,0,sA)):Promise.reject(!1)})).then((function(tA){return rA.drawImage(tA,0,0),isGreenPixel(rA.getImageData(0,0,AA,AA).data)})).catch((function(){return!1}))},createForeignObjectSVG=function(tA,eA,AA,rA,nA){var iA=\"http://www.w3.org/2000/svg\",sA=document.createElementNS(iA,\"svg\"),oA=document.createElementNS(iA,\"foreignObject\");return sA.setAttributeNS(null,\"width\",tA.toString()),sA.setAttributeNS(null,\"height\",eA.toString()),oA.setAttributeNS(null,\"width\",\"100%\"),oA.setAttributeNS(null,\"height\",\"100%\"),oA.setAttributeNS(null,\"x\",AA.toString()),oA.setAttributeNS(null,\"y\",rA.toString()),oA.setAttributeNS(null,\"externalResourcesRequired\",\"true\"),sA.appendChild(oA),oA.appendChild(nA),sA},loadSerializedSVG$1=function(tA){return new Promise((function(eA,AA){var rA=new Image;rA.onload=function(){return eA(rA)},rA.onerror=AA,rA.src=\"data:image/svg+xml;charset=utf-8,\"+encodeURIComponent((new XMLSerializer).serializeToString(tA))}))},aa={get SUPPORT_RANGE_BOUNDS(){var tA=testRangeBounds(document);return Object.defineProperty(aa,\"SUPPORT_RANGE_BOUNDS\",{value:tA}),tA},get SUPPORT_WORD_BREAKING(){var tA=aa.SUPPORT_RANGE_BOUNDS&&testIOSLineBreak(document);return Object.defineProperty(aa,\"SUPPORT_WORD_BREAKING\",{value:tA}),tA},get SUPPORT_SVG_DRAWING(){var tA=testSVG(document);return Object.defineProperty(aa,\"SUPPORT_SVG_DRAWING\",{value:tA}),tA},get SUPPORT_FOREIGNOBJECT_DRAWING(){var tA=\"function\"==typeof Array.from&&\"function\"==typeof window.fetch?testForeignObject(document):Promise.resolve(!1);return Object.defineProperty(aa,\"SUPPORT_FOREIGNOBJECT_DRAWING\",{value:tA}),tA},get SUPPORT_CORS_IMAGES(){var tA=testCORS();return Object.defineProperty(aa,\"SUPPORT_CORS_IMAGES\",{value:tA}),tA},get SUPPORT_RESPONSE_TYPE(){var tA=testResponseType();return Object.defineProperty(aa,\"SUPPORT_RESPONSE_TYPE\",{value:tA}),tA},get SUPPORT_CORS_XHR(){var tA=\"withCredentials\"in new XMLHttpRequest;return Object.defineProperty(aa,\"SUPPORT_CORS_XHR\",{value:tA}),tA},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var tA=!(\"undefined\"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(aa,\"SUPPORT_NATIVE_TEXT_SEGMENTATION\",{value:tA}),tA}},la=function(){function TextBounds(tA,eA){this.text=tA,this.bounds=eA}return TextBounds}(),parseTextBounds=function(eA,AA,rA,nA){var iA=breakText(AA,rA),sA=[],oA=0;return iA.forEach((function(AA){if(rA.textDecorationLine.length||AA.trim().length>0)if(aa.SUPPORT_RANGE_BOUNDS){var iA=createRange(nA,oA,AA.length).getClientRects();if(iA.length>1){var aA=segmentGraphemes(AA),lA=0;aA.forEach((function(AA){sA.push(new la(AA,tA.fromDOMRectList(eA,createRange(nA,lA+oA,AA.length).getClientRects()))),lA+=AA.length}))}else sA.push(new la(AA,tA.fromDOMRectList(eA,iA)))}else{var cA=nA.splitText(AA.length);sA.push(new la(AA,getWrapperBounds(eA,nA))),nA=cA}else aa.SUPPORT_RANGE_BOUNDS||(nA=nA.splitText(AA.length));oA+=AA.length})),sA},getWrapperBounds=function(eA,AA){var rA=AA.ownerDocument;if(rA){var nA=rA.createElement(\"html2canvaswrapper\");nA.appendChild(AA.cloneNode(!0));var iA=AA.parentNode;if(iA){iA.replaceChild(nA,AA);var sA=parseBounds(eA,nA);return nA.firstChild&&iA.replaceChild(nA.firstChild,nA),sA}}return tA.EMPTY},createRange=function(tA,eA,AA){var rA=tA.ownerDocument;if(!rA)throw new Error(\"Node has no owner document\");var nA=rA.createRange();return nA.setStart(tA,eA),nA.setEnd(tA,eA+AA),nA},segmentGraphemes=function(tA){if(aa.SUPPORT_NATIVE_TEXT_SEGMENTATION){var eA=new Intl.Segmenter(void 0,{granularity:\"grapheme\"});return Array.from(eA.segment(tA)).map((function(tA){return tA.segment}))}return splitGraphemes(tA)},segmentWords=function(tA,eA){if(aa.SUPPORT_NATIVE_TEXT_SEGMENTATION){var AA=new Intl.Segmenter(void 0,{granularity:\"word\"});return Array.from(AA.segment(tA)).map((function(tA){return tA.segment}))}return breakWords(tA,eA)},breakText=function(tA,eA){return 0!==eA.letterSpacing?segmentGraphemes(tA):segmentWords(tA,eA)},ca=[32,160,4961,65792,65793,4153,4241],breakWords=function(tA,eA){for(var AA,rA=LineBreaker(tA,{lineBreak:eA.lineBreak,wordBreak:\"break-word\"===eA.overflowWrap?\"break-word\":eA.wordBreak}),nA=[],_loop_1=function(){if(AA.value){var tA=AA.value.slice(),eA=toCodePoints$1(tA),rA=\"\";eA.forEach((function(tA){-1===ca.indexOf(tA)?rA+=fromCodePoint$1(tA):(rA.length&&nA.push(rA),nA.push(fromCodePoint$1(tA)),rA=\"\")})),rA.length&&nA.push(rA)}};!(AA=rA.next()).done;)_loop_1();return nA},ua=function(){function TextContainer(tA,eA,AA){this.text=transform(eA.data,AA.textTransform),this.textBounds=parseTextBounds(tA,this.text,AA,eA)}return TextContainer}(),transform=function(tA,eA){switch(eA){case 1:return tA.toLowerCase();case 3:return tA.replace(ha,capitalize);case 2:return tA.toUpperCase();default:return tA}},ha=/(^|\\s|:|-|\\(|\\))([a-z])/g,capitalize=function(tA,eA,AA){return tA.length>0?eA+AA.toUpperCase():tA},da=function(tA){function ImageElementContainer(eA,AA){var rA=tA.call(this,eA,AA)||this;return rA.src=AA.currentSrc||AA.src,rA.intrinsicWidth=AA.naturalWidth,rA.intrinsicHeight=AA.naturalHeight,rA.context.cache.addImage(rA.src),rA}return __extends(ImageElementContainer,tA),ImageElementContainer}(Eo),fa=function(tA){function CanvasElementContainer(eA,AA){var rA=tA.call(this,eA,AA)||this;return rA.canvas=AA,rA.intrinsicWidth=AA.width,rA.intrinsicHeight=AA.height,rA}return __extends(CanvasElementContainer,tA),CanvasElementContainer}(Eo),ga=function(tA){function SVGElementContainer(eA,AA){var rA=tA.call(this,eA,AA)||this,nA=new XMLSerializer,iA=parseBounds(eA,AA);return AA.setAttribute(\"width\",iA.width+\"px\"),AA.setAttribute(\"height\",iA.height+\"px\"),rA.svg=\"data:image/svg+xml,\"+encodeURIComponent(nA.serializeToString(AA)),rA.intrinsicWidth=AA.width.baseVal.value,rA.intrinsicHeight=AA.height.baseVal.value,rA.context.cache.addImage(rA.svg),rA}return __extends(SVGElementContainer,tA),SVGElementContainer}(Eo),pa=function(tA){function LIElementContainer(eA,AA){var rA=tA.call(this,eA,AA)||this;return rA.value=AA.value,rA}return __extends(LIElementContainer,tA),LIElementContainer}(Eo),ma=function(tA){function OLElementContainer(eA,AA){var rA=tA.call(this,eA,AA)||this;return rA.start=AA.start,rA.reversed=\"boolean\"==typeof AA.reversed&&!0===AA.reversed,rA}return __extends(OLElementContainer,tA),OLElementContainer}(Eo),wa=[{type:15,flags:0,unit:\"px\",number:3}],ya=[{type:16,flags:0,number:50}],reformatInputBounds=function(eA){return eA.width>eA.height?new tA(eA.left+(eA.width-eA.height)/2,eA.top,eA.height,eA.height):eA.width<eA.height?new tA(eA.left,eA.top+(eA.height-eA.width)/2,eA.width,eA.width):eA},getInputValue=function(tA){var eA=tA.type===va?new Array(tA.value.length+1).join(\"•\"):tA.value;return 0===eA.length?tA.placeholder||\"\":eA},Ba=\"checkbox\",ba=\"radio\",va=\"password\",Ca=707406591,Sa=function(tA){function InputElementContainer(eA,AA){var rA=tA.call(this,eA,AA)||this;switch(rA.type=AA.type.toLowerCase(),rA.checked=AA.checked,rA.value=getInputValue(AA),rA.type!==Ba&&rA.type!==ba||(rA.styles.backgroundColor=3739148031,rA.styles.borderTopColor=rA.styles.borderRightColor=rA.styles.borderBottomColor=rA.styles.borderLeftColor=2779096575,rA.styles.borderTopWidth=rA.styles.borderRightWidth=rA.styles.borderBottomWidth=rA.styles.borderLeftWidth=1,rA.styles.borderTopStyle=rA.styles.borderRightStyle=rA.styles.borderBottomStyle=rA.styles.borderLeftStyle=1,rA.styles.backgroundClip=[0],rA.styles.backgroundOrigin=[0],rA.bounds=reformatInputBounds(rA.bounds)),rA.type){case Ba:rA.styles.borderTopRightRadius=rA.styles.borderTopLeftRadius=rA.styles.borderBottomRightRadius=rA.styles.borderBottomLeftRadius=wa;break;case ba:rA.styles.borderTopRightRadius=rA.styles.borderTopLeftRadius=rA.styles.borderBottomRightRadius=rA.styles.borderBottomLeftRadius=ya}return rA}return __extends(InputElementContainer,tA),InputElementContainer}(Eo),xa=function(tA){function SelectElementContainer(eA,AA){var rA=tA.call(this,eA,AA)||this,nA=AA.options[AA.selectedIndex||0];return rA.value=nA&&nA.text||\"\",rA}return __extends(SelectElementContainer,tA),SelectElementContainer}(Eo),Fa=function(tA){function TextareaElementContainer(eA,AA){var rA=tA.call(this,eA,AA)||this;return rA.value=AA.value,rA}return __extends(TextareaElementContainer,tA),TextareaElementContainer}(Eo),Ea=function(tA){function IFrameElementContainer(eA,AA){var rA=tA.call(this,eA,AA)||this;rA.src=AA.src,rA.width=parseInt(AA.width,10)||0,rA.height=parseInt(AA.height,10)||0,rA.backgroundColor=rA.styles.backgroundColor;try{if(AA.contentWindow&&AA.contentWindow.document&&AA.contentWindow.document.documentElement){rA.tree=parseTree(eA,AA.contentWindow.document.documentElement);var nA=AA.contentWindow.document.documentElement?parseColor(eA,getComputedStyle(AA.contentWindow.document.documentElement).backgroundColor):Gi.TRANSPARENT,iA=AA.contentWindow.document.body?parseColor(eA,getComputedStyle(AA.contentWindow.document.body).backgroundColor):Gi.TRANSPARENT;rA.backgroundColor=isTransparent(nA)?isTransparent(iA)?rA.styles.backgroundColor:iA:nA}}catch(tA){}return rA}return __extends(IFrameElementContainer,tA),IFrameElementContainer}(Eo),Qa=[\"OL\",\"UL\",\"MENU\"],parseNodeTree=function(tA,eA,AA,rA){for(var nA=eA.firstChild,iA=void 0;nA;nA=iA)if(iA=nA.nextSibling,isTextNode(nA)&&nA.data.trim().length>0)AA.textNodes.push(new ua(tA,nA,AA.styles));else if(isElementNode(nA))if(isSlotElement(nA)&&nA.assignedNodes)nA.assignedNodes().forEach((function(eA){return parseNodeTree(tA,eA,AA,rA)}));else{var sA=createContainer(tA,nA);sA.styles.isVisible()&&(createsRealStackingContext(nA,sA,rA)?sA.flags|=4:createsStackingContext(sA.styles)&&(sA.flags|=2),-1!==Qa.indexOf(nA.tagName)&&(sA.flags|=8),AA.elements.push(sA),nA.slot,nA.shadowRoot?parseNodeTree(tA,nA.shadowRoot,sA,rA):isTextareaElement(nA)||isSVGElement(nA)||isSelectElement(nA)||parseNodeTree(tA,nA,sA,rA))}},createContainer=function(tA,eA){return isImageElement(eA)?new da(tA,eA):isCanvasElement(eA)?new fa(tA,eA):isSVGElement(eA)?new ga(tA,eA):isLIElement(eA)?new pa(tA,eA):isOLElement(eA)?new ma(tA,eA):isInputElement(eA)?new Sa(tA,eA):isSelectElement(eA)?new xa(tA,eA):isTextareaElement(eA)?new Fa(tA,eA):isIFrameElement(eA)?new Ea(tA,eA):new Eo(tA,eA)},parseTree=function(tA,eA){var AA=createContainer(tA,eA);return AA.flags|=4,parseNodeTree(tA,eA,AA,AA),AA},createsRealStackingContext=function(tA,eA,AA){return eA.styles.isPositionedWithZIndex()||eA.styles.opacity<1||eA.styles.isTransformed()||isBodyElement(tA)&&AA.styles.isTransparent()},createsStackingContext=function(tA){return tA.isPositioned()||tA.isFloating()},isTextNode=function(tA){return tA.nodeType===Node.TEXT_NODE},isElementNode=function(tA){return tA.nodeType===Node.ELEMENT_NODE},isHTMLElementNode=function(tA){return isElementNode(tA)&&void 0!==tA.style&&!isSVGElementNode(tA)},isSVGElementNode=function(tA){return\"object\"==typeof tA.className},isLIElement=function(tA){return\"LI\"===tA.tagName},isOLElement=function(tA){return\"OL\"===tA.tagName},isInputElement=function(tA){return\"INPUT\"===tA.tagName},isHTMLElement=function(tA){return\"HTML\"===tA.tagName},isSVGElement=function(tA){return\"svg\"===tA.tagName},isBodyElement=function(tA){return\"BODY\"===tA.tagName},isCanvasElement=function(tA){return\"CANVAS\"===tA.tagName},isVideoElement=function(tA){return\"VIDEO\"===tA.tagName},isImageElement=function(tA){return\"IMG\"===tA.tagName},isIFrameElement=function(tA){return\"IFRAME\"===tA.tagName},isStyleElement=function(tA){return\"STYLE\"===tA.tagName},isScriptElement=function(tA){return\"SCRIPT\"===tA.tagName},isTextareaElement=function(tA){return\"TEXTAREA\"===tA.tagName},isSelectElement=function(tA){return\"SELECT\"===tA.tagName},isSlotElement=function(tA){return\"SLOT\"===tA.tagName},isCustomElement=function(tA){return tA.tagName.indexOf(\"-\")>0},Ua=function(){function CounterState(){this.counters={}}return CounterState.prototype.getCounterValue=function(tA){var eA=this.counters[tA];return eA&&eA.length?eA[eA.length-1]:1},CounterState.prototype.getCounterValues=function(tA){var eA=this.counters[tA];return eA||[]},CounterState.prototype.pop=function(tA){var eA=this;tA.forEach((function(tA){return eA.counters[tA].pop()}))},CounterState.prototype.parse=function(tA){var eA=this,AA=tA.counterIncrement,rA=tA.counterReset,nA=!0;null!==AA&&AA.forEach((function(tA){var AA=eA.counters[tA.counter];AA&&0!==tA.increment&&(nA=!1,AA.length||AA.push(1),AA[Math.max(0,AA.length-1)]+=tA.increment)}));var iA=[];return nA&&rA.forEach((function(tA){var AA=eA.counters[tA.counter];iA.push(tA.counter),AA||(AA=eA.counters[tA.counter]=[]),AA.push(tA.reset)})),iA},CounterState}(),Pa={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:[\"M\",\"CM\",\"D\",\"CD\",\"C\",\"XC\",\"L\",\"XL\",\"X\",\"IX\",\"V\",\"IV\",\"I\"]},_a={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:[\"Ք\",\"Փ\",\"Ւ\",\"Ց\",\"Ր\",\"Տ\",\"Վ\",\"Ս\",\"Ռ\",\"Ջ\",\"Պ\",\"Չ\",\"Ո\",\"Շ\",\"Ն\",\"Յ\",\"Մ\",\"Ճ\",\"Ղ\",\"Ձ\",\"Հ\",\"Կ\",\"Ծ\",\"Խ\",\"Լ\",\"Ի\",\"Ժ\",\"Թ\",\"Ը\",\"Է\",\"Զ\",\"Ե\",\"Դ\",\"Գ\",\"Բ\",\"Ա\"]},La={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:[\"י׳\",\"ט׳\",\"ח׳\",\"ז׳\",\"ו׳\",\"ה׳\",\"ד׳\",\"ג׳\",\"ב׳\",\"א׳\",\"ת\",\"ש\",\"ר\",\"ק\",\"צ\",\"פ\",\"ע\",\"ס\",\"נ\",\"מ\",\"ל\",\"כ\",\"יט\",\"יח\",\"יז\",\"טז\",\"טו\",\"י\",\"ט\",\"ח\",\"ז\",\"ו\",\"ה\",\"ד\",\"ג\",\"ב\",\"א\"]},Ia={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:[\"ჵ\",\"ჰ\",\"ჯ\",\"ჴ\",\"ხ\",\"ჭ\",\"წ\",\"ძ\",\"ც\",\"ჩ\",\"შ\",\"\",\"ღ\",\"ქ\",\"ფ\",\"ჳ\",\"ტ\",\"ს\",\"რ\",\"ჟ\",\"პ\",\"ო\",\"ჲ\",\"ნ\",\"მ\",\"ლ\",\"კ\",\"ი\",\"თ\",\"ჱ\",\"ზ\",\"ვ\",\"ე\",\"დ\",\"გ\",\"ბ\",\"ა\"]},createAdditiveCounter=function(tA,eA,AA,rA,nA,iA){return tA<eA||tA>AA?createCounterText(tA,nA,iA.length>0):rA.integers.reduce((function(eA,AA,nA){for(;tA>=AA;)tA-=AA,eA+=rA.values[nA];return eA}),\"\")+iA},createCounterStyleWithSymbolResolver=function(tA,eA,AA,rA){var nA=\"\";do{AA||tA--,nA=rA(tA)+nA,tA/=eA}while(tA*eA>=eA);return nA},createCounterStyleFromRange=function(tA,eA,AA,rA,nA){var iA=AA-eA+1;return(tA<0?\"-\":\"\")+(createCounterStyleWithSymbolResolver(Math.abs(tA),iA,rA,(function(tA){return fromCodePoint$1(Math.floor(tA%iA)+eA)}))+nA)},createCounterStyleFromSymbols=function(tA,eA,AA){void 0===AA&&(AA=\". \");var rA=eA.length;return createCounterStyleWithSymbolResolver(Math.abs(tA),rA,!1,(function(tA){return eA[Math.floor(tA%rA)]}))+AA},Na=1,Ta=2,ka=4,Ma=8,createCJKCounter=function(tA,eA,AA,rA,nA,iA){if(tA<-9999||tA>9999)return createCounterText(tA,4,nA.length>0);var sA=Math.abs(tA),oA=nA;if(0===sA)return eA[0]+oA;for(var aA=0;sA>0&&aA<=4;aA++){var lA=sA%10;0===lA&&contains(iA,Na)&&\"\"!==oA?oA=eA[lA]+oA:lA>1||1===lA&&0===aA||1===lA&&1===aA&&contains(iA,Ta)||1===lA&&1===aA&&contains(iA,ka)&&tA>100||1===lA&&aA>1&&contains(iA,Ma)?oA=eA[lA]+(aA>0?AA[aA-1]:\"\")+oA:1===lA&&aA>0&&(oA=AA[aA-1]+oA),sA=Math.floor(sA/10)}return(tA<0?rA:\"\")+oA},Oa=\"十百千萬\",Ha=\"拾佰仟萬\",Da=\"マイナス\",Ra=\"마이너스\",createCounterText=function(tA,eA,AA){var rA=AA?\". \":\"\",nA=AA?\"、\":\"\",iA=AA?\", \":\"\",sA=AA?\" \":\"\";switch(eA){case 0:return\"•\"+sA;case 1:return\"◦\"+sA;case 2:return\"◾\"+sA;case 5:var oA=createCounterStyleFromRange(tA,48,57,!0,rA);return oA.length<4?\"0\"+oA:oA;case 4:return createCounterStyleFromSymbols(tA,\"〇一二三四五六七八九\",nA);case 6:return createAdditiveCounter(tA,1,3999,Pa,3,rA).toLowerCase();case 7:return createAdditiveCounter(tA,1,3999,Pa,3,rA);case 8:return createCounterStyleFromRange(tA,945,969,!1,rA);case 9:return createCounterStyleFromRange(tA,97,122,!1,rA);case 10:return createCounterStyleFromRange(tA,65,90,!1,rA);case 11:return createCounterStyleFromRange(tA,1632,1641,!0,rA);case 12:case 49:return createAdditiveCounter(tA,1,9999,_a,3,rA);case 35:return createAdditiveCounter(tA,1,9999,_a,3,rA).toLowerCase();case 13:return createCounterStyleFromRange(tA,2534,2543,!0,rA);case 14:case 30:return createCounterStyleFromRange(tA,6112,6121,!0,rA);case 15:return createCounterStyleFromSymbols(tA,\"子丑寅卯辰巳午未申酉戌亥\",nA);case 16:return createCounterStyleFromSymbols(tA,\"甲乙丙丁戊己庚辛壬癸\",nA);case 17:case 48:return createCJKCounter(tA,\"零一二三四五六七八九\",Oa,\"負\",nA,Ta|ka|Ma);case 47:return createCJKCounter(tA,\"零壹貳參肆伍陸柒捌玖\",Ha,\"負\",nA,Na|Ta|ka|Ma);case 42:return createCJKCounter(tA,\"零一二三四五六七八九\",Oa,\"负\",nA,Ta|ka|Ma);case 41:return createCJKCounter(tA,\"零壹贰叁肆伍陆柒捌玖\",Ha,\"负\",nA,Na|Ta|ka|Ma);case 26:return createCJKCounter(tA,\"〇一二三四五六七八九\",\"十百千万\",Da,nA,0);case 25:return createCJKCounter(tA,\"零壱弐参四伍六七八九\",\"拾百千万\",Da,nA,Na|Ta|ka);case 31:return createCJKCounter(tA,\"영일이삼사오육칠팔구\",\"십백천만\",Ra,iA,Na|Ta|ka);case 33:return createCJKCounter(tA,\"零一二三四五六七八九\",\"十百千萬\",Ra,iA,0);case 32:return createCJKCounter(tA,\"零壹貳參四五六七八九\",\"拾百千\",Ra,iA,Na|Ta|ka);case 18:return createCounterStyleFromRange(tA,2406,2415,!0,rA);case 20:return createAdditiveCounter(tA,1,19999,Ia,3,rA);case 21:return createCounterStyleFromRange(tA,2790,2799,!0,rA);case 22:return createCounterStyleFromRange(tA,2662,2671,!0,rA);case 22:return createAdditiveCounter(tA,1,10999,La,3,rA);case 23:return createCounterStyleFromSymbols(tA,\"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん\");case 24:return createCounterStyleFromSymbols(tA,\"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす\");case 27:return createCounterStyleFromRange(tA,3302,3311,!0,rA);case 28:return createCounterStyleFromSymbols(tA,\"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン\",nA);case 29:return createCounterStyleFromSymbols(tA,\"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス\",nA);case 34:return createCounterStyleFromRange(tA,3792,3801,!0,rA);case 37:return createCounterStyleFromRange(tA,6160,6169,!0,rA);case 38:return createCounterStyleFromRange(tA,4160,4169,!0,rA);case 39:return createCounterStyleFromRange(tA,2918,2927,!0,rA);case 40:return createCounterStyleFromRange(tA,1776,1785,!0,rA);case 43:return createCounterStyleFromRange(tA,3046,3055,!0,rA);case 44:return createCounterStyleFromRange(tA,3174,3183,!0,rA);case 45:return createCounterStyleFromRange(tA,3664,3673,!0,rA);case 46:return createCounterStyleFromRange(tA,3872,3881,!0,rA);default:return createCounterStyleFromRange(tA,48,57,!0,rA)}},Va=\"data-html2canvas-ignore\",Ga=function(){function DocumentCloner(tA,eA,AA){if(this.context=tA,this.options=AA,this.scrolledElements=[],this.referenceElement=eA,this.counters=new Ua,this.quoteDepth=0,!eA.ownerDocument)throw new Error(\"Cloned element does not have an owner document\");this.documentElement=this.cloneNode(eA.ownerDocument.documentElement,!1)}return DocumentCloner.prototype.toIFrame=function(tA,eA){var AA=this,rA=createIFrameContainer(tA,eA);if(!rA.contentWindow)return Promise.reject(\"Unable to find iframe window\");var nA=tA.defaultView.pageXOffset,iA=tA.defaultView.pageYOffset,sA=rA.contentWindow,oA=sA.document,aA=iframeLoader(rA).then((function(){return __awaiter(AA,void 0,void 0,(function(){var tA,AA;return __generator(this,(function(nA){switch(nA.label){case 0:return this.scrolledElements.forEach(restoreNodeScroll),sA&&(sA.scrollTo(eA.left,eA.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||sA.scrollY===eA.top&&sA.scrollX===eA.left||(this.context.logger.warn(\"Unable to restore scroll position for cloned document\"),this.context.windowBounds=this.context.windowBounds.add(sA.scrollX-eA.left,sA.scrollY-eA.top,0,0))),tA=this.options.onclone,void 0===(AA=this.clonedReferenceElement)?[2,Promise.reject(\"Error finding the \"+this.referenceElement.nodeName+\" in the cloned document\")]:oA.fonts&&oA.fonts.ready?[4,oA.fonts.ready]:[3,2];case 1:nA.sent(),nA.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,imagesReady(oA)]:[3,4];case 3:nA.sent(),nA.label=4;case 4:return\"function\"==typeof tA?[2,Promise.resolve().then((function(){return tA(oA,AA)})).then((function(){return rA}))]:[2,rA]}}))}))}));return oA.open(),oA.write(serializeDoctype(document.doctype)+\"<html></html>\"),restoreOwnerScroll(this.referenceElement.ownerDocument,nA,iA),oA.replaceChild(oA.adoptNode(this.documentElement),oA.documentElement),oA.close(),aA},DocumentCloner.prototype.createElementClone=function(tA){if(isDebugging(tA,2),isCanvasElement(tA))return this.createCanvasClone(tA);if(isVideoElement(tA))return this.createVideoClone(tA);if(isStyleElement(tA))return this.createStyleClone(tA);var eA=tA.cloneNode(!1);return isImageElement(eA)&&(isImageElement(tA)&&tA.currentSrc&&tA.currentSrc!==tA.src&&(eA.src=tA.currentSrc,eA.srcset=\"\"),\"lazy\"===eA.loading&&(eA.loading=\"eager\")),isCustomElement(eA)?this.createCustomElementClone(eA):eA},DocumentCloner.prototype.createCustomElementClone=function(tA){var eA=document.createElement(\"html2canvascustomelement\");return copyCSSStyles(tA.style,eA),eA},DocumentCloner.prototype.createStyleClone=function(tA){try{var eA=tA.sheet;if(eA&&eA.cssRules){var AA=[].slice.call(eA.cssRules,0).reduce((function(tA,eA){return eA&&\"string\"==typeof eA.cssText?tA+eA.cssText:tA}),\"\"),rA=tA.cloneNode(!1);return rA.textContent=AA,rA}}catch(tA){if(this.context.logger.error(\"Unable to access cssRules property\",tA),\"SecurityError\"!==tA.name)throw tA}return tA.cloneNode(!1)},DocumentCloner.prototype.createCanvasClone=function(tA){var eA;if(this.options.inlineImages&&tA.ownerDocument){var AA=tA.ownerDocument.createElement(\"img\");try{return AA.src=tA.toDataURL(),AA}catch(eA){this.context.logger.info(\"Unable to inline canvas contents, canvas is tainted\",tA)}}var rA=tA.cloneNode(!1);try{rA.width=tA.width,rA.height=tA.height;var nA=tA.getContext(\"2d\"),iA=rA.getContext(\"2d\");if(iA)if(!this.options.allowTaint&&nA)iA.putImageData(nA.getImageData(0,0,tA.width,tA.height),0,0);else{var sA=null!==(eA=tA.getContext(\"webgl2\"))&&void 0!==eA?eA:tA.getContext(\"webgl\");if(sA){var oA=sA.getContextAttributes();!1===(null==oA?void 0:oA.preserveDrawingBuffer)&&this.context.logger.warn(\"Unable to clone WebGL context as it has preserveDrawingBuffer=false\",tA)}iA.drawImage(tA,0,0)}return rA}catch(eA){this.context.logger.info(\"Unable to clone canvas as it is tainted\",tA)}return rA},DocumentCloner.prototype.createVideoClone=function(tA){var eA=tA.ownerDocument.createElement(\"canvas\");eA.width=tA.offsetWidth,eA.height=tA.offsetHeight;var AA=eA.getContext(\"2d\");try{return AA&&(AA.drawImage(tA,0,0,eA.width,eA.height),this.options.allowTaint||AA.getImageData(0,0,eA.width,eA.height)),eA}catch(eA){this.context.logger.info(\"Unable to clone video as it is tainted\",tA)}var rA=tA.ownerDocument.createElement(\"canvas\");return rA.width=tA.offsetWidth,rA.height=tA.offsetHeight,rA},DocumentCloner.prototype.appendChildNode=function(tA,eA,AA){isElementNode(eA)&&(isScriptElement(eA)||eA.hasAttribute(Va)||\"function\"==typeof this.options.ignoreElements&&this.options.ignoreElements(eA))||this.options.copyStyles&&isElementNode(eA)&&isStyleElement(eA)||tA.appendChild(this.cloneNode(eA,AA))},DocumentCloner.prototype.cloneChildNodes=function(tA,eA,AA){for(var rA=this,nA=tA.shadowRoot?tA.shadowRoot.firstChild:tA.firstChild;nA;nA=nA.nextSibling)if(isElementNode(nA)&&isSlotElement(nA)&&\"function\"==typeof nA.assignedNodes){var iA=nA.assignedNodes();iA.length&&iA.forEach((function(tA){return rA.appendChildNode(eA,tA,AA)}))}else this.appendChildNode(eA,nA,AA)},DocumentCloner.prototype.cloneNode=function(tA,eA){if(isTextNode(tA))return document.createTextNode(tA.data);if(!tA.ownerDocument)return tA.cloneNode(!1);var AA=tA.ownerDocument.defaultView;if(AA&&isElementNode(tA)&&(isHTMLElementNode(tA)||isSVGElementNode(tA))){var rA=this.createElementClone(tA);rA.style.transitionProperty=\"none\";var nA=AA.getComputedStyle(tA),iA=AA.getComputedStyle(tA,\":before\"),sA=AA.getComputedStyle(tA,\":after\");this.referenceElement===tA&&isHTMLElementNode(rA)&&(this.clonedReferenceElement=rA),isBodyElement(rA)&&createPseudoHideStyles(rA);var oA=this.counters.parse(new xo(this.context,nA)),aA=this.resolvePseudoContent(tA,rA,iA,jo.BEFORE);isCustomElement(tA)&&(eA=!0),isVideoElement(tA)||this.cloneChildNodes(tA,rA,eA),aA&&rA.insertBefore(aA,rA.firstChild);var lA=this.resolvePseudoContent(tA,rA,sA,jo.AFTER);return lA&&rA.appendChild(lA),this.counters.pop(oA),(nA&&(this.options.copyStyles||isSVGElementNode(tA))&&!isIFrameElement(tA)||eA)&&copyCSSStyles(nA,rA),0===tA.scrollTop&&0===tA.scrollLeft||this.scrolledElements.push([rA,tA.scrollLeft,tA.scrollTop]),(isTextareaElement(tA)||isSelectElement(tA))&&(isTextareaElement(rA)||isSelectElement(rA))&&(rA.value=tA.value),rA}return tA.cloneNode(!1)},DocumentCloner.prototype.resolvePseudoContent=function(tA,eA,AA,rA){var nA=this;if(AA){var iA=AA.content,sA=eA.ownerDocument;if(sA&&iA&&\"none\"!==iA&&\"-moz-alt-content\"!==iA&&\"none\"!==AA.display){this.counters.parse(new xo(this.context,AA));var oA=new So(this.context,AA),aA=sA.createElement(\"html2canvaspseudoelement\");copyCSSStyles(AA,aA),oA.content.forEach((function(eA){if(0===eA.type)aA.appendChild(sA.createTextNode(eA.value));else if(22===eA.type){var AA=sA.createElement(\"img\");AA.src=eA.value,AA.style.opacity=\"1\",aA.appendChild(AA)}else if(18===eA.type){if(\"attr\"===eA.name){var rA=eA.values.filter(isIdentToken);rA.length&&aA.appendChild(sA.createTextNode(tA.getAttribute(rA[0].value)||\"\"))}else if(\"counter\"===eA.name){var iA=eA.values.filter(nonFunctionArgSeparator),lA=iA[0],cA=iA[1];if(lA&&isIdentToken(lA)){var uA=nA.counters.getCounterValue(lA.value),hA=cA&&isIdentToken(cA)?Ts.parse(nA.context,cA.value):3;aA.appendChild(sA.createTextNode(createCounterText(uA,hA,!1)))}}else if(\"counters\"===eA.name){var dA=eA.values.filter(nonFunctionArgSeparator),fA=(lA=dA[0],dA[1]);if(cA=dA[2],lA&&isIdentToken(lA)){var gA=nA.counters.getCounterValues(lA.value),pA=cA&&isIdentToken(cA)?Ts.parse(nA.context,cA.value):3,mA=fA&&0===fA.type?fA.value:\"\",wA=gA.map((function(tA){return createCounterText(tA,pA,!1)})).join(mA);aA.appendChild(sA.createTextNode(wA))}}}else if(20===eA.type)switch(eA.value){case\"open-quote\":aA.appendChild(sA.createTextNode(getQuote(oA.quotes,nA.quoteDepth++,!0)));break;case\"close-quote\":aA.appendChild(sA.createTextNode(getQuote(oA.quotes,--nA.quoteDepth,!1)));break;default:aA.appendChild(sA.createTextNode(eA.value))}})),aA.className=Xa+\" \"+Wa;var lA=rA===jo.BEFORE?\" \"+Xa:\" \"+Wa;return isSVGElementNode(eA)?eA.className.baseValue+=lA:eA.className+=lA,aA}}},DocumentCloner.destroy=function(tA){return!!tA.parentNode&&(tA.parentNode.removeChild(tA),!0)},DocumentCloner}();!function(tA){tA[tA.BEFORE=0]=\"BEFORE\",tA[tA.AFTER=1]=\"AFTER\"}(jo||(jo={}));var ja,createIFrameContainer=function(tA,eA){var AA=tA.createElement(\"iframe\");return AA.className=\"html2canvas-container\",AA.style.visibility=\"hidden\",AA.style.position=\"fixed\",AA.style.left=\"-10000px\",AA.style.top=\"0px\",AA.style.border=\"0\",AA.width=eA.width.toString(),AA.height=eA.height.toString(),AA.scrolling=\"no\",AA.setAttribute(Va,\"true\"),tA.body.appendChild(AA),AA},imageReady=function(tA){return new Promise((function(eA){tA.complete?eA():tA.src?(tA.onload=eA,tA.onerror=eA):eA()}))},imagesReady=function(tA){return Promise.all([].slice.call(tA.images,0).map(imageReady))},iframeLoader=function(tA){return new Promise((function(eA,AA){var rA=tA.contentWindow;if(!rA)return AA(\"No window assigned for iframe\");var nA=rA.document;rA.onload=tA.onload=function(){rA.onload=tA.onload=null;var AA=setInterval((function(){nA.body.childNodes.length>0&&\"complete\"===nA.readyState&&(clearInterval(AA),eA(tA))}),50)}}))},Ka=[\"all\",\"d\",\"content\"],copyCSSStyles=function(tA,eA){for(var AA=tA.length-1;AA>=0;AA--){var rA=tA.item(AA);-1===Ka.indexOf(rA)&&eA.style.setProperty(rA,tA.getPropertyValue(rA))}return eA},serializeDoctype=function(tA){var eA=\"\";return tA&&(eA+=\"<!DOCTYPE \",tA.name&&(eA+=tA.name),tA.internalSubset&&(eA+=tA.internalSubset),tA.publicId&&(eA+='\"'+tA.publicId+'\"'),tA.systemId&&(eA+='\"'+tA.systemId+'\"'),eA+=\">\"),eA},restoreOwnerScroll=function(tA,eA,AA){tA&&tA.defaultView&&(eA!==tA.defaultView.pageXOffset||AA!==tA.defaultView.pageYOffset)&&tA.defaultView.scrollTo(eA,AA)},restoreNodeScroll=function(tA){var eA=tA[0],AA=tA[1],rA=tA[2];eA.scrollLeft=AA,eA.scrollTop=rA},qa=\":before\",za=\":after\",Xa=\"___html2canvas___pseudoelement_before\",Wa=\"___html2canvas___pseudoelement_after\",Ya='{\\n content: \"\" !important;\\n display: none !important;\\n}',createPseudoHideStyles=function(tA){createStyles(tA,\".\"+Xa+qa+Ya+\"\\n .\"+Wa+za+Ya)},createStyles=function(tA,eA){var AA=tA.ownerDocument;if(AA){var rA=AA.createElement(\"style\");rA.textContent=eA,tA.appendChild(rA)}},Ja=function(){function CacheStorage(){}return CacheStorage.getOrigin=function(tA){var eA=CacheStorage._link;return eA?(eA.href=tA,eA.href=eA.href,eA.protocol+eA.hostname+eA.port):\"about:blank\"},CacheStorage.isSameOrigin=function(tA){return CacheStorage.getOrigin(tA)===CacheStorage._origin},CacheStorage.setContext=function(tA){CacheStorage._link=tA.document.createElement(\"a\"),CacheStorage._origin=CacheStorage.getOrigin(tA.location.href)},CacheStorage._origin=\"about:blank\",CacheStorage}(),Za=function(){function Cache(tA,eA){this.context=tA,this._options=eA,this._cache={}}return Cache.prototype.addImage=function(tA){var eA=Promise.resolve();return this.has(tA)?eA:isBlobImage(tA)||isRenderable(tA)?((this._cache[tA]=this.loadImage(tA)).catch((function(){})),eA):eA},Cache.prototype.match=function(tA){return this._cache[tA]},Cache.prototype.loadImage=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA=this;return __generator(this,(function(sA){switch(sA.label){case 0:return eA=Ja.isSameOrigin(tA),AA=!isInlineImage(tA)&&!0===this._options.useCORS&&aa.SUPPORT_CORS_IMAGES&&!eA,rA=!isInlineImage(tA)&&!eA&&!isBlobImage(tA)&&\"string\"==typeof this._options.proxy&&aa.SUPPORT_CORS_XHR&&!AA,eA||!1!==this._options.allowTaint||isInlineImage(tA)||isBlobImage(tA)||rA||AA?(nA=tA,rA?[4,this.proxy(nA)]:[3,2]):[2];case 1:nA=sA.sent(),sA.label=2;case 2:return this.context.logger.debug(\"Added image \"+tA.substring(0,256)),[4,new Promise((function(tA,eA){var rA=new Image;rA.onload=function(){return tA(rA)},rA.onerror=eA,(isInlineBase64Image(nA)||AA)&&(rA.crossOrigin=\"anonymous\"),rA.src=nA,!0===rA.complete&&setTimeout((function(){return tA(rA)}),500),iA._options.imageTimeout>0&&setTimeout((function(){return eA(\"Timed out (\"+iA._options.imageTimeout+\"ms) loading image\")}),iA._options.imageTimeout)}))];case 3:return[2,sA.sent()]}}))}))},Cache.prototype.has=function(tA){return void 0!==this._cache[tA]},Cache.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},Cache.prototype.proxy=function(tA){var eA=this,AA=this._options.proxy;if(!AA)throw new Error(\"No proxy defined\");var rA=tA.substring(0,256);return new Promise((function(nA,iA){var sA=aa.SUPPORT_RESPONSE_TYPE?\"blob\":\"text\",oA=new XMLHttpRequest;oA.onload=function(){if(200===oA.status)if(\"text\"===sA)nA(oA.response);else{var tA=new FileReader;tA.addEventListener(\"load\",(function(){return nA(tA.result)}),!1),tA.addEventListener(\"error\",(function(tA){return iA(tA)}),!1),tA.readAsDataURL(oA.response)}else iA(\"Failed to proxy resource \"+rA+\" with status code \"+oA.status)},oA.onerror=iA;var aA=AA.indexOf(\"?\")>-1?\"&\":\"?\";if(oA.open(\"GET\",\"\"+AA+aA+\"url=\"+encodeURIComponent(tA)+\"&responseType=\"+sA),\"text\"!==sA&&oA instanceof XMLHttpRequest&&(oA.responseType=sA),eA._options.imageTimeout){var lA=eA._options.imageTimeout;oA.timeout=lA,oA.ontimeout=function(){return iA(\"Timed out (\"+lA+\"ms) proxying \"+rA)}}oA.send()}))},Cache}(),$a=/^data:image\\/svg\\+xml/i,tl=/^data:image\\/.*;base64,/i,el=/^data:image\\/.*/i,isRenderable=function(tA){return aa.SUPPORT_SVG_DRAWING||!isSVG(tA)},isInlineImage=function(tA){return el.test(tA)},isInlineBase64Image=function(tA){return tl.test(tA)},isBlobImage=function(tA){return\"blob\"===tA.substr(0,4)},isSVG=function(tA){return\"svg\"===tA.substr(-3).toLowerCase()||$a.test(tA)},Al=function(){function Vector(tA,eA){this.type=0,this.x=tA,this.y=eA}return Vector.prototype.add=function(tA,eA){return new Vector(this.x+tA,this.y+eA)},Vector}(),lerp=function(tA,eA,AA){return new Al(tA.x+(eA.x-tA.x)*AA,tA.y+(eA.y-tA.y)*AA)},rl=function(){function BezierCurve(tA,eA,AA,rA){this.type=1,this.start=tA,this.startControl=eA,this.endControl=AA,this.end=rA}return BezierCurve.prototype.subdivide=function(tA,eA){var AA=lerp(this.start,this.startControl,tA),rA=lerp(this.startControl,this.endControl,tA),nA=lerp(this.endControl,this.end,tA),iA=lerp(AA,rA,tA),sA=lerp(rA,nA,tA),oA=lerp(iA,sA,tA);return eA?new BezierCurve(this.start,AA,iA,oA):new BezierCurve(oA,sA,nA,this.end)},BezierCurve.prototype.add=function(tA,eA){return new BezierCurve(this.start.add(tA,eA),this.startControl.add(tA,eA),this.endControl.add(tA,eA),this.end.add(tA,eA))},BezierCurve.prototype.reverse=function(){return new BezierCurve(this.end,this.endControl,this.startControl,this.start)},BezierCurve}(),isBezierCurve=function(tA){return 1===tA.type},nl=function(){function BoundCurves(tA){var eA=tA.styles,AA=tA.bounds,rA=getAbsoluteValueForTuple(eA.borderTopLeftRadius,AA.width,AA.height),nA=rA[0],iA=rA[1],sA=getAbsoluteValueForTuple(eA.borderTopRightRadius,AA.width,AA.height),oA=sA[0],aA=sA[1],lA=getAbsoluteValueForTuple(eA.borderBottomRightRadius,AA.width,AA.height),cA=lA[0],uA=lA[1],hA=getAbsoluteValueForTuple(eA.borderBottomLeftRadius,AA.width,AA.height),dA=hA[0],fA=hA[1],gA=[];gA.push((nA+oA)/AA.width),gA.push((dA+cA)/AA.width),gA.push((iA+fA)/AA.height),gA.push((aA+uA)/AA.height);var pA=Math.max.apply(Math,gA);pA>1&&(nA/=pA,iA/=pA,oA/=pA,aA/=pA,cA/=pA,uA/=pA,dA/=pA,fA/=pA);var mA=AA.width-oA,wA=AA.height-uA,yA=AA.width-cA,BA=AA.height-fA,bA=eA.borderTopWidth,vA=eA.borderRightWidth,CA=eA.borderBottomWidth,SA=eA.borderLeftWidth,xA=getAbsoluteValue(eA.paddingTop,tA.bounds.width),FA=getAbsoluteValue(eA.paddingRight,tA.bounds.width),EA=getAbsoluteValue(eA.paddingBottom,tA.bounds.width),QA=getAbsoluteValue(eA.paddingLeft,tA.bounds.width);this.topLeftBorderDoubleOuterBox=nA>0||iA>0?getCurvePoints(AA.left+SA/3,AA.top+bA/3,nA-SA/3,iA-bA/3,ja.TOP_LEFT):new Al(AA.left+SA/3,AA.top+bA/3),this.topRightBorderDoubleOuterBox=nA>0||iA>0?getCurvePoints(AA.left+mA,AA.top+bA/3,oA-vA/3,aA-bA/3,ja.TOP_RIGHT):new Al(AA.left+AA.width-vA/3,AA.top+bA/3),this.bottomRightBorderDoubleOuterBox=cA>0||uA>0?getCurvePoints(AA.left+yA,AA.top+wA,cA-vA/3,uA-CA/3,ja.BOTTOM_RIGHT):new Al(AA.left+AA.width-vA/3,AA.top+AA.height-CA/3),this.bottomLeftBorderDoubleOuterBox=dA>0||fA>0?getCurvePoints(AA.left+SA/3,AA.top+BA,dA-SA/3,fA-CA/3,ja.BOTTOM_LEFT):new Al(AA.left+SA/3,AA.top+AA.height-CA/3),this.topLeftBorderDoubleInnerBox=nA>0||iA>0?getCurvePoints(AA.left+2*SA/3,AA.top+2*bA/3,nA-2*SA/3,iA-2*bA/3,ja.TOP_LEFT):new Al(AA.left+2*SA/3,AA.top+2*bA/3),this.topRightBorderDoubleInnerBox=nA>0||iA>0?getCurvePoints(AA.left+mA,AA.top+2*bA/3,oA-2*vA/3,aA-2*bA/3,ja.TOP_RIGHT):new Al(AA.left+AA.width-2*vA/3,AA.top+2*bA/3),this.bottomRightBorderDoubleInnerBox=cA>0||uA>0?getCurvePoints(AA.left+yA,AA.top+wA,cA-2*vA/3,uA-2*CA/3,ja.BOTTOM_RIGHT):new Al(AA.left+AA.width-2*vA/3,AA.top+AA.height-2*CA/3),this.bottomLeftBorderDoubleInnerBox=dA>0||fA>0?getCurvePoints(AA.left+2*SA/3,AA.top+BA,dA-2*SA/3,fA-2*CA/3,ja.BOTTOM_LEFT):new Al(AA.left+2*SA/3,AA.top+AA.height-2*CA/3),this.topLeftBorderStroke=nA>0||iA>0?getCurvePoints(AA.left+SA/2,AA.top+bA/2,nA-SA/2,iA-bA/2,ja.TOP_LEFT):new Al(AA.left+SA/2,AA.top+bA/2),this.topRightBorderStroke=nA>0||iA>0?getCurvePoints(AA.left+mA,AA.top+bA/2,oA-vA/2,aA-bA/2,ja.TOP_RIGHT):new Al(AA.left+AA.width-vA/2,AA.top+bA/2),this.bottomRightBorderStroke=cA>0||uA>0?getCurvePoints(AA.left+yA,AA.top+wA,cA-vA/2,uA-CA/2,ja.BOTTOM_RIGHT):new Al(AA.left+AA.width-vA/2,AA.top+AA.height-CA/2),this.bottomLeftBorderStroke=dA>0||fA>0?getCurvePoints(AA.left+SA/2,AA.top+BA,dA-SA/2,fA-CA/2,ja.BOTTOM_LEFT):new Al(AA.left+SA/2,AA.top+AA.height-CA/2),this.topLeftBorderBox=nA>0||iA>0?getCurvePoints(AA.left,AA.top,nA,iA,ja.TOP_LEFT):new Al(AA.left,AA.top),this.topRightBorderBox=oA>0||aA>0?getCurvePoints(AA.left+mA,AA.top,oA,aA,ja.TOP_RIGHT):new Al(AA.left+AA.width,AA.top),this.bottomRightBorderBox=cA>0||uA>0?getCurvePoints(AA.left+yA,AA.top+wA,cA,uA,ja.BOTTOM_RIGHT):new Al(AA.left+AA.width,AA.top+AA.height),this.bottomLeftBorderBox=dA>0||fA>0?getCurvePoints(AA.left,AA.top+BA,dA,fA,ja.BOTTOM_LEFT):new Al(AA.left,AA.top+AA.height),this.topLeftPaddingBox=nA>0||iA>0?getCurvePoints(AA.left+SA,AA.top+bA,Math.max(0,nA-SA),Math.max(0,iA-bA),ja.TOP_LEFT):new Al(AA.left+SA,AA.top+bA),this.topRightPaddingBox=oA>0||aA>0?getCurvePoints(AA.left+Math.min(mA,AA.width-vA),AA.top+bA,mA>AA.width+vA?0:Math.max(0,oA-vA),Math.max(0,aA-bA),ja.TOP_RIGHT):new Al(AA.left+AA.width-vA,AA.top+bA),this.bottomRightPaddingBox=cA>0||uA>0?getCurvePoints(AA.left+Math.min(yA,AA.width-SA),AA.top+Math.min(wA,AA.height-CA),Math.max(0,cA-vA),Math.max(0,uA-CA),ja.BOTTOM_RIGHT):new Al(AA.left+AA.width-vA,AA.top+AA.height-CA),this.bottomLeftPaddingBox=dA>0||fA>0?getCurvePoints(AA.left+SA,AA.top+Math.min(BA,AA.height-CA),Math.max(0,dA-SA),Math.max(0,fA-CA),ja.BOTTOM_LEFT):new Al(AA.left+SA,AA.top+AA.height-CA),this.topLeftContentBox=nA>0||iA>0?getCurvePoints(AA.left+SA+QA,AA.top+bA+xA,Math.max(0,nA-(SA+QA)),Math.max(0,iA-(bA+xA)),ja.TOP_LEFT):new Al(AA.left+SA+QA,AA.top+bA+xA),this.topRightContentBox=oA>0||aA>0?getCurvePoints(AA.left+Math.min(mA,AA.width+SA+QA),AA.top+bA+xA,mA>AA.width+SA+QA?0:oA-SA+QA,aA-(bA+xA),ja.TOP_RIGHT):new Al(AA.left+AA.width-(vA+FA),AA.top+bA+xA),this.bottomRightContentBox=cA>0||uA>0?getCurvePoints(AA.left+Math.min(yA,AA.width-(SA+QA)),AA.top+Math.min(wA,AA.height+bA+xA),Math.max(0,cA-(vA+FA)),uA-(CA+EA),ja.BOTTOM_RIGHT):new Al(AA.left+AA.width-(vA+FA),AA.top+AA.height-(CA+EA)),this.bottomLeftContentBox=dA>0||fA>0?getCurvePoints(AA.left+SA+QA,AA.top+BA,Math.max(0,dA-(SA+QA)),fA-(CA+EA),ja.BOTTOM_LEFT):new Al(AA.left+SA+QA,AA.top+AA.height-(CA+EA))}return BoundCurves}();!function(tA){tA[tA.TOP_LEFT=0]=\"TOP_LEFT\",tA[tA.TOP_RIGHT=1]=\"TOP_RIGHT\",tA[tA.BOTTOM_RIGHT=2]=\"BOTTOM_RIGHT\",tA[tA.BOTTOM_LEFT=3]=\"BOTTOM_LEFT\"}(ja||(ja={}));var getCurvePoints=function(tA,eA,AA,rA,nA){var iA=(Math.sqrt(2)-1)/3*4,sA=AA*iA,oA=rA*iA,aA=tA+AA,lA=eA+rA;switch(nA){case ja.TOP_LEFT:return new rl(new Al(tA,lA),new Al(tA,lA-oA),new Al(aA-sA,eA),new Al(aA,eA));case ja.TOP_RIGHT:return new rl(new Al(tA,eA),new Al(tA+sA,eA),new Al(aA,lA-oA),new Al(aA,lA));case ja.BOTTOM_RIGHT:return new rl(new Al(aA,eA),new Al(aA,eA+oA),new Al(tA+sA,lA),new Al(tA,lA));case ja.BOTTOM_LEFT:default:return new rl(new Al(aA,lA),new Al(aA-sA,lA),new Al(tA,eA+oA),new Al(tA,eA))}},calculateBorderBoxPath=function(tA){return[tA.topLeftBorderBox,tA.topRightBorderBox,tA.bottomRightBorderBox,tA.bottomLeftBorderBox]},calculateContentBoxPath=function(tA){return[tA.topLeftContentBox,tA.topRightContentBox,tA.bottomRightContentBox,tA.bottomLeftContentBox]},calculatePaddingBoxPath=function(tA){return[tA.topLeftPaddingBox,tA.topRightPaddingBox,tA.bottomRightPaddingBox,tA.bottomLeftPaddingBox]},il=function(){function TransformEffect(tA,eA,AA){this.offsetX=tA,this.offsetY=eA,this.matrix=AA,this.type=0,this.target=6}return TransformEffect}(),sl=function(){function ClipEffect(tA,eA){this.path=tA,this.target=eA,this.type=1}return ClipEffect}(),ol=function(){function OpacityEffect(tA){this.opacity=tA,this.type=2,this.target=6}return OpacityEffect}(),isTransformEffect=function(tA){return 0===tA.type},isClipEffect=function(tA){return 1===tA.type},isOpacityEffect=function(tA){return 2===tA.type},equalPath=function(tA,eA){return tA.length===eA.length&&tA.some((function(tA,AA){return tA===eA[AA]}))},transformPath=function(tA,eA,AA,rA,nA){return tA.map((function(tA,iA){switch(iA){case 0:return tA.add(eA,AA);case 1:return tA.add(eA+rA,AA);case 2:return tA.add(eA+rA,AA+nA);case 3:return tA.add(eA,AA+nA)}return tA}))},al=function(){function StackingContext(tA){this.element=tA,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return StackingContext}(),ll=function(){function ElementPaint(tA,eA){if(this.container=tA,this.parent=eA,this.effects=[],this.curves=new nl(this.container),this.container.styles.opacity<1&&this.effects.push(new ol(this.container.styles.opacity)),null!==this.container.styles.transform){var AA=this.container.bounds.left+this.container.styles.transformOrigin[0].number,rA=this.container.bounds.top+this.container.styles.transformOrigin[1].number,nA=this.container.styles.transform;this.effects.push(new il(AA,rA,nA))}if(0!==this.container.styles.overflowX){var iA=calculateBorderBoxPath(this.curves),sA=calculatePaddingBoxPath(this.curves);equalPath(iA,sA)?this.effects.push(new sl(iA,6)):(this.effects.push(new sl(iA,2)),this.effects.push(new sl(sA,4)))}}return ElementPaint.prototype.getEffects=function(tA){for(var eA=-1===[2,3].indexOf(this.container.styles.position),AA=this.parent,rA=this.effects.slice(0);AA;){var nA=AA.effects.filter((function(tA){return!isClipEffect(tA)}));if(eA||0!==AA.container.styles.position||!AA.parent){if(rA.unshift.apply(rA,nA),eA=-1===[2,3].indexOf(AA.container.styles.position),0!==AA.container.styles.overflowX){var iA=calculateBorderBoxPath(AA.curves),sA=calculatePaddingBoxPath(AA.curves);equalPath(iA,sA)||rA.unshift(new sl(sA,6))}}else rA.unshift.apply(rA,nA);AA=AA.parent}return rA.filter((function(eA){return contains(eA.target,tA)}))},ElementPaint}(),parseStackTree=function(tA,eA,AA,rA){tA.container.elements.forEach((function(nA){var iA=contains(nA.flags,4),sA=contains(nA.flags,2),oA=new ll(nA,tA);contains(nA.styles.display,2048)&&rA.push(oA);var aA=contains(nA.flags,8)?[]:rA;if(iA||sA){var lA=iA||nA.styles.isPositioned()?AA:eA,cA=new al(oA);if(nA.styles.isPositioned()||nA.styles.opacity<1||nA.styles.isTransformed()){var uA=nA.styles.zIndex.order;if(uA<0){var hA=0;lA.negativeZIndex.some((function(tA,eA){return uA>tA.element.container.styles.zIndex.order?(hA=eA,!1):hA>0})),lA.negativeZIndex.splice(hA,0,cA)}else if(uA>0){var dA=0;lA.positiveZIndex.some((function(tA,eA){return uA>=tA.element.container.styles.zIndex.order?(dA=eA+1,!1):dA>0})),lA.positiveZIndex.splice(dA,0,cA)}else lA.zeroOrAutoZIndexOrTransformedOrOpacity.push(cA)}else nA.styles.isFloating()?lA.nonPositionedFloats.push(cA):lA.nonPositionedInlineLevel.push(cA);parseStackTree(oA,cA,iA?cA:AA,aA)}else nA.styles.isInlineLevel()?eA.inlineLevel.push(oA):eA.nonInlineLevel.push(oA),parseStackTree(oA,eA,AA,aA);contains(nA.flags,8)&&processListItems(nA,aA)}))},processListItems=function(tA,eA){for(var AA=tA instanceof ma?tA.start:1,rA=tA instanceof ma&&tA.reversed,nA=0;nA<eA.length;nA++){var iA=eA[nA];iA.container instanceof pa&&\"number\"==typeof iA.container.value&&0!==iA.container.value&&(AA=iA.container.value),iA.listValue=createCounterText(AA,iA.container.styles.listStyleType,!0),AA+=rA?-1:1}},parseStackingContexts=function(tA){var eA=new ll(tA,null),AA=new al(eA),rA=[];return parseStackTree(eA,AA,AA,rA),processListItems(eA.container,rA),AA},parsePathForBorder=function(tA,eA){switch(eA){case 0:return createPathFromCurves(tA.topLeftBorderBox,tA.topLeftPaddingBox,tA.topRightBorderBox,tA.topRightPaddingBox);case 1:return createPathFromCurves(tA.topRightBorderBox,tA.topRightPaddingBox,tA.bottomRightBorderBox,tA.bottomRightPaddingBox);case 2:return createPathFromCurves(tA.bottomRightBorderBox,tA.bottomRightPaddingBox,tA.bottomLeftBorderBox,tA.bottomLeftPaddingBox);default:return createPathFromCurves(tA.bottomLeftBorderBox,tA.bottomLeftPaddingBox,tA.topLeftBorderBox,tA.topLeftPaddingBox)}},parsePathForBorderDoubleOuter=function(tA,eA){switch(eA){case 0:return createPathFromCurves(tA.topLeftBorderBox,tA.topLeftBorderDoubleOuterBox,tA.topRightBorderBox,tA.topRightBorderDoubleOuterBox);case 1:return createPathFromCurves(tA.topRightBorderBox,tA.topRightBorderDoubleOuterBox,tA.bottomRightBorderBox,tA.bottomRightBorderDoubleOuterBox);case 2:return createPathFromCurves(tA.bottomRightBorderBox,tA.bottomRightBorderDoubleOuterBox,tA.bottomLeftBorderBox,tA.bottomLeftBorderDoubleOuterBox);default:return createPathFromCurves(tA.bottomLeftBorderBox,tA.bottomLeftBorderDoubleOuterBox,tA.topLeftBorderBox,tA.topLeftBorderDoubleOuterBox)}},parsePathForBorderDoubleInner=function(tA,eA){switch(eA){case 0:return createPathFromCurves(tA.topLeftBorderDoubleInnerBox,tA.topLeftPaddingBox,tA.topRightBorderDoubleInnerBox,tA.topRightPaddingBox);case 1:return createPathFromCurves(tA.topRightBorderDoubleInnerBox,tA.topRightPaddingBox,tA.bottomRightBorderDoubleInnerBox,tA.bottomRightPaddingBox);case 2:return createPathFromCurves(tA.bottomRightBorderDoubleInnerBox,tA.bottomRightPaddingBox,tA.bottomLeftBorderDoubleInnerBox,tA.bottomLeftPaddingBox);default:return createPathFromCurves(tA.bottomLeftBorderDoubleInnerBox,tA.bottomLeftPaddingBox,tA.topLeftBorderDoubleInnerBox,tA.topLeftPaddingBox)}},parsePathForBorderStroke=function(tA,eA){switch(eA){case 0:return createStrokePathFromCurves(tA.topLeftBorderStroke,tA.topRightBorderStroke);case 1:return createStrokePathFromCurves(tA.topRightBorderStroke,tA.bottomRightBorderStroke);case 2:return createStrokePathFromCurves(tA.bottomRightBorderStroke,tA.bottomLeftBorderStroke);default:return createStrokePathFromCurves(tA.bottomLeftBorderStroke,tA.topLeftBorderStroke)}},createStrokePathFromCurves=function(tA,eA){var AA=[];return isBezierCurve(tA)?AA.push(tA.subdivide(.5,!1)):AA.push(tA),isBezierCurve(eA)?AA.push(eA.subdivide(.5,!0)):AA.push(eA),AA},createPathFromCurves=function(tA,eA,AA,rA){var nA=[];return isBezierCurve(tA)?nA.push(tA.subdivide(.5,!1)):nA.push(tA),isBezierCurve(AA)?nA.push(AA.subdivide(.5,!0)):nA.push(AA),isBezierCurve(rA)?nA.push(rA.subdivide(.5,!0).reverse()):nA.push(rA),isBezierCurve(eA)?nA.push(eA.subdivide(.5,!1).reverse()):nA.push(eA),nA},paddingBox=function(tA){var eA=tA.bounds,AA=tA.styles;return eA.add(AA.borderLeftWidth,AA.borderTopWidth,-(AA.borderRightWidth+AA.borderLeftWidth),-(AA.borderTopWidth+AA.borderBottomWidth))},contentBox=function(tA){var eA=tA.styles,AA=tA.bounds,rA=getAbsoluteValue(eA.paddingLeft,AA.width),nA=getAbsoluteValue(eA.paddingRight,AA.width),iA=getAbsoluteValue(eA.paddingTop,AA.width),sA=getAbsoluteValue(eA.paddingBottom,AA.width);return AA.add(rA+eA.borderLeftWidth,iA+eA.borderTopWidth,-(eA.borderRightWidth+eA.borderLeftWidth+rA+nA),-(eA.borderTopWidth+eA.borderBottomWidth+iA+sA))},calculateBackgroundPositioningArea=function(tA,eA){return 0===tA?eA.bounds:2===tA?contentBox(eA):paddingBox(eA)},calculateBackgroundPaintingArea=function(tA,eA){return 0===tA?eA.bounds:2===tA?contentBox(eA):paddingBox(eA)},calculateBackgroundRendering=function(tA,eA,AA){var rA=calculateBackgroundPositioningArea(getBackgroundValueForIndex(tA.styles.backgroundOrigin,eA),tA),nA=calculateBackgroundPaintingArea(getBackgroundValueForIndex(tA.styles.backgroundClip,eA),tA),iA=calculateBackgroundSize(getBackgroundValueForIndex(tA.styles.backgroundSize,eA),AA,rA),sA=iA[0],oA=iA[1],aA=getAbsoluteValueForTuple(getBackgroundValueForIndex(tA.styles.backgroundPosition,eA),rA.width-sA,rA.height-oA);return[calculateBackgroundRepeatPath(getBackgroundValueForIndex(tA.styles.backgroundRepeat,eA),aA,iA,rA,nA),Math.round(rA.left+aA[0]),Math.round(rA.top+aA[1]),sA,oA]},isAuto=function(tA){return isIdentToken(tA)&&tA.value===es.AUTO},hasIntrinsicValue=function(tA){return\"number\"==typeof tA},calculateBackgroundSize=function(tA,eA,AA){var rA=eA[0],nA=eA[1],iA=eA[2],sA=tA[0],oA=tA[1];if(!sA)return[0,0];if(isLengthPercentage(sA)&&oA&&isLengthPercentage(oA))return[getAbsoluteValue(sA,AA.width),getAbsoluteValue(oA,AA.height)];var aA=hasIntrinsicValue(iA);if(isIdentToken(sA)&&(sA.value===es.CONTAIN||sA.value===es.COVER))return hasIntrinsicValue(iA)?AA.width/AA.height<iA!=(sA.value===es.COVER)?[AA.width,AA.width/iA]:[AA.height*iA,AA.height]:[AA.width,AA.height];var lA=hasIntrinsicValue(rA),cA=hasIntrinsicValue(nA),uA=lA||cA;if(isAuto(sA)&&(!oA||isAuto(oA)))return lA&&cA?[rA,nA]:aA||uA?uA&&aA?[lA?rA:nA*iA,cA?nA:rA/iA]:[lA?rA:AA.width,cA?nA:AA.height]:[AA.width,AA.height];if(aA){var hA=0,dA=0;return isLengthPercentage(sA)?hA=getAbsoluteValue(sA,AA.width):isLengthPercentage(oA)&&(dA=getAbsoluteValue(oA,AA.height)),isAuto(sA)?hA=dA*iA:oA&&!isAuto(oA)||(dA=hA/iA),[hA,dA]}var fA=null,gA=null;if(isLengthPercentage(sA)?fA=getAbsoluteValue(sA,AA.width):oA&&isLengthPercentage(oA)&&(gA=getAbsoluteValue(oA,AA.height)),null===fA||oA&&!isAuto(oA)||(gA=lA&&cA?fA/rA*nA:AA.height),null!==gA&&isAuto(sA)&&(fA=lA&&cA?gA/nA*rA:AA.width),null!==fA&&null!==gA)return[fA,gA];throw new Error(\"Unable to calculate background-size for element\")},getBackgroundValueForIndex=function(tA,eA){var AA=tA[eA];return void 0===AA?tA[0]:AA},calculateBackgroundRepeatPath=function(tA,eA,AA,rA,nA){var iA=eA[0],sA=eA[1],oA=AA[0],aA=AA[1];switch(tA){case 2:return[new Al(Math.round(rA.left),Math.round(rA.top+sA)),new Al(Math.round(rA.left+rA.width),Math.round(rA.top+sA)),new Al(Math.round(rA.left+rA.width),Math.round(aA+rA.top+sA)),new Al(Math.round(rA.left),Math.round(aA+rA.top+sA))];case 3:return[new Al(Math.round(rA.left+iA),Math.round(rA.top)),new Al(Math.round(rA.left+iA+oA),Math.round(rA.top)),new Al(Math.round(rA.left+iA+oA),Math.round(rA.height+rA.top)),new Al(Math.round(rA.left+iA),Math.round(rA.height+rA.top))];case 1:return[new Al(Math.round(rA.left+iA),Math.round(rA.top+sA)),new Al(Math.round(rA.left+iA+oA),Math.round(rA.top+sA)),new Al(Math.round(rA.left+iA+oA),Math.round(rA.top+sA+aA)),new Al(Math.round(rA.left+iA),Math.round(rA.top+sA+aA))];default:return[new Al(Math.round(nA.left),Math.round(nA.top)),new Al(Math.round(nA.left+nA.width),Math.round(nA.top)),new Al(Math.round(nA.left+nA.width),Math.round(nA.height+nA.top)),new Al(Math.round(nA.left),Math.round(nA.height+nA.top))]}},cl=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\",ul=\"Hidden Text\",hl=function(){function FontMetrics(tA){this._data={},this._document=tA}return FontMetrics.prototype.parseMetrics=function(tA,eA){var AA=this._document.createElement(\"div\"),rA=this._document.createElement(\"img\"),nA=this._document.createElement(\"span\"),iA=this._document.body;AA.style.visibility=\"hidden\",AA.style.fontFamily=tA,AA.style.fontSize=eA,AA.style.margin=\"0\",AA.style.padding=\"0\",AA.style.whiteSpace=\"nowrap\",iA.appendChild(AA),rA.src=cl,rA.width=1,rA.height=1,rA.style.margin=\"0\",rA.style.padding=\"0\",rA.style.verticalAlign=\"baseline\",nA.style.fontFamily=tA,nA.style.fontSize=eA,nA.style.margin=\"0\",nA.style.padding=\"0\",nA.appendChild(this._document.createTextNode(ul)),AA.appendChild(nA),AA.appendChild(rA);var sA=rA.offsetTop-nA.offsetTop+2;AA.removeChild(nA),AA.appendChild(this._document.createTextNode(ul)),AA.style.lineHeight=\"normal\",rA.style.verticalAlign=\"super\";var oA=rA.offsetTop-AA.offsetTop+2;return iA.removeChild(AA),{baseline:sA,middle:oA}},FontMetrics.prototype.getMetrics=function(tA,eA){var AA=tA+\" \"+eA;return void 0===this._data[AA]&&(this._data[AA]=this.parseMetrics(tA,eA)),this._data[AA]},FontMetrics}(),dl=function(){function Renderer(tA,eA){this.context=tA,this.options=eA}return Renderer}(),fl=1e4,gl=function(eA){function CanvasRenderer(tA,AA){var rA=eA.call(this,tA,AA)||this;return rA._activeEffects=[],rA.canvas=AA.canvas?AA.canvas:document.createElement(\"canvas\"),rA.ctx=rA.canvas.getContext(\"2d\"),AA.canvas||(rA.canvas.width=Math.floor(AA.width*AA.scale),rA.canvas.height=Math.floor(AA.height*AA.scale),rA.canvas.style.width=AA.width+\"px\",rA.canvas.style.height=AA.height+\"px\"),rA.fontMetrics=new hl(document),rA.ctx.scale(rA.options.scale,rA.options.scale),rA.ctx.translate(-AA.x,-AA.y),rA.ctx.textBaseline=\"bottom\",rA._activeEffects=[],rA.context.logger.debug(\"Canvas renderer initialized (\"+AA.width+\"x\"+AA.height+\") with scale \"+AA.scale),rA}return __extends(CanvasRenderer,eA),CanvasRenderer.prototype.applyEffects=function(tA){for(var eA=this;this._activeEffects.length;)this.popEffect();tA.forEach((function(tA){return eA.applyEffect(tA)}))},CanvasRenderer.prototype.applyEffect=function(tA){this.ctx.save(),isOpacityEffect(tA)&&(this.ctx.globalAlpha=tA.opacity),isTransformEffect(tA)&&(this.ctx.translate(tA.offsetX,tA.offsetY),this.ctx.transform(tA.matrix[0],tA.matrix[1],tA.matrix[2],tA.matrix[3],tA.matrix[4],tA.matrix[5]),this.ctx.translate(-tA.offsetX,-tA.offsetY)),isClipEffect(tA)&&(this.path(tA.path),this.ctx.clip()),this._activeEffects.push(tA)},CanvasRenderer.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},CanvasRenderer.prototype.renderStack=function(tA){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(eA){switch(eA.label){case 0:return tA.element.container.styles.isVisible()?[4,this.renderStackContent(tA)]:[3,2];case 1:eA.sent(),eA.label=2;case 2:return[2]}}))}))},CanvasRenderer.prototype.renderNode=function(tA){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(eA){switch(eA.label){case 0:return contains(tA.container.flags,16),tA.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(tA)]:[3,3];case 1:return eA.sent(),[4,this.renderNodeContent(tA)];case 2:eA.sent(),eA.label=3;case 3:return[2]}}))}))},CanvasRenderer.prototype.renderTextWithLetterSpacing=function(tA,eA,AA){var rA=this;0===eA?this.ctx.fillText(tA.text,tA.bounds.left,tA.bounds.top+AA):segmentGraphemes(tA.text).reduce((function(eA,nA){return rA.ctx.fillText(nA,eA,tA.bounds.top+AA),eA+rA.ctx.measureText(nA).width}),tA.bounds.left)},CanvasRenderer.prototype.createFontStyle=function(tA){var eA=tA.fontVariant.filter((function(tA){return\"normal\"===tA||\"small-caps\"===tA})).join(\"\"),AA=fixIOSSystemFonts(tA.fontFamily).join(\", \"),rA=isDimensionToken(tA.fontSize)?\"\"+tA.fontSize.number+tA.fontSize.unit:tA.fontSize.number+\"px\";return[[tA.fontStyle,eA,tA.fontWeight,rA,AA].join(\" \"),AA,rA]},CanvasRenderer.prototype.renderTextNode=function(tA,eA){return __awaiter(this,void 0,void 0,(function(){var AA,rA,nA,iA,sA,oA,aA,lA,cA=this;return __generator(this,(function(uA){return AA=this.createFontStyle(eA),rA=AA[0],nA=AA[1],iA=AA[2],this.ctx.font=rA,this.ctx.direction=1===eA.direction?\"rtl\":\"ltr\",this.ctx.textAlign=\"left\",this.ctx.textBaseline=\"alphabetic\",sA=this.fontMetrics.getMetrics(nA,iA),oA=sA.baseline,aA=sA.middle,lA=eA.paintOrder,tA.textBounds.forEach((function(tA){lA.forEach((function(AA){switch(AA){case 0:cA.ctx.fillStyle=asString(eA.color),cA.renderTextWithLetterSpacing(tA,eA.letterSpacing,oA);var rA=eA.textShadow;rA.length&&tA.text.trim().length&&(rA.slice(0).reverse().forEach((function(AA){cA.ctx.shadowColor=asString(AA.color),cA.ctx.shadowOffsetX=AA.offsetX.number*cA.options.scale,cA.ctx.shadowOffsetY=AA.offsetY.number*cA.options.scale,cA.ctx.shadowBlur=AA.blur.number,cA.renderTextWithLetterSpacing(tA,eA.letterSpacing,oA)})),cA.ctx.shadowColor=\"\",cA.ctx.shadowOffsetX=0,cA.ctx.shadowOffsetY=0,cA.ctx.shadowBlur=0),eA.textDecorationLine.length&&(cA.ctx.fillStyle=asString(eA.textDecorationColor||eA.color),eA.textDecorationLine.forEach((function(eA){switch(eA){case 1:cA.ctx.fillRect(tA.bounds.left,Math.round(tA.bounds.top+oA),tA.bounds.width,1);break;case 2:cA.ctx.fillRect(tA.bounds.left,Math.round(tA.bounds.top),tA.bounds.width,1);break;case 3:cA.ctx.fillRect(tA.bounds.left,Math.ceil(tA.bounds.top+aA),tA.bounds.width,1)}})));break;case 1:eA.webkitTextStrokeWidth&&tA.text.trim().length&&(cA.ctx.strokeStyle=asString(eA.webkitTextStrokeColor),cA.ctx.lineWidth=eA.webkitTextStrokeWidth,cA.ctx.lineJoin=window.chrome?\"miter\":\"round\",cA.ctx.strokeText(tA.text,tA.bounds.left,tA.bounds.top+oA)),cA.ctx.strokeStyle=\"\",cA.ctx.lineWidth=0,cA.ctx.lineJoin=\"miter\"}}))})),[2]}))}))},CanvasRenderer.prototype.renderReplacedElement=function(tA,eA,AA){if(AA&&tA.intrinsicWidth>0&&tA.intrinsicHeight>0){var rA=contentBox(tA),nA=calculatePaddingBoxPath(eA);this.path(nA),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(AA,0,0,tA.intrinsicWidth,tA.intrinsicHeight,rA.left,rA.top,rA.width,rA.height),this.ctx.restore()}},CanvasRenderer.prototype.renderNodeContent=function(eA){return __awaiter(this,void 0,void 0,(function(){var AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA,wA,yA;return __generator(this,(function(BA){switch(BA.label){case 0:this.applyEffects(eA.getEffects(4)),AA=eA.container,rA=eA.curves,nA=AA.styles,iA=0,sA=AA.textNodes,BA.label=1;case 1:return iA<sA.length?(oA=sA[iA],[4,this.renderTextNode(oA,nA)]):[3,4];case 2:BA.sent(),BA.label=3;case 3:return iA++,[3,1];case 4:if(!(AA instanceof da))return[3,8];BA.label=5;case 5:return BA.trys.push([5,7,,8]),[4,this.context.cache.match(AA.src)];case 6:return pA=BA.sent(),this.renderReplacedElement(AA,rA,pA),[3,8];case 7:return BA.sent(),this.context.logger.error(\"Error loading image \"+AA.src),[3,8];case 8:if(AA instanceof fa&&this.renderReplacedElement(AA,rA,AA.canvas),!(AA instanceof ga))return[3,12];BA.label=9;case 9:return BA.trys.push([9,11,,12]),[4,this.context.cache.match(AA.svg)];case 10:return pA=BA.sent(),this.renderReplacedElement(AA,rA,pA),[3,12];case 11:return BA.sent(),this.context.logger.error(\"Error loading svg \"+AA.svg.substring(0,255)),[3,12];case 12:return AA instanceof Ea&&AA.tree?[4,new CanvasRenderer(this.context,{scale:this.options.scale,backgroundColor:AA.backgroundColor,x:0,y:0,width:AA.width,height:AA.height}).render(AA.tree)]:[3,14];case 13:aA=BA.sent(),AA.width&&AA.height&&this.ctx.drawImage(aA,0,0,AA.width,AA.height,AA.bounds.left,AA.bounds.top,AA.bounds.width,AA.bounds.height),BA.label=14;case 14:if(AA instanceof Sa&&(lA=Math.min(AA.bounds.width,AA.bounds.height),AA.type===Ba?AA.checked&&(this.ctx.save(),this.path([new Al(AA.bounds.left+.39363*lA,AA.bounds.top+.79*lA),new Al(AA.bounds.left+.16*lA,AA.bounds.top+.5549*lA),new Al(AA.bounds.left+.27347*lA,AA.bounds.top+.44071*lA),new Al(AA.bounds.left+.39694*lA,AA.bounds.top+.5649*lA),new Al(AA.bounds.left+.72983*lA,AA.bounds.top+.23*lA),new Al(AA.bounds.left+.84*lA,AA.bounds.top+.34085*lA),new Al(AA.bounds.left+.39363*lA,AA.bounds.top+.79*lA)]),this.ctx.fillStyle=asString(Ca),this.ctx.fill(),this.ctx.restore()):AA.type===ba&&AA.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(AA.bounds.left+lA/2,AA.bounds.top+lA/2,lA/4,0,2*Math.PI,!0),this.ctx.fillStyle=asString(Ca),this.ctx.fill(),this.ctx.restore())),isTextInputElement(AA)&&AA.value.length){switch(cA=this.createFontStyle(nA),wA=cA[0],uA=cA[1],hA=this.fontMetrics.getMetrics(wA,uA).baseline,this.ctx.font=wA,this.ctx.fillStyle=asString(nA.color),this.ctx.textBaseline=\"alphabetic\",this.ctx.textAlign=canvasTextAlign(AA.styles.textAlign),yA=contentBox(AA),dA=0,AA.styles.textAlign){case 1:dA+=yA.width/2;break;case 2:dA+=yA.width}fA=yA.add(dA,0,0,-yA.height/2+1),this.ctx.save(),this.path([new Al(yA.left,yA.top),new Al(yA.left+yA.width,yA.top),new Al(yA.left+yA.width,yA.top+yA.height),new Al(yA.left,yA.top+yA.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new la(AA.value,fA),nA.letterSpacing,hA),this.ctx.restore(),this.ctx.textBaseline=\"alphabetic\",this.ctx.textAlign=\"left\"}if(!contains(AA.styles.display,2048))return[3,20];if(null===AA.styles.listStyleImage)return[3,19];if(0!==(gA=AA.styles.listStyleImage).type)return[3,18];pA=void 0,mA=gA.url,BA.label=15;case 15:return BA.trys.push([15,17,,18]),[4,this.context.cache.match(mA)];case 16:return pA=BA.sent(),this.ctx.drawImage(pA,AA.bounds.left-(pA.width+10),AA.bounds.top),[3,18];case 17:return BA.sent(),this.context.logger.error(\"Error loading list-style-image \"+mA),[3,18];case 18:return[3,20];case 19:eA.listValue&&-1!==AA.styles.listStyleType&&(wA=this.createFontStyle(nA)[0],this.ctx.font=wA,this.ctx.fillStyle=asString(nA.color),this.ctx.textBaseline=\"middle\",this.ctx.textAlign=\"right\",yA=new tA(AA.bounds.left,AA.bounds.top+getAbsoluteValue(AA.styles.paddingTop,AA.bounds.width),AA.bounds.width,computeLineHeight(nA.lineHeight,nA.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new la(eA.listValue,yA),nA.letterSpacing,computeLineHeight(nA.lineHeight,nA.fontSize.number)/2+2),this.ctx.textBaseline=\"bottom\",this.ctx.textAlign=\"left\"),BA.label=20;case 20:return[2]}}))}))},CanvasRenderer.prototype.renderStackContent=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA;return __generator(this,(function(pA){switch(pA.label){case 0:return contains(tA.element.container.flags,16),[4,this.renderNodeBackgroundAndBorders(tA.element)];case 1:pA.sent(),eA=0,AA=tA.negativeZIndex,pA.label=2;case 2:return eA<AA.length?(gA=AA[eA],[4,this.renderStack(gA)]):[3,5];case 3:pA.sent(),pA.label=4;case 4:return eA++,[3,2];case 5:return[4,this.renderNodeContent(tA.element)];case 6:pA.sent(),rA=0,nA=tA.nonInlineLevel,pA.label=7;case 7:return rA<nA.length?(gA=nA[rA],[4,this.renderNode(gA)]):[3,10];case 8:pA.sent(),pA.label=9;case 9:return rA++,[3,7];case 10:iA=0,sA=tA.nonPositionedFloats,pA.label=11;case 11:return iA<sA.length?(gA=sA[iA],[4,this.renderStack(gA)]):[3,14];case 12:pA.sent(),pA.label=13;case 13:return iA++,[3,11];case 14:oA=0,aA=tA.nonPositionedInlineLevel,pA.label=15;case 15:return oA<aA.length?(gA=aA[oA],[4,this.renderStack(gA)]):[3,18];case 16:pA.sent(),pA.label=17;case 17:return oA++,[3,15];case 18:lA=0,cA=tA.inlineLevel,pA.label=19;case 19:return lA<cA.length?(gA=cA[lA],[4,this.renderNode(gA)]):[3,22];case 20:pA.sent(),pA.label=21;case 21:return lA++,[3,19];case 22:uA=0,hA=tA.zeroOrAutoZIndexOrTransformedOrOpacity,pA.label=23;case 23:return uA<hA.length?(gA=hA[uA],[4,this.renderStack(gA)]):[3,26];case 24:pA.sent(),pA.label=25;case 25:return uA++,[3,23];case 26:dA=0,fA=tA.positiveZIndex,pA.label=27;case 27:return dA<fA.length?(gA=fA[dA],[4,this.renderStack(gA)]):[3,30];case 28:pA.sent(),pA.label=29;case 29:return dA++,[3,27];case 30:return[2]}}))}))},CanvasRenderer.prototype.mask=function(tA){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(tA.slice(0).reverse()),this.ctx.closePath()},CanvasRenderer.prototype.path=function(tA){this.ctx.beginPath(),this.formatPath(tA),this.ctx.closePath()},CanvasRenderer.prototype.formatPath=function(tA){var eA=this;tA.forEach((function(tA,AA){var rA=isBezierCurve(tA)?tA.start:tA;0===AA?eA.ctx.moveTo(rA.x,rA.y):eA.ctx.lineTo(rA.x,rA.y),isBezierCurve(tA)&&eA.ctx.bezierCurveTo(tA.startControl.x,tA.startControl.y,tA.endControl.x,tA.endControl.y,tA.end.x,tA.end.y)}))},CanvasRenderer.prototype.renderRepeat=function(tA,eA,AA,rA){this.path(tA),this.ctx.fillStyle=eA,this.ctx.translate(AA,rA),this.ctx.fill(),this.ctx.translate(-AA,-rA)},CanvasRenderer.prototype.resizeImage=function(tA,eA,AA){var rA;if(tA.width===eA&&tA.height===AA)return tA;var nA=(null!==(rA=this.canvas.ownerDocument)&&void 0!==rA?rA:document).createElement(\"canvas\");return nA.width=Math.max(1,eA),nA.height=Math.max(1,AA),nA.getContext(\"2d\").drawImage(tA,0,0,tA.width,tA.height,0,0,eA,AA),nA},CanvasRenderer.prototype.renderBackgroundImage=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA,sA;return __generator(this,(function(oA){switch(oA.label){case 0:eA=tA.styles.backgroundImage.length-1,AA=function(AA){var nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA,wA,yA,BA,bA,vA,CA,SA,xA,FA,EA,QA,UA,PA,_A,LA,IA,NA;return __generator(this,(function(TA){switch(TA.label){case 0:if(0!==AA.type)return[3,5];nA=void 0,iA=AA.url,TA.label=1;case 1:return TA.trys.push([1,3,,4]),[4,rA.context.cache.match(iA)];case 2:return nA=TA.sent(),[3,4];case 3:return TA.sent(),rA.context.logger.error(\"Error loading background-image \"+iA),[3,4];case 4:return nA&&(sA=calculateBackgroundRendering(tA,eA,[nA.width,nA.height,nA.width/nA.height]),yA=sA[0],xA=sA[1],FA=sA[2],vA=sA[3],CA=sA[4],mA=rA.ctx.createPattern(rA.resizeImage(nA,vA,CA),\"repeat\"),rA.renderRepeat(yA,mA,xA,FA)),[3,6];case 5:isLinearGradient(AA)?(oA=calculateBackgroundRendering(tA,eA,[null,null,null]),yA=oA[0],xA=oA[1],FA=oA[2],vA=oA[3],CA=oA[4],aA=calculateGradientDirection(AA.angle,vA,CA),lA=aA[0],cA=aA[1],uA=aA[2],hA=aA[3],dA=aA[4],(fA=document.createElement(\"canvas\")).width=vA,fA.height=CA,gA=fA.getContext(\"2d\"),pA=gA.createLinearGradient(cA,hA,uA,dA),processColorStops(AA.stops,lA).forEach((function(tA){return pA.addColorStop(tA.stop,asString(tA.color))})),gA.fillStyle=pA,gA.fillRect(0,0,vA,CA),vA>0&&CA>0&&(mA=rA.ctx.createPattern(fA,\"repeat\"),rA.renderRepeat(yA,mA,xA,FA))):isRadialGradient(AA)&&(wA=calculateBackgroundRendering(tA,eA,[null,null,null]),yA=wA[0],BA=wA[1],bA=wA[2],vA=wA[3],CA=wA[4],SA=0===AA.position.length?[Ni]:AA.position,xA=getAbsoluteValue(SA[0],vA),FA=getAbsoluteValue(SA[SA.length-1],CA),EA=calculateRadius(AA,xA,FA,vA,CA),QA=EA[0],UA=EA[1],QA>0&&UA>0&&(PA=rA.ctx.createRadialGradient(BA+xA,bA+FA,0,BA+xA,bA+FA,QA),processColorStops(AA.stops,2*QA).forEach((function(tA){return PA.addColorStop(tA.stop,asString(tA.color))})),rA.path(yA),rA.ctx.fillStyle=PA,QA!==UA?(_A=tA.bounds.left+.5*tA.bounds.width,LA=tA.bounds.top+.5*tA.bounds.height,NA=1/(IA=UA/QA),rA.ctx.save(),rA.ctx.translate(_A,LA),rA.ctx.transform(1,0,0,IA,0,0),rA.ctx.translate(-_A,-LA),rA.ctx.fillRect(BA,NA*(bA-LA)+LA,vA,CA*NA),rA.ctx.restore()):rA.ctx.fill())),TA.label=6;case 6:return eA--,[2]}}))},rA=this,nA=0,iA=tA.styles.backgroundImage.slice(0).reverse(),oA.label=1;case 1:return nA<iA.length?(sA=iA[nA],[5,AA(sA)]):[3,4];case 2:oA.sent(),oA.label=3;case 3:return nA++,[3,1];case 4:return[2]}}))}))},CanvasRenderer.prototype.renderSolidBorder=function(tA,eA,AA){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(rA){return this.path(parsePathForBorder(AA,eA)),this.ctx.fillStyle=asString(tA),this.ctx.fill(),[2]}))}))},CanvasRenderer.prototype.renderDoubleBorder=function(tA,eA,AA,rA){return __awaiter(this,void 0,void 0,(function(){var nA,iA;return __generator(this,(function(sA){switch(sA.label){case 0:return eA<3?[4,this.renderSolidBorder(tA,AA,rA)]:[3,2];case 1:return sA.sent(),[2];case 2:return nA=parsePathForBorderDoubleOuter(rA,AA),this.path(nA),this.ctx.fillStyle=asString(tA),this.ctx.fill(),iA=parsePathForBorderDoubleInner(rA,AA),this.path(iA),this.ctx.fill(),[2]}}))}))},CanvasRenderer.prototype.renderNodeBackgroundAndBorders=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA,rA,nA,iA,sA,oA,aA,lA=this;return __generator(this,(function(cA){switch(cA.label){case 0:return this.applyEffects(tA.getEffects(2)),eA=tA.container.styles,AA=!isTransparent(eA.backgroundColor)||eA.backgroundImage.length,rA=[{style:eA.borderTopStyle,color:eA.borderTopColor,width:eA.borderTopWidth},{style:eA.borderRightStyle,color:eA.borderRightColor,width:eA.borderRightWidth},{style:eA.borderBottomStyle,color:eA.borderBottomColor,width:eA.borderBottomWidth},{style:eA.borderLeftStyle,color:eA.borderLeftColor,width:eA.borderLeftWidth}],nA=calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(eA.backgroundClip,0),tA.curves),AA||eA.boxShadow.length?(this.ctx.save(),this.path(nA),this.ctx.clip(),isTransparent(eA.backgroundColor)||(this.ctx.fillStyle=asString(eA.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(tA.container)]):[3,2];case 1:cA.sent(),this.ctx.restore(),eA.boxShadow.slice(0).reverse().forEach((function(eA){lA.ctx.save();var AA=calculateBorderBoxPath(tA.curves),rA=eA.inset?0:fl,nA=transformPath(AA,-rA+(eA.inset?1:-1)*eA.spread.number,(eA.inset?1:-1)*eA.spread.number,eA.spread.number*(eA.inset?-2:2),eA.spread.number*(eA.inset?-2:2));eA.inset?(lA.path(AA),lA.ctx.clip(),lA.mask(nA)):(lA.mask(AA),lA.ctx.clip(),lA.path(nA)),lA.ctx.shadowOffsetX=eA.offsetX.number+rA,lA.ctx.shadowOffsetY=eA.offsetY.number,lA.ctx.shadowColor=asString(eA.color),lA.ctx.shadowBlur=eA.blur.number,lA.ctx.fillStyle=eA.inset?asString(eA.color):\"rgba(0,0,0,1)\",lA.ctx.fill(),lA.ctx.restore()})),cA.label=2;case 2:iA=0,sA=0,oA=rA,cA.label=3;case 3:return sA<oA.length?0!==(aA=oA[sA]).style&&!isTransparent(aA.color)&&aA.width>0?2!==aA.style?[3,5]:[4,this.renderDashedDottedBorder(aA.color,aA.width,iA,tA.curves,2)]:[3,11]:[3,13];case 4:return cA.sent(),[3,11];case 5:return 3!==aA.style?[3,7]:[4,this.renderDashedDottedBorder(aA.color,aA.width,iA,tA.curves,3)];case 6:return cA.sent(),[3,11];case 7:return 4!==aA.style?[3,9]:[4,this.renderDoubleBorder(aA.color,aA.width,iA,tA.curves)];case 8:return cA.sent(),[3,11];case 9:return[4,this.renderSolidBorder(aA.color,iA,tA.curves)];case 10:cA.sent(),cA.label=11;case 11:iA++,cA.label=12;case 12:return sA++,[3,3];case 13:return[2]}}))}))},CanvasRenderer.prototype.renderDashedDottedBorder=function(tA,eA,AA,rA,nA){return __awaiter(this,void 0,void 0,(function(){var iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA,wA,yA,BA;return __generator(this,(function(bA){return this.ctx.save(),iA=parsePathForBorderStroke(rA,AA),sA=parsePathForBorder(rA,AA),2===nA&&(this.path(sA),this.ctx.clip()),isBezierCurve(sA[0])?(oA=sA[0].start.x,aA=sA[0].start.y):(oA=sA[0].x,aA=sA[0].y),isBezierCurve(sA[1])?(lA=sA[1].end.x,cA=sA[1].end.y):(lA=sA[1].x,cA=sA[1].y),uA=0===AA||2===AA?Math.abs(oA-lA):Math.abs(aA-cA),this.ctx.beginPath(),3===nA?this.formatPath(iA):this.formatPath(sA.slice(0,2)),hA=eA<3?3*eA:2*eA,dA=eA<3?2*eA:eA,3===nA&&(hA=eA,dA=eA),fA=!0,uA<=2*hA?fA=!1:uA<=2*hA+dA?(hA*=gA=uA/(2*hA+dA),dA*=gA):(pA=Math.floor((uA+dA)/(hA+dA)),mA=(uA-pA*hA)/(pA-1),dA=(wA=(uA-(pA+1)*hA)/pA)<=0||Math.abs(dA-mA)<Math.abs(dA-wA)?mA:wA),fA&&(3===nA?this.ctx.setLineDash([0,hA+dA]):this.ctx.setLineDash([hA,dA])),3===nA?(this.ctx.lineCap=\"round\",this.ctx.lineWidth=eA):this.ctx.lineWidth=2*eA+1.1,this.ctx.strokeStyle=asString(tA),this.ctx.stroke(),this.ctx.setLineDash([]),2===nA&&(isBezierCurve(sA[0])&&(yA=sA[3],BA=sA[0],this.ctx.beginPath(),this.formatPath([new Al(yA.end.x,yA.end.y),new Al(BA.start.x,BA.start.y)]),this.ctx.stroke()),isBezierCurve(sA[1])&&(yA=sA[1],BA=sA[2],this.ctx.beginPath(),this.formatPath([new Al(yA.end.x,yA.end.y),new Al(BA.start.x,BA.start.y)]),this.ctx.stroke())),this.ctx.restore(),[2]}))}))},CanvasRenderer.prototype.render=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA;return __generator(this,(function(AA){switch(AA.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=asString(this.options.backgroundColor),this.ctx.fillRect(this.options.x,this.options.y,this.options.width,this.options.height)),eA=parseStackingContexts(tA),[4,this.renderStack(eA)];case 1:return AA.sent(),this.applyEffects([]),[2,this.canvas]}}))}))},CanvasRenderer}(dl),isTextInputElement=function(tA){return tA instanceof Fa||tA instanceof xa||tA instanceof Sa&&tA.type!==ba&&tA.type!==Ba},calculateBackgroundCurvedPaintingArea=function(tA,eA){switch(tA){case 0:return calculateBorderBoxPath(eA);case 2:return calculateContentBoxPath(eA);default:return calculatePaddingBoxPath(eA)}},canvasTextAlign=function(tA){switch(tA){case 1:return\"center\";case 2:return\"right\";default:return\"left\"}},pl=[\"-apple-system\",\"system-ui\"],fixIOSSystemFonts=function(tA){return/iPhone OS 15_(0|1)/.test(window.navigator.userAgent)?tA.filter((function(tA){return-1===pl.indexOf(tA)})):tA},ml=function(tA){function ForeignObjectRenderer(eA,AA){var rA=tA.call(this,eA,AA)||this;return rA.canvas=AA.canvas?AA.canvas:document.createElement(\"canvas\"),rA.ctx=rA.canvas.getContext(\"2d\"),rA.options=AA,rA.canvas.width=Math.floor(AA.width*AA.scale),rA.canvas.height=Math.floor(AA.height*AA.scale),rA.canvas.style.width=AA.width+\"px\",rA.canvas.style.height=AA.height+\"px\",rA.ctx.scale(rA.options.scale,rA.options.scale),rA.ctx.translate(-AA.x,-AA.y),rA.context.logger.debug(\"EXPERIMENTAL ForeignObject renderer initialized (\"+AA.width+\"x\"+AA.height+\" at \"+AA.x+\",\"+AA.y+\") with scale \"+AA.scale),rA}return __extends(ForeignObjectRenderer,tA),ForeignObjectRenderer.prototype.render=function(tA){return __awaiter(this,void 0,void 0,(function(){var eA,AA;return __generator(this,(function(rA){switch(rA.label){case 0:return eA=createForeignObjectSVG(this.options.width*this.options.scale,this.options.height*this.options.scale,this.options.scale,this.options.scale,tA),[4,loadSerializedSVG(eA)];case 1:return AA=rA.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=asString(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(AA,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}}))}))},ForeignObjectRenderer}(dl),loadSerializedSVG=function(tA){return new Promise((function(eA,AA){var rA=new Image;rA.onload=function(){eA(rA)},rA.onerror=AA,rA.src=\"data:image/svg+xml;charset=utf-8,\"+encodeURIComponent((new XMLSerializer).serializeToString(tA))}))},wl=function(){function Logger(tA){var eA=tA.id,AA=tA.enabled;this.id=eA,this.enabled=AA,this.start=Date.now()}return Logger.prototype.debug=function(){for(var tA=[],eA=0;eA<arguments.length;eA++)tA[eA]=arguments[eA];this.enabled&&(\"undefined\"!=typeof window&&window.console&&\"function\"==typeof console.debug?console.debug.apply(console,__spreadArray([this.id,this.getTime()+\"ms\"],tA)):this.info.apply(this,tA))},Logger.prototype.getTime=function(){return Date.now()-this.start},Logger.prototype.info=function(){for(var tA=[],eA=0;eA<arguments.length;eA++)tA[eA]=arguments[eA];this.enabled&&\"undefined\"!=typeof window&&window.console&&\"function\"==typeof console.info&&console.info.apply(console,__spreadArray([this.id,this.getTime()+\"ms\"],tA))},Logger.prototype.warn=function(){for(var tA=[],eA=0;eA<arguments.length;eA++)tA[eA]=arguments[eA];this.enabled&&(\"undefined\"!=typeof window&&window.console&&\"function\"==typeof console.warn?console.warn.apply(console,__spreadArray([this.id,this.getTime()+\"ms\"],tA)):this.info.apply(this,tA))},Logger.prototype.error=function(){for(var tA=[],eA=0;eA<arguments.length;eA++)tA[eA]=arguments[eA];this.enabled&&(\"undefined\"!=typeof window&&window.console&&\"function\"==typeof console.error?console.error.apply(console,__spreadArray([this.id,this.getTime()+\"ms\"],tA)):this.info.apply(this,tA))},Logger.instances={},Logger}(),yl=function(){function Context(tA,eA){var AA;this.windowBounds=eA,this.instanceName=\"#\"+Context.instanceCount++,this.logger=new wl({id:this.instanceName,enabled:tA.logging}),this.cache=null!==(AA=tA.cache)&&void 0!==AA?AA:new Za(this,tA)}return Context.instanceCount=1,Context}(),html2canvas=function(tA,eA){return void 0===eA&&(eA={}),renderElement(tA,eA)};\"undefined\"!=typeof window&&Ja.setContext(window);var renderElement=function(eA,AA){return __awaiter(void 0,void 0,void 0,(function(){var rA,nA,iA,sA,oA,aA,lA,cA,uA,hA,dA,fA,gA,pA,mA,wA,yA,BA,bA,vA,CA,SA,xA,FA,EA,QA,UA,PA,_A,LA,IA,NA,TA,kA,MA,OA,HA,DA;return __generator(this,(function(RA){switch(RA.label){case 0:if(!eA||\"object\"!=typeof eA)return[2,Promise.reject(\"Invalid element provided as first argument\")];if(!(rA=eA.ownerDocument))throw new Error(\"Element is not attached to a Document\");if(!(nA=rA.defaultView))throw new Error(\"Document is not attached to a Window\");return iA={allowTaint:null!==(SA=AA.allowTaint)&&void 0!==SA&&SA,imageTimeout:null!==(xA=AA.imageTimeout)&&void 0!==xA?xA:15e3,proxy:AA.proxy,useCORS:null!==(FA=AA.useCORS)&&void 0!==FA&&FA},sA=__assign({logging:null===(EA=AA.logging)||void 0===EA||EA,cache:AA.cache},iA),oA={windowWidth:null!==(QA=AA.windowWidth)&&void 0!==QA?QA:nA.innerWidth,windowHeight:null!==(UA=AA.windowHeight)&&void 0!==UA?UA:nA.innerHeight,scrollX:null!==(PA=AA.scrollX)&&void 0!==PA?PA:nA.pageXOffset,scrollY:null!==(_A=AA.scrollY)&&void 0!==_A?_A:nA.pageYOffset},aA=new tA(oA.scrollX,oA.scrollY,oA.windowWidth,oA.windowHeight),lA=new yl(sA,aA),cA=null!==(LA=AA.foreignObjectRendering)&&void 0!==LA&&LA,uA={allowTaint:null!==(IA=AA.allowTaint)&&void 0!==IA&&IA,onclone:AA.onclone,ignoreElements:AA.ignoreElements,inlineImages:cA,copyStyles:cA},lA.logger.debug(\"Starting document clone with size \"+aA.width+\"x\"+aA.height+\" scrolled to \"+-aA.left+\",\"+-aA.top),hA=new Ga(lA,eA,uA),(dA=hA.clonedReferenceElement)?[4,hA.toIFrame(rA,aA)]:[2,Promise.reject(\"Unable to find element in cloned iframe\")];case 1:return fA=RA.sent(),gA=isBodyElement(dA)||isHTMLElement(dA)?parseDocumentSize(dA.ownerDocument):parseBounds(lA,dA),pA=gA.width,mA=gA.height,wA=gA.left,yA=gA.top,BA=parseBackgroundColor(lA,dA,AA.backgroundColor),bA={canvas:AA.canvas,backgroundColor:BA,scale:null!==(TA=null!==(NA=AA.scale)&&void 0!==NA?NA:nA.devicePixelRatio)&&void 0!==TA?TA:1,x:(null!==(kA=AA.x)&&void 0!==kA?kA:0)+wA,y:(null!==(MA=AA.y)&&void 0!==MA?MA:0)+yA,width:null!==(OA=AA.width)&&void 0!==OA?OA:Math.ceil(pA),height:null!==(HA=AA.height)&&void 0!==HA?HA:Math.ceil(mA)},cA?(lA.logger.debug(\"Document cloned, using foreign object rendering\"),[4,new ml(lA,bA).render(dA)]):[3,3];case 2:return vA=RA.sent(),[3,5];case 3:return lA.logger.debug(\"Document cloned, element located at \"+wA+\",\"+yA+\" with size \"+pA+\"x\"+mA+\" using computed rendering\"),lA.logger.debug(\"Starting DOM parsing\"),CA=parseTree(lA,dA),BA===CA.styles.backgroundColor&&(CA.styles.backgroundColor=Gi.TRANSPARENT),lA.logger.debug(\"Starting renderer for element at \"+bA.x+\",\"+bA.y+\" with size \"+bA.width+\"x\"+bA.height),[4,new gl(lA,bA).render(CA)];case 4:vA=RA.sent(),RA.label=5;case 5:return(null===(DA=AA.removeContainer)||void 0===DA||DA)&&(Ga.destroy(fA)||lA.logger.error(\"Cannot detach cloned iframe as it is not in the DOM anymore\")),lA.logger.debug(\"Finished rendering\"),[2,vA]}}))}))},parseBackgroundColor=function(tA,eA,AA){var rA=eA.ownerDocument,nA=rA.documentElement?parseColor(tA,getComputedStyle(rA.documentElement).backgroundColor):Gi.TRANSPARENT,iA=rA.body?parseColor(tA,getComputedStyle(rA.body).backgroundColor):Gi.TRANSPARENT,sA=\"string\"==typeof AA?parseColor(tA,AA):null===AA?Gi.TRANSPARENT:4294967295;return eA===rA.documentElement?isTransparent(nA)?isTransparent(iA)?sA:iA:nA:sA};return html2canvas}(),po=_mergeNamespaces({__proto__:null,default:go},[fo.exports]);\n/*!\n * html2canvas 1.4.1 <https://html2canvas.hertzen.com>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n/**\n * Tools for svg.\n * @module svg\n * @license MIT\n * @copyright 2011 Jeff Schiller\n */\nconst{InsertElementCommand:mo,RemoveElementCommand:wo,ChangeElementCommand:yo,BatchCommand:Bo}=dA;let bo=null;const svgCanvasToString=()=>{for(;bo.removeUnusedDefElems()>0;);bo.pathActions.clear(!0);bo.getSvgContent().childNodes.forEach(((tA,eA)=>{eA&&8===tA.nodeType&&tA.data.includes(\"Created with\")&&bo.getSvgContent().firstChild.before(tA)})),bo.getCurrentGroup()&&(leaveContext(),bo.selectOnly([bo.getCurrentGroup()]));const tA=[],eA=bo.getSvgContent().querySelectorAll(\"g[data-gsvg]\");Array.prototype.forEach.call(eA,(eA=>{const AA=eA.attributes;let rA=AA.length;for(let tA=0;tA<rA;tA++)\"id\"!==AA[tA].nodeName&&\"style\"!==AA[tA].nodeName||rA--;if(rA<=0){const AA=eA.firstChild;tA.push(AA),eA.replaceWith(AA)}}));const AA=bo.svgToString(bo.getSvgContent(),0);return tA.length&&Array.prototype.forEach.call(tA,(tA=>{bo.groupSvgElem(tA)})),AA},svgToString=(tA,eA)=>{const AA=bo.getCurConfig(),rA=bo.getNsMap(),nA=[],iA=AA.baseUnit,oA=new RegExp(\"^-?[\\\\d\\\\.]+\"+iA+\"$\");if(tA){cleanupElement(tA);const aA=[...tA.attributes],lA=tA.childNodes;aA.sort(((tA,eA)=>tA.name>eA.name?-1:1));for(let tA=0;tA<eA;tA++)nA.push(\" \");if(nA.push(\"<\"),nA.push(tA.nodeName),\"svgcontent\"===tA.id){const eA=bo.getResolution();let oA=\"\";AA.dynamicOutput?(oA=tA.getAttribute(\"viewBox\"),nA.push(' viewBox=\"'+oA+'\" xmlns=\"'+sA.SVG+'\"')):(\"px\"!==iA&&(eA.w=convertUnit(eA.w,iA)+iA,eA.h=convertUnit(eA.h,iA)+iA),nA.push(' width=\"'+eA.w+'\" height=\"'+eA.h+'\" xmlns=\"'+sA.SVG+'\"'));const lA={},cA=tA.querySelectorAll(\"*\"),uA=Array.prototype.slice.call(cA);uA.push(tA),Array.prototype.forEach.call(uA,(tA=>{const eA=tA.namespaceURI;if(eA&&!lA[eA]&&rA[eA]&&\"xmlns\"!==rA[eA]&&\"xml\"!==rA[eA]&&(lA[eA]=!0,nA.push(\" xmlns:\"+rA[eA]+'=\"'+eA+'\"')),tA.attributes.length>0)for(const[,eA]of Object.entries(tA.attributes)){const tA=eA.namespaceURI;tA&&!lA[tA]&&\"xmlns\"!==rA[tA]&&\"xml\"!==rA[tA]&&(lA[tA]=!0,nA.push(\" xmlns:\"+rA[tA]+'=\"'+tA+'\"'))}}));let hA=aA.length;const dA=[\"width\",\"height\",\"xmlns\",\"x\",\"y\",\"viewBox\",\"id\",\"overflow\"];for(;hA--;){const tA=aA[hA],eA=toXml(tA.value);tA.nodeName.startsWith(\"xmlns:\")||(\"\"===eA||dA.includes(tA.localName)||tA.namespaceURI&&!rA[tA.namespaceURI]||(nA.push(\" \"),nA.push(tA.nodeName),nA.push('=\"'),nA.push(eA),nA.push('\"')))}}else{if(\"defs\"===tA.nodeName&&!tA.firstChild)return\"\";const eA=[\"-moz-math-font-style\",\"_moz-math-font-style\"];for(let AA=aA.length-1;AA>=0;AA--){const lA=aA[AA];let cA=toXml(lA.value);if(!eA.includes(lA.localName)){if(\"null\"===cA){const eA=lA.localName.replace(/-[a-z]/g,(tA=>tA[1].toUpperCase()));if(Object.prototype.hasOwnProperty.call(tA.style,eA))continue}if(\"\"!==cA){if(cA.startsWith(\"pointer-events\"))continue;if(\"class\"===lA.localName&&cA.startsWith(\"se_\"))continue;if(nA.push(\" \"),\"d\"===lA.localName&&(cA=bo.pathActions.convertPath(tA,!0)),isNaN(cA)?oA.test(cA)&&(cA=shortFloat(cA)+iA):cA=shortFloat(cA),bo.getSvgOptionApply()&&\"image\"===tA.nodeName&&\"href\"===lA.localName&&bo.getSvgOptionImages()&&\"embed\"===bo.getSvgOptionImages()){const tA=bo.getEncodableImages(cA);tA&&(cA=tA)}lA.namespaceURI&&lA.namespaceURI!==sA.SVG&&!rA[lA.namespaceURI]||(nA.push(lA.nodeName),nA.push('=\"'),nA.push(cA),nA.push('\"'))}}}}if(tA.hasChildNodes()){nA.push(\">\"),eA++;let AA=!1;for(let tA=0;tA<lA.length;tA++){const rA=lA.item(tA);switch(rA.nodeType){case 1:nA.push(\"\\n\"),nA.push(bo.svgToString(rA,eA));break;case 3:{const tA=rA.nodeValue.replace(/^\\s+|\\s+$/g,\"\");\"\"!==tA&&(AA=!0,nA.push(String(toXml(tA))));break}case 4:nA.push(\"\\n\"),nA.push(new Array(eA+1).join(\" \")),nA.push(\"<![CDATA[\"),nA.push(rA.nodeValue),nA.push(\"]]>\");break;case 8:nA.push(\"\\n\"),nA.push(new Array(eA+1).join(\" \")),nA.push(\"\\x3c!--\"),nA.push(rA.data),nA.push(\"--\\x3e\")}}if(eA--,!AA){nA.push(\"\\n\");for(let tA=0;tA<eA;tA++)nA.push(\" \")}nA.push(\"</\"),nA.push(tA.nodeName),nA.push(\">\")}else nA.push(\"/>\")}return nA.join(\"\")},setSvgString=(tA,eA)=>{const AA=bo.getCurConfig(),rA=bo.getDataStorage();try{const nA=text2xml(tA);if(nA.firstElementChild&&nA.firstElementChild.namespaceURI!==sA.SVG)return!1;bo.prepareSvg(nA);const iA=new Bo(\"Change Source\"),{nextSibling:oA}=bo.getSvgContent();bo.getSvgContent().remove();const aA=bo.getSvgContent();iA.addSubCommand(new wo(aA,oA,bo.getSvgRoot())),bo.getDOMDocument().adoptNode?bo.setSvgContent(bo.getDOMDocument().adoptNode(nA.documentElement)):bo.setSvgContent(bo.getDOMDocument().importNode(nA.documentElement,!0)),bo.getSvgRoot().append(bo.getSvgContent());const lA=bo.getSvgContent();bo.current_drawing_=new Drawing(bo.getSvgContent(),bo.getIdPrefix());const cA=bo.getCurrentDrawing().getNonce();cA?bo.call(\"setnonce\",cA):bo.call(\"unsetnonce\");const uA=lA.querySelectorAll(\"image\");Array.prototype.forEach.call(uA,(tA=>{preventClickDefault(tA);const eA=bo.getHref(tA);if(eA){if(eA.startsWith(\"data:\")){const AA=eA.match(/svgedit_url=(.*?);/);if(AA){const eA=decodeURIComponent(AA[1]),rA=new Image;rA.addEventListener(\"load\",(()=>{tA.setAttributeNS(sA.XLINK,\"xlink:href\",eA)})),rA.src=eA}}bo.embedImage(eA)}}));const hA=lA.querySelectorAll(\"[id]\"),dA={},fA=hA.length;for(let tA=0;tA<fA;tA++){const eA=hA[tA].id?hA[tA].id:\"undefined\";isNaN(dA[eA])&&(dA[eA]=0),dA[eA]++}Object.entries(dA).forEach((([tA,eA])=>{if(eA>1){const eA=lA.querySelectorAll('[id=\"'+tA+'\"]');for(let tA=1;tA<eA.length;tA++)eA[tA].setAttribute(\"id\",bo.getNextId())}}));const gA=lA.querySelectorAll(\"svg\");if(Array.prototype.forEach.call(gA,(tA=>{if(getClosest(tA.parentNode,\"defs\"))return;bo.uniquifyElems(tA);const eA=tA.parentNode;1===eA.childNodes.length&&\"g\"===eA.nodeName?(rA.put(eA,\"gsvg\",tA),eA.id=eA.id||bo.getNextId()):bo.groupSvgElem(tA)})),isGecko()){const tA=findDefs(),eA=lA.querySelectorAll(\"linearGradient, radialGradient, pattern\");Array.prototype.forEach.call(eA,(eA=>{tA.appendChild(eA)}))}bo.setUseData(lA),bo.convertGradients(lA);const pA={id:\"svgcontent\",overflow:AA.show_outside_canvas?\"visible\":\"hidden\"};let mA=!1;if(lA.getAttribute(\"viewBox\")){const tA=lA.getAttribute(\"viewBox\").split(\" \");pA.width=tA[2],pA.height=tA[3]}else[\"width\",\"height\"].forEach((tA=>{const eA=lA.getAttribute(tA)||\"100%\";\"%\"===String(eA).substr(-1)?mA=!0:pA[tA]=convertToNum(tA,eA)}));identifyLayers();const wA=lA.children;if(Array.prototype.forEach.call(wA,(tA=>{const eA=tA.querySelectorAll(bo.getVisElems());Array.prototype.forEach.call(eA,(tA=>{tA.id||(tA.id=bo.getNextId())}))})),mA){const tA=getStrokedBBoxDefaultVisible();pA.width=tA.width+tA.x,pA.height=tA.height+tA.y}pA.width<=0&&(pA.width=100),pA.height<=0&&(pA.height=100);for(const[tA,eA]of Object.entries(pA))lA.setAttribute(tA,eA);bo.contentW=pA.width,bo.contentH=pA.height,iA.addSubCommand(new mo(bo.getSvgContent()));const yA=lA.getAttribute(\"width\"),BA={width:yA,height:lA.getAttribute(\"height\")};iA.addSubCommand(new yo(bo.getSvgRoot(),BA)),bo.setZoom(1),bo.clearSelection(),clearData(),bo.getSvgRoot().append(bo.selectorManager.selectorParentGroup),eA||bo.addCommandToHistory(iA),bo.call(\"sourcechanged\",[bo.getSvgContent()])}catch(tA){return console.error(tA),!1}return!0},importSvgString=tA=>{const eA=bo.getDataStorage();let AA,rA,nA;try{const iA=function hashCode(tA){let eA,AA=0;if(0===tA.length)return AA;for(let rA=0;rA<tA.length;rA++)eA=tA.charCodeAt(rA),AA=(AA<<5)-AA+eA,AA|=0;return AA}(tA);let oA=!1;if(bo.getImportIds(iA)&&bo.getImportIds(iA).symbol){getParents(bo.getImportIds(iA).symbol,\"#svgroot\")?.length&&(oA=!0)}const aA=new Bo(\"Import Image\");let lA;if(oA)lA=bo.getImportIds(iA).symbol,rA=bo.getImportIds(iA).xform;else{const eA=text2xml(tA);bo.prepareSvg(eA);const nA=bo.getDOMDocument().adoptNode?bo.getDOMDocument().adoptNode(eA.documentElement):bo.getDOMDocument().importNode(eA.documentElement,!0);bo.uniquifyElems(nA);const oA=convertToNum(\"width\",nA.getAttribute(\"width\")),cA=convertToNum(\"height\",nA.getAttribute(\"height\")),uA=nA.getAttribute(\"viewBox\"),hA=uA?uA.split(\" \"):[0,0,oA,cA];for(AA=0;AA<4;++AA)hA[AA]=Number(hA[AA]);const dA=Number(bo.getSvgContent().getAttribute(\"height\"));rA=cA>oA?\"scale(\"+dA/3/hA[3]+\")\":\"scale(\"+dA/3/hA[2]+\")\",rA=\"translate(0) \"+rA+\" translate(0)\",lA=bo.getDOMDocument().createElementNS(sA.SVG,\"symbol\");const fA=findDefs();if(isGecko()){const tA=nA.querySelectorAll(\"linearGradient, radialGradient, pattern\");Array.prototype.forEach.call(tA,(tA=>{fA.appendChild(tA)}))}for(;nA.firstChild;){const tA=nA.firstChild;lA.append(tA)}const gA=nA.attributes;for(const tA of gA)lA.setAttribute(tA.nodeName,tA.value);lA.id=bo.getNextId(),bo.setImportIds(iA,{symbol:lA,xform:rA}),findDefs().append(lA),aA.addSubCommand(new mo(lA))}nA=bo.getDOMDocument().createElementNS(sA.SVG,\"use\"),nA.id=bo.getNextId(),bo.setHref(nA,\"#\"+lA.id),(bo.getCurrentGroup()||bo.getCurrentDrawing().getCurrentLayer()).append(nA),aA.addSubCommand(new mo(nA)),bo.clearSelection(),nA.setAttribute(\"transform\",rA),recalculateDimensions(nA),eA.put(nA,\"symbol\",lA),eA.put(nA,\"ref\",lA),bo.addToSelection([nA]),bo.addCommandToHistory(aA),bo.call(\"changed\",[bo.getSvgContent()])}catch(tA){return console.error(tA),null}return nA},embedImage=tA=>new Promise(((eA,AA)=>{const rA=new Image;rA.addEventListener(\"load\",(AA=>{const rA=document.createElement(\"canvas\");rA.width=AA.currentTarget.width,rA.height=AA.currentTarget.height,rA.getContext(\"2d\").drawImage(AA.currentTarget,0,0);try{let eA=\";svgedit_url=\"+encodeURIComponent(tA);eA=rA.toDataURL().replace(\";base64\",eA+\";base64\"),bo.setEncodableImages(tA,eA)}catch(AA){bo.setEncodableImages(tA,!1)}bo.setGoodImage(tA),eA(bo.getEncodableImages(tA))})),rA.addEventListener(\"error\",(tA=>{AA(new Error(`error loading image: ${tA.currentTarget.attributes.src.value}`))})),rA.setAttribute(\"src\",tA)})),getIssues=()=>{const tA=bo.getUIStrings();bo.clearSelection();const eA=[],AA=[],rA={feGaussianBlur:tA.NoBlur,foreignObject:tA.NoforeignObject,\"[stroke-dasharray]\":tA.NoDashArray},nA=bo.getSvgContent();\"font\"in document.querySelector(\"CANVAS\").getContext(\"2d\")||(rA.text=tA.NoText);for(const[tA,iA]of Object.entries(rA))nA.querySelectorAll(tA).length&&(AA.push(tA),eA.push(iA));return{issues:eA,issueCodes:AA}},rasterExport=async(tA,eA,AA,rA={})=>{const nA=\"ICO\"===tA?\"BMP\":tA||\"PNG\",iA=\"image/\"+nA.toLowerCase(),{issues:sA,issueCodes:oA}=getIssues(),aA=bo.svgCanvasToString(),lA=document.createElement(\"iframe\");lA.onload=()=>{const cA=lA.contentDocument||lA.contentWindow.document,uA=bo.getSvgContent().cloneNode(!0);cA.body.appendChild(uA),setTimeout((()=>{go(cA.body,{useCORS:!0,allowTaint:!0}).then((cA=>new Promise((uA=>{const hA=nA.toLowerCase(),dA=eA?cA.toDataURL(\"image/\"+hA,eA):cA.toDataURL(\"image/\"+hA);let fA;lA.parentNode.removeChild(lA);const done=()=>{const nA={datauri:dA,bloburl:fA,svg:aA,issues:sA,issueCodes:oA,type:tA,mimeType:iA,quality:eA,WindowName:AA};rA.avoidEvent||bo.call(\"ed\",nA),uA(nA)};cA.toBlob?cA.toBlob((tA=>{fA=createObjectURL(tA),done()}),iA,eA):(fA=(tA=>{if(\"undefined\"==typeof Uint8Array||\"undefined\"==typeof Blob||\"undefined\"==typeof URL||!URL.createObjectURL)return\"\";const eA=tA.split(\",\"),AA=eA[0].match(/:(.*?);/)[1],rA=atob(eA[1]);let nA=rA.length;const iA=new Uint8Array(nA);for(;nA--;)iA[nA]=rA.charCodeAt(nA);const sA=new Blob([iA],{type:AA});return URL.createObjectURL(sA)})(dA),done())}))))}),1e3)},document.body.appendChild(lA)},exportPDF=async(tA,eA=((()=>Hr)()?\"save\":void 0))=>{const AA=bo.getResolution(),rA=AA.w>AA.h?\"landscape\":\"portrait\",nA=document.createElement(\"iframe\");nA.onload=()=>{const iA=nA.contentDocument||nA.contentWindow.document,sA=bo.getSvgContent().cloneNode(!0);iA.body.appendChild(sA),setTimeout((()=>{go(iA.body,{useCORS:!0,allowTaint:!0}).then((iA=>{const sA=iA.toDataURL(\"image/png\"),oA=new E({orientation:rA,unit:\"pt\",format:[AA.w,AA.h]}),aA=bo.getDocumentTitle();oA.setProperties({title:aA}),oA.addImage(sA,\"PNG\",0,0,AA.w,AA.h),nA.parentNode.removeChild(nA);const{issues:lA,issueCodes:cA}=getIssues(),uA={issues:lA,issueCodes:cA,WindowName:tA,outputType:eA=eA||\"dataurlstring\"};return uA.output=oA.output(eA,\"save\"===eA?tA||\"svg.pdf\":void 0),bo.call(\"edPDF\",uA),uA}))}),1e3)},document.body.appendChild(nA)},uniquifyElemsMethod=tA=>{const eA={},AA=[\"filter\",\"linearGradient\",\"pattern\",\"radialGradient\",\"symbol\",\"textPath\",\"use\"];walkTree(tA,(tA=>{if(1===tA.nodeType){tA.id&&(tA.id in eA||(eA[tA.id]={elem:null,attrs:[],hrefs:[]}),eA[tA.id].elem=tA),bo.getrefAttrs().forEach((AA=>{const rA=tA.getAttributeNode(AA);if(rA){const tA=bo.getUrlFromAttr(rA.value),AA=tA?tA.substr(1):null;AA&&(AA in eA||(eA[AA]={elem:null,attrs:[],hrefs:[]}),eA[AA].attrs.push(rA))}}));const rA=bo.getHref(tA);if(rA&&AA.includes(tA.nodeName)){const AA=rA.substr(1);AA&&(AA in eA||(eA[AA]={elem:null,attrs:[],hrefs:[]}),eA[AA].hrefs.push(tA))}}}));for(const tA in eA){if(!tA)continue;const{elem:AA}=eA[tA];if(AA){const rA=bo.getNextId();AA.id=rA;const{attrs:nA}=eA[tA];let iA=nA.length;for(;iA--;){const tA=nA[iA];tA.ownerElement.setAttribute(tA.name,\"url(#\"+rA+\")\")}const sA=eA[tA].hrefs;let oA=sA.length;for(;oA--;){const tA=sA[oA];bo.setHref(tA,\"#\"+rA)}}}},setUseDataMethod=tA=>{let eA=tA;\"use\"!==tA.tagName&&(eA=eA.querySelectorAll(\"use\")),Array.prototype.forEach.call(eA,((tA,eA)=>{const AA=bo.getDataStorage(),rA=bo.getHref(tA).substr(1),nA=bo.getElement(rA);nA&&(AA.put(tA,\"ref\",nA),\"symbol\"!==nA.tagName&&\"svg\"!==nA.tagName||(AA.put(tA,\"symbol\",nA),AA.put(tA,\"ref\",nA)))}))},removeUnusedDefElemsMethod=()=>{const tA=bo.getSvgContent().getElementsByTagNameNS(sA.SVG,\"defs\");if(!tA||!tA.length)return 0;const eA=[];let AA=0;const rA=[\"fill\",\"stroke\",\"filter\",\"marker-start\",\"marker-mid\",\"marker-end\"],nA=rA.length,iA=bo.getSvgContent().getElementsByTagNameNS(sA.SVG,\"*\"),oA=iA.length;let aA,lA;for(aA=0;aA<oA;aA++){const tA=iA[aA];for(lA=0;lA<nA;lA++){const AA=bo.getUrlFromAttr(tA.getAttribute(rA[lA]));AA&&eA.push(AA.substr(1))}const AA=getHref(tA);AA&&AA.startsWith(\"#\")&&eA.push(AA.substr(1))}return Array.prototype.forEach.call(tA,((tA,rA)=>{const nA=tA.querySelectorAll(\"linearGradient, radialGradient, filter, marker, svg, symbol\");for(rA=nA.length;rA--;){const tA=nA[rA],{id:iA}=tA;eA.includes(iA)||(bo.setRemovedElements(iA,tA),tA.remove(),AA++)}})),AA},convertGradientsMethod=tA=>{let eA=tA.querySelectorAll(\"linearGradient, radialGradient\");!eA.length&&isWebkit()&&(eA=Array.prototype.filter.call(tA.querySelectorAll(\"*\"),(tA=>tA.tagName.includes(\"Gradient\")))),Array.prototype.forEach.call(eA,(tA=>{if(\"userSpaceOnUse\"===tA.getAttribute(\"gradientUnits\")){const eA=bo.getSvgContent();let AA=eA.querySelectorAll('[fill=\"url(#'+tA.id+')\"],[stroke=\"url(#'+tA.id+')\"]');if(!AA.length){const rA=eA.querySelectorAll('[*|href=\"#'+tA.id+'\"]');if(!rA.length)return;if(\"linearGradient\"!==rA[0].tagName&&\"radialGradient\"!==rA[0].tagName||\"userSpaceOnUse\"!==rA[0].getAttribute(\"gradientUnits\"))return;AA=eA.querySelectorAll('[fill=\"url(#'+rA[0].id+')\"],[stroke=\"url(#'+rA[0].id+')\"]')}const rA=getBBox(AA[0]);if(!rA)return;if(\"linearGradient\"===tA.tagName){const eA={x1:tA.getAttribute(\"x1\"),y1:tA.getAttribute(\"y1\"),x2:tA.getAttribute(\"x2\"),y2:tA.getAttribute(\"y2\")},AA=tA.gradientTransform.baseVal;if(AA?.numberOfItems>0){const rA=transformListToTransform(AA).matrix,nA=transformPoint(eA.x1,eA.y1,rA),iA=transformPoint(eA.x2,eA.y2,rA);eA.x1=nA.x,eA.y1=nA.y,eA.x2=iA.x,eA.y2=iA.y,tA.removeAttribute(\"gradientTransform\")}tA.setAttribute(\"x1\",(eA.x1-rA.x)/rA.width),tA.setAttribute(\"y1\",(eA.y1-rA.y)/rA.height),tA.setAttribute(\"x2\",(eA.x2-rA.x)/rA.width),tA.setAttribute(\"y2\",(eA.y2-rA.y)/rA.height),tA.removeAttribute(\"gradientUnits\")}}}))};\n/**\n * DOM element selection box tools.\n * @module select\n * @license MIT\n *\n * @copyright 2010 Alexis Deveria, 2010 Jeff Schiller\n */\nlet vo,Co;const So=window.ontouchstart?10:4;class Selector{constructor(tA,eA,AA){this.id=tA,this.selectedElement=eA,this.locked=!0,this.selectorGroup=vo.createSVGElement({element:\"g\",attr:{id:\"selectorGroup\"+this.id}}),this.selectorRect=vo.createSVGElement({element:\"path\",attr:{id:\"selectedBox\"+this.id,fill:\"none\",stroke:\"#22C\",\"stroke-width\":\"1\",\"stroke-dasharray\":\"5,5\",style:\"pointer-events:none\"}}),this.selectorGroup.append(this.selectorRect),this.gripCoords={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null},this.reset(this.selectedElement,AA)}reset(tA,eA){this.locked=!0,this.selectedElement=tA,this.resize(eA),this.selectorGroup.setAttribute(\"display\",\"inline\")}showGrips(tA){const eA=tA?\"inline\":\"none\";Co.selectorGripsGroup.setAttribute(\"display\",eA);const AA=this.selectedElement;this.hasGrips=tA,AA&&tA&&(this.selectorGroup.append(Co.selectorGripsGroup),Selector.updateGripCursors(getRotationAngle(AA)))}resize(tA){const eA=vo.getDataStorage(),AA=this.selectorRect,rA=Co,nA=rA.selectorGrips,iA=this.selectedElement,sA=vo.getZoom();let oA=1/sA;const aA=iA.getAttribute(\"stroke-width\");\"none\"===iA.getAttribute(\"stroke\")||isNaN(aA)||(oA+=aA/2);const{tagName:lA}=iA;\"text\"===lA&&(oA+=2/sA);const cA=iA.transform.baseVal,uA=transformListToTransform(cA).matrix;if(uA.e*=sA,uA.f*=sA,tA||(tA=getBBox(iA)),\"g\"===lA&&!eA.has(iA,\"gsvg\")){const eA=getStrokedBBox([iA.childNodes]);eA&&(tA=eA)}const hA=tA.x,dA=tA.y,fA=tA.width,gA=tA.height;oA*=sA;const pA=transformBox(hA*sA,dA*sA,fA*sA,gA*sA,uA),{aabox:mA}=pA;let wA=mA.x-oA,yA=mA.y-oA,BA=mA.width+2*oA,bA=mA.height+2*oA;const vA=wA+BA/2,CA=yA+bA/2,SA=getRotationAngle(iA);if(SA){const tA=vo.getSvgRoot().createSVGTransform();tA.setRotate(-SA,vA,CA);const eA=tA.matrix;pA.tl=transformPoint(pA.tl.x,pA.tl.y,eA),pA.tr=transformPoint(pA.tr.x,pA.tr.y,eA),pA.bl=transformPoint(pA.bl.x,pA.bl.y,eA),pA.br=transformPoint(pA.br.x,pA.br.y,eA);const{tl:AA}=pA;let rA=AA.x,nA=AA.y,iA=AA.x,sA=AA.y;const{min:aA,max:lA}=Math;rA=aA(rA,aA(pA.tr.x,aA(pA.bl.x,pA.br.x)))-oA,nA=aA(nA,aA(pA.tr.y,aA(pA.bl.y,pA.br.y)))-oA,iA=lA(iA,lA(pA.tr.x,lA(pA.bl.x,pA.br.x)))+oA,sA=lA(sA,lA(pA.tr.y,lA(pA.bl.y,pA.br.y)))+oA,wA=rA,yA=nA,BA=iA-rA,bA=sA-nA}const xA=\"M\"+wA+\",\"+yA+\" L\"+(wA+BA)+\",\"+yA+\" \"+(wA+BA)+\",\"+(yA+bA)+\" \"+wA+\",\"+(yA+bA)+\"z\",FA=SA?\"rotate(\"+[SA,vA,CA].join(\",\")+\")\":\"\";this.gripCoords={nw:[wA,yA],ne:[wA+BA,yA],sw:[wA,yA+bA],se:[wA+BA,yA+bA],n:[wA+BA/2,yA],w:[wA,yA+bA/2],e:[wA+BA,yA+bA/2],s:[wA+BA/2,yA+bA]},AA.setAttribute(\"d\",xA),this.selectorGroup.setAttribute(\"transform\",FA),Object.entries(this.gripCoords).forEach((([tA,eA])=>{nA[tA].setAttribute(\"cx\",eA[0]),nA[tA].setAttribute(\"cy\",eA[1])})),rA.rotateGripConnector.setAttribute(\"x1\",wA+BA/2),rA.rotateGripConnector.setAttribute(\"y1\",yA),rA.rotateGripConnector.setAttribute(\"x2\",wA+BA/2),rA.rotateGripConnector.setAttribute(\"y2\",yA-5*So),rA.rotateGrip.setAttribute(\"cx\",wA+BA/2),rA.rotateGrip.setAttribute(\"cy\",yA-5*So)}static updateGripCursors(tA){const eA=Object.keys(Co.selectorGrips);let AA=Math.round(tA/45);for(AA<0&&(AA+=8);AA>0;)eA.push(eA.shift()),AA--;Object.values(Co.selectorGrips).forEach(((tA,AA)=>{tA.setAttribute(\"style\",\"cursor:\"+eA[AA]+\"-resize\")}))}}class SelectorManager{constructor(){this.selectorParentGroup=null,this.rubberBandBox=null,this.selectors=[],this.selectorMap={},this.selectorGrips={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null},this.selectorGripsGroup=null,this.rotateGripConnector=null,this.rotateGrip=null,this.initGroup()}initGroup(){const tA=vo.getDataStorage();if(this.selectorParentGroup?.parentNode&&this.selectorParentGroup.remove(),this.selectorParentGroup=vo.createSVGElement({element:\"g\",attr:{id:\"selectorParentGroup\"}}),this.selectorGripsGroup=vo.createSVGElement({element:\"g\",attr:{display:\"none\"}}),this.selectorParentGroup.append(this.selectorGripsGroup),vo.getSvgRoot().append(this.selectorParentGroup),this.selectorMap={},this.selectors=[],this.rubberBandBox=null,Object.keys(this.selectorGrips).forEach((eA=>{const AA=vo.createSVGElement({element:\"circle\",attr:{id:\"selectorGrip_resize_\"+eA,fill:\"#22C\",r:So,style:\"cursor:\"+eA+\"-resize\",\"stroke-width\":2,\"pointer-events\":\"all\"}});tA.put(AA,\"dir\",eA),tA.put(AA,\"type\",\"resize\"),this.selectorGrips[eA]=AA,this.selectorGripsGroup.append(AA)})),this.rotateGripConnector=vo.createSVGElement({element:\"line\",attr:{id:\"selectorGrip_rotateconnector\",stroke:\"#22C\",\"stroke-width\":\"1\"}}),this.selectorGripsGroup.append(this.rotateGripConnector),this.rotateGrip=vo.createSVGElement({element:\"circle\",attr:{id:\"selectorGrip_rotate\",fill:\"lime\",r:So,stroke:\"#22C\",\"stroke-width\":2,style:`cursor:url(${vo.curConfig.imgPath}/rotate.svg) 12 12, auto;`}}),this.selectorGripsGroup.append(this.rotateGrip),tA.put(this.rotateGrip,\"type\",\"rotate\"),document.getElementById(\"canvasBackground\"))return;const[eA,AA]=vo.curConfig.dimensions,rA=vo.createSVGElement({element:\"svg\",attr:{id:\"canvasBackground\",width:eA,height:AA,x:0,y:0,overflow:isWebkit()?\"none\":\"visible\",style:\"pointer-events:none\"}}),nA=vo.createSVGElement({element:\"rect\",attr:{width:\"100%\",height:\"100%\",x:0,y:0,\"stroke-width\":1,stroke:\"#000\",fill:\"#FFF\",style:\"pointer-events:none\"}});rA.append(nA),vo.getSvgRoot().insertBefore(rA,vo.getSvgContent())}requestSelector(tA,eA){if(!tA)return null;const AA=this.selectors.length;if(\"object\"==typeof this.selectorMap[tA.id])return this.selectorMap[tA.id].locked=!0,this.selectorMap[tA.id];for(let rA=0;rA<AA;++rA)if(!this.selectors[rA]?.locked)return this.selectors[rA].locked=!0,this.selectors[rA].reset(tA,eA),this.selectorMap[tA.id]=this.selectors[rA],this.selectors[rA];return this.selectors[AA]=new Selector(AA,tA,eA),this.selectorParentGroup.append(this.selectors[AA].selectorGroup),this.selectorMap[tA.id]=this.selectors[AA],this.selectors[AA]}releaseSelector(tA){if(!tA)return;const eA=this.selectors.length,AA=this.selectorMap[tA.id];AA?.locked||console.warn(\"WARNING! selector was released but was already unlocked\");for(let rA=0;rA<eA;++rA)if(this.selectors[rA]&&this.selectors[rA]===AA){delete this.selectorMap[tA.id],AA.locked=!1,AA.selectedElement=null,AA.showGrips(!1);try{AA.selectorGroup.setAttribute(\"display\",\"none\")}catch(tA){}break}}getRubberBandBox(){return this.rubberBandBox||(this.rubberBandBox=vo.createSVGElement({element:\"rect\",attr:{id:\"selectorRubberBand\",fill:\"#22C\",\"fill-opacity\":.15,stroke:\"#22C\",\"stroke-width\":.5,display:\"none\",style:\"pointer-events:none\"}}),this.selectorParentGroup.append(this.rubberBandBox)),this.rubberBandBox}}\n/**\n * Tools for clear.\n * @module clear\n * @license MIT\n * @copyright 2011 Jeff Schiller\n */\nlet xo=null;const clearSvgContentElementInit=()=>{const tA=xo.getCurConfig(),{dimensions:eA}=tA,AA=xo.getSvgContent();for(;AA.firstChild;)AA.removeChild(AA.firstChild);const rA=xo.getSvgRoot();AA.setAttribute(\"id\",\"svgcontent\"),AA.setAttribute(\"width\",eA[0]),AA.setAttribute(\"height\",eA[1]),AA.setAttribute(\"x\",eA[0]),AA.setAttribute(\"y\",eA[1]),AA.setAttribute(\"overflow\",tA.show_outside_canvas?\"visible\":\"hidden\"),AA.setAttribute(\"xmlns\",sA.SVG),AA.setAttribute(\"xmlns:se\",sA.SE),AA.setAttribute(\"xmlns:xlink\",sA.XLINK),rA.appendChild(AA);const nA=xo.getDOMDocument().createComment(\" Created with SVG-edit - https://github.com/SVG-Edit/svgedit\");xo.getSvgContent().append(nA)},Fo={_storage:new WeakMap,put:function(tA,eA,AA){this._storage.has(tA)||this._storage.set(tA,new Map),this._storage.get(tA).set(eA,AA)},get:function(tA,eA){return this._storage.get(tA)?.get(eA)},has:function(tA,eA){return this._storage.has(tA)&&this._storage.get(tA).has(eA)},remove:function(tA,eA){const AA=this._storage.get(tA).delete(eA);return 0===this._storage.get(tA).size&&this._storage.delete(tA),AA}},Eo=[\"clip-path\",\"fill\",\"filter\",\"marker-end\",\"marker-mid\",\"marker-start\",\"mask\",\"stroke\"],Qo=\"svgedit_clipboard\";class SvgCanvas{constructor(eA,AA){this.initializeSvgCanvasMethods(),function(eA){nA=eA;const AA=document.createElementNS(tA,\"svg\");document.body.append(AA);const rA=document.createElementNS(tA,\"rect\");rA.setAttribute(\"width\",\"1em\"),rA.setAttribute(\"height\",\"1ex\"),rA.setAttribute(\"x\",\"1in\"),AA.append(rA);const sA=rA.getBBox();AA.remove();const oA=sA.x;iA={em:sA.width,ex:sA.height,in:oA,cm:oA/2.54,mm:oA/25.4,pt:oA/72,pc:oA/6,px:1,\"%\":0}}(this);const{pathActions:rA}=GA;this.saveOptions={round_digits:2},this.importIds={},this.extensions={},this.removedElements={},this.started=!1,this.startTransform=null,this.currentMode=\"select\",this.currentResizeMode=\"none\",this.justSelected=null,this.rubberBox=null,this.curBBoxes=[],this.lastClickPoint=null,this.events={},this.rootSctm=null,this.drawnPath=null,this.freehand={minx:null,miny:null,maxx:null,maxy:null},this.dAttr=null,this.startX=null,this.startY=null,this.rStartX=null,this.rStartY=null,this.initBbox={},this.sumDistance=0,this.controllPoint2={x:0,y:0},this.controllPoint1={x:0,y:0},this.start={x:0,y:0},this.end={x:0,y:0},this.bSpline={x:0,y:0},this.nextPos={x:0,y:0},this.idprefix=\"svg_\",this.encodableImages={},this.curConfig={show_outside_canvas:!0,selectNew:!0,dimensions:[640,480]},AA&&(this.curConfig=SvgCanvas.mergeDeep(this.curConfig,AA)),this.lastGoodImgUrl=`${this.curConfig.imgPath}/logo.svg`;const{dimensions:oA}=this.curConfig;this.svgdoc=window.document,this.container=eA,this.svgroot=function(tA,eA){return tA.importNode(text2xml(`<svg id=\"svgroot\" xmlns=\"${sA.SVG}\" xlinkns=\"${sA.XLINK}\" width=\"${eA[0]}\" \\n height=\"${eA[1]}\" x=\"${eA[0]}\" y=\"${eA[1]}\" overflow=\"visible\">\\n <defs>\\n <filter id=\"canvashadow\" filterUnits=\"objectBoundingBox\">\\n <feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"4\" result=\"blur\"/>\\n <feOffset in=\"blur\" dx=\"5\" dy=\"5\" result=\"offsetBlur\"/>\\n <feMerge>\\n <feMergeNode in=\"offsetBlur\"/>\\n <feMergeNode in=\"SourceGraphic\"/>\\n </feMerge>\\n </filter>\\n </defs>\\n </svg>`).documentElement,!0)}(this.svgdoc,oA),eA.append(this.svgroot),this.svgContent=this.svgdoc.createElementNS(sA.SVG,\"svg\"),(tA=>{tA.svgroot.addEventListener(\"touchstart\",touchHandler),tA.svgroot.addEventListener(\"touchmove\",touchHandler),tA.svgroot.addEventListener(\"touchend\",touchHandler),tA.svgroot.addEventListener(\"touchcancel\",touchHandler)})(this),xo=this,this.clearSvgContentElement(),this.current_drawing_=new Drawing(this.svgContent,this.idprefix),this.zoom=1,this.currentGroup=null;const aA={shape:{fill:(\"none\"===this.curConfig.initFill.color?\"\":\"#\")+this.curConfig.initFill.color,fill_paint:null,fill_opacity:this.curConfig.initFill.opacity,stroke:\"#\"+this.curConfig.initStroke.color,stroke_paint:null,stroke_opacity:this.curConfig.initStroke.opacity,stroke_width:this.curConfig.initStroke.width,stroke_dasharray:\"none\",stroke_linejoin:\"miter\",stroke_linecap:\"butt\",opacity:this.curConfig.initOpacity}};aA.text=SvgCanvas.mergeDeep({},aA.shape),aA.text=SvgCanvas.mergeDeep(aA.text,{fill:\"#000000\",stroke_width:this.curConfig.text?.stroke_width,font_size:this.curConfig.text?.font_size,font_family:this.curConfig.text?.font_family}),this.curText=aA.text,this.curShape=aA.shape,this.curProperties=this.curShape,this.selectedElements=[],(tA=>{Zr=tA,$r=tA.getDOMDocument()})(this),(tA=>{lA=tA,cA=tA.getSvgRoot()})(this),(tA=>{An=tA})(this),(tA=>{rn=tA})(this),(tA=>{vo=tA,Co=new SelectorManager})(this),(tA=>{Gr=tA,tA.undoMgr=getUndoManager()})(this),(tA=>{zr=tA,zr.getMouseTarget=getMouseTargetMethod,zr.clearSelection=clearSelectionMethod,zr.addToSelection=addToSelectionMethod,zr.getIntersectionList=getIntersectionListMethod,zr.runExtensions=runExtensionsMethod,zr.groupSvgElem=groupSvgElem,zr.prepareSvg=prepareSvg,zr.recalculateAllSelectedDimensions=recalculateAllSelectedDimensions,zr.setRotationAngle=setRotationAngle})(this),this.nsMap=getReverseNS(),this.selectorManager=Co,this.pathActions=rA,init$g(this),this.uiStrings={},this.opacAni=document.createElementNS(sA.SVG,\"animate\"),this.opacAni.setAttribute(\"attributeName\",\"opacity\"),this.opacAni.setAttribute(\"begin\",\"indefinite\"),this.opacAni.setAttribute(\"dur\",1),this.opacAni.setAttribute(\"fill\",\"freeze\"),this.svgroot.appendChild(this.opacAni),(tA=>{Jr=tA,Jr.mouseDownEvent=mouseDownEvent,Jr.mouseMoveEvent=mouseMoveEvent,Jr.dblClickEvent=dblClickEvent,Jr.mouseUpEvent=mouseUpEvent,Jr.mouseOutEvent=mouseOutEvent,Jr.DOMMouseScrollEvent=DOMMouseScrollEvent})(this),(tA=>{Xr=tA})(this),(tA=>{bo=tA,bo.setSvgString=setSvgString,bo.importSvgString=importSvgString,bo.uniquifyElems=uniquifyElemsMethod,bo.setUseData=setUseDataMethod,bo.convertGradients=convertGradientsMethod,bo.removeUnusedDefElems=removeUnusedDefElemsMethod,bo.svgCanvasToString=svgCanvasToString,bo.svgToString=svgToString,bo.embedImage=embedImage,bo.rasterExport=rasterExport,bo.exportPDF=exportPDF})(this),(tA=>{WA=tA})(this),(tA=>{tn=tA,tn.getBold=getBoldMethod,tn.setBold=setBoldMethod,tn.getItalic=getItalicMethod,tn.setItalic=setItalicMethod,tn.hasTextDecoration=hasTextDecorationMethod,tn.addTextDecoration=addTextDecorationMethod,tn.removeTextDecoration=removeTextDecorationMethod,tn.setTextAnchor=setTextAnchorMethod,tn.setLetterSpacing=setLetterSpacingMethod,tn.setWordSpacing=setWordSpacingMethod,tn.setTextLength=setTextLengthMethod,tn.setLengthAdjust=setLengthAdjustMethod,tn.getFontFamily=getFontFamilyMethod,tn.setFontFamily=setFontFamilyMethod,tn.setFontColor=setFontColorMethod,tn.getFontColor=getFontColorMethod,tn.getFontSize=getFontSizeMethod,tn.setFontSize=setFontSizeMethod,tn.getText=getTextMethod,tn.setTextContent=setTextContentMethod,tn.setImageURL=setImageURLMethod,tn.setLinkURL=setLinkURLMethod,tn.setRectRadius=setRectRadiusMethod,tn.makeHyperlink=makeHyperlinkMethod,tn.removeHyperlink=removeHyperlinkMethod,tn.setSegType=setSegTypeMethod,tn.setStrokeWidth=setStrokeWidthMethod,tn.getResolution=getResolutionMethod,tn.getTitle=getTitleMethod,tn.setGroupTitle=setGroupTitleMethod,tn.setStrokeAttr=setStrokeAttrMethod,tn.setBackground=setBackgroundMethod,tn.setDocumentTitle=setDocumentTitleMethod,tn.getEditorNS=getEditorNSMethod,tn.setResolution=setResolutionMethod,tn.setBBoxZoom=setBBoxZoomMethod,tn.setCurrentZoom=setZoomMethod,tn.setColor=setColorMethod,tn.setGradient=setGradientMethod,tn.setPaint=setPaintMethod})(this);eA.addEventListener(\"mousedown\",this.mouseDownEvent),eA.addEventListener(\"mousemove\",this.mouseMoveEvent),$click(eA,(tA=>(tA.preventDefault(),!1))),eA.addEventListener(\"dblclick\",this.dblClickEvent),eA.addEventListener(\"mouseup\",this.mouseUpEvent),eA.addEventListener(\"mouseleave\",this.mouseOutEvent),eA.addEventListener(\"mousewheel\",this.DOMMouseScrollEvent),eA.addEventListener(\"DOMMouseScroll\",this.DOMMouseScrollEvent),this.linkControlPoints=rA.linkControlPoints,this.curCommand=null,this.filter=null,this.filterHidden=!1,(tA=>{hn=tA})(this),(tA=>{un=tA,un.copySelectedElements=copySelectedElements,un.groupSelectedElements=groupSelectedElements,un.pushGroupProperties=pushGroupProperty,un.ungroupSelectedElement=ungroupSelectedElement,un.moveToTopSelectedElement=moveToTopSelectedElem,un.moveToBottomSelectedElement=moveToBottomSelectedElem,un.moveUpDownSelected=moveUpDownSelected,un.moveSelectedElements=moveSelectedElements,un.cloneSelectedElements=cloneSelectedElements,un.alignSelectedElements=alignSelectedElements,un.updateCanvas=updateCanvas,un.cycleElement=cycleElement,un.deleteSelectedElements=deleteSelectedElements})(this);window.addEventListener(\"storage\",(tA=>{tA.newValue&&(tA.key===Qo+\"_startup\"?(localStorage.removeItem(Qo+\"_startup\"),this.flashStorage()):tA.key===Qo&&sessionStorage.setItem(Qo,tA.newValue))}),!1),localStorage.setItem(Qo+\"_startup\",Math.random()),(tA=>{ZA=tA})(this),this.contentW=this.getResolution().w,this.contentH=this.getResolution().h,this.clear()}getSvgOption(){return this.saveOptions}setSvgOption(tA,eA){this.saveOptions[tA]=eA}getSelectedElements(){return this.selectedElements}setSelectedElements(tA,eA){this.selectedElements[tA]=eA}setEmptySelectedElements(){this.selectedElements=[]}getSvgRoot(){return this.svgroot}getDOMDocument(){return this.svgdoc}getDOMContainer(){return this.container}getCurConfig(){return this.curConfig}setIdPrefix(tA){this.idprefix=tA}getCurrentDrawing(){return this.current_drawing_}getCurShape(){return this.curShape}getCurrentGroup(){return this.currentGroup}getBaseUnit(){return this.curConfig.baseUnit}getHeight(){return this.svgContent.getAttribute(\"height\")/this.zoom}getWidth(){return this.svgContent.getAttribute(\"width\")/this.zoom}getRoundDigits(){return this.saveOptions.round_digits}getSnappingStep(){return this.curConfig.snappingStep}getGridSnapping(){return this.curConfig.gridSnapping}getStartTransform(){return this.startTransform}setStartTransform(tA){this.startTransform=tA}getZoom(){return this.zoom}round(tA){return Number.parseInt(tA*this.zoom)/this.zoom}createSVGElement(tA){return this.addSVGElementsFromJson(tA)}getContainer(){return this.container}setStarted(tA){this.started=tA}getRubberBox(){return this.rubberBox}setRubberBox(tA){return this.rubberBox=tA,this.rubberBox}addPtsToSelection({closedSubpath:tA,grips:eA}){this.pathActions.canDeleteNodes=!0,this.pathActions.closed_subpath=tA,this.call(\"pointsAdded\",{closedSubpath:tA,grips:eA}),this.call(\"selected\",eA)}endChanges({cmd:tA,elem:eA}){this.addCommandToHistory(tA),this.call(\"changed\",[eA])}getCurrentMode(){return this.currentMode}setCurrentMode(tA){return this.currentMode=tA,this.currentMode}getDrawnPath(){return this.drawnPath}setDrawnPath(tA){return this.drawnPath=tA,this.drawnPath}setCurrentGroup(tA){this.currentGroup=tA}changeSvgContent(){this.call(\"changed\",[this.svgContent])}getStarted(){return this.started}getCanvas(){return this}getrootSctm(){return this.rootSctm}getStartX(){return this.startX}setStartX(tA){this.startX=tA}getStartY(){return this.startY}setStartY(tA){this.startY=tA}getRStartX(){return this.rStartX}getRStartY(){return this.rStartY}getInitBbox(){return this.initBbox}getCurrentResizeMode(){return this.currentResizeMode}getJustSelected(){return this.justSelected}getOpacAni(){return this.opacAni}getParameter(){return this.parameter}getNextParameter(){return this.nextParameter}getStepCount(){return 10}getThreSholdDist(){return.8}getSumDistance(){return this.sumDistance}getStart(tA){return this.start[tA]}getEnd(tA){return this.end[tA]}getbSpline(tA){return this.bSpline[tA]}getNextPos(tA){return this.nextPos[tA]}getControllPoint1(tA){return this.controllPoint1[tA]}getControllPoint2(tA){return this.controllPoint2[tA]}getFreehand(tA){return this.freehand[tA]}getDrawing(){return this.getCurrentDrawing()}getDAttr(){return this.dAttr}getLastGoodImgUrl(){return this.lastGoodImgUrl}getCurText(tA){return this.curText[tA]}setDAttr(tA){this.dAttr=tA}setEnd(tA,eA){this.end[tA]=eA}setControllPoint1(tA,eA){this.controllPoint1[tA]=eA}setControllPoint2(tA,eA){this.controllPoint2[tA]=eA}setJustSelected(tA){this.justSelected=tA}setParameter(tA){this.parameter=tA}setStart(tA){this.start=tA}setRStartX(tA){this.rStartX=tA}setRStartY(tA){this.rStartY=tA}setSumDistance(tA){this.sumDistance=tA}setbSpline(tA){this.bSpline=tA}setNextPos(tA){this.nextPos=tA}setNextParameter(tA){this.nextParameter=tA}setCurText(tA,eA){this.curText[tA]=eA}setFreehand(tA,eA){this.freehand[tA]=eA}setCurBBoxes(tA){this.curBBoxes=tA}getCurBBoxes(){return this.curBBoxes}setInitBbox(tA){this.initBbox=tA}setRootSctm(tA){this.rootSctm=tA}setCurrentResizeMode(tA){this.currentResizeMode=tA}getLastClickPoint(tA){return this.lastClickPoint[tA]}setLastClickPoint(tA){this.lastClickPoint=tA}getId(){return this.getCurrentDrawing().getId()}getUIStrings(){return this.uiStrings}getNsMap(){return this.nsMap}getSvgOptionApply(){return this.saveOptions.apply}getSvgOptionImages(){return this.saveOptions.images}getEncodableImages(tA){return this.encodableImages[tA]}setEncodableImages(tA,eA){this.encodableImages[tA]=eA}getVisElems(){return\"a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use\"}getIdPrefix(){return this.idprefix}getDataStorage(){return Fo}setZoom(tA){this.zoom=tA}getImportIds(tA){return this.importIds[tA]}setImportIds(tA,eA){this.importIds[tA]=eA}setRemovedElements(tA,eA){this.removedElements[tA]=eA}setSvgContent(tA){this.svgContent=tA}getrefAttrs(){return Eo}setCanvas(tA,eA){this[tA]=eA}setCurProperties(tA,eA){this.curProperties[tA]=eA}getCurProperties(tA){return this.curProperties[tA]}setCurShape(tA,eA){this.curShape[tA]=eA}gettingSelectorManager(){return this.selectorManager}getContentW(){return this.contentW}getContentH(){return this.contentH}getClipboardID(){return Qo}getSvgContent(){return this.svgContent}getExtensions(){return this.extensions}getSelector(){return Selector}getMode(){return this.currentMode}getNextId(){return this.getCurrentDrawing().getNextId()}getCurCommand(){return this.curCommand}setCurCommand(tA){this.curCommand=tA}getFilter(){return this.filter}setFilter(tA){this.filter=tA}getFilterHidden(){return this.filterHidden}setFilterHidden(tA){this.filterHidden=tA}setMode(tA){this.pathActions.clear(!0),this.textActions.clear(),this.curProperties=\"text\"===this.selectedElements[0]?.nodeName?this.curText:this.curShape,this.currentMode=tA}clear(){this.call(\"beforeClear\"),this.pathActions.clear(),this.clearSelection(),this.clearSvgContentElement(),this.current_drawing_=new Drawing(this.svgContent),this.createLayer(\"Layer 1\"),this.undoMgr.resetUndoStack(),this.selectorManager.initGroup(),this.rubberBox=this.selectorManager.getRubberBandBox(),this.call(\"afterClear\")}async addExtension(tA,eA,{importLocale:AA}){if(\"function\"!=typeof eA)throw new TypeError(\"Function argument expected for `svgcanvas.addExtension`\");if(tA in this.extensions)throw new Error('Cannot add extension \"'+tA+'\", an extension by that name already exists.');const rA={importLocale:AA,svgroot:this.svgroot,svgContent:this.svgContent,nonce:this.getCurrentDrawing().getNonce(),selectorManager:this.selectorManager},nA=await eA(rA);return nA&&(nA.name=tA),this.extensions[tA]=nA,this.call(\"extension_added\",nA)}addCommandToHistory(tA){this.undoMgr.addCommandToHistory(tA)}restoreRefElements(tA){const eA={};Eo.forEach(((AA,rA)=>{eA[AA]=tA.getAttribute(AA)})),Object.values(eA).forEach((tA=>{if(tA?.startsWith(\"url(\")){const eA=getUrlFromAttr(tA).substr(1);getElement(eA)||(findDefs().append(this.removedElements[eA]),delete this.removedElements[eA])}}));const AA=tA.getElementsByTagName(\"*\");if(AA.length)for(let tA=0,eA=AA.length;tA<eA;tA++)this.restoreRefElements(AA[tA])}call(tA,eA){if(this.events[tA])return this.events[tA](window,eA)}bind(tA,eA){const AA=this.events[tA];return this.events[tA]=eA,AA}flashStorage(){const tA=sessionStorage.getItem(Qo);localStorage.setItem(Qo,tA),setTimeout((()=>{localStorage.removeItem(Qo)}),1)}selectOnly(tA,eA){this.clearSelection(!0),this.addToSelection(tA,eA)}removeFromSelection(tA){if(!this.selectedElements[0])return;if(!tA.length)return;const eA=[],AA=this.selectedElements.length;for(let rA=0;rA<AA;++rA){const AA=this.selectedElements[rA];AA&&(tA.includes(AA)?this.selectorManager.releaseSelector(AA):eA.push(AA))}this.selectedElements=eA}selectAllInCurrentLayer(){const tA=this.getCurrentDrawing().getCurrentLayer();tA&&(this.currentMode=\"select\",this.currentGroup?this.selectOnly(this.currentGroup.children):this.selectOnly(tA.children))}getOpacity(){return this.curShape.opacity}getSnapToGrid(){return this.curConfig.gridSnapping}getVersion(){return\"svgcanvas.js ($Rev$)\"}setUiStrings(tA){Object.assign(this.uiStrings,tA.notification),setUiStrings(tA)}setConfig(tA){Object.assign(this.curConfig,tA)}getDocumentTitle(){return this.getTitle(this.svgContent)}getOffset(){return{x:Number(this.svgContent.getAttribute(\"x\")),y:Number(this.svgContent.getAttribute(\"y\"))}}getColor(tA){return this.curProperties[tA]}setStrokePaint(tA){this.setPaint(\"stroke\",tA)}setFillPaint(tA){this.setPaint(\"fill\",tA)}getStrokeWidth(){return this.curProperties.stroke_width}getStyle(){return this.curShape}setOpacity(tA){this.curShape.opacity=tA,this.changeSelectedAttribute(\"opacity\",tA)}getFillOpacity(){return this.curShape.fill_opacity}getStrokeOpacity(){return this.curShape.stroke_opacity}setPaintOpacity(tA,eA,AA){this.curShape[tA+\"_opacity\"]=eA,AA?this.changeSelectedAttributeNoUndo(tA+\"-opacity\",eA):this.changeSelectedAttribute(tA+\"-opacity\",eA)}getPaintOpacity(tA){return\"fill\"===tA?this.getFillOpacity():this.getStrokeOpacity()}getBlur(tA){let eA=0;if(tA){const AA=tA.getAttribute(\"filter\");if(AA){const rA=getElement(tA.id+\"_blur\");if(rA)eA=rA.firstChild.getAttribute(\"stdDeviation\");else{const tA=getRefElem(AA),rA=getFeGaussianBlur(tA);null!==rA&&(eA=rA.getAttribute(\"stdDeviation\"))}}}return eA}setGoodImage(tA){this.lastGoodImgUrl=tA}getSvgString(){return this.saveOptions.apply=!1,this.svgCanvasToString()}randomizeIds(tA){randomizeIds(!(arguments.length>0&&!1===tA),this.getCurrentDrawing())}convertToPath(tA,eA){if(!tA){return void this.selectedElements.forEach((tA=>{tA&&this.convertToPath(tA)}))}if(eA)return getBBoxOfElementAsPath(tA,this.addSVGElementsFromJson,this.pathActions);return((tA,eA,AA)=>{const rA=new AA.history.BatchCommand(\"Convert element to Path\");eA=mergeDeep(eA,getExtraAttributesForConvertToPath(tA));const nA=AA.addSVGElementsFromJson({element:\"path\",attr:eA}),iA=tA.getAttribute(\"transform\");iA&&nA.setAttribute(\"transform\",iA);const{id:sA}=tA,{parentNode:oA}=tA;tA.nextSibling?tA.before(nA):oA.append(nA);const aA=getPathDFromElement(tA);if(aA){if(nA.setAttribute(\"d\",aA),iA){const tA=nA.transform.baseVal;hasMatrixTransform(tA)&&AA.pathActions.resetOrientation(nA)}const{nextSibling:eA}=tA;return rA.addSubCommand(new AA.history.RemoveElementCommand(tA,eA,tA.parentNode)),AA.clearSelection(),tA.remove(),rA.addSubCommand(new AA.history.InsertElementCommand(nA)),nA.setAttribute(\"id\",sA),nA.removeAttribute(\"visibility\"),AA.addToSelection([nA],!0),AA.addCommandToHistory(rA),nA}return nA.remove(),null})(tA,{fill:this.curShape.fill,\"fill-opacity\":this.curShape.fill_opacity,stroke:this.curShape.stroke,\"stroke-width\":this.curShape.stroke_width,\"stroke-dasharray\":this.curShape.stroke_dasharray,\"stroke-linejoin\":this.curShape.stroke_linejoin,\"stroke-linecap\":this.curShape.stroke_linecap,\"stroke-opacity\":this.curShape.stroke_opacity,opacity:this.curShape.opacity,visibility:\"hidden\"},this)}cutSelectedElements(){this.copySelectedElements(),this.deleteSelectedElements()}initializeSvgCanvasMethods(){this.getJsonFromSvgElements=getJsonFromSvgElements,this.addSVGElementsFromJson=addSVGElementsFromJson,this.clearSvgContentElement=clearSvgContentElementInit,this.textActions=Wr,this.getStrokedBBox=getStrokedBBoxDefaultVisible,this.getVisibleElements=getVisibleElements,this.stringToHTML=stringToHTML,this.insertChildAtIndex=insertChildAtIndex,this.getClosest=getClosest,this.getParents=getParents,this.isLayer=Layer.isLayer,this.matrixMultiply=matrixMultiply,this.hasMatrixTransform=hasMatrixTransform,this.transformListToTransform=transformListToTransform,this.convertToNum=convertToNum,this.findDefs=findDefs,this.getUrlFromAttr=getUrlFromAttr,this.getHref=getHref,this.setHref=setHref,this.getBBox=getBBox,this.getRotationAngle=getRotationAngle,this.getElement=getElement,this.getRefElem=getRefElem,this.assignAttributes=assignAttributes,this.cleanupElement=cleanupElement,this.remapElement=remapElement,this.recalculateDimensions=recalculateDimensions,this.sanitizeSvg=sanitizeSvg,this.pasteElements=pasteElementsMethod,this.identifyLayers=identifyLayers,this.createLayer=createLayer,this.cloneLayer=cloneLayer,this.deleteCurrentLayer=deleteCurrentLayer,this.setCurrentLayer=setCurrentLayer,this.renameCurrentLayer=renameCurrentLayer,this.setCurrentLayerPosition=setCurrentLayerPosition,this.indexCurrentLayer=indexCurrentLayer,this.setLayerVisibility=setLayerVisibility,this.moveSelectedToLayer=moveSelectedToLayer,this.mergeLayer=mergeLayer,this.mergeAllLayers=mergeAllLayers,this.leaveContext=leaveContext,this.setContext=setContext,this.changeSelectedAttributeNoUndo=changeSelectedAttributeNoUndoMethod,this.changeSelectedAttribute=changeSelectedAttributeMethod,this.setBlurNoUndo=setBlurNoUndo,this.setBlurOffsets=setBlurOffsets,this.setBlur=setBlur,this.smoothControlPoints=smoothControlPoints,this.getTypeMap=getTypeMap,this.history=dA,this.NS=sA,this.$id=$id,this.$qq=$qq,this.$qa=$qa,this.$click=$click,this.encode64=encode64,this.decode64=decode64,this.mergeDeep=mergeDeep}}SvgCanvas.$id=$id,SvgCanvas.$qq=$qq,SvgCanvas.$qa=$qa,SvgCanvas.$click=$click,SvgCanvas.encode64=encode64,SvgCanvas.decode64=decode64,SvgCanvas.mergeDeep=mergeDeep,SvgCanvas.getClosest=getClosest,SvgCanvas.getParents=getParents,SvgCanvas.blankPageObjectURL=uA,SvgCanvas.Paint=Paint,SvgCanvas.getTypeMap=getTypeMap,SvgCanvas.convertToNum=convertToNum,SvgCanvas.isValidUnit=(tA,eA,AA)=>{if(rA.includes(tA))return!isNaN(eA)||(eA=eA.toLowerCase(),Object.keys(iA).some((tA=>new RegExp(\"^-?[\\\\d\\\\.]+\"+tA+\"$\").test(eA))));if(\"id\"===tA){let tA=!1;try{const rA=nA.getElement(eA);tA=!rA||rA===AA}catch(tA){console.error(tA)}return tA}return!0},SvgCanvas.convertUnit=convertUnit;var Uo={exports:{}},Po=_mergeNamespaces({__proto__:null,default:Uo.exports=function(){function _toConsumableArray(tA){if(Array.isArray(tA)){for(var eA=0,AA=Array(tA.length);eA<tA.length;eA++)AA[eA]=tA[eA];return AA}return Array.from(tA)}var tA=Object.hasOwnProperty,eA=Object.setPrototypeOf,AA=Object.isFrozen,rA=Object.getPrototypeOf,nA=Object.getOwnPropertyDescriptor,iA=Object.freeze,sA=Object.seal,oA=Object.create,aA=\"undefined\"!=typeof Reflect&&Reflect,lA=aA.apply,cA=aA.construct;lA||(lA=function apply(tA,eA,AA){return tA.apply(eA,AA)}),iA||(iA=function freeze(tA){return tA}),sA||(sA=function seal(tA){return tA}),cA||(cA=function construct(tA,eA){return new(Function.prototype.bind.apply(tA,[null].concat(_toConsumableArray(eA))))});var uA=unapply(Array.prototype.forEach),hA=unapply(Array.prototype.pop),dA=unapply(Array.prototype.push),fA=unapply(String.prototype.toLowerCase),gA=unapply(String.prototype.match),pA=unapply(String.prototype.replace),mA=unapply(String.prototype.indexOf),wA=unapply(String.prototype.trim),yA=unapply(RegExp.prototype.test),BA=unconstruct(TypeError);function unapply(tA){return function(eA){for(var AA=arguments.length,rA=Array(AA>1?AA-1:0),nA=1;nA<AA;nA++)rA[nA-1]=arguments[nA];return lA(tA,eA,rA)}}function unconstruct(tA){return function(){for(var eA=arguments.length,AA=Array(eA),rA=0;rA<eA;rA++)AA[rA]=arguments[rA];return cA(tA,AA)}}function addToSet(tA,rA){eA&&eA(tA,null);for(var nA=rA.length;nA--;){var iA=rA[nA];if(\"string\"==typeof iA){var sA=fA(iA);sA!==iA&&(AA(rA)||(rA[nA]=sA),iA=sA)}tA[iA]=!0}return tA}function clone(eA){var AA=oA(null),rA=void 0;for(rA in eA)lA(tA,eA,[rA])&&(AA[rA]=eA[rA]);return AA}function lookupGetter(tA,eA){for(;null!==tA;){var AA=nA(tA,eA);if(AA){if(AA.get)return unapply(AA.get);if(\"function\"==typeof AA.value)return unapply(AA.value)}tA=rA(tA)}return null}var bA=iA([\"a\",\"abbr\",\"acronym\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"bdi\",\"bdo\",\"big\",\"blink\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"center\",\"cite\",\"code\",\"col\",\"colgroup\",\"content\",\"data\",\"datalist\",\"dd\",\"decorator\",\"del\",\"details\",\"dfn\",\"dialog\",\"dir\",\"div\",\"dl\",\"dt\",\"element\",\"em\",\"fieldset\",\"figcaption\",\"figure\",\"font\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meter\",\"nav\",\"nobr\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"section\",\"select\",\"shadow\",\"small\",\"source\",\"spacer\",\"span\",\"strike\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\",\"tt\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"]),vA=iA([\"svg\",\"a\",\"altglyph\",\"altglyphdef\",\"altglyphitem\",\"animatecolor\",\"animatemotion\",\"animatetransform\",\"circle\",\"clippath\",\"defs\",\"desc\",\"ellipse\",\"filter\",\"font\",\"g\",\"glyph\",\"glyphref\",\"hkern\",\"image\",\"line\",\"lineargradient\",\"marker\",\"mask\",\"metadata\",\"mpath\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialgradient\",\"rect\",\"stop\",\"style\",\"switch\",\"symbol\",\"text\",\"textpath\",\"title\",\"tref\",\"tspan\",\"view\",\"vkern\"]),CA=iA([\"feBlend\",\"feColorMatrix\",\"feComponentTransfer\",\"feComposite\",\"feConvolveMatrix\",\"feDiffuseLighting\",\"feDisplacementMap\",\"feDistantLight\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feMerge\",\"feMergeNode\",\"feMorphology\",\"feOffset\",\"fePointLight\",\"feSpecularLighting\",\"feSpotLight\",\"feTile\",\"feTurbulence\"]),SA=iA([\"animate\",\"color-profile\",\"cursor\",\"discard\",\"fedropshadow\",\"feimage\",\"font-face\",\"font-face-format\",\"font-face-name\",\"font-face-src\",\"font-face-uri\",\"foreignobject\",\"hatch\",\"hatchpath\",\"mesh\",\"meshgradient\",\"meshpatch\",\"meshrow\",\"missing-glyph\",\"script\",\"set\",\"solidcolor\",\"unknown\",\"use\"]),xA=iA([\"math\",\"menclose\",\"merror\",\"mfenced\",\"mfrac\",\"mglyph\",\"mi\",\"mlabeledtr\",\"mmultiscripts\",\"mn\",\"mo\",\"mover\",\"mpadded\",\"mphantom\",\"mroot\",\"mrow\",\"ms\",\"mspace\",\"msqrt\",\"mstyle\",\"msub\",\"msup\",\"msubsup\",\"mtable\",\"mtd\",\"mtext\",\"mtr\",\"munder\",\"munderover\"]),FA=iA([\"maction\",\"maligngroup\",\"malignmark\",\"mlongdiv\",\"mscarries\",\"mscarry\",\"msgroup\",\"mstack\",\"msline\",\"msrow\",\"semantics\",\"annotation\",\"annotation-xml\",\"mprescripts\",\"none\"]),EA=iA([\"#text\"]),QA=iA([\"accept\",\"action\",\"align\",\"alt\",\"autocapitalize\",\"autocomplete\",\"autopictureinpicture\",\"autoplay\",\"background\",\"bgcolor\",\"border\",\"capture\",\"cellpadding\",\"cellspacing\",\"checked\",\"cite\",\"class\",\"clear\",\"color\",\"cols\",\"colspan\",\"controls\",\"controlslist\",\"coords\",\"crossorigin\",\"datetime\",\"decoding\",\"default\",\"dir\",\"disabled\",\"disablepictureinpicture\",\"disableremoteplayback\",\"download\",\"draggable\",\"enctype\",\"enterkeyhint\",\"face\",\"for\",\"headers\",\"height\",\"hidden\",\"high\",\"href\",\"hreflang\",\"id\",\"inputmode\",\"integrity\",\"ismap\",\"kind\",\"label\",\"lang\",\"list\",\"loading\",\"loop\",\"low\",\"max\",\"maxlength\",\"media\",\"method\",\"min\",\"minlength\",\"multiple\",\"muted\",\"name\",\"noshade\",\"novalidate\",\"nowrap\",\"open\",\"optimum\",\"pattern\",\"placeholder\",\"playsinline\",\"poster\",\"preload\",\"pubdate\",\"radiogroup\",\"readonly\",\"rel\",\"required\",\"rev\",\"reversed\",\"role\",\"rows\",\"rowspan\",\"spellcheck\",\"scope\",\"selected\",\"shape\",\"size\",\"sizes\",\"span\",\"srclang\",\"start\",\"src\",\"srcset\",\"step\",\"style\",\"summary\",\"tabindex\",\"title\",\"translate\",\"type\",\"usemap\",\"valign\",\"value\",\"width\",\"xmlns\"]),UA=iA([\"accent-height\",\"accumulate\",\"additive\",\"alignment-baseline\",\"ascent\",\"attributename\",\"attributetype\",\"azimuth\",\"basefrequency\",\"baseline-shift\",\"begin\",\"bias\",\"by\",\"class\",\"clip\",\"clippathunits\",\"clip-path\",\"clip-rule\",\"color\",\"color-interpolation\",\"color-interpolation-filters\",\"color-profile\",\"color-rendering\",\"cx\",\"cy\",\"d\",\"dx\",\"dy\",\"diffuseconstant\",\"direction\",\"display\",\"divisor\",\"dur\",\"edgemode\",\"elevation\",\"end\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"filterunits\",\"flood-color\",\"flood-opacity\",\"font-family\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-weight\",\"fx\",\"fy\",\"g1\",\"g2\",\"glyph-name\",\"glyphref\",\"gradientunits\",\"gradienttransform\",\"height\",\"href\",\"id\",\"image-rendering\",\"in\",\"in2\",\"k\",\"k1\",\"k2\",\"k3\",\"k4\",\"kerning\",\"keypoints\",\"keysplines\",\"keytimes\",\"lang\",\"lengthadjust\",\"letter-spacing\",\"kernelmatrix\",\"kernelunitlength\",\"lighting-color\",\"local\",\"marker-end\",\"marker-mid\",\"marker-start\",\"markerheight\",\"markerunits\",\"markerwidth\",\"maskcontentunits\",\"maskunits\",\"max\",\"mask\",\"media\",\"method\",\"mode\",\"min\",\"name\",\"numoctaves\",\"offset\",\"operator\",\"opacity\",\"order\",\"orient\",\"orientation\",\"origin\",\"overflow\",\"paint-order\",\"path\",\"pathlength\",\"patterncontentunits\",\"patterntransform\",\"patternunits\",\"points\",\"preservealpha\",\"preserveaspectratio\",\"primitiveunits\",\"r\",\"rx\",\"ry\",\"radius\",\"refx\",\"refy\",\"repeatcount\",\"repeatdur\",\"restart\",\"result\",\"rotate\",\"scale\",\"seed\",\"shape-rendering\",\"specularconstant\",\"specularexponent\",\"spreadmethod\",\"startoffset\",\"stddeviation\",\"stitchtiles\",\"stop-color\",\"stop-opacity\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke\",\"stroke-width\",\"style\",\"surfacescale\",\"systemlanguage\",\"tabindex\",\"targetx\",\"targety\",\"transform\",\"text-anchor\",\"text-decoration\",\"text-rendering\",\"textlength\",\"type\",\"u1\",\"u2\",\"unicode\",\"values\",\"viewbox\",\"visibility\",\"version\",\"vert-adv-y\",\"vert-origin-x\",\"vert-origin-y\",\"width\",\"word-spacing\",\"wrap\",\"writing-mode\",\"xchannelselector\",\"ychannelselector\",\"x\",\"x1\",\"x2\",\"xmlns\",\"y\",\"y1\",\"y2\",\"z\",\"zoomandpan\"]),PA=iA([\"accent\",\"accentunder\",\"align\",\"bevelled\",\"close\",\"columnsalign\",\"columnlines\",\"columnspan\",\"denomalign\",\"depth\",\"dir\",\"display\",\"displaystyle\",\"encoding\",\"fence\",\"frame\",\"height\",\"href\",\"id\",\"largeop\",\"length\",\"linethickness\",\"lspace\",\"lquote\",\"mathbackground\",\"mathcolor\",\"mathsize\",\"mathvariant\",\"maxsize\",\"minsize\",\"movablelimits\",\"notation\",\"numalign\",\"open\",\"rowalign\",\"rowlines\",\"rowspacing\",\"rowspan\",\"rspace\",\"rquote\",\"scriptlevel\",\"scriptminsize\",\"scriptsizemultiplier\",\"selection\",\"separator\",\"separators\",\"stretchy\",\"subscriptshift\",\"supscriptshift\",\"symmetric\",\"voffset\",\"width\",\"xmlns\"]),_A=iA([\"xlink:href\",\"xml:id\",\"xlink:title\",\"xml:space\",\"xmlns:xlink\"]),LA=sA(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm),IA=sA(/<%[\\s\\S]*|[\\s\\S]*%>/gm),NA=sA(/^data-[\\-\\w.\\u00B7-\\uFFFF]/),TA=sA(/^aria-[\\-\\w]+$/),kA=sA(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i),MA=sA(/^(?:\\w+script|data):/i),OA=sA(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g),HA=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(tA){return typeof tA}:function(tA){return tA&&\"function\"==typeof Symbol&&tA.constructor===Symbol&&tA!==Symbol.prototype?\"symbol\":typeof tA};function _toConsumableArray$1(tA){if(Array.isArray(tA)){for(var eA=0,AA=Array(tA.length);eA<tA.length;eA++)AA[eA]=tA[eA];return AA}return Array.from(tA)}var DA=function getGlobal(){return\"undefined\"==typeof window?null:window},RA=function _createTrustedTypesPolicy(tA,eA){if(\"object\"!==(void 0===tA?\"undefined\":HA(tA))||\"function\"!=typeof tA.createPolicy)return null;var AA=null,rA=\"data-tt-policy-suffix\";eA.currentScript&&eA.currentScript.hasAttribute(rA)&&(AA=eA.currentScript.getAttribute(rA));var nA=\"dompurify\"+(AA?\"#\"+AA:\"\");try{return tA.createPolicy(nA,{createHTML:function createHTML(tA){return tA}})}catch(tA){return console.warn(\"TrustedTypes policy \"+nA+\" could not be created.\"),null}};function createDOMPurify(){var tA=arguments.length>0&&void 0!==arguments[0]?arguments[0]:DA(),eA=function DOMPurify(tA){return createDOMPurify(tA)};if(eA.version=\"2.2.6\",eA.removed=[],!tA||!tA.document||9!==tA.document.nodeType)return eA.isSupported=!1,eA;var AA=tA.document,rA=tA.document,nA=tA.DocumentFragment,sA=tA.HTMLTemplateElement,oA=tA.Node,aA=tA.Element,lA=tA.NodeFilter,cA=tA.NamedNodeMap,VA=void 0===cA?tA.NamedNodeMap||tA.MozNamedAttrMap:cA,GA=tA.Text,jA=tA.Comment,KA=tA.DOMParser,qA=tA.trustedTypes,zA=aA.prototype,XA=lookupGetter(zA,\"cloneNode\"),WA=lookupGetter(zA,\"nextSibling\"),YA=lookupGetter(zA,\"childNodes\"),JA=lookupGetter(zA,\"parentNode\");if(\"function\"==typeof sA){var ZA=rA.createElement(\"template\");ZA.content&&ZA.content.ownerDocument&&(rA=ZA.content.ownerDocument)}var $A=RA(qA,AA),Qr=$A&&wn?$A.createHTML(\"\"):\"\",Ur=rA,Tr=Ur.implementation,Hr=Ur.createNodeIterator,Dr=Ur.getElementsByTagName,Rr=Ur.createDocumentFragment,Vr=AA.importNode,Gr={};try{Gr=clone(rA).documentMode?rA.documentMode:{}}catch(tA){}var Kr={};eA.isSupported=Tr&&void 0!==Tr.createHTMLDocument&&9!==Gr;var zr=LA,Xr=IA,Wr=NA,Yr=TA,Jr=MA,Zr=OA,$r=kA,tn=null,en=addToSet({},[].concat(_toConsumableArray$1(bA),_toConsumableArray$1(vA),_toConsumableArray$1(CA),_toConsumableArray$1(xA),_toConsumableArray$1(EA))),An=null,rn=addToSet({},[].concat(_toConsumableArray$1(QA),_toConsumableArray$1(UA),_toConsumableArray$1(PA),_toConsumableArray$1(_A))),nn=null,sn=null,on=!0,an=!0,cn=!1,un=!1,hn=!1,dn=!1,fn=!1,gn=!1,pn=!1,mn=!0,wn=!1,yn=!0,Bn=!0,bn=!1,vn={},Cn=addToSet({},[\"annotation-xml\",\"audio\",\"colgroup\",\"desc\",\"foreignobject\",\"head\",\"iframe\",\"math\",\"mi\",\"mn\",\"mo\",\"ms\",\"mtext\",\"noembed\",\"noframes\",\"noscript\",\"plaintext\",\"script\",\"style\",\"svg\",\"template\",\"thead\",\"title\",\"video\",\"xmp\"]),Sn=null,xn=addToSet({},[\"audio\",\"video\",\"img\",\"source\",\"image\",\"track\"]),Fn=null,En=addToSet({},[\"alt\",\"class\",\"for\",\"id\",\"label\",\"name\",\"pattern\",\"placeholder\",\"summary\",\"title\",\"value\",\"style\",\"xmlns\"]),Qn=null,Un=rA.createElement(\"form\"),Pn=function _parseConfig(tA){Qn&&Qn===tA||(tA&&\"object\"===(void 0===tA?\"undefined\":HA(tA))||(tA={}),tA=clone(tA),tn=\"ALLOWED_TAGS\"in tA?addToSet({},tA.ALLOWED_TAGS):en,An=\"ALLOWED_ATTR\"in tA?addToSet({},tA.ALLOWED_ATTR):rn,Fn=\"ADD_URI_SAFE_ATTR\"in tA?addToSet(clone(En),tA.ADD_URI_SAFE_ATTR):En,Sn=\"ADD_DATA_URI_TAGS\"in tA?addToSet(clone(xn),tA.ADD_DATA_URI_TAGS):xn,nn=\"FORBID_TAGS\"in tA?addToSet({},tA.FORBID_TAGS):{},sn=\"FORBID_ATTR\"in tA?addToSet({},tA.FORBID_ATTR):{},vn=\"USE_PROFILES\"in tA&&tA.USE_PROFILES,on=!1!==tA.ALLOW_ARIA_ATTR,an=!1!==tA.ALLOW_DATA_ATTR,cn=tA.ALLOW_UNKNOWN_PROTOCOLS||!1,un=tA.SAFE_FOR_TEMPLATES||!1,hn=tA.WHOLE_DOCUMENT||!1,gn=tA.RETURN_DOM||!1,pn=tA.RETURN_DOM_FRAGMENT||!1,mn=!1!==tA.RETURN_DOM_IMPORT,wn=tA.RETURN_TRUSTED_TYPE||!1,fn=tA.FORCE_BODY||!1,yn=!1!==tA.SANITIZE_DOM,Bn=!1!==tA.KEEP_CONTENT,bn=tA.IN_PLACE||!1,$r=tA.ALLOWED_URI_REGEXP||$r,un&&(an=!1),pn&&(gn=!0),vn&&(tn=addToSet({},[].concat(_toConsumableArray$1(EA))),An=[],!0===vn.html&&(addToSet(tn,bA),addToSet(An,QA)),!0===vn.svg&&(addToSet(tn,vA),addToSet(An,UA),addToSet(An,_A)),!0===vn.svgFilters&&(addToSet(tn,CA),addToSet(An,UA),addToSet(An,_A)),!0===vn.mathMl&&(addToSet(tn,xA),addToSet(An,PA),addToSet(An,_A))),tA.ADD_TAGS&&(tn===en&&(tn=clone(tn)),addToSet(tn,tA.ADD_TAGS)),tA.ADD_ATTR&&(An===rn&&(An=clone(An)),addToSet(An,tA.ADD_ATTR)),tA.ADD_URI_SAFE_ATTR&&addToSet(Fn,tA.ADD_URI_SAFE_ATTR),Bn&&(tn[\"#text\"]=!0),hn&&addToSet(tn,[\"html\",\"head\",\"body\"]),tn.table&&(addToSet(tn,[\"tbody\"]),delete nn.tbody),iA&&iA(tA),Qn=tA)},_n=addToSet({},[\"mi\",\"mo\",\"mn\",\"ms\",\"mtext\"]),Ln=addToSet({},[\"foreignobject\",\"desc\",\"title\",\"annotation-xml\"]),In=addToSet({},vA);addToSet(In,CA),addToSet(In,SA);var Nn=addToSet({},xA);addToSet(Nn,FA);var Tn=\"http://www.w3.org/1998/Math/MathML\",kn=\"http://www.w3.org/2000/svg\",Mn=\"http://www.w3.org/1999/xhtml\",On=function _checkValidNamespace(tA){var eA=JA(tA);eA&&eA.tagName||(eA={namespaceURI:Mn,tagName:\"template\"});var AA=fA(tA.tagName),rA=fA(eA.tagName);if(tA.namespaceURI===kn)return eA.namespaceURI===Mn?\"svg\"===AA:eA.namespaceURI===Tn?\"svg\"===AA&&(\"annotation-xml\"===rA||_n[rA]):Boolean(In[AA]);if(tA.namespaceURI===Tn)return eA.namespaceURI===Mn?\"math\"===AA:eA.namespaceURI===kn?\"math\"===AA&&Ln[rA]:Boolean(Nn[AA]);if(tA.namespaceURI===Mn){if(eA.namespaceURI===kn&&!Ln[rA])return!1;if(eA.namespaceURI===Tn&&!_n[rA])return!1;var nA=addToSet({},[\"title\",\"style\",\"font\",\"a\",\"script\"]);return!Nn[AA]&&(nA[AA]||!In[AA])}return!1},Hn=function _forceRemove(tA){dA(eA.removed,{element:tA});try{tA.parentNode.removeChild(tA)}catch(eA){try{tA.outerHTML=Qr}catch(eA){tA.remove()}}},Dn=function _removeAttribute(tA,AA){try{dA(eA.removed,{attribute:AA.getAttributeNode(tA),from:AA})}catch(tA){dA(eA.removed,{attribute:null,from:AA})}AA.removeAttribute(tA)},Rn=function _initDocument(tA){var eA=void 0,AA=void 0;if(fn)tA=\"<remove></remove>\"+tA;else{var nA=gA(tA,/^[\\r\\n\\t ]+/);AA=nA&&nA[0]}var iA=$A?$A.createHTML(tA):tA;try{eA=(new KA).parseFromString(iA,\"text/html\")}catch(tA){}if(!eA||!eA.documentElement){var sA=(eA=Tr.createHTMLDocument(\"\")).body;sA.parentNode.removeChild(sA.parentNode.firstElementChild),sA.outerHTML=iA}return tA&&AA&&eA.body.insertBefore(rA.createTextNode(AA),eA.body.childNodes[0]||null),Dr.call(eA,hn?\"html\":\"body\")[0]},Vn=function _createIterator(tA){return Hr.call(tA.ownerDocument||tA,tA,lA.SHOW_ELEMENT|lA.SHOW_COMMENT|lA.SHOW_TEXT,(function(){return lA.FILTER_ACCEPT}),!1)},Gn=function _isClobbered(tA){return!(tA instanceof GA||tA instanceof jA||\"string\"==typeof tA.nodeName&&\"string\"==typeof tA.textContent&&\"function\"==typeof tA.removeChild&&tA.attributes instanceof VA&&\"function\"==typeof tA.removeAttribute&&\"function\"==typeof tA.setAttribute&&\"string\"==typeof tA.namespaceURI&&\"function\"==typeof tA.insertBefore)},jn=function _isNode(tA){return\"object\"===(void 0===oA?\"undefined\":HA(oA))?tA instanceof oA:tA&&\"object\"===(void 0===tA?\"undefined\":HA(tA))&&\"number\"==typeof tA.nodeType&&\"string\"==typeof tA.nodeName},Kn=function _executeHook(tA,AA,rA){Kr[tA]&&uA(Kr[tA],(function(tA){tA.call(eA,AA,rA,Qn)}))},qn=function _sanitizeElements(tA){var AA=void 0;if(Kn(\"beforeSanitizeElements\",tA,null),Gn(tA))return Hn(tA),!0;if(gA(tA.nodeName,/[\\u0080-\\uFFFF]/))return Hn(tA),!0;var rA=fA(tA.nodeName);if(Kn(\"uponSanitizeElement\",tA,{tagName:rA,allowedTags:tn}),!jn(tA.firstElementChild)&&(!jn(tA.content)||!jn(tA.content.firstElementChild))&&yA(/<[/\\w]/g,tA.innerHTML)&&yA(/<[/\\w]/g,tA.textContent))return Hn(tA),!0;if(!tn[rA]||nn[rA]){if(Bn&&!Cn[rA])for(var nA=JA(tA),iA=YA(tA),sA=iA.length-1;sA>=0;--sA)nA.insertBefore(XA(iA[sA],!0),WA(tA));return Hn(tA),!0}return tA instanceof aA&&!On(tA)?(Hn(tA),!0):\"noscript\"!==rA&&\"noembed\"!==rA||!yA(/<\\/no(script|embed)/i,tA.innerHTML)?(un&&3===tA.nodeType&&(AA=tA.textContent,AA=pA(AA,zr,\" \"),AA=pA(AA,Xr,\" \"),tA.textContent!==AA&&(dA(eA.removed,{element:tA.cloneNode()}),tA.textContent=AA)),Kn(\"afterSanitizeElements\",tA,null),!1):(Hn(tA),!0)},zn=function _isValidAttribute(tA,eA,AA){if(yn&&(\"id\"===eA||\"name\"===eA)&&(AA in rA||AA in Un))return!1;if(an&&yA(Wr,eA));else if(on&&yA(Yr,eA));else{if(!An[eA]||sn[eA])return!1;if(Fn[eA]);else if(yA($r,pA(AA,Zr,\"\")));else if(\"src\"!==eA&&\"xlink:href\"!==eA&&\"href\"!==eA||\"script\"===tA||0!==mA(AA,\"data:\")||!Sn[tA])if(cn&&!yA(Jr,pA(AA,Zr,\"\")));else if(AA)return!1}return!0},Xn=function _sanitizeAttributes(tA){var AA=void 0,rA=void 0,nA=void 0,iA=void 0;Kn(\"beforeSanitizeAttributes\",tA,null);var sA=tA.attributes;if(sA){var oA={attrName:\"\",attrValue:\"\",keepAttr:!0,allowedAttributes:An};for(iA=sA.length;iA--;){var aA=AA=sA[iA],lA=aA.name,cA=aA.namespaceURI;if(rA=wA(AA.value),nA=fA(lA),oA.attrName=nA,oA.attrValue=rA,oA.keepAttr=!0,oA.forceKeepAttr=void 0,Kn(\"uponSanitizeAttribute\",tA,oA),rA=oA.attrValue,!oA.forceKeepAttr&&(Dn(lA,tA),oA.keepAttr))if(yA(/\\/>/i,rA))Dn(lA,tA);else{un&&(rA=pA(rA,zr,\" \"),rA=pA(rA,Xr,\" \"));var uA=tA.nodeName.toLowerCase();if(zn(uA,nA,rA))try{cA?tA.setAttributeNS(cA,lA,rA):tA.setAttribute(lA,rA),hA(eA.removed)}catch(tA){}}}Kn(\"afterSanitizeAttributes\",tA,null)}},Wn=function _sanitizeShadowDOM(tA){var eA=void 0,AA=Vn(tA);for(Kn(\"beforeSanitizeShadowDOM\",tA,null);eA=AA.nextNode();)Kn(\"uponSanitizeShadowNode\",eA,null),qn(eA)||(eA.content instanceof nA&&_sanitizeShadowDOM(eA.content),Xn(eA));Kn(\"afterSanitizeShadowDOM\",tA,null)};return eA.sanitize=function(rA,iA){var sA=void 0,aA=void 0,lA=void 0,cA=void 0,uA=void 0;if(rA||(rA=\"\\x3c!--\\x3e\"),\"string\"!=typeof rA&&!jn(rA)){if(\"function\"!=typeof rA.toString)throw BA(\"toString is not a function\");if(\"string\"!=typeof(rA=rA.toString()))throw BA(\"dirty is not a string, aborting\")}if(!eA.isSupported){if(\"object\"===HA(tA.toStaticHTML)||\"function\"==typeof tA.toStaticHTML){if(\"string\"==typeof rA)return tA.toStaticHTML(rA);if(jn(rA))return tA.toStaticHTML(rA.outerHTML)}return rA}if(dn||Pn(iA),eA.removed=[],\"string\"==typeof rA&&(bn=!1),bn);else if(rA instanceof oA)1===(aA=(sA=Rn(\"\\x3c!----\\x3e\")).ownerDocument.importNode(rA,!0)).nodeType&&\"BODY\"===aA.nodeName||\"HTML\"===aA.nodeName?sA=aA:sA.appendChild(aA);else{if(!gn&&!un&&!hn&&-1===rA.indexOf(\"<\"))return $A&&wn?$A.createHTML(rA):rA;if(!(sA=Rn(rA)))return gn?null:Qr}sA&&fn&&Hn(sA.firstChild);for(var hA=Vn(bn?rA:sA);lA=hA.nextNode();)3===lA.nodeType&&lA===cA||qn(lA)||(lA.content instanceof nA&&Wn(lA.content),Xn(lA),cA=lA);if(cA=null,bn)return rA;if(gn){if(pn)for(uA=Rr.call(sA.ownerDocument);sA.firstChild;)uA.appendChild(sA.firstChild);else uA=sA;return mn&&(uA=Vr.call(AA,uA,!0)),uA}var dA=hn?sA.outerHTML:sA.innerHTML;return un&&(dA=pA(dA,zr,\" \"),dA=pA(dA,Xr,\" \")),$A&&wn?$A.createHTML(dA):dA},eA.setConfig=function(tA){Pn(tA),dn=!0},eA.clearConfig=function(){Qn=null,dn=!1},eA.isValidAttribute=function(tA,eA,AA){Qn||Pn({});var rA=fA(tA),nA=fA(eA);return zn(rA,nA,AA)},eA.addHook=function(tA,eA){\"function\"==typeof eA&&(Kr[tA]=Kr[tA]||[],dA(Kr[tA],eA))},eA.removeHook=function(tA){Kr[tA]&&hA(Kr[tA])},eA.removeHooks=function(tA){Kr[tA]&&(Kr[tA]=[])},eA.removeAllHooks=function(){Kr={}},eA}return createDOMPurify()}()},[Uo.exports]),check=function(tA){return tA&&tA.Math==Math&&tA},_o=check(\"object\"==typeof globalThis&&globalThis)||check(\"object\"==typeof window&&window)||check(\"object\"==typeof self&&self)||check(\"object\"==typeof ji&&ji)||function(){return this}()||Function(\"return this\")(),Lo={},fails$l=function(tA){try{return!!tA()}catch(tA){return!0}},Io=!fails$l((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),No=!fails$l((function(){var tA=function(){}.bind();return\"function\"!=typeof tA||tA.hasOwnProperty(\"prototype\")})),To=No,ko=Function.prototype.call,Mo=To?ko.bind(ko):function(){return ko.apply(ko,arguments)},Oo={},Ho={}.propertyIsEnumerable,Do=Object.getOwnPropertyDescriptor,Ro=Do&&!Ho.call({1:2},1);\n/*! @license DOMPurify | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.2.2/LICENSE */Oo.f=Ro?function propertyIsEnumerable(tA){var eA=Do(this,tA);return!!eA&&eA.enumerable}:Ho;var Vo,Go,createPropertyDescriptor$4=function(tA,eA){return{enumerable:!(1&tA),configurable:!(2&tA),writable:!(4&tA),value:eA}},jo=No,Ko=Function.prototype,qo=Ko.bind,zo=Ko.call,Xo=jo&&qo.bind(zo,zo),Wo=jo?function(tA){return tA&&Xo(tA)}:function(tA){return tA&&function(){return zo.apply(tA,arguments)}},Yo=Wo,Jo=Yo({}.toString),Zo=Yo(\"\".slice),classofRaw$1=function(tA){return Zo(Jo(tA),8,-1)},$o=fails$l,ta=classofRaw$1,ea=Object,Aa=Wo(\"\".split),ra=$o((function(){return!ea(\"z\").propertyIsEnumerable(0)}))?function(tA){return\"String\"==ta(tA)?Aa(tA,\"\"):ea(tA)}:ea,na=TypeError,requireObjectCoercible$a=function(tA){if(null==tA)throw na(\"Can't call method on \"+tA);return tA},ia=ra,sa=requireObjectCoercible$a,toIndexedObject$5=function(tA){return ia(sa(tA))},isCallable$m=function(tA){return\"function\"==typeof tA},oa=isCallable$m,isObject$8=function(tA){return\"object\"==typeof tA?null!==tA:oa(tA)},aa=_o,la=isCallable$m,aFunction=function(tA){return la(tA)?tA:void 0},getBuiltIn$8=function(tA,eA){return arguments.length<2?aFunction(aa[tA]):aa[tA]&&aa[tA][eA]},ca=Wo({}.isPrototypeOf),ua=getBuiltIn$8(\"navigator\",\"userAgent\")||\"\",ha=_o,da=ua,fa=ha.process,ga=ha.Deno,pa=fa&&fa.versions||ga&&ga.version,ma=pa&&pa.v8;ma&&(Go=(Vo=ma.split(\".\"))[0]>0&&Vo[0]<4?1:+(Vo[0]+Vo[1])),!Go&&da&&(!(Vo=da.match(/Edge\\/(\\d+)/))||Vo[1]>=74)&&(Vo=da.match(/Chrome\\/(\\d+)/))&&(Go=+Vo[1]);var wa=Go,ya=wa,Ba=fails$l,ba=!!Object.getOwnPropertySymbols&&!Ba((function(){var tA=Symbol();return!String(tA)||!(Object(tA)instanceof Symbol)||!Symbol.sham&&ya&&ya<41})),va=ba&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator,Ca=getBuiltIn$8,Sa=isCallable$m,xa=ca,Fa=Object,Ea=va?function(tA){return\"symbol\"==typeof tA}:function(tA){var eA=Ca(\"Symbol\");return Sa(eA)&&xa(eA.prototype,Fa(tA))},Qa=String,tryToString$4=function(tA){try{return Qa(tA)}catch(tA){return\"Object\"}},Ua=isCallable$m,Pa=tryToString$4,_a=TypeError,aCallable$8=function(tA){if(Ua(tA))return tA;throw _a(Pa(tA)+\" is not a function\")},La=aCallable$8,getMethod$6=function(tA,eA){var AA=tA[eA];return null==AA?void 0:La(AA)},Ia=Mo,Na=isCallable$m,Ta=isObject$8,ka=TypeError,Ma={exports:{}},Oa=_o,Ha=Object.defineProperty,defineGlobalProperty$3=function(tA,eA){try{Ha(Oa,tA,{value:eA,configurable:!0,writable:!0})}catch(AA){Oa[tA]=eA}return eA},Da=defineGlobalProperty$3,Ra=_o[\"__core-js_shared__\"]||Da(\"__core-js_shared__\",{}),Va=Ra;(Ma.exports=function(tA,eA){return Va[tA]||(Va[tA]=void 0!==eA?eA:{})})(\"versions\",[]).push({version:\"3.24.1\",mode:\"global\",copyright:\"© 2014-2022 Denis Pushkarev (zloirock.ru)\",license:\"https://github.com/zloirock/core-js/blob/v3.24.1/LICENSE\",source:\"https://github.com/zloirock/core-js\"});var Ga=requireObjectCoercible$a,ja=Object,toObject$4=function(tA){return ja(Ga(tA))},Ka=toObject$4,qa=Wo({}.hasOwnProperty),za=Object.hasOwn||function hasOwn(tA,eA){return qa(Ka(tA),eA)},Xa=Wo,Wa=0,Ya=Math.random(),Ja=Xa(1..toString),uid$2=function(tA){return\"Symbol(\"+(void 0===tA?\"\":tA)+\")_\"+Ja(++Wa+Ya,36)},Za=_o,$a=Ma.exports,tl=za,el=uid$2,Al=ba,rl=va,nl=$a(\"wks\"),il=Za.Symbol,sl=il&&il.for,ol=rl?il:il&&il.withoutSetter||el,wellKnownSymbol$i=function(tA){if(!tl(nl,tA)||!Al&&\"string\"!=typeof nl[tA]){var eA=\"Symbol.\"+tA;Al&&tl(il,tA)?nl[tA]=il[tA]:nl[tA]=rl&&sl?sl(eA):ol(eA)}return nl[tA]},al=Mo,ll=isObject$8,cl=Ea,ul=getMethod$6,ordinaryToPrimitive=function(tA,eA){var AA,rA;if(\"string\"===eA&&Na(AA=tA.toString)&&!Ta(rA=Ia(AA,tA)))return rA;if(Na(AA=tA.valueOf)&&!Ta(rA=Ia(AA,tA)))return rA;if(\"string\"!==eA&&Na(AA=tA.toString)&&!Ta(rA=Ia(AA,tA)))return rA;throw ka(\"Can't convert object to primitive value\")},hl=TypeError,dl=wellKnownSymbol$i(\"toPrimitive\"),toPrimitive=function(tA,eA){if(!ll(tA)||cl(tA))return tA;var AA,rA=ul(tA,dl);if(rA){if(void 0===eA&&(eA=\"default\"),AA=al(rA,tA,eA),!ll(AA)||cl(AA))return AA;throw hl(\"Can't convert object to primitive value\")}return void 0===eA&&(eA=\"number\"),ordinaryToPrimitive(tA,eA)},fl=Ea,toPropertyKey$3=function(tA){var eA=toPrimitive(tA,\"string\");return fl(eA)?eA:eA+\"\"},gl=isObject$8,pl=_o.document,ml=gl(pl)&&gl(pl.createElement),documentCreateElement$2=function(tA){return ml?pl.createElement(tA):{}},wl=documentCreateElement$2,yl=!Io&&!fails$l((function(){return 7!=Object.defineProperty(wl(\"div\"),\"a\",{get:function(){return 7}}).a})),Bl=Io,bl=Mo,vl=Oo,Cl=createPropertyDescriptor$4,Sl=toIndexedObject$5,xl=toPropertyKey$3,Fl=za,El=yl,Ql=Object.getOwnPropertyDescriptor;Lo.f=Bl?Ql:function getOwnPropertyDescriptor(tA,eA){if(tA=Sl(tA),eA=xl(eA),El)try{return Ql(tA,eA)}catch(tA){}if(Fl(tA,eA))return Cl(!bl(vl.f,tA,eA),tA[eA])};var Ul={},Pl=Io&&fails$l((function(){return 42!=Object.defineProperty((function(){}),\"prototype\",{value:42,writable:!1}).prototype})),_l=isObject$8,Ll=String,Il=TypeError,anObject$g=function(tA){if(_l(tA))return tA;throw Il(Ll(tA)+\" is not an object\")},Nl=Io,Tl=yl,kl=Pl,Ml=anObject$g,Ol=toPropertyKey$3,Hl=TypeError,Dl=Object.defineProperty,Rl=Object.getOwnPropertyDescriptor;Ul.f=Nl?kl?function defineProperty(tA,eA,AA){if(Ml(tA),eA=Ol(eA),Ml(AA),\"function\"==typeof tA&&\"prototype\"===eA&&\"value\"in AA&&\"writable\"in AA&&!AA.writable){var rA=Rl(tA,eA);rA&&rA.writable&&(tA[eA]=AA.value,AA={configurable:\"configurable\"in AA?AA.configurable:rA.configurable,enumerable:\"enumerable\"in AA?AA.enumerable:rA.enumerable,writable:!1})}return Dl(tA,eA,AA)}:Dl:function defineProperty(tA,eA,AA){if(Ml(tA),eA=Ol(eA),Ml(AA),Tl)try{return Dl(tA,eA,AA)}catch(tA){}if(\"get\"in AA||\"set\"in AA)throw Hl(\"Accessors not supported\");return\"value\"in AA&&(tA[eA]=AA.value),tA};var Vl=Ul,Gl=createPropertyDescriptor$4,jl=Io?function(tA,eA,AA){return Vl.f(tA,eA,Gl(1,AA))}:function(tA,eA,AA){return tA[eA]=AA,tA},Kl={exports:{}},ql=Io,zl=za,Xl=Function.prototype,Wl=ql&&Object.getOwnPropertyDescriptor,Yl=zl(Xl,\"name\"),Jl={EXISTS:Yl,PROPER:Yl&&\"something\"===function something(){}.name,CONFIGURABLE:Yl&&(!ql||ql&&Wl(Xl,\"name\").configurable)},Zl=isCallable$m,$l=Ra,tc=Wo(Function.toString);Zl($l.inspectSource)||($l.inspectSource=function(tA){return tc(tA)});var ec,Ac,rc,nc=$l.inspectSource,ic=isCallable$m,sc=nc,oc=_o.WeakMap,ac=ic(oc)&&/native code/.test(sc(oc)),cc=Ma.exports,uc=uid$2,hc=cc(\"keys\"),sharedKey$3=function(tA){return hc[tA]||(hc[tA]=uc(tA))},dc={},fc=ac,gc=_o,pc=Wo,mc=isObject$8,wc=jl,yc=za,Bc=Ra,bc=sharedKey$3,vc=dc,Cc=gc.TypeError,Sc=gc.WeakMap;if(fc||Bc.state){var xc=Bc.state||(Bc.state=new Sc),Fc=pc(xc.get),Ec=pc(xc.has),Qc=pc(xc.set);ec=function(tA,eA){if(Ec(xc,tA))throw new Cc(\"Object already initialized\");return eA.facade=tA,Qc(xc,tA,eA),eA},Ac=function(tA){return Fc(xc,tA)||{}},rc=function(tA){return Ec(xc,tA)}}else{var Uc=bc(\"state\");vc[Uc]=!0,ec=function(tA,eA){if(yc(tA,Uc))throw new Cc(\"Object already initialized\");return eA.facade=tA,wc(tA,Uc,eA),eA},Ac=function(tA){return yc(tA,Uc)?tA[Uc]:{}},rc=function(tA){return yc(tA,Uc)}}var Pc={set:ec,get:Ac,has:rc,enforce:function(tA){return rc(tA)?Ac(tA):ec(tA,{})},getterFor:function(tA){return function(eA){var AA;if(!mc(eA)||(AA=Ac(eA)).type!==tA)throw Cc(\"Incompatible receiver, \"+tA+\" required\");return AA}}},_c=fails$l,Lc=isCallable$m,Ic=za,Nc=Io,Tc=Jl.CONFIGURABLE,kc=nc,Mc=Pc.enforce,Oc=Pc.get,Hc=Object.defineProperty,Dc=Nc&&!_c((function(){return 8!==Hc((function(){}),\"length\",{value:8}).length})),Rc=String(String).split(\"String\"),Vc=Kl.exports=function(tA,eA,AA){\"Symbol(\"===String(eA).slice(0,7)&&(eA=\"[\"+String(eA).replace(/^Symbol\\(([^)]*)\\)/,\"$1\")+\"]\"),AA&&AA.getter&&(eA=\"get \"+eA),AA&&AA.setter&&(eA=\"set \"+eA),(!Ic(tA,\"name\")||Tc&&tA.name!==eA)&&(Nc?Hc(tA,\"name\",{value:eA,configurable:!0}):tA.name=eA),Dc&&AA&&Ic(AA,\"arity\")&&tA.length!==AA.arity&&Hc(tA,\"length\",{value:AA.arity});try{AA&&Ic(AA,\"constructor\")&&AA.constructor?Nc&&Hc(tA,\"prototype\",{writable:!1}):tA.prototype&&(tA.prototype=void 0)}catch(tA){}var rA=Mc(tA);return Ic(rA,\"source\")||(rA.source=Rc.join(\"string\"==typeof eA?eA:\"\")),tA};Function.prototype.toString=Vc((function toString(){return Lc(this)&&Oc(this).source||kc(this)}),\"toString\");var Gc=isCallable$m,jc=Ul,Kc=Kl.exports,qc=defineGlobalProperty$3,defineBuiltIn$7=function(tA,eA,AA,rA){rA||(rA={});var nA=rA.enumerable,iA=void 0!==rA.name?rA.name:eA;if(Gc(AA)&&Kc(AA,iA,rA),rA.global)nA?tA[eA]=AA:qc(eA,AA);else{try{rA.unsafe?tA[eA]&&(nA=!0):delete tA[eA]}catch(tA){}nA?tA[eA]=AA:jc.f(tA,eA,{value:AA,enumerable:!1,configurable:!rA.nonConfigurable,writable:!rA.nonWritable})}return tA},zc={},Xc=Math.ceil,Wc=Math.floor,Yc=Math.trunc||function trunc(tA){var eA=+tA;return(eA>0?Wc:Xc)(eA)},Jc=Yc,toIntegerOrInfinity$4=function(tA){var eA=+tA;return eA!=eA||0===eA?0:Jc(eA)},Zc=toIntegerOrInfinity$4,$c=Math.max,tu=Math.min,toAbsoluteIndex$2=function(tA,eA){var AA=Zc(tA);return AA<0?$c(AA+eA,0):tu(AA,eA)},eu=toIntegerOrInfinity$4,Au=Math.min,toLength$6=function(tA){return tA>0?Au(eu(tA),9007199254740991):0},ru=toLength$6,lengthOfArrayLike$4=function(tA){return ru(tA.length)},nu=toIndexedObject$5,iu=toAbsoluteIndex$2,su=lengthOfArrayLike$4,createMethod$3=function(tA){return function(eA,AA,rA){var nA,iA=nu(eA),sA=su(iA),oA=iu(rA,sA);if(tA&&AA!=AA){for(;sA>oA;)if((nA=iA[oA++])!=nA)return!0}else for(;sA>oA;oA++)if((tA||oA in iA)&&iA[oA]===AA)return tA||oA||0;return!tA&&-1}},ou={includes:createMethod$3(!0),indexOf:createMethod$3(!1)},au=za,lu=toIndexedObject$5,cu=ou.indexOf,uu=dc,hu=Wo([].push),objectKeysInternal=function(tA,eA){var AA,rA=lu(tA),nA=0,iA=[];for(AA in rA)!au(uu,AA)&&au(rA,AA)&&hu(iA,AA);for(;eA.length>nA;)au(rA,AA=eA[nA++])&&(~cu(iA,AA)||hu(iA,AA));return iA},du=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"],fu=objectKeysInternal,gu=du.concat(\"length\",\"prototype\");zc.f=Object.getOwnPropertyNames||function getOwnPropertyNames(tA){return fu(tA,gu)};var pu={};pu.f=Object.getOwnPropertySymbols;var mu=getBuiltIn$8,wu=zc,yu=pu,Bu=anObject$g,bu=Wo([].concat),vu=mu(\"Reflect\",\"ownKeys\")||function ownKeys(tA){var eA=wu.f(Bu(tA)),AA=yu.f;return AA?bu(eA,AA(tA)):eA},Cu=za,Su=vu,xu=Lo,Fu=Ul,Eu=fails$l,Qu=isCallable$m,Uu=/#|\\.prototype\\./,isForced$2=function(tA,eA){var AA=_u[Pu(tA)];return AA==Iu||AA!=Lu&&(Qu(eA)?Eu(eA):!!eA)},Pu=isForced$2.normalize=function(tA){return String(tA).replace(Uu,\".\").toLowerCase()},_u=isForced$2.data={},Lu=isForced$2.NATIVE=\"N\",Iu=isForced$2.POLYFILL=\"P\",Nu=isForced$2,Tu=_o,ku=Lo.f,Mu=jl,Ou=defineBuiltIn$7,Hu=defineGlobalProperty$3,copyConstructorProperties=function(tA,eA,AA){for(var rA=Su(eA),nA=Fu.f,iA=xu.f,sA=0;sA<rA.length;sA++){var oA=rA[sA];Cu(tA,oA)||AA&&Cu(AA,oA)||nA(tA,oA,iA(eA,oA))}},Du=Nu,_export=function(tA,eA){var AA,rA,nA,iA,sA,oA=tA.target,aA=tA.global,lA=tA.stat;if(AA=aA?Tu:lA?Tu[oA]||Hu(oA,{}):(Tu[oA]||{}).prototype)for(rA in eA){if(iA=eA[rA],nA=tA.dontCallGetSet?(sA=ku(AA,rA))&&sA.value:AA[rA],!Du(aA?rA:oA+(lA?\".\":\"#\")+rA,tA.forced)&&void 0!==nA){if(typeof iA==typeof nA)continue;copyConstructorProperties(iA,nA)}(tA.sham||nA&&nA.sham)&&Mu(iA,\"sham\",!0),Ou(AA,rA,iA,tA)}},Ru=\"process\"==classofRaw$1(_o.process),Vu=isCallable$m,Gu=String,ju=TypeError,Ku=Wo,qu=anObject$g,aPossiblePrototype=function(tA){if(\"object\"==typeof tA||Vu(tA))return tA;throw ju(\"Can't set \"+Gu(tA)+\" as a prototype\")},zu=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var tA,eA=!1,AA={};try{(tA=Ku(Object.getOwnPropertyDescriptor(Object.prototype,\"__proto__\").set))(AA,[]),eA=AA instanceof Array}catch(tA){}return function setPrototypeOf(AA,rA){return qu(AA),aPossiblePrototype(rA),eA?tA(AA,rA):AA.__proto__=rA,AA}}():void 0),Xu=Ul.f,Wu=za,Yu=wellKnownSymbol$i(\"toStringTag\"),setToStringTag$3=function(tA,eA,AA){tA&&!AA&&(tA=tA.prototype),tA&&!Wu(tA,Yu)&&Xu(tA,Yu,{configurable:!0,value:eA})},Ju=getBuiltIn$8,Zu=Ul,$u=Io,th=wellKnownSymbol$i(\"species\"),eh=ca,Ah=TypeError,rh={};rh[wellKnownSymbol$i(\"toStringTag\")]=\"z\";var nh=\"[object z]\"===String(rh),ih=isCallable$m,sh=classofRaw$1,oh=wellKnownSymbol$i(\"toStringTag\"),ah=Object,lh=\"Arguments\"==sh(function(){return arguments}()),ch=nh?sh:function(tA){var eA,AA,rA;return void 0===tA?\"Undefined\":null===tA?\"Null\":\"string\"==typeof(AA=function(tA,eA){try{return tA[eA]}catch(tA){}}(eA=ah(tA),oh))?AA:lh?sh(eA):\"Object\"==(rA=sh(eA))&&ih(eA.callee)?\"Arguments\":rA},uh=Wo,hh=fails$l,dh=isCallable$m,fh=ch,gh=nc,noop$1=function(){},ph=[],mh=getBuiltIn$8(\"Reflect\",\"construct\"),wh=/^\\s*(?:class|function)\\b/,yh=uh(wh.exec),Bh=!wh.exec(noop$1),bh=function isConstructor(tA){if(!dh(tA))return!1;try{return mh(noop$1,ph,tA),!0}catch(tA){return!1}},vh=function isConstructor(tA){if(!dh(tA))return!1;switch(fh(tA)){case\"AsyncFunction\":case\"GeneratorFunction\":case\"AsyncGeneratorFunction\":return!1}try{return Bh||!!yh(wh,gh(tA))}catch(tA){return!0}};vh.sham=!0;var Ch,Sh,xh,Fh,Eh=!mh||hh((function(){var tA;return bh(bh.call)||!bh(Object)||!bh((function(){tA=!0}))||tA}))?vh:bh,Qh=Eh,Uh=tryToString$4,Ph=TypeError,_h=anObject$g,aConstructor=function(tA){if(Qh(tA))return tA;throw Ph(Uh(tA)+\" is not a constructor\")},Lh=wellKnownSymbol$i(\"species\"),speciesConstructor$2=function(tA,eA){var AA,rA=_h(tA).constructor;return void 0===rA||null==(AA=_h(rA)[Lh])?eA:aConstructor(AA)},Ih=No,Nh=Function.prototype,Th=Nh.apply,kh=Nh.call,Mh=\"object\"==typeof Reflect&&Reflect.apply||(Ih?kh.bind(Th):function(){return kh.apply(Th,arguments)}),Oh=aCallable$8,Hh=No,Dh=Wo(Wo.bind),functionBindContext=function(tA,eA){return Oh(tA),void 0===eA?tA:Hh?Dh(tA,eA):function(){return tA.apply(eA,arguments)}},Rh=getBuiltIn$8(\"document\",\"documentElement\"),Vh=Wo([].slice),Gh=TypeError,jh=/(?:ipad|iphone|ipod).*applewebkit/i.test(ua),Kh=_o,qh=Mh,zh=functionBindContext,Xh=isCallable$m,Wh=za,Yh=fails$l,Jh=Rh,Zh=Vh,$h=documentCreateElement$2,validateArgumentsLength=function(tA,eA){if(tA<eA)throw Gh(\"Not enough arguments\");return tA},td=jh,ed=Ru,Ad=Kh.setImmediate,rd=Kh.clearImmediate,nd=Kh.process,id=Kh.Dispatch,sd=Kh.Function,od=Kh.MessageChannel,ad=Kh.String,ld=0,cd={};try{Ch=Kh.location}catch(tA){}var run=function(tA){if(Wh(cd,tA)){var eA=cd[tA];delete cd[tA],eA()}},runner=function(tA){return function(){run(tA)}},listener=function(tA){run(tA.data)},post=function(tA){Kh.postMessage(ad(tA),Ch.protocol+\"//\"+Ch.host)};Ad&&rd||(Ad=function setImmediate(tA){validateArgumentsLength(arguments.length,1);var eA=Xh(tA)?tA:sd(tA),AA=Zh(arguments,1);return cd[++ld]=function(){qh(eA,void 0,AA)},Sh(ld),ld},rd=function clearImmediate(tA){delete cd[tA]},ed?Sh=function(tA){nd.nextTick(runner(tA))}:id&&id.now?Sh=function(tA){id.now(runner(tA))}:od&&!td?(Fh=(xh=new od).port2,xh.port1.onmessage=listener,Sh=zh(Fh.postMessage,Fh)):Kh.addEventListener&&Xh(Kh.postMessage)&&!Kh.importScripts&&Ch&&\"file:\"!==Ch.protocol&&!Yh(post)?(Sh=post,Kh.addEventListener(\"message\",listener,!1)):Sh=\"onreadystatechange\"in $h(\"script\")?function(tA){Jh.appendChild($h(\"script\")).onreadystatechange=function(){Jh.removeChild(this),run(tA)}}:function(tA){setTimeout(runner(tA),0)});var ud,hd,dd,fd,gd,pd,md,wd,yd={set:Ad,clear:rd},Bd=_o,bd=/ipad|iphone|ipod/i.test(ua)&&void 0!==Bd.Pebble,vd=/web0s(?!.*chrome)/i.test(ua),Cd=_o,Sd=functionBindContext,xd=Lo.f,Fd=yd.set,Ed=jh,Qd=bd,Ud=vd,Pd=Ru,_d=Cd.MutationObserver||Cd.WebKitMutationObserver,Ld=Cd.document,Id=Cd.process,Nd=Cd.Promise,Td=xd(Cd,\"queueMicrotask\"),kd=Td&&Td.value;kd||(ud=function(){var tA,eA;for(Pd&&(tA=Id.domain)&&tA.exit();hd;){eA=hd.fn,hd=hd.next;try{eA()}catch(tA){throw hd?fd():dd=void 0,tA}}dd=void 0,tA&&tA.enter()},Ed||Pd||Ud||!_d||!Ld?!Qd&&Nd&&Nd.resolve?((md=Nd.resolve(void 0)).constructor=Nd,wd=Sd(md.then,md),fd=function(){wd(ud)}):Pd?fd=function(){Id.nextTick(ud)}:(Fd=Sd(Fd,Cd),fd=function(){Fd(ud)}):(gd=!0,pd=Ld.createTextNode(\"\"),new _d(ud).observe(pd,{characterData:!0}),fd=function(){pd.data=gd=!gd}));var Md=kd||function(tA){var eA={fn:tA,next:void 0};dd&&(dd.next=eA),hd||(hd=eA,fd()),dd=eA},Od=_o,perform$3=function(tA){try{return{error:!1,value:tA()}}catch(tA){return{error:!0,value:tA}}},Queue$1=function(){this.head=null,this.tail=null};Queue$1.prototype={add:function(tA){var eA={item:tA,next:null};this.head?this.tail.next=eA:this.head=eA,this.tail=eA},get:function(){var tA=this.head;if(tA)return this.head=tA.next,this.tail===tA&&(this.tail=null),tA.item}};var Hd=Queue$1,Dd=_o.Promise,Rd=\"object\"==typeof Deno&&Deno&&\"object\"==typeof Deno.version,Vd=!Rd&&!Ru&&\"object\"==typeof window&&\"object\"==typeof document,Gd=_o,jd=Dd,Kd=isCallable$m,qd=Nu,zd=nc,Xd=wellKnownSymbol$i,Wd=Vd,Yd=Rd,Jd=wa;jd&&jd.prototype;var Zd=Xd(\"species\"),$d=!1,tf=Kd(Gd.PromiseRejectionEvent),ef=qd(\"Promise\",(function(){var tA=zd(jd),eA=tA!==String(jd);if(!eA&&66===Jd)return!0;if(!Jd||Jd<51||!/native code/.test(tA)){var AA=new jd((function(tA){tA(1)})),FakePromise=function(tA){tA((function(){}),(function(){}))};if((AA.constructor={})[Zd]=FakePromise,!($d=AA.then((function(){}))instanceof FakePromise))return!0}return!eA&&(Wd||Yd)&&!tf})),Af={CONSTRUCTOR:ef,REJECTION_EVENT:tf,SUBCLASSING:$d},rf={},nf=aCallable$8,PromiseCapability=function(tA){var eA,AA;this.promise=new tA((function(tA,rA){if(void 0!==eA||void 0!==AA)throw TypeError(\"Bad Promise constructor\");eA=tA,AA=rA})),this.resolve=nf(eA),this.reject=nf(AA)};rf.f=function(tA){return new PromiseCapability(tA)};var sf,of,af,lf=_export,cf=Ru,uf=_o,hf=Mo,df=defineBuiltIn$7,ff=zu,gf=setToStringTag$3,setSpecies=function(tA){var eA=Ju(tA),AA=Zu.f;$u&&eA&&!eA[th]&&AA(eA,th,{configurable:!0,get:function(){return this}})},pf=aCallable$8,mf=isCallable$m,wf=isObject$8,anInstance=function(tA,eA){if(eh(eA,tA))return tA;throw Ah(\"Incorrect invocation\")},yf=speciesConstructor$2,Bf=yd.set,bf=Md,hostReportErrors=function(tA,eA){var AA=Od.console;AA&&AA.error&&(1==arguments.length?AA.error(tA):AA.error(tA,eA))},vf=perform$3,Cf=Hd,Sf=Pc,xf=Dd,Ff=rf,Ef=Af.CONSTRUCTOR,Qf=Af.REJECTION_EVENT,Uf=Af.SUBCLASSING,Pf=Sf.getterFor(\"Promise\"),_f=Sf.set,Lf=xf&&xf.prototype,If=xf,Nf=Lf,Tf=uf.TypeError,kf=uf.document,Mf=uf.process,Of=Ff.f,Hf=Of,Df=!!(kf&&kf.createEvent&&uf.dispatchEvent),isThenable=function(tA){var eA;return!(!wf(tA)||!mf(eA=tA.then))&&eA},callReaction=function(tA,eA){var AA,rA,nA,iA=eA.value,sA=1==eA.state,oA=sA?tA.ok:tA.fail,aA=tA.resolve,lA=tA.reject,cA=tA.domain;try{oA?(sA||(2===eA.rejection&&onHandleUnhandled(eA),eA.rejection=1),!0===oA?AA=iA:(cA&&cA.enter(),AA=oA(iA),cA&&(cA.exit(),nA=!0)),AA===tA.promise?lA(Tf(\"Promise-chain cycle\")):(rA=isThenable(AA))?hf(rA,AA,aA,lA):aA(AA)):lA(iA)}catch(tA){cA&&!nA&&cA.exit(),lA(tA)}},notify=function(tA,eA){tA.notified||(tA.notified=!0,bf((function(){for(var AA,rA=tA.reactions;AA=rA.get();)callReaction(AA,tA);tA.notified=!1,eA&&!tA.rejection&&onUnhandled(tA)})))},dispatchEvent=function(tA,eA,AA){var rA,nA;Df?((rA=kf.createEvent(\"Event\")).promise=eA,rA.reason=AA,rA.initEvent(tA,!1,!0),uf.dispatchEvent(rA)):rA={promise:eA,reason:AA},!Qf&&(nA=uf[\"on\"+tA])?nA(rA):\"unhandledrejection\"===tA&&hostReportErrors(\"Unhandled promise rejection\",AA)},onUnhandled=function(tA){hf(Bf,uf,(function(){var eA,AA=tA.facade,rA=tA.value;if(isUnhandled(tA)&&(eA=vf((function(){cf?Mf.emit(\"unhandledRejection\",rA,AA):dispatchEvent(\"unhandledrejection\",AA,rA)})),tA.rejection=cf||isUnhandled(tA)?2:1,eA.error))throw eA.value}))},isUnhandled=function(tA){return 1!==tA.rejection&&!tA.parent},onHandleUnhandled=function(tA){hf(Bf,uf,(function(){var eA=tA.facade;cf?Mf.emit(\"rejectionHandled\",eA):dispatchEvent(\"rejectionhandled\",eA,tA.value)}))},bind$1=function(tA,eA,AA){return function(rA){tA(eA,rA,AA)}},internalReject=function(tA,eA,AA){tA.done||(tA.done=!0,AA&&(tA=AA),tA.value=eA,tA.state=2,notify(tA,!0))},internalResolve=function(tA,eA,AA){if(!tA.done){tA.done=!0,AA&&(tA=AA);try{if(tA.facade===eA)throw Tf(\"Promise can't be resolved itself\");var rA=isThenable(eA);rA?bf((function(){var AA={done:!1};try{hf(rA,eA,bind$1(internalResolve,AA,tA),bind$1(internalReject,AA,tA))}catch(eA){internalReject(AA,eA,tA)}})):(tA.value=eA,tA.state=1,notify(tA,!1))}catch(eA){internalReject({done:!1},eA,tA)}}};if(Ef&&(Nf=(If=function Promise(tA){anInstance(this,Nf),pf(tA),hf(sf,this);var eA=Pf(this);try{tA(bind$1(internalResolve,eA),bind$1(internalReject,eA))}catch(tA){internalReject(eA,tA)}}).prototype,(sf=function Promise(tA){_f(this,{type:\"Promise\",done:!1,notified:!1,parent:!1,reactions:new Cf,rejection:!1,state:0,value:void 0})}).prototype=df(Nf,\"then\",(function then(tA,eA){var AA=Pf(this),rA=Of(yf(this,If));return AA.parent=!0,rA.ok=!mf(tA)||tA,rA.fail=mf(eA)&&eA,rA.domain=cf?Mf.domain:void 0,0==AA.state?AA.reactions.add(rA):bf((function(){callReaction(rA,AA)})),rA.promise})),of=function(){var tA=new sf,eA=Pf(tA);this.promise=tA,this.resolve=bind$1(internalResolve,eA),this.reject=bind$1(internalReject,eA)},Ff.f=Of=function(tA){return tA===If||undefined===tA?new of(tA):Hf(tA)},mf(xf)&&Lf!==Object.prototype)){af=Lf.then,Uf||df(Lf,\"then\",(function then(tA,eA){var AA=this;return new If((function(tA,eA){hf(af,AA,tA,eA)})).then(tA,eA)}),{unsafe:!0});try{delete Lf.constructor}catch(tA){}ff&&ff(Lf,Nf)}lf({global:!0,constructor:!0,wrap:!0,forced:Ef},{Promise:If}),gf(If,\"Promise\",!1),setSpecies(\"Promise\");var Rf={},Vf=Rf,Gf=wellKnownSymbol$i(\"iterator\"),jf=Array.prototype,Kf=ch,qf=getMethod$6,zf=Rf,Xf=wellKnownSymbol$i(\"iterator\"),getIteratorMethod$2=function(tA){if(null!=tA)return qf(tA,Xf)||qf(tA,\"@@iterator\")||zf[Kf(tA)]},Wf=Mo,Yf=aCallable$8,Jf=anObject$g,Zf=tryToString$4,$f=getIteratorMethod$2,tg=TypeError,eg=Mo,Ag=anObject$g,rg=getMethod$6,ng=functionBindContext,ig=Mo,sg=anObject$g,og=tryToString$4,isArrayIteratorMethod=function(tA){return void 0!==tA&&(Vf.Array===tA||jf[Gf]===tA)},ag=lengthOfArrayLike$4,lg=ca,getIterator=function(tA,eA){var AA=arguments.length<2?$f(tA):eA;if(Yf(AA))return Jf(Wf(AA,tA));throw tg(Zf(tA)+\" is not iterable\")},cg=getIteratorMethod$2,iteratorClose=function(tA,eA,AA){var rA,nA;Ag(tA);try{if(!(rA=rg(tA,\"return\"))){if(\"throw\"===eA)throw AA;return AA}rA=eg(rA,tA)}catch(tA){nA=!0,rA=tA}if(\"throw\"===eA)throw AA;if(nA)throw rA;return Ag(rA),AA},ug=TypeError,Result=function(tA,eA){this.stopped=tA,this.result=eA},hg=Result.prototype,iterate$2=function(tA,eA,AA){var rA,nA,iA,sA,oA,aA,lA,cA=AA&&AA.that,uA=!(!AA||!AA.AS_ENTRIES),hA=!(!AA||!AA.IS_RECORD),dA=!(!AA||!AA.IS_ITERATOR),fA=!(!AA||!AA.INTERRUPTED),gA=ng(eA,cA),stop=function(tA){return rA&&iteratorClose(rA,\"normal\",tA),new Result(!0,tA)},callFn=function(tA){return uA?(sg(tA),fA?gA(tA[0],tA[1],stop):gA(tA[0],tA[1])):fA?gA(tA,stop):gA(tA)};if(hA)rA=tA.iterator;else if(dA)rA=tA;else{if(!(nA=cg(tA)))throw ug(og(tA)+\" is not iterable\");if(isArrayIteratorMethod(nA)){for(iA=0,sA=ag(tA);sA>iA;iA++)if((oA=callFn(tA[iA]))&&lg(hg,oA))return oA;return new Result(!1)}rA=getIterator(tA,nA)}for(aA=hA?tA.next:rA.next;!(lA=ig(aA,rA)).done;){try{oA=callFn(lA.value)}catch(tA){iteratorClose(rA,\"throw\",tA)}if(\"object\"==typeof oA&&oA&&lg(hg,oA))return oA}return new Result(!1)},dg=wellKnownSymbol$i(\"iterator\"),fg=!1;try{var gg=0,pg={next:function(){return{done:!!gg++}},return:function(){fg=!0}};pg[dg]=function(){return this},Array.from(pg,(function(){throw 2}))}catch(tA){}var mg=Dd,checkCorrectnessOfIteration=function(tA,eA){if(!eA&&!fg)return!1;var AA=!1;try{var rA={};rA[dg]=function(){return{next:function(){return{done:AA=!0}}}},tA(rA)}catch(tA){}return AA},wg=Af.CONSTRUCTOR||!checkCorrectnessOfIteration((function(tA){mg.all(tA).then(void 0,(function(){}))})),yg=Mo,Bg=aCallable$8,bg=rf,vg=perform$3,Cg=iterate$2;_export({target:\"Promise\",stat:!0,forced:wg},{all:function all(tA){var eA=this,AA=bg.f(eA),rA=AA.resolve,nA=AA.reject,iA=vg((function(){var AA=Bg(eA.resolve),iA=[],sA=0,oA=1;Cg(tA,(function(tA){var aA=sA++,lA=!1;oA++,yg(AA,eA,tA).then((function(tA){lA||(lA=!0,iA[aA]=tA,--oA||rA(iA))}),nA)})),--oA||rA(iA)}));return iA.error&&nA(iA.value),AA.promise}});var Sg=_export,xg=Af.CONSTRUCTOR,Fg=Dd,Eg=getBuiltIn$8,Qg=isCallable$m,Ug=defineBuiltIn$7,Pg=Fg&&Fg.prototype;if(Sg({target:\"Promise\",proto:!0,forced:xg,real:!0},{catch:function(tA){return this.then(void 0,tA)}}),Qg(Fg)){var _g=Eg(\"Promise\").prototype.catch;Pg.catch!==_g&&Ug(Pg,\"catch\",_g,{unsafe:!0})}var Lg=Mo,Ig=aCallable$8,Ng=rf,Tg=perform$3,kg=iterate$2;_export({target:\"Promise\",stat:!0,forced:wg},{race:function race(tA){var eA=this,AA=Ng.f(eA),rA=AA.reject,nA=Tg((function(){var nA=Ig(eA.resolve);kg(tA,(function(tA){Lg(nA,eA,tA).then(AA.resolve,rA)}))}));return nA.error&&rA(nA.value),AA.promise}});var Mg=Mo,Og=rf;_export({target:\"Promise\",stat:!0,forced:Af.CONSTRUCTOR},{reject:function reject(tA){var eA=Og.f(this);return Mg(eA.reject,void 0,tA),eA.promise}});var Hg=anObject$g,Dg=isObject$8,Rg=rf,Vg=_export,Gg=Af.CONSTRUCTOR,promiseResolve=function(tA,eA){if(Hg(tA),Dg(eA)&&eA.constructor===tA)return eA;var AA=Rg.f(tA);return(0,AA.resolve)(eA),AA.promise};function asyncGeneratorStep(tA,eA,AA,rA,nA,iA,sA){try{var oA=tA[iA](sA),aA=oA.value}catch(tA){return void AA(tA)}oA.done?eA(aA):Promise.resolve(aA).then(rA,nA)}function _asyncToGenerator(tA){return function(){var eA=this,AA=arguments;return new Promise((function(rA,nA){var iA=tA.apply(eA,AA);function _next(tA){asyncGeneratorStep(iA,rA,nA,_next,_throw,\"next\",tA)}function _throw(tA){asyncGeneratorStep(iA,rA,nA,_next,_throw,\"throw\",tA)}_next(void 0)}))}}getBuiltIn$8(\"Promise\"),Vg({target:\"Promise\",stat:!0,forced:Gg},{resolve:function resolve(tA){return promiseResolve(this,tA)}});var jg=ch,Kg=String,toString$9=function(tA){if(\"Symbol\"===jg(tA))throw TypeError(\"Cannot convert a Symbol value to a string\");return Kg(tA)},qg=anObject$g,regexpFlags$1=function(){var tA=qg(this),eA=\"\";return tA.hasIndices&&(eA+=\"d\"),tA.global&&(eA+=\"g\"),tA.ignoreCase&&(eA+=\"i\"),tA.multiline&&(eA+=\"m\"),tA.dotAll&&(eA+=\"s\"),tA.unicode&&(eA+=\"u\"),tA.unicodeSets&&(eA+=\"v\"),tA.sticky&&(eA+=\"y\"),eA},zg=fails$l,Xg=_o.RegExp,Wg=zg((function(){var tA=Xg(\"a\",\"y\");return tA.lastIndex=2,null!=tA.exec(\"abcd\")})),Yg=Wg||zg((function(){return!Xg(\"a\",\"y\").sticky})),Jg=Wg||zg((function(){var tA=Xg(\"^r\",\"gy\");return tA.lastIndex=2,null!=tA.exec(\"str\")})),Zg={BROKEN_CARET:Jg,MISSED_STICKY:Yg,UNSUPPORTED_Y:Wg},$g={},tp=objectKeysInternal,ep=du,Ap=Object.keys||function keys(tA){return tp(tA,ep)},rp=Io,np=Pl,ip=Ul,sp=anObject$g,op=toIndexedObject$5,ap=Ap;$g.f=rp&&!np?Object.defineProperties:function defineProperties(tA,eA){sp(tA);for(var AA,rA=op(eA),nA=ap(eA),iA=nA.length,sA=0;iA>sA;)ip.f(tA,AA=nA[sA++],rA[AA]);return tA};var lp,cp=anObject$g,up=$g,hp=du,dp=dc,fp=Rh,gp=documentCreateElement$2,pp=sharedKey$3(\"IE_PROTO\"),EmptyConstructor=function(){},scriptTag=function(tA){return\"<script>\"+tA+\"<\\/script>\"},NullProtoObjectViaActiveX=function(tA){tA.write(scriptTag(\"\")),tA.close();var eA=tA.parentWindow.Object;return tA=null,eA},NullProtoObject=function(){try{lp=new ActiveXObject(\"htmlfile\")}catch(tA){}var tA,eA;NullProtoObject=\"undefined\"!=typeof document?document.domain&&lp?NullProtoObjectViaActiveX(lp):((eA=gp(\"iframe\")).style.display=\"none\",fp.appendChild(eA),eA.src=String(\"javascript:\"),(tA=eA.contentWindow.document).open(),tA.write(scriptTag(\"document.F=Object\")),tA.close(),tA.F):NullProtoObjectViaActiveX(lp);for(var AA=hp.length;AA--;)delete NullProtoObject.prototype[hp[AA]];return NullProtoObject()};dp[pp]=!0;var mp,wp,yp=Object.create||function create(tA,eA){var AA;return null!==tA?(EmptyConstructor.prototype=cp(tA),AA=new EmptyConstructor,EmptyConstructor.prototype=null,AA[pp]=tA):AA=NullProtoObject(),void 0===eA?AA:up.f(AA,eA)},Bp=fails$l,bp=_o.RegExp,vp=Bp((function(){var tA=bp(\".\",\"s\");return!(tA.dotAll&&tA.exec(\"\\n\")&&\"s\"===tA.flags)})),Cp=fails$l,Sp=_o.RegExp,xp=Cp((function(){var tA=Sp(\"(?<a>b)\",\"g\");return\"b\"!==tA.exec(\"b\").groups.a||\"bc\"!==\"b\".replace(tA,\"$<a>c\")})),Fp=Mo,Ep=Wo,Qp=toString$9,Up=regexpFlags$1,Pp=Zg,_p=Ma.exports,Lp=yp,Ip=Pc.get,Np=vp,Tp=xp,kp=_p(\"native-string-replace\",String.prototype.replace),Mp=RegExp.prototype.exec,Op=Mp,Hp=Ep(\"\".charAt),Dp=Ep(\"\".indexOf),Rp=Ep(\"\".replace),Vp=Ep(\"\".slice),Gp=(wp=/b*/g,Fp(Mp,mp=/a/,\"a\"),Fp(Mp,wp,\"a\"),0!==mp.lastIndex||0!==wp.lastIndex),jp=Pp.BROKEN_CARET,Kp=void 0!==/()??/.exec(\"\")[1];(Gp||Kp||jp||Np||Tp)&&(Op=function exec(tA){var eA,AA,rA,nA,iA,sA,oA,aA=this,lA=Ip(aA),cA=Qp(tA),uA=lA.raw;if(uA)return uA.lastIndex=aA.lastIndex,eA=Fp(Op,uA,cA),aA.lastIndex=uA.lastIndex,eA;var hA=lA.groups,dA=jp&&aA.sticky,fA=Fp(Up,aA),gA=aA.source,pA=0,mA=cA;if(dA&&(fA=Rp(fA,\"y\",\"\"),-1===Dp(fA,\"g\")&&(fA+=\"g\"),mA=Vp(cA,aA.lastIndex),aA.lastIndex>0&&(!aA.multiline||aA.multiline&&\"\\n\"!==Hp(cA,aA.lastIndex-1))&&(gA=\"(?: \"+gA+\")\",mA=\" \"+mA,pA++),AA=new RegExp(\"^(?:\"+gA+\")\",fA)),Kp&&(AA=new RegExp(\"^\"+gA+\"$(?!\\\\s)\",fA)),Gp&&(rA=aA.lastIndex),nA=Fp(Mp,dA?AA:aA,mA),dA?nA?(nA.input=Vp(nA.input,pA),nA[0]=Vp(nA[0],pA),nA.index=aA.lastIndex,aA.lastIndex+=nA[0].length):aA.lastIndex=0:Gp&&nA&&(aA.lastIndex=aA.global?nA.index+nA[0].length:rA),Kp&&nA&&nA.length>1&&Fp(kp,nA[0],AA,(function(){for(iA=1;iA<arguments.length-2;iA++)void 0===arguments[iA]&&(nA[iA]=void 0)})),nA&&hA)for(nA.groups=sA=Lp(null),iA=0;iA<hA.length;iA++)sA[(oA=hA[iA])[0]]=nA[oA[1]];return nA});var qp=Op;_export({target:\"RegExp\",proto:!0,forced:/./.exec!==qp},{exec:qp});var zp=Wo,Xp=defineBuiltIn$7,Wp=qp,Yp=fails$l,Jp=wellKnownSymbol$i,Zp=jl,$p=Jp(\"species\"),tm=RegExp.prototype,fixRegexpWellKnownSymbolLogic=function(tA,eA,AA,rA){var nA=Jp(tA),iA=!Yp((function(){var eA={};return eA[nA]=function(){return 7},7!=\"\"[tA](eA)})),sA=iA&&!Yp((function(){var eA=!1,AA=/a/;return\"split\"===tA&&((AA={}).constructor={},AA.constructor[$p]=function(){return AA},AA.flags=\"\",AA[nA]=/./[nA]),AA.exec=function(){return eA=!0,null},AA[nA](\"\"),!eA}));if(!iA||!sA||AA){var oA=zp(/./[nA]),aA=eA(nA,\"\"[tA],(function(tA,eA,AA,rA,nA){var sA=zp(tA),aA=eA.exec;return aA===Wp||aA===tm.exec?iA&&!nA?{done:!0,value:oA(eA,AA,rA)}:{done:!0,value:sA(AA,eA,rA)}:{done:!1}}));Xp(String.prototype,tA,aA[0]),Xp(tm,nA,aA[1])}rA&&Zp(tm[nA],\"sham\",!0)},em=Wo,Am=toIntegerOrInfinity$4,rm=toString$9,nm=requireObjectCoercible$a,im=em(\"\".charAt),sm=em(\"\".charCodeAt),om=em(\"\".slice),createMethod$2=function(tA){return function(eA,AA){var rA,nA,iA=rm(nm(eA)),sA=Am(AA),oA=iA.length;return sA<0||sA>=oA?tA?\"\":void 0:(rA=sm(iA,sA))<55296||rA>56319||sA+1===oA||(nA=sm(iA,sA+1))<56320||nA>57343?tA?im(iA,sA):rA:tA?om(iA,sA,sA+2):nA-56320+(rA-55296<<10)+65536}},am={codeAt:createMethod$2(!1),charAt:createMethod$2(!0)}.charAt,advanceStringIndex$3=function(tA,eA,AA){return eA+(AA?am(tA,eA).length:1)},lm=Mo,cm=anObject$g,um=isCallable$m,hm=classofRaw$1,dm=qp,fm=TypeError,regexpExecAbstract=function(tA,eA){var AA=tA.exec;if(um(AA)){var rA=lm(AA,tA,eA);return null!==rA&&cm(rA),rA}if(\"RegExp\"===hm(tA))return lm(dm,tA,eA);throw fm(\"RegExp#exec called on incompatible receiver\")},gm=Mo,pm=anObject$g,mm=toLength$6,wm=toString$9,ym=requireObjectCoercible$a,Bm=getMethod$6,bm=advanceStringIndex$3,vm=regexpExecAbstract;fixRegexpWellKnownSymbolLogic(\"match\",(function(tA,eA,AA){return[function match(eA){var AA=ym(this),rA=null==eA?void 0:Bm(eA,tA);return rA?gm(rA,eA,AA):new RegExp(eA)[tA](wm(AA))},function(tA){var rA=pm(this),nA=wm(tA),iA=AA(eA,rA,nA);if(iA.done)return iA.value;if(!rA.global)return vm(rA,nA);var sA=rA.unicode;rA.lastIndex=0;for(var oA,aA=[],lA=0;null!==(oA=vm(rA,nA));){var cA=wm(oA[0]);aA[lA]=cA,\"\"===cA&&(rA.lastIndex=bm(nA,mm(rA.lastIndex),sA)),lA++}return 0===lA?null:aA}]}));var Cm=Wo,Sm=toObject$4,xm=Math.floor,Fm=Cm(\"\".charAt),Em=Cm(\"\".replace),Qm=Cm(\"\".slice),Um=/\\$([$&'`]|\\d{1,2}|<[^>]*>)/g,Pm=/\\$([$&'`]|\\d{1,2})/g,_m=Mh,Lm=Mo,Im=Wo,Nm=fixRegexpWellKnownSymbolLogic,Tm=fails$l,km=anObject$g,Mm=isCallable$m,Om=toIntegerOrInfinity$4,Hm=toLength$6,Dm=toString$9,Rm=requireObjectCoercible$a,Vm=advanceStringIndex$3,Gm=getMethod$6,getSubstitution=function(tA,eA,AA,rA,nA,iA){var sA=AA+tA.length,oA=rA.length,aA=Pm;return void 0!==nA&&(nA=Sm(nA),aA=Um),Em(iA,aA,(function(iA,aA){var lA;switch(Fm(aA,0)){case\"$\":return\"$\";case\"&\":return tA;case\"`\":return Qm(eA,0,AA);case\"'\":return Qm(eA,sA);case\"<\":lA=nA[Qm(aA,1,-1)];break;default:var cA=+aA;if(0===cA)return iA;if(cA>oA){var uA=xm(cA/10);return 0===uA?iA:uA<=oA?void 0===rA[uA-1]?Fm(aA,1):rA[uA-1]+Fm(aA,1):iA}lA=rA[cA-1]}return void 0===lA?\"\":lA}))},jm=regexpExecAbstract,Km=wellKnownSymbol$i(\"replace\"),qm=Math.max,zm=Math.min,Xm=Im([].concat),Wm=Im([].push),Ym=Im(\"\".indexOf),Jm=Im(\"\".slice),maybeToString=function(tA){return void 0===tA?tA:String(tA)},Zm=\"$0\"===\"a\".replace(/./,\"$0\"),$m=!!/./[Km]&&\"\"===/./[Km](\"a\",\"$0\"),tw=!Tm((function(){var tA=/./;return tA.exec=function(){var tA=[];return tA.groups={a:\"7\"},tA},\"7\"!==\"\".replace(tA,\"$<a>\")}));Nm(\"replace\",(function(tA,eA,AA){var rA=$m?\"$\":\"$0\";return[function replace(tA,AA){var rA=Rm(this),nA=null==tA?void 0:Gm(tA,Km);return nA?Lm(nA,tA,rA,AA):Lm(eA,Dm(rA),tA,AA)},function(tA,nA){var iA=km(this),sA=Dm(tA);if(\"string\"==typeof nA&&-1===Ym(nA,rA)&&-1===Ym(nA,\"$<\")){var oA=AA(eA,iA,sA,nA);if(oA.done)return oA.value}var aA=Mm(nA);aA||(nA=Dm(nA));var lA=iA.global;if(lA){var cA=iA.unicode;iA.lastIndex=0}for(var uA=[];;){var hA=jm(iA,sA);if(null===hA)break;if(Wm(uA,hA),!lA)break;\"\"===Dm(hA[0])&&(iA.lastIndex=Vm(sA,Hm(iA.lastIndex),cA))}for(var dA=\"\",fA=0,gA=0;gA<uA.length;gA++){for(var pA=Dm((hA=uA[gA])[0]),mA=qm(zm(Om(hA.index),sA.length),0),wA=[],yA=1;yA<hA.length;yA++)Wm(wA,maybeToString(hA[yA]));var BA=hA.groups;if(aA){var bA=Xm([pA],wA,mA,sA);void 0!==BA&&Wm(bA,BA);var vA=Dm(_m(nA,void 0,bA))}else vA=getSubstitution(pA,sA,mA,wA,BA,nA);mA>=fA&&(dA+=Jm(sA,fA,mA)+vA,fA=mA+pA.length)}return dA+Jm(sA,fA)}]}),!tw||!Zm||$m);var ew,Aw=isObject$8,rw=classofRaw$1,nw=wellKnownSymbol$i(\"match\"),isRegexp=function(tA){var eA;return Aw(tA)&&(void 0!==(eA=tA[nw])?!!eA:\"RegExp\"==rw(tA))},iw=isRegexp,sw=TypeError,notARegexp=function(tA){if(iw(tA))throw sw(\"The method doesn't accept regular expressions\");return tA},ow=wellKnownSymbol$i(\"match\"),correctIsRegexpLogic=function(tA){var eA=/./;try{\"/./\"[tA](eA)}catch(AA){try{return eA[ow]=!1,\"/./\"[tA](eA)}catch(tA){}}return!1},aw=_export,lw=Wo,cw=Lo.f,uw=toLength$6,hw=toString$9,dw=notARegexp,fw=requireObjectCoercible$a,gw=correctIsRegexpLogic,pw=lw(\"\".startsWith),mw=lw(\"\".slice),ww=Math.min,yw=gw(\"startsWith\");aw({target:\"String\",proto:!0,forced:!!(yw||(ew=cw(String.prototype,\"startsWith\"),!ew||ew.writable))&&!yw},{startsWith:function startsWith(tA){var eA=hw(fw(this));dw(tA);var AA=uw(ww(arguments.length>1?arguments[1]:void 0,eA.length)),rA=hw(tA);return pw?pw(eA,rA,AA):mw(eA,AA,AA+rA.length)===rA}});var Bw=wellKnownSymbol$i,bw=yp,vw=Ul.f,Cw=Bw(\"unscopables\"),Sw=Array.prototype;null==Sw[Cw]&&vw(Sw,Cw,{configurable:!0,value:bw(null)});var xw,Fw,Ew,Qw=!fails$l((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype})),Uw=za,Pw=isCallable$m,_w=toObject$4,Lw=Qw,Iw=sharedKey$3(\"IE_PROTO\"),Nw=Object,Tw=Nw.prototype,kw=Lw?Nw.getPrototypeOf:function(tA){var eA=_w(tA);if(Uw(eA,Iw))return eA[Iw];var AA=eA.constructor;return Pw(AA)&&eA instanceof AA?AA.prototype:eA instanceof Nw?Tw:null},Mw=fails$l,Ow=isCallable$m,Hw=kw,Dw=defineBuiltIn$7,Rw=wellKnownSymbol$i(\"iterator\"),Vw=!1;[].keys&&(\"next\"in(Ew=[].keys())?(Fw=Hw(Hw(Ew)))!==Object.prototype&&(xw=Fw):Vw=!0);var Gw=null==xw||Mw((function(){var tA={};return xw[Rw].call(tA)!==tA}));Gw&&(xw={}),Ow(xw[Rw])||Dw(xw,Rw,(function(){return this}));var jw={IteratorPrototype:xw,BUGGY_SAFARI_ITERATORS:Vw},Kw=jw.IteratorPrototype,qw=yp,zw=createPropertyDescriptor$4,Xw=setToStringTag$3,Ww=Rf,returnThis$1=function(){return this},Yw=_export,Jw=Mo,Zw=isCallable$m,createIteratorConstructor=function(tA,eA,AA,rA){var nA=eA+\" Iterator\";return tA.prototype=qw(Kw,{next:zw(+!rA,AA)}),Xw(tA,nA,!1),Ww[nA]=returnThis$1,tA},$w=kw,ty=zu,ey=setToStringTag$3,Ay=jl,ry=defineBuiltIn$7,ny=Rf,iy=Jl.PROPER,sy=Jl.CONFIGURABLE,oy=jw.IteratorPrototype,ay=jw.BUGGY_SAFARI_ITERATORS,ly=wellKnownSymbol$i(\"iterator\"),returnThis=function(){return this},cy=toIndexedObject$5,addToUnscopables=function(tA){Sw[Cw][tA]=!0},uy=Rf,hy=Pc,dy=Ul.f,defineIterator=function(tA,eA,AA,rA,nA,iA,sA){createIteratorConstructor(AA,eA,rA);var oA,aA,lA,getIterationMethod=function(tA){if(tA===nA&&fA)return fA;if(!ay&&tA in hA)return hA[tA];switch(tA){case\"keys\":return function keys(){return new AA(this,tA)};case\"values\":return function values(){return new AA(this,tA)};case\"entries\":return function entries(){return new AA(this,tA)}}return function(){return new AA(this)}},cA=eA+\" Iterator\",uA=!1,hA=tA.prototype,dA=hA[ly]||hA[\"@@iterator\"]||nA&&hA[nA],fA=!ay&&dA||getIterationMethod(nA),gA=\"Array\"==eA&&hA.entries||dA;if(gA&&(oA=$w(gA.call(new tA)))!==Object.prototype&&oA.next&&($w(oA)!==oy&&(ty?ty(oA,oy):Zw(oA[ly])||ry(oA,ly,returnThis)),ey(oA,cA,!0)),iy&&\"values\"==nA&&dA&&\"values\"!==dA.name&&(sy?Ay(hA,\"name\",\"values\"):(uA=!0,fA=function values(){return Jw(dA,this)})),nA)if(aA={values:getIterationMethod(\"values\"),keys:iA?fA:getIterationMethod(\"keys\"),entries:getIterationMethod(\"entries\")},sA)for(lA in aA)(ay||uA||!(lA in hA))&&ry(hA,lA,aA[lA]);else Yw({target:eA,proto:!0,forced:ay||uA},aA);return hA[ly]!==fA&&ry(hA,ly,fA,{name:nA}),ny[eA]=fA,aA},fy=Io,gy=hy.set,py=hy.getterFor(\"Array Iterator\"),my=defineIterator(Array,\"Array\",(function(tA,eA){gy(this,{type:\"Array Iterator\",target:cy(tA),index:0,kind:eA})}),(function(){var tA=py(this),eA=tA.target,AA=tA.kind,rA=tA.index++;return!eA||rA>=eA.length?(tA.target=void 0,{value:void 0,done:!0}):\"keys\"==AA?{value:rA,done:!1}:\"values\"==AA?{value:eA[rA],done:!1}:{value:[rA,eA[rA]],done:!1}}),\"values\"),wy=uy.Arguments=uy.Array;if(addToUnscopables(\"keys\"),addToUnscopables(\"values\"),addToUnscopables(\"entries\"),fy&&\"values\"!==wy.name)try{dy(wy,\"name\",{value:\"values\"})}catch(tA){}var yy=documentCreateElement$2(\"span\").classList,By=yy&&yy.constructor&&yy.constructor.prototype,by=By===Object.prototype?void 0:By,vy=_o,Cy={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Sy=by,xy=my,Fy=jl,Ey=wellKnownSymbol$i,Qy=Ey(\"iterator\"),Uy=Ey(\"toStringTag\"),Py=xy.values,handlePrototype=function(tA,eA){if(tA){if(tA[Qy]!==Py)try{Fy(tA,Qy,Py)}catch(eA){tA[Qy]=Py}if(tA[Uy]||Fy(tA,Uy,eA),Cy[eA])for(var AA in xy)if(tA[AA]!==xy[AA])try{Fy(tA,AA,xy[AA])}catch(eA){tA[AA]=xy[AA]}}};for(var _y in Cy)handlePrototype(vy[_y]&&vy[_y].prototype,_y);function _defineProperty(tA,eA,AA){return eA in tA?Object.defineProperty(tA,eA,{value:AA,enumerable:!0,configurable:!0,writable:!0}):tA[eA]=AA,tA}handlePrototype(Sy,\"DOMTokenList\");var Ly=aCallable$8,Iy=toObject$4,Ny=ra,Ty=lengthOfArrayLike$4,ky=TypeError,createMethod$1=function(tA){return function(eA,AA,rA,nA){Ly(AA);var iA=Iy(eA),sA=Ny(iA),oA=Ty(iA),aA=tA?oA-1:0,lA=tA?-1:1;if(rA<2)for(;;){if(aA in sA){nA=sA[aA],aA+=lA;break}if(aA+=lA,tA?aA<0:oA<=aA)throw ky(\"Reduce of empty array with no initial value\")}for(;tA?aA>=0:oA>aA;aA+=lA)aA in sA&&(nA=AA(nA,sA[aA],aA,iA));return nA}},My={left:createMethod$1(!1),right:createMethod$1(!0)},Oy=fails$l,arrayMethodIsStrict$2=function(tA,eA){var AA=[][tA];return!!AA&&Oy((function(){AA.call(null,eA||function(){return 1},1)}))},Hy=My.left,Dy=wa,Ry=Ru;_export({target:\"Array\",proto:!0,forced:!arrayMethodIsStrict$2(\"reduce\")||!Ry&&Dy>79&&Dy<83},{reduce:function reduce(tA){var eA=arguments.length;return Hy(this,tA,eA,eA>1?arguments[1]:void 0)}});var Vy=_export,Gy=Wo,jy=Lo.f,Ky=toLength$6,qy=toString$9,zy=notARegexp,Xy=requireObjectCoercible$a,Wy=correctIsRegexpLogic,Yy=Gy(\"\".endsWith),Jy=Gy(\"\".slice),Zy=Math.min,$y=Wy(\"endsWith\"),tB=!$y&&!!function(){var tA=jy(String.prototype,\"endsWith\");return tA&&!tA.writable}();Vy({target:\"String\",proto:!0,forced:!tB&&!$y},{endsWith:function endsWith(tA){var eA=qy(Xy(this));zy(tA);var AA=arguments.length>1?arguments[1]:void 0,rA=eA.length,nA=void 0===AA?rA:Zy(Ky(AA),rA),iA=qy(tA);return Yy?Yy(eA,iA,nA):Jy(eA,nA-iA.length,nA)===iA}});var eB=toPropertyKey$3,AB=Ul,rB=createPropertyDescriptor$4,nB=toAbsoluteIndex$2,iB=lengthOfArrayLike$4,createProperty=function(tA,eA,AA){var rA=eB(eA);rA in tA?AB.f(tA,rA,rB(0,AA)):tA[rA]=AA},sB=Array,oB=Math.max,aB=Mh,lB=Mo,cB=Wo,uB=fixRegexpWellKnownSymbolLogic,hB=isRegexp,dB=anObject$g,fB=requireObjectCoercible$a,gB=speciesConstructor$2,pB=advanceStringIndex$3,mB=toLength$6,wB=toString$9,yB=getMethod$6,arraySlice=function(tA,eA,AA){for(var rA=iB(tA),nA=nB(eA,rA),iA=nB(void 0===AA?rA:AA,rA),sA=sB(oB(iA-nA,0)),oA=0;nA<iA;nA++,oA++)createProperty(sA,oA,tA[nA]);return sA.length=oA,sA},BB=regexpExecAbstract,bB=qp,vB=fails$l,CB=Zg.UNSUPPORTED_Y,SB=Math.min,xB=[].push,FB=cB(/./.exec),EB=cB(xB),QB=cB(\"\".slice),UB=!vB((function(){var tA=/(?:)/,eA=tA.exec;tA.exec=function(){return eA.apply(this,arguments)};var AA=\"ab\".split(tA);return 2!==AA.length||\"a\"!==AA[0]||\"b\"!==AA[1]}));uB(\"split\",(function(tA,eA,AA){var rA;return rA=\"c\"==\"abbc\".split(/(b)*/)[1]||4!=\"test\".split(/(?:)/,-1).length||2!=\"ab\".split(/(?:ab)*/).length||4!=\".\".split(/(.?)(.?)/).length||\".\".split(/()()/).length>1||\"\".split(/.?/).length?function(tA,AA){var rA=wB(fB(this)),nA=void 0===AA?4294967295:AA>>>0;if(0===nA)return[];if(void 0===tA)return[rA];if(!hB(tA))return lB(eA,rA,tA,nA);for(var iA,sA,oA,aA=[],lA=(tA.ignoreCase?\"i\":\"\")+(tA.multiline?\"m\":\"\")+(tA.unicode?\"u\":\"\")+(tA.sticky?\"y\":\"\"),cA=0,uA=new RegExp(tA.source,lA+\"g\");(iA=lB(bB,uA,rA))&&!((sA=uA.lastIndex)>cA&&(EB(aA,QB(rA,cA,iA.index)),iA.length>1&&iA.index<rA.length&&aB(xB,aA,arraySlice(iA,1)),oA=iA[0].length,cA=sA,aA.length>=nA));)uA.lastIndex===iA.index&&uA.lastIndex++;return cA===rA.length?!oA&&FB(uA,\"\")||EB(aA,\"\"):EB(aA,QB(rA,cA)),aA.length>nA?arraySlice(aA,0,nA):aA}:\"0\".split(void 0,0).length?function(tA,AA){return void 0===tA&&0===AA?[]:lB(eA,this,tA,AA)}:eA,[function split(eA,AA){var nA=fB(this),iA=null==eA?void 0:yB(eA,tA);return iA?lB(iA,eA,nA,AA):lB(rA,wB(nA),eA,AA)},function(tA,nA){var iA=dB(this),sA=wB(tA),oA=AA(rA,iA,sA,nA,rA!==eA);if(oA.done)return oA.value;var aA=gB(iA,RegExp),lA=iA.unicode,cA=(iA.ignoreCase?\"i\":\"\")+(iA.multiline?\"m\":\"\")+(iA.unicode?\"u\":\"\")+(CB?\"g\":\"y\"),uA=new aA(CB?\"^(?:\"+iA.source+\")\":iA,cA),hA=void 0===nA?4294967295:nA>>>0;if(0===hA)return[];if(0===sA.length)return null===BB(uA,sA)?[sA]:[];for(var dA=0,fA=0,gA=[];fA<sA.length;){uA.lastIndex=CB?0:fA;var pA,mA=BB(uA,CB?QB(sA,fA):sA);if(null===mA||(pA=SB(mB(uA.lastIndex+(CB?fA:0)),sA.length))===dA)fA=pB(sA,fA,lA);else{if(EB(gA,QB(sA,dA,fA)),gA.length===hA)return gA;for(var wA=1;wA<=mA.length-1;wA++)if(EB(gA,mA[wA]),gA.length===hA)return gA;fA=dA=pA}}return EB(gA,QB(sA,dA)),gA}]}),!UB,CB);var PB={exports:{}},_B={exports:{}};(function(){var tA,eA,AA,rA,nA,iA;\"undefined\"!=typeof performance&&null!==performance&&performance.now?_B.exports=function(){return performance.now()}:\"undefined\"!=typeof process&&null!==process&&process.hrtime?(_B.exports=function(){return(tA()-nA)/1e6},eA=process.hrtime,rA=(tA=function(){var tA;return 1e9*(tA=eA())[0]+tA[1]})(),iA=1e9*process.uptime(),nA=rA-iA):Date.now?(_B.exports=function(){return Date.now()-AA},AA=Date.now()):(_B.exports=function(){return(new Date).getTime()-AA},AA=(new Date).getTime())}).call(ji);for(var LB=_B.exports,IB=\"undefined\"==typeof window?ji:window,NB=[\"moz\",\"webkit\"],TB=\"AnimationFrame\",kB=IB[\"request\"+TB],MB=IB[\"cancel\"+TB]||IB[\"cancelRequest\"+TB],OB=0;!kB&&OB<NB.length;OB++)kB=IB[NB[OB]+\"Request\"+TB],MB=IB[NB[OB]+\"Cancel\"+TB]||IB[NB[OB]+\"CancelRequest\"+TB];if(!kB||!MB){var HB=0,DB=0,RB=[];kB=function(tA){if(0===RB.length){var eA=LB(),AA=Math.max(0,16.666666666666668-(eA-HB));HB=AA+eA,setTimeout((function(){var tA=RB.slice(0);RB.length=0;for(var eA=0;eA<tA.length;eA++)if(!tA[eA].cancelled)try{tA[eA].callback(HB)}catch(tA){setTimeout((function(){throw tA}),0)}}),Math.round(AA))}return RB.push({handle:++DB,callback:tA,cancelled:!1}),DB},MB=function(tA){for(var eA=0;eA<RB.length;eA++)RB[eA].handle===tA&&(RB[eA].cancelled=!0)}}PB.exports=function(tA){return kB.call(IB,tA)},PB.exports.cancel=function(){MB.apply(IB,arguments)},PB.exports.polyfill=function(tA){tA||(tA=IB),tA.requestAnimationFrame=kB,tA.cancelAnimationFrame=MB};var VB=PB.exports,GB=requireObjectCoercible$a,jB=toString$9,KB=Wo(\"\".replace),qB=\"[\\t\\n\\v\\f\\r    \\u2028\\u2029\\ufeff]\",zB=RegExp(\"^\"+qB+qB+\"*\"),XB=RegExp(qB+qB+\"*$\"),createMethod=function(tA){return function(eA){var AA=jB(GB(eA));return 1&tA&&(AA=KB(AA,zB,\"\")),2&tA&&(AA=KB(AA,XB,\"\")),AA}},WB={start:createMethod(1),end:createMethod(2),trim:createMethod(3)},YB=Jl.PROPER,JB=fails$l,ZB=\"\\t\\n\\v\\f\\r    \\u2028\\u2029\\ufeff\",$B=WB.trim;_export({target:\"String\",proto:!0,forced:function(tA){return JB((function(){return!!ZB[tA]()||\"…\"!==\"…\"[tA]()||YB&&ZB[tA].name!==tA}))}(\"trim\")},{trim:function trim(){return $B(this)}});var rgbcolor=function(tA){this.ok=!1,this.alpha=1,\"#\"==tA.charAt(0)&&(tA=tA.substr(1,6)),tA=(tA=tA.replace(/ /g,\"\")).toLowerCase();var eA={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"00ffff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000000\",blanchedalmond:\"ffebcd\",blue:\"0000ff\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"00ffff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dodgerblue:\"1e90ff\",feldspar:\"d19275\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"ff00ff\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgrey:\"d3d3d3\",lightgreen:\"90ee90\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslateblue:\"8470ff\",lightslategray:\"778899\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"00ff00\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"ff00ff\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370d8\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"d87093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"ff0000\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",violetred:\"d02090\",wheat:\"f5deb3\",white:\"ffffff\",whitesmoke:\"f5f5f5\",yellow:\"ffff00\",yellowgreen:\"9acd32\"};tA=eA[tA]||tA;for(var AA=[{re:/^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,example:[\"rgba(123, 234, 45, 0.8)\",\"rgba(255,234,245,1.0)\"],process:function(tA){return[parseInt(tA[1]),parseInt(tA[2]),parseInt(tA[3]),parseFloat(tA[4])]}},{re:/^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,example:[\"rgb(123, 234, 45)\",\"rgb(255,234,245)\"],process:function(tA){return[parseInt(tA[1]),parseInt(tA[2]),parseInt(tA[3])]}},{re:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,example:[\"#00ff00\",\"336699\"],process:function(tA){return[parseInt(tA[1],16),parseInt(tA[2],16),parseInt(tA[3],16)]}},{re:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,example:[\"#fb0\",\"f0f\"],process:function(tA){return[parseInt(tA[1]+tA[1],16),parseInt(tA[2]+tA[2],16),parseInt(tA[3]+tA[3],16)]}}],rA=0;rA<AA.length;rA++){var nA=AA[rA].re,iA=AA[rA].process,sA=nA.exec(tA);if(sA){var oA=iA(sA);this.r=oA[0],this.g=oA[1],this.b=oA[2],oA.length>3&&(this.alpha=oA[3]),this.ok=!0}}this.r=this.r<0||isNaN(this.r)?0:this.r>255?255:this.r,this.g=this.g<0||isNaN(this.g)?0:this.g>255?255:this.g,this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b,this.alpha=this.alpha<0?0:this.alpha>1||isNaN(this.alpha)?1:this.alpha,this.toRGB=function(){return\"rgb(\"+this.r+\", \"+this.g+\", \"+this.b+\")\"},this.toRGBA=function(){return\"rgba(\"+this.r+\", \"+this.g+\", \"+this.b+\", \"+this.alpha+\")\"},this.toHex=function(){var tA=this.r.toString(16),eA=this.g.toString(16),AA=this.b.toString(16);return 1==tA.length&&(tA=\"0\"+tA),1==eA.length&&(eA=\"0\"+eA),1==AA.length&&(AA=\"0\"+AA),\"#\"+tA+eA+AA},this.getHelpXML=function(){for(var tA=new Array,rA=0;rA<AA.length;rA++)for(var nA=AA[rA].example,iA=0;iA<nA.length;iA++)tA[tA.length]=nA[iA];for(var sA in eA)tA[tA.length]=sA;var oA=document.createElement(\"ul\");oA.setAttribute(\"id\",\"rgbcolor-examples\");for(rA=0;rA<tA.length;rA++)try{var aA=document.createElement(\"li\"),lA=new RGBColor(tA[rA]),cA=document.createElement(\"div\");cA.style.cssText=\"margin: 3px; border: 1px solid black; background:\"+lA.toHex()+\"; color:\"+lA.toHex(),cA.appendChild(document.createTextNode(\"test\"));var uA=document.createTextNode(\" \"+tA[rA]+\" -> \"+lA.toRGB()+\" -> \"+lA.toHex());aA.appendChild(cA),aA.appendChild(uA),oA.appendChild(aA)}catch(tA){}return oA}},tb=_export,eb=ou.indexOf,Ab=arrayMethodIsStrict$2,rb=Wo([].indexOf),nb=!!rb&&1/rb([1],1,-0)<0,ib=Ab(\"indexOf\");tb({target:\"Array\",proto:!0,forced:nb||!ib},{indexOf:function indexOf(tA){var eA=arguments.length>1?arguments[1]:void 0;return nb?rb(this,tA,eA)||0:eb(this,tA,eA)}});var sb=_export,ob=notARegexp,ab=requireObjectCoercible$a,lb=toString$9,cb=correctIsRegexpLogic,ub=Wo(\"\".indexOf);sb({target:\"String\",proto:!0,forced:!cb(\"includes\")},{includes:function includes(tA){return!!~ub(lb(ab(this)),lb(ob(tA)),arguments.length>1?arguments[1]:void 0)}});var hb=classofRaw$1,db=_export,fb=Array.isArray||function isArray(tA){return\"Array\"==hb(tA)},gb=Wo([].reverse),pb=[1,2];db({target:\"Array\",proto:!0,forced:String(pb)===String(pb.reverse())},{reverse:function reverse(){return fb(this)&&(this.length=this.length),gb(this)}});\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar t=function(tA,eA){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(tA,eA){tA.__proto__=eA}||function(tA,eA){for(var AA in eA)Object.prototype.hasOwnProperty.call(eA,AA)&&(tA[AA]=eA[AA])})(tA,eA)};function r(tA,eA){if(\"function\"!=typeof eA&&null!==eA)throw new TypeError(\"Class extends value \"+String(eA)+\" is not a constructor or null\");function i(){this.constructor=tA}t(tA,eA),tA.prototype=null===eA?Object.create(eA):(i.prototype=eA.prototype,new i)}function i(tA,eA){var AA=tA[0],rA=tA[1];return[AA*Math.cos(eA)-rA*Math.sin(eA),AA*Math.sin(eA)+rA*Math.cos(eA)]}function a(){for(var tA=[],eA=0;eA<arguments.length;eA++)tA[eA]=arguments[eA];for(var AA=0;AA<tA.length;AA++)if(\"number\"!=typeof tA[AA])throw new Error(\"assertNumbers arguments[\"+AA+\"] is not a number. \"+typeof tA[AA]+\" == typeof \"+tA[AA]);return!0}var mb=Math.PI;function o(tA,eA,AA){tA.lArcFlag=0===tA.lArcFlag?0:1,tA.sweepFlag=0===tA.sweepFlag?0:1;var rA=tA.rX,nA=tA.rY,iA=tA.x,sA=tA.y;rA=Math.abs(tA.rX),nA=Math.abs(tA.rY);var oA=i([(eA-iA)/2,(AA-sA)/2],-tA.xRot/180*mb),aA=oA[0],lA=oA[1],cA=Math.pow(aA,2)/Math.pow(rA,2)+Math.pow(lA,2)/Math.pow(nA,2);1<cA&&(rA*=Math.sqrt(cA),nA*=Math.sqrt(cA)),tA.rX=rA,tA.rY=nA;var uA=Math.pow(rA,2)*Math.pow(lA,2)+Math.pow(nA,2)*Math.pow(aA,2),hA=(tA.lArcFlag!==tA.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(rA,2)*Math.pow(nA,2)-uA)/uA)),dA=rA*lA/nA*hA,fA=-nA*aA/rA*hA,gA=i([dA,fA],tA.xRot/180*mb);tA.cX=gA[0]+(eA+iA)/2,tA.cY=gA[1]+(AA+sA)/2,tA.phi1=Math.atan2((lA-fA)/nA,(aA-dA)/rA),tA.phi2=Math.atan2((-lA-fA)/nA,(-aA-dA)/rA),0===tA.sweepFlag&&tA.phi2>tA.phi1&&(tA.phi2-=2*mb),1===tA.sweepFlag&&tA.phi2<tA.phi1&&(tA.phi2+=2*mb),tA.phi1*=180/mb,tA.phi2*=180/mb}function s(tA,eA,AA){a(tA,eA,AA);var rA=tA*tA+eA*eA-AA*AA;if(0>rA)return[];if(0===rA)return[[tA*AA/(tA*tA+eA*eA),eA*AA/(tA*tA+eA*eA)]];var nA=Math.sqrt(rA);return[[(tA*AA+eA*nA)/(tA*tA+eA*eA),(eA*AA-tA*nA)/(tA*tA+eA*eA)],[(tA*AA-eA*nA)/(tA*tA+eA*eA),(eA*AA+tA*nA)/(tA*tA+eA*eA)]]}var wb,yb=Math.PI/180;function c$1(tA,eA,AA){return(1-AA)*tA+AA*eA}function y(tA,eA,AA,rA){return tA+Math.cos(rA/180*mb)*eA+Math.sin(rA/180*mb)*AA}function p(tA,eA,AA,rA){var nA=1e-6,iA=eA-tA,sA=AA-eA,oA=3*iA+3*(rA-AA)-6*sA,aA=6*(sA-iA),lA=3*iA;return Math.abs(oA)<nA?[-lA/aA]:function(tA,eA,AA){void 0===AA&&(AA=1e-6);var rA=tA*tA/4-eA;if(rA<-AA)return[];if(rA<=AA)return[-tA/2];var nA=Math.sqrt(rA);return[-tA/2-nA,-tA/2+nA]}(aA/oA,lA/oA,nA)}function m$1(tA,eA,AA,rA,nA){var iA=1-nA;return tA*(iA*iA*iA)+eA*(3*iA*iA*nA)+AA*(3*iA*nA*nA)+rA*(nA*nA*nA)}!function(tA){function r(){return u((function(tA,eA,AA){return tA.relative&&(void 0!==tA.x1&&(tA.x1+=eA),void 0!==tA.y1&&(tA.y1+=AA),void 0!==tA.x2&&(tA.x2+=eA),void 0!==tA.y2&&(tA.y2+=AA),void 0!==tA.x&&(tA.x+=eA),void 0!==tA.y&&(tA.y+=AA),tA.relative=!1),tA}))}function e(){var tA=NaN,eA=NaN,AA=NaN,rA=NaN;return u((function(nA,iA,sA){return nA.type&Cb.SMOOTH_CURVE_TO&&(nA.type=Cb.CURVE_TO,tA=isNaN(tA)?iA:tA,eA=isNaN(eA)?sA:eA,nA.x1=nA.relative?iA-tA:2*iA-tA,nA.y1=nA.relative?sA-eA:2*sA-eA),nA.type&Cb.CURVE_TO?(tA=nA.relative?iA+nA.x2:nA.x2,eA=nA.relative?sA+nA.y2:nA.y2):(tA=NaN,eA=NaN),nA.type&Cb.SMOOTH_QUAD_TO&&(nA.type=Cb.QUAD_TO,AA=isNaN(AA)?iA:AA,rA=isNaN(rA)?sA:rA,nA.x1=nA.relative?iA-AA:2*iA-AA,nA.y1=nA.relative?sA-rA:2*sA-rA),nA.type&Cb.QUAD_TO?(AA=nA.relative?iA+nA.x1:nA.x1,rA=nA.relative?sA+nA.y1:nA.y1):(AA=NaN,rA=NaN),nA}))}function n(){var tA=NaN,eA=NaN;return u((function(AA,rA,nA){if(AA.type&Cb.SMOOTH_QUAD_TO&&(AA.type=Cb.QUAD_TO,tA=isNaN(tA)?rA:tA,eA=isNaN(eA)?nA:eA,AA.x1=AA.relative?rA-tA:2*rA-tA,AA.y1=AA.relative?nA-eA:2*nA-eA),AA.type&Cb.QUAD_TO){tA=AA.relative?rA+AA.x1:AA.x1,eA=AA.relative?nA+AA.y1:AA.y1;var iA=AA.x1,sA=AA.y1;AA.type=Cb.CURVE_TO,AA.x1=((AA.relative?0:rA)+2*iA)/3,AA.y1=((AA.relative?0:nA)+2*sA)/3,AA.x2=(AA.x+2*iA)/3,AA.y2=(AA.y+2*sA)/3}else tA=NaN,eA=NaN;return AA}))}function u(tA){var eA=0,AA=0,rA=NaN,nA=NaN;return function(iA){if(isNaN(rA)&&!(iA.type&Cb.MOVE_TO))throw new Error(\"path must start with moveto\");var sA=tA(iA,eA,AA,rA,nA);return iA.type&Cb.CLOSE_PATH&&(eA=rA,AA=nA),void 0!==iA.x&&(eA=iA.relative?eA+iA.x:iA.x),void 0!==iA.y&&(AA=iA.relative?AA+iA.y:iA.y),iA.type&Cb.MOVE_TO&&(rA=eA,nA=AA),sA}}function O(tA,eA,AA,rA,nA,iA){return a(tA,eA,AA,rA,nA,iA),u((function(sA,oA,aA,lA){var cA=sA.x1,uA=sA.x2,hA=sA.relative&&!isNaN(lA),dA=void 0!==sA.x?sA.x:hA?0:oA,fA=void 0!==sA.y?sA.y:hA?0:aA;function l(tA){return tA*tA}sA.type&Cb.HORIZ_LINE_TO&&0!==eA&&(sA.type=Cb.LINE_TO,sA.y=sA.relative?0:aA),sA.type&Cb.VERT_LINE_TO&&0!==AA&&(sA.type=Cb.LINE_TO,sA.x=sA.relative?0:oA),void 0!==sA.x&&(sA.x=sA.x*tA+fA*AA+(hA?0:nA)),void 0!==sA.y&&(sA.y=dA*eA+sA.y*rA+(hA?0:iA)),void 0!==sA.x1&&(sA.x1=sA.x1*tA+sA.y1*AA+(hA?0:nA)),void 0!==sA.y1&&(sA.y1=cA*eA+sA.y1*rA+(hA?0:iA)),void 0!==sA.x2&&(sA.x2=sA.x2*tA+sA.y2*AA+(hA?0:nA)),void 0!==sA.y2&&(sA.y2=uA*eA+sA.y2*rA+(hA?0:iA));var gA=tA*rA-eA*AA;if(void 0!==sA.xRot&&(1!==tA||0!==eA||0!==AA||1!==rA))if(0===gA)delete sA.rX,delete sA.rY,delete sA.xRot,delete sA.lArcFlag,delete sA.sweepFlag,sA.type=Cb.LINE_TO;else{var pA=sA.xRot*Math.PI/180,mA=Math.sin(pA),wA=Math.cos(pA),yA=1/l(sA.rX),BA=1/l(sA.rY),bA=l(wA)*yA+l(mA)*BA,vA=2*mA*wA*(yA-BA),CA=l(mA)*yA+l(wA)*BA,SA=bA*rA*rA-vA*eA*rA+CA*eA*eA,xA=vA*(tA*rA+eA*AA)-2*(bA*AA*rA+CA*tA*eA),FA=bA*AA*AA-vA*tA*AA+CA*tA*tA,EA=(Math.atan2(xA,SA-FA)+Math.PI)%Math.PI/2,QA=Math.sin(EA),UA=Math.cos(EA);sA.rX=Math.abs(gA)/Math.sqrt(SA*l(UA)+xA*QA*UA+FA*l(QA)),sA.rY=Math.abs(gA)/Math.sqrt(SA*l(QA)-xA*QA*UA+FA*l(UA)),sA.xRot=180*EA/Math.PI}return void 0!==sA.sweepFlag&&0>gA&&(sA.sweepFlag=+!sA.sweepFlag),sA}))}tA.ROUND=function(tA){function r(eA){return Math.round(eA*tA)/tA}return void 0===tA&&(tA=1e13),a(tA),function(tA){return void 0!==tA.x1&&(tA.x1=r(tA.x1)),void 0!==tA.y1&&(tA.y1=r(tA.y1)),void 0!==tA.x2&&(tA.x2=r(tA.x2)),void 0!==tA.y2&&(tA.y2=r(tA.y2)),void 0!==tA.x&&(tA.x=r(tA.x)),void 0!==tA.y&&(tA.y=r(tA.y)),void 0!==tA.rX&&(tA.rX=r(tA.rX)),void 0!==tA.rY&&(tA.rY=r(tA.rY)),tA}},tA.TO_ABS=r,tA.TO_REL=function(){return u((function(tA,eA,AA){return tA.relative||(void 0!==tA.x1&&(tA.x1-=eA),void 0!==tA.y1&&(tA.y1-=AA),void 0!==tA.x2&&(tA.x2-=eA),void 0!==tA.y2&&(tA.y2-=AA),void 0!==tA.x&&(tA.x-=eA),void 0!==tA.y&&(tA.y-=AA),tA.relative=!0),tA}))},tA.NORMALIZE_HVZ=function(tA,eA,AA){return void 0===tA&&(tA=!0),void 0===eA&&(eA=!0),void 0===AA&&(AA=!0),u((function(rA,nA,iA,sA,oA){if(isNaN(sA)&&!(rA.type&Cb.MOVE_TO))throw new Error(\"path must start with moveto\");return eA&&rA.type&Cb.HORIZ_LINE_TO&&(rA.type=Cb.LINE_TO,rA.y=rA.relative?0:iA),AA&&rA.type&Cb.VERT_LINE_TO&&(rA.type=Cb.LINE_TO,rA.x=rA.relative?0:nA),tA&&rA.type&Cb.CLOSE_PATH&&(rA.type=Cb.LINE_TO,rA.x=rA.relative?sA-nA:sA,rA.y=rA.relative?oA-iA:oA),rA.type&Cb.ARC&&(0===rA.rX||0===rA.rY)&&(rA.type=Cb.LINE_TO,delete rA.rX,delete rA.rY,delete rA.xRot,delete rA.lArcFlag,delete rA.sweepFlag),rA}))},tA.NORMALIZE_ST=e,tA.QT_TO_C=n,tA.INFO=u,tA.SANITIZE=function(tA){void 0===tA&&(tA=0),a(tA);var eA=NaN,AA=NaN,rA=NaN,nA=NaN;return u((function(iA,sA,oA,aA,lA){var cA=Math.abs,uA=!1,hA=0,dA=0;if(iA.type&Cb.SMOOTH_CURVE_TO&&(hA=isNaN(eA)?0:sA-eA,dA=isNaN(AA)?0:oA-AA),iA.type&(Cb.CURVE_TO|Cb.SMOOTH_CURVE_TO)?(eA=iA.relative?sA+iA.x2:iA.x2,AA=iA.relative?oA+iA.y2:iA.y2):(eA=NaN,AA=NaN),iA.type&Cb.SMOOTH_QUAD_TO?(rA=isNaN(rA)?sA:2*sA-rA,nA=isNaN(nA)?oA:2*oA-nA):iA.type&Cb.QUAD_TO?(rA=iA.relative?sA+iA.x1:iA.x1,nA=iA.relative?oA+iA.y1:iA.y2):(rA=NaN,nA=NaN),iA.type&Cb.LINE_COMMANDS||iA.type&Cb.ARC&&(0===iA.rX||0===iA.rY||!iA.lArcFlag)||iA.type&Cb.CURVE_TO||iA.type&Cb.SMOOTH_CURVE_TO||iA.type&Cb.QUAD_TO||iA.type&Cb.SMOOTH_QUAD_TO){var fA=void 0===iA.x?0:iA.relative?iA.x:iA.x-sA,gA=void 0===iA.y?0:iA.relative?iA.y:iA.y-oA;hA=isNaN(rA)?void 0===iA.x1?hA:iA.relative?iA.x:iA.x1-sA:rA-sA,dA=isNaN(nA)?void 0===iA.y1?dA:iA.relative?iA.y:iA.y1-oA:nA-oA;var pA=void 0===iA.x2?0:iA.relative?iA.x:iA.x2-sA,mA=void 0===iA.y2?0:iA.relative?iA.y:iA.y2-oA;cA(fA)<=tA&&cA(gA)<=tA&&cA(hA)<=tA&&cA(dA)<=tA&&cA(pA)<=tA&&cA(mA)<=tA&&(uA=!0)}return iA.type&Cb.CLOSE_PATH&&cA(sA-aA)<=tA&&cA(oA-lA)<=tA&&(uA=!0),uA?[]:iA}))},tA.MATRIX=O,tA.ROTATE=function(tA,eA,AA){void 0===eA&&(eA=0),void 0===AA&&(AA=0),a(tA,eA,AA);var rA=Math.sin(tA),nA=Math.cos(tA);return O(nA,rA,-rA,nA,eA-eA*nA+AA*rA,AA-eA*rA-AA*nA)},tA.TRANSLATE=function(tA,eA){return void 0===eA&&(eA=0),a(tA,eA),O(1,0,0,1,tA,eA)},tA.SCALE=function(tA,eA){return void 0===eA&&(eA=tA),a(tA,eA),O(tA,0,0,eA,0,0)},tA.SKEW_X=function(tA){return a(tA),O(1,0,Math.atan(tA),1,0,0)},tA.SKEW_Y=function(tA){return a(tA),O(1,Math.atan(tA),0,1,0,0)},tA.X_AXIS_SYMMETRY=function(tA){return void 0===tA&&(tA=0),a(tA),O(-1,0,0,1,tA,0)},tA.Y_AXIS_SYMMETRY=function(tA){return void 0===tA&&(tA=0),a(tA),O(1,0,0,-1,0,tA)},tA.A_TO_C=function(){return u((function(tA,eA,AA){return Cb.ARC===tA.type?function(tA,eA,AA){var rA,nA,iA,sA;tA.cX||o(tA,eA,AA);for(var oA=Math.min(tA.phi1,tA.phi2),aA=Math.max(tA.phi1,tA.phi2)-oA,lA=Math.ceil(aA/90),cA=new Array(lA),uA=eA,hA=AA,dA=0;dA<lA;dA++){var fA=c$1(tA.phi1,tA.phi2,dA/lA),gA=c$1(tA.phi1,tA.phi2,(dA+1)/lA),pA=gA-fA,mA=4/3*Math.tan(pA*yb/4),wA=[Math.cos(fA*yb)-mA*Math.sin(fA*yb),Math.sin(fA*yb)+mA*Math.cos(fA*yb)],yA=wA[0],BA=wA[1],bA=[Math.cos(gA*yb),Math.sin(gA*yb)],vA=bA[0],CA=bA[1],SA=[vA+mA*Math.sin(gA*yb),CA-mA*Math.cos(gA*yb)],xA=SA[0],FA=SA[1];cA[dA]={relative:tA.relative,type:Cb.CURVE_TO};var H=function(eA,AA){var rA=i([eA*tA.rX,AA*tA.rY],tA.xRot),nA=rA[0],iA=rA[1];return[tA.cX+nA,tA.cY+iA]};rA=H(yA,BA),cA[dA].x1=rA[0],cA[dA].y1=rA[1],nA=H(xA,FA),cA[dA].x2=nA[0],cA[dA].y2=nA[1],iA=H(vA,CA),cA[dA].x=iA[0],cA[dA].y=iA[1],tA.relative&&(cA[dA].x1-=uA,cA[dA].y1-=hA,cA[dA].x2-=uA,cA[dA].y2-=hA,cA[dA].x-=uA,cA[dA].y-=hA),uA=(sA=[cA[dA].x,cA[dA].y])[0],hA=sA[1]}return cA}(tA,tA.relative?0:eA,tA.relative?0:AA):tA}))},tA.ANNOTATE_ARCS=function(){return u((function(tA,eA,AA){return tA.relative&&(eA=0,AA=0),Cb.ARC===tA.type&&o(tA,eA,AA),tA}))},tA.CLONE=function l(){return function(tA){var eA={};for(var AA in tA)eA[AA]=tA[AA];return eA}},tA.CALCULATE_BOUNDS=function(){var tA=r(),eA=n(),AA=e(),rA=u((function(nA,iA,sA){var oA=AA(eA(tA(function(tA){var eA={};for(var AA in tA)eA[AA]=tA[AA];return eA}(nA))));function O(tA){tA>rA.maxX&&(rA.maxX=tA),tA<rA.minX&&(rA.minX=tA)}function l(tA){tA>rA.maxY&&(rA.maxY=tA),tA<rA.minY&&(rA.minY=tA)}if(oA.type&Cb.DRAWING_COMMANDS&&(O(iA),l(sA)),oA.type&Cb.HORIZ_LINE_TO&&O(oA.x),oA.type&Cb.VERT_LINE_TO&&l(oA.y),oA.type&Cb.LINE_TO&&(O(oA.x),l(oA.y)),oA.type&Cb.CURVE_TO){O(oA.x),l(oA.y);for(var aA=0,lA=p(iA,oA.x1,oA.x2,oA.x);aA<lA.length;aA++)0<(SA=lA[aA])&&1>SA&&O(m$1(iA,oA.x1,oA.x2,oA.x,SA));for(var cA=0,uA=p(sA,oA.y1,oA.y2,oA.y);cA<uA.length;cA++)0<(SA=uA[cA])&&1>SA&&l(m$1(sA,oA.y1,oA.y2,oA.y,SA))}if(oA.type&Cb.ARC){O(oA.x),l(oA.y),o(oA,iA,sA);for(var hA=oA.xRot/180*Math.PI,dA=Math.cos(hA)*oA.rX,fA=Math.sin(hA)*oA.rX,gA=-Math.sin(hA)*oA.rY,pA=Math.cos(hA)*oA.rY,mA=oA.phi1<oA.phi2?[oA.phi1,oA.phi2]:-180>oA.phi2?[oA.phi2+360,oA.phi1+360]:[oA.phi2,oA.phi1],wA=mA[0],yA=mA[1],I=function(tA){var eA=tA[0],AA=tA[1],rA=180*Math.atan2(AA,eA)/Math.PI;return rA<wA?rA+360:rA},BA=0,bA=s(gA,-dA,0).map(I);BA<bA.length;BA++)(SA=bA[BA])>wA&&SA<yA&&O(y(oA.cX,dA,gA,SA));for(var vA=0,CA=s(pA,-fA,0).map(I);vA<CA.length;vA++){var SA;(SA=CA[vA])>wA&&SA<yA&&l(y(oA.cY,fA,pA,SA))}}return nA}));return rA.minX=1/0,rA.maxX=-1/0,rA.minY=1/0,rA.maxY=-1/0,rA}}(wb||(wb={}));var Bb,bb=function(){function t(){}return t.prototype.round=function(tA){return this.transform(wb.ROUND(tA))},t.prototype.toAbs=function(){return this.transform(wb.TO_ABS())},t.prototype.toRel=function(){return this.transform(wb.TO_REL())},t.prototype.normalizeHVZ=function(tA,eA,AA){return this.transform(wb.NORMALIZE_HVZ(tA,eA,AA))},t.prototype.normalizeST=function(){return this.transform(wb.NORMALIZE_ST())},t.prototype.qtToC=function(){return this.transform(wb.QT_TO_C())},t.prototype.aToC=function(){return this.transform(wb.A_TO_C())},t.prototype.sanitize=function(tA){return this.transform(wb.SANITIZE(tA))},t.prototype.translate=function(tA,eA){return this.transform(wb.TRANSLATE(tA,eA))},t.prototype.scale=function(tA,eA){return this.transform(wb.SCALE(tA,eA))},t.prototype.rotate=function(tA,eA,AA){return this.transform(wb.ROTATE(tA,eA,AA))},t.prototype.matrix=function(tA,eA,AA,rA,nA,iA){return this.transform(wb.MATRIX(tA,eA,AA,rA,nA,iA))},t.prototype.skewX=function(tA){return this.transform(wb.SKEW_X(tA))},t.prototype.skewY=function(tA){return this.transform(wb.SKEW_Y(tA))},t.prototype.xSymmetry=function(tA){return this.transform(wb.X_AXIS_SYMMETRY(tA))},t.prototype.ySymmetry=function(tA){return this.transform(wb.Y_AXIS_SYMMETRY(tA))},t.prototype.annotateArcs=function(){return this.transform(wb.ANNOTATE_ARCS())},t}(),T=function(tA){return\" \"===tA||\"\\t\"===tA||\"\\r\"===tA||\"\\n\"===tA},v=function(tA){return\"0\".charCodeAt(0)<=tA.charCodeAt(0)&&tA.charCodeAt(0)<=\"9\".charCodeAt(0)},vb=function(tA){function e(){var eA=tA.call(this)||this;return eA.curNumber=\"\",eA.curCommandType=-1,eA.curCommandRelative=!1,eA.canParseCommandOrComma=!0,eA.curNumberHasExp=!1,eA.curNumberHasExpDigits=!1,eA.curNumberHasDecimal=!1,eA.curArgs=[],eA}return r(e,tA),e.prototype.finish=function(tA){if(void 0===tA&&(tA=[]),this.parse(\" \",tA),0!==this.curArgs.length||!this.canParseCommandOrComma)throw new SyntaxError(\"Unterminated command at the path end.\");return tA},e.prototype.parse=function(tA,eA){var AA=this;void 0===eA&&(eA=[]);for(var i=function(tA){eA.push(tA),AA.curArgs.length=0,AA.canParseCommandOrComma=!0},rA=0;rA<tA.length;rA++){var nA=tA[rA],iA=!(this.curCommandType!==Cb.ARC||3!==this.curArgs.length&&4!==this.curArgs.length||1!==this.curNumber.length||\"0\"!==this.curNumber&&\"1\"!==this.curNumber),sA=v(nA)&&(\"0\"===this.curNumber&&\"0\"===nA||iA);if(!v(nA)||sA)if(\"e\"!==nA&&\"E\"!==nA)if(\"-\"!==nA&&\"+\"!==nA||!this.curNumberHasExp||this.curNumberHasExpDigits)if(\".\"!==nA||this.curNumberHasExp||this.curNumberHasDecimal||iA){if(this.curNumber&&-1!==this.curCommandType){var oA=Number(this.curNumber);if(isNaN(oA))throw new SyntaxError(\"Invalid number ending at \"+rA);if(this.curCommandType===Cb.ARC)if(0===this.curArgs.length||1===this.curArgs.length){if(0>oA)throw new SyntaxError('Expected positive number, got \"'+oA+'\" at index \"'+rA+'\"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&\"0\"!==this.curNumber&&\"1\"!==this.curNumber)throw new SyntaxError('Expected a flag, got \"'+this.curNumber+'\" at index \"'+rA+'\"');this.curArgs.push(oA),this.curArgs.length===Sb[this.curCommandType]&&(Cb.HORIZ_LINE_TO===this.curCommandType?i({type:Cb.HORIZ_LINE_TO,relative:this.curCommandRelative,x:oA}):Cb.VERT_LINE_TO===this.curCommandType?i({type:Cb.VERT_LINE_TO,relative:this.curCommandRelative,y:oA}):this.curCommandType===Cb.MOVE_TO||this.curCommandType===Cb.LINE_TO||this.curCommandType===Cb.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),Cb.MOVE_TO===this.curCommandType&&(this.curCommandType=Cb.LINE_TO)):this.curCommandType===Cb.CURVE_TO?i({type:Cb.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===Cb.SMOOTH_CURVE_TO?i({type:Cb.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===Cb.QUAD_TO?i({type:Cb.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===Cb.ARC&&i({type:Cb.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber=\"\",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(nA))if(\",\"===nA&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(\"+\"!==nA&&\"-\"!==nA&&\".\"!==nA)if(sA)this.curNumber=nA,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError(\"Unterminated command at index \"+rA+\".\");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character \"'+nA+'\" at index '+rA+\". Command cannot follow comma\");if(this.canParseCommandOrComma=!1,\"z\"!==nA&&\"Z\"!==nA)if(\"h\"===nA||\"H\"===nA)this.curCommandType=Cb.HORIZ_LINE_TO,this.curCommandRelative=\"h\"===nA;else if(\"v\"===nA||\"V\"===nA)this.curCommandType=Cb.VERT_LINE_TO,this.curCommandRelative=\"v\"===nA;else if(\"m\"===nA||\"M\"===nA)this.curCommandType=Cb.MOVE_TO,this.curCommandRelative=\"m\"===nA;else if(\"l\"===nA||\"L\"===nA)this.curCommandType=Cb.LINE_TO,this.curCommandRelative=\"l\"===nA;else if(\"c\"===nA||\"C\"===nA)this.curCommandType=Cb.CURVE_TO,this.curCommandRelative=\"c\"===nA;else if(\"s\"===nA||\"S\"===nA)this.curCommandType=Cb.SMOOTH_CURVE_TO,this.curCommandRelative=\"s\"===nA;else if(\"q\"===nA||\"Q\"===nA)this.curCommandType=Cb.QUAD_TO,this.curCommandRelative=\"q\"===nA;else if(\"t\"===nA||\"T\"===nA)this.curCommandType=Cb.SMOOTH_QUAD_TO,this.curCommandRelative=\"t\"===nA;else{if(\"a\"!==nA&&\"A\"!==nA)throw new SyntaxError('Unexpected character \"'+nA+'\" at index '+rA+\".\");this.curCommandType=Cb.ARC,this.curCommandRelative=\"a\"===nA}else eA.push({type:Cb.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=nA,this.curNumberHasDecimal=\".\"===nA}else this.curNumber+=nA,this.curNumberHasDecimal=!0;else this.curNumber+=nA;else this.curNumber+=nA,this.curNumberHasExp=!0;else this.curNumber+=nA,this.curNumberHasExpDigits=this.curNumberHasExp}return eA},e.prototype.transform=function(tA){return Object.create(this,{parse:{value:function(eA,AA){void 0===AA&&(AA=[]);for(var rA=0,nA=Object.getPrototypeOf(this).parse.call(this,eA);rA<nA.length;rA++){var iA=nA[rA],sA=tA(iA);Array.isArray(sA)?AA.push.apply(AA,sA):AA.push(sA)}return AA}}})},e}(bb),Cb=function(tA){function i(eA){var AA=tA.call(this)||this;return AA.commands=\"string\"==typeof eA?i.parse(eA):eA,AA}return r(i,tA),i.prototype.encode=function(){return i.encode(this.commands)},i.prototype.getBounds=function(){var tA=wb.CALCULATE_BOUNDS();return this.transform(tA),tA},i.prototype.transform=function(tA){for(var eA=[],AA=0,rA=this.commands;AA<rA.length;AA++){var nA=tA(rA[AA]);Array.isArray(nA)?eA.push.apply(eA,nA):eA.push(nA)}return this.commands=eA,this},i.encode=function(tA){return function e(tA){var eA=\"\";Array.isArray(tA)||(tA=[tA]);for(var AA=0;AA<tA.length;AA++){var rA=tA[AA];if(rA.type===Cb.CLOSE_PATH)eA+=\"z\";else if(rA.type===Cb.HORIZ_LINE_TO)eA+=(rA.relative?\"h\":\"H\")+rA.x;else if(rA.type===Cb.VERT_LINE_TO)eA+=(rA.relative?\"v\":\"V\")+rA.y;else if(rA.type===Cb.MOVE_TO)eA+=(rA.relative?\"m\":\"M\")+rA.x+\" \"+rA.y;else if(rA.type===Cb.LINE_TO)eA+=(rA.relative?\"l\":\"L\")+rA.x+\" \"+rA.y;else if(rA.type===Cb.CURVE_TO)eA+=(rA.relative?\"c\":\"C\")+rA.x1+\" \"+rA.y1+\" \"+rA.x2+\" \"+rA.y2+\" \"+rA.x+\" \"+rA.y;else if(rA.type===Cb.SMOOTH_CURVE_TO)eA+=(rA.relative?\"s\":\"S\")+rA.x2+\" \"+rA.y2+\" \"+rA.x+\" \"+rA.y;else if(rA.type===Cb.QUAD_TO)eA+=(rA.relative?\"q\":\"Q\")+rA.x1+\" \"+rA.y1+\" \"+rA.x+\" \"+rA.y;else if(rA.type===Cb.SMOOTH_QUAD_TO)eA+=(rA.relative?\"t\":\"T\")+rA.x+\" \"+rA.y;else{if(rA.type!==Cb.ARC)throw new Error('Unexpected command type \"'+rA.type+'\" at index '+AA+\".\");eA+=(rA.relative?\"a\":\"A\")+rA.rX+\" \"+rA.rY+\" \"+rA.xRot+\" \"+ +rA.lArcFlag+\" \"+ +rA.sweepFlag+\" \"+rA.x+\" \"+rA.y}}return eA}(tA)},i.parse=function(tA){var eA=new vb,AA=[];return eA.parse(tA,AA),eA.finish(AA),AA},i.CLOSE_PATH=1,i.MOVE_TO=2,i.HORIZ_LINE_TO=4,i.VERT_LINE_TO=8,i.LINE_TO=16,i.CURVE_TO=32,i.SMOOTH_CURVE_TO=64,i.QUAD_TO=128,i.SMOOTH_QUAD_TO=256,i.ARC=512,i.LINE_COMMANDS=i.LINE_TO|i.HORIZ_LINE_TO|i.VERT_LINE_TO,i.DRAWING_COMMANDS=i.HORIZ_LINE_TO|i.VERT_LINE_TO|i.LINE_TO|i.CURVE_TO|i.SMOOTH_CURVE_TO|i.QUAD_TO|i.SMOOTH_QUAD_TO|i.ARC,i}(bb),Sb=((Bb={})[Cb.MOVE_TO]=2,Bb[Cb.LINE_TO]=2,Bb[Cb.HORIZ_LINE_TO]=1,Bb[Cb.VERT_LINE_TO]=1,Bb[Cb.CLOSE_PATH]=0,Bb[Cb.QUAD_TO]=4,Bb[Cb.SMOOTH_QUAD_TO]=2,Bb[Cb.CURVE_TO]=6,Bb[Cb.SMOOTH_CURVE_TO]=4,Bb[Cb.ARC]=7,Bb),xb=Mo,Fb=za,Eb=ca,Qb=regexpFlags$1,Ub=RegExp.prototype,Pb=Jl.PROPER,_b=defineBuiltIn$7,Lb=anObject$g,Ib=toString$9,Nb=fails$l,getRegExpFlags=function(tA){var eA=tA.flags;return void 0!==eA||\"flags\"in Ub||Fb(tA,\"flags\")||!Eb(Ub,tA)?eA:xb(Qb,tA)},Tb=RegExp.prototype.toString,kb=Nb((function(){return\"/a/b\"!=Tb.call({source:\"a\",flags:\"b\"})})),Mb=Pb&&\"toString\"!=Tb.name;function _typeof(tA){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(tA){return typeof tA}:function(tA){return tA&&\"function\"==typeof Symbol&&tA.constructor===Symbol&&tA!==Symbol.prototype?\"symbol\":typeof tA},_typeof(tA)}(kb||Mb)&&_b(RegExp.prototype,\"toString\",(function toString(){var tA=Lb(this);return\"/\"+Ib(tA.source)+\"/\"+Ib(getRegExpFlags(tA))}),{unsafe:!0});\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar Ob=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],Hb=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];function processCanvasRGBA(tA,eA,AA,rA,nA,iA){if(!(isNaN(iA)||iA<1)){iA|=0;var sA=function getImageDataFromCanvas(tA,eA,AA,rA,nA){if(\"string\"==typeof tA&&(tA=document.getElementById(tA)),!tA||\"object\"!==_typeof(tA)||!(\"getContext\"in tA))throw new TypeError(\"Expecting canvas with `getContext` method in processCanvasRGB(A) calls!\");var iA=tA.getContext(\"2d\");try{return iA.getImageData(eA,AA,rA,nA)}catch(tA){throw new Error(\"unable to access image data: \"+tA)}}(tA,eA,AA,rA,nA);sA=function processImageDataRGBA(tA,eA,AA,rA,nA,iA){for(var sA,oA=tA.data,aA=2*iA+1,lA=rA-1,cA=nA-1,uA=iA+1,hA=uA*(uA+1)/2,dA=new Db,fA=dA,gA=1;gA<aA;gA++)fA=fA.next=new Db,gA===uA&&(sA=fA);fA.next=dA;for(var pA=null,mA=null,wA=0,yA=0,BA=Ob[iA],bA=Hb[iA],vA=0;vA<nA;vA++){fA=dA;for(var CA=oA[yA],SA=oA[yA+1],xA=oA[yA+2],FA=oA[yA+3],EA=0;EA<uA;EA++)fA.r=CA,fA.g=SA,fA.b=xA,fA.a=FA,fA=fA.next;for(var QA=0,UA=0,PA=0,_A=0,LA=uA*CA,IA=uA*SA,NA=uA*xA,TA=uA*FA,kA=hA*CA,MA=hA*SA,OA=hA*xA,HA=hA*FA,DA=1;DA<uA;DA++){var RA=yA+((lA<DA?lA:DA)<<2),VA=oA[RA],GA=oA[RA+1],jA=oA[RA+2],KA=oA[RA+3],qA=uA-DA;kA+=(fA.r=VA)*qA,MA+=(fA.g=GA)*qA,OA+=(fA.b=jA)*qA,HA+=(fA.a=KA)*qA,QA+=VA,UA+=GA,PA+=jA,_A+=KA,fA=fA.next}pA=dA,mA=sA;for(var zA=0;zA<rA;zA++){var XA=HA*BA>>bA;if(oA[yA+3]=XA,0!==XA){var WA=255/XA;oA[yA]=(kA*BA>>bA)*WA,oA[yA+1]=(MA*BA>>bA)*WA,oA[yA+2]=(OA*BA>>bA)*WA}else oA[yA]=oA[yA+1]=oA[yA+2]=0;kA-=LA,MA-=IA,OA-=NA,HA-=TA,LA-=pA.r,IA-=pA.g,NA-=pA.b,TA-=pA.a;var YA=zA+iA+1;YA=wA+(YA<lA?YA:lA)<<2,kA+=QA+=pA.r=oA[YA],MA+=UA+=pA.g=oA[YA+1],OA+=PA+=pA.b=oA[YA+2],HA+=_A+=pA.a=oA[YA+3],pA=pA.next;var JA=mA,ZA=JA.r,$A=JA.g,Qr=JA.b,Ur=JA.a;LA+=ZA,IA+=$A,NA+=Qr,TA+=Ur,QA-=ZA,UA-=$A,PA-=Qr,_A-=Ur,mA=mA.next,yA+=4}wA+=rA}for(var Tr=0;Tr<rA;Tr++){var Hr=oA[yA=Tr<<2],Dr=oA[yA+1],Rr=oA[yA+2],Vr=oA[yA+3],Gr=uA*Hr,Kr=uA*Dr,zr=uA*Rr,Xr=uA*Vr,Wr=hA*Hr,Yr=hA*Dr,Jr=hA*Rr,Zr=hA*Vr;fA=dA;for(var $r=0;$r<uA;$r++)fA.r=Hr,fA.g=Dr,fA.b=Rr,fA.a=Vr,fA=fA.next;for(var tn=rA,en=0,An=0,rn=0,nn=0,sn=1;sn<=iA;sn++){yA=tn+Tr<<2;var on=uA-sn;Wr+=(fA.r=Hr=oA[yA])*on,Yr+=(fA.g=Dr=oA[yA+1])*on,Jr+=(fA.b=Rr=oA[yA+2])*on,Zr+=(fA.a=Vr=oA[yA+3])*on,nn+=Hr,en+=Dr,An+=Rr,rn+=Vr,fA=fA.next,sn<cA&&(tn+=rA)}yA=Tr,pA=dA,mA=sA;for(var an=0;an<nA;an++){var cn=yA<<2;oA[cn+3]=Vr=Zr*BA>>bA,Vr>0?(Vr=255/Vr,oA[cn]=(Wr*BA>>bA)*Vr,oA[cn+1]=(Yr*BA>>bA)*Vr,oA[cn+2]=(Jr*BA>>bA)*Vr):oA[cn]=oA[cn+1]=oA[cn+2]=0,Wr-=Gr,Yr-=Kr,Jr-=zr,Zr-=Xr,Gr-=pA.r,Kr-=pA.g,zr-=pA.b,Xr-=pA.a,cn=Tr+((cn=an+uA)<cA?cn:cA)*rA<<2,Wr+=nn+=pA.r=oA[cn],Yr+=en+=pA.g=oA[cn+1],Jr+=An+=pA.b=oA[cn+2],Zr+=rn+=pA.a=oA[cn+3],pA=pA.next,Gr+=Hr=mA.r,Kr+=Dr=mA.g,zr+=Rr=mA.b,Xr+=Vr=mA.a,nn-=Hr,en-=Dr,An-=Rr,rn-=Vr,mA=mA.next,yA+=rA}}return tA}(sA,0,0,rA,nA,iA),tA.getContext(\"2d\").putImageData(sA,eA,AA)}}var Db=function BlurStack(){!function _classCallCheck(tA,eA){if(!(tA instanceof eA))throw new TypeError(\"Cannot call a class as a function\")}(this,BlurStack),this.r=0,this.g=0,this.b=0,this.a=0,this.next=null};var Rb=Object.freeze({__proto__:null,offscreen:function offscreen(){var{DOMParser:tA}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},eA={window:null,ignoreAnimation:!0,ignoreMouse:!0,DOMParser:tA,createCanvas:(tA,eA)=>new OffscreenCanvas(tA,eA),createImage:tA=>_asyncToGenerator((function*(){var eA=yield fetch(tA),AA=yield eA.blob();return yield createImageBitmap(AA)}))()};return\"undefined\"==typeof DOMParser&&void 0!==tA||Reflect.deleteProperty(eA,\"DOMParser\"),eA},node:function node(tA){var{DOMParser:eA,canvas:AA,fetch:rA}=tA;return{window:null,ignoreAnimation:!0,ignoreMouse:!0,DOMParser:eA,fetch:rA,createCanvas:AA.createCanvas,createImage:AA.loadImage}}});function compressSpaces(tA){return tA.replace(/(?!\\u3000)\\s+/gm,\" \")}function trimLeft(tA){return tA.replace(/^[\\n \\t]+/,\"\")}function trimRight(tA){return tA.replace(/[\\n \\t]+$/,\"\")}function toNumbers(tA){return((tA||\"\").match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm)||[]).map(parseFloat)}var Vb=/^[A-Z-]+$/;function normalizeAttributeName(tA){return Vb.test(tA)?tA.toLowerCase():tA}function parseExternalUrl(tA){var eA=/url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(tA)||[];return eA[2]||eA[3]||eA[4]}function normalizeColor(tA){if(!tA.startsWith(\"rgb\"))return tA;var eA=3;return tA.replace(/\\d+(\\.\\d+)?/g,((tA,AA)=>eA--&&AA?String(Math.round(parseFloat(tA))):tA))}var Gb=/(\\[[^\\]]+\\])/g,jb=/(#[^\\s+>~.[:]+)/g,Kb=/(\\.[^\\s+>~.[:]+)/g,qb=/(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi,zb=/(:[\\w-]+\\([^)]*\\))/gi,Xb=/(:[^\\s+>~.[:]+)/g,Wb=/([^\\s+>~.[:]+)/g;function findSelectorMatch(tA,eA){var AA=eA.exec(tA);return AA?[tA.replace(eA,\" \"),AA.length]:[tA,0]}function getSelectorSpecificity(tA){var eA=[0,0,0],AA=tA.replace(/:not\\(([^)]*)\\)/g,\" $1 \").replace(/{[\\s\\S]*/gm,\" \"),rA=0;return[AA,rA]=findSelectorMatch(AA,Gb),eA[1]+=rA,[AA,rA]=findSelectorMatch(AA,jb),eA[0]+=rA,[AA,rA]=findSelectorMatch(AA,Kb),eA[1]+=rA,[AA,rA]=findSelectorMatch(AA,qb),eA[2]+=rA,[AA,rA]=findSelectorMatch(AA,zb),eA[1]+=rA,[AA,rA]=findSelectorMatch(AA,Xb),eA[1]+=rA,AA=AA.replace(/[*\\s+>~]/g,\" \").replace(/[#.]/g,\" \"),[AA,rA]=findSelectorMatch(AA,Wb),eA[2]+=rA,eA.join(\"\")}function vectorMagnitude(tA){return Math.sqrt(Math.pow(tA[0],2)+Math.pow(tA[1],2))}function vectorsRatio(tA,eA){return(tA[0]*eA[0]+tA[1]*eA[1])/(vectorMagnitude(tA)*vectorMagnitude(eA))}function vectorsAngle(tA,eA){return(tA[0]*eA[1]<tA[1]*eA[0]?-1:1)*Math.acos(vectorsRatio(tA,eA))}function CB1(tA){return tA*tA*tA}function CB2(tA){return 3*tA*tA*(1-tA)}function CB3(tA){return 3*tA*(1-tA)*(1-tA)}function CB4(tA){return(1-tA)*(1-tA)*(1-tA)}function QB1(tA){return tA*tA}function QB2(tA){return 2*tA*(1-tA)}function QB3(tA){return(1-tA)*(1-tA)}class Property{constructor(tA,eA,AA){this.document=tA,this.name=eA,this.value=AA,this.isNormalizedColor=!1}static empty(tA){return new Property(tA,\"EMPTY\",\"\")}split(){var tA=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\" \",{document:eA,name:AA}=this;return compressSpaces(this.getString()).trim().split(tA).map((tA=>new Property(eA,AA,tA)))}hasValue(tA){var{value:eA}=this;return null!==eA&&\"\"!==eA&&(tA||0!==eA)&&void 0!==eA}isString(tA){var{value:eA}=this,AA=\"string\"==typeof eA;return AA&&tA?tA.test(eA):AA}isUrlDefinition(){return this.isString(/^url\\(/)}isPixels(){if(!this.hasValue())return!1;var tA=this.getString();switch(!0){case tA.endsWith(\"px\"):case/^[0-9]+$/.test(tA):return!0;default:return!1}}setValue(tA){return this.value=tA,this}getValue(tA){return void 0===tA||this.hasValue()?this.value:tA}getNumber(tA){if(!this.hasValue())return void 0===tA?0:parseFloat(tA);var{value:eA}=this,AA=parseFloat(eA);return this.isString(/%$/)&&(AA/=100),AA}getString(tA){return void 0===tA||this.hasValue()?void 0===this.value?\"\":String(this.value):String(tA)}getColor(tA){var eA=this.getString(tA);return this.isNormalizedColor||(this.isNormalizedColor=!0,eA=normalizeColor(eA),this.value=eA),eA}getDpi(){return 96}getRem(){return this.document.rootEmSize}getEm(){return this.document.emSize}getUnits(){return this.getString().replace(/[0-9.-]/g,\"\")}getPixels(tA){var eA=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.hasValue())return 0;var[AA,rA]=\"boolean\"==typeof tA?[void 0,tA]:[tA],{viewPort:nA}=this.document.screen;switch(!0){case this.isString(/vmin$/):return this.getNumber()/100*Math.min(nA.computeSize(\"x\"),nA.computeSize(\"y\"));case this.isString(/vmax$/):return this.getNumber()/100*Math.max(nA.computeSize(\"x\"),nA.computeSize(\"y\"));case this.isString(/vw$/):return this.getNumber()/100*nA.computeSize(\"x\");case this.isString(/vh$/):return this.getNumber()/100*nA.computeSize(\"y\");case this.isString(/rem$/):return this.getNumber()*this.getRem();case this.isString(/em$/):return this.getNumber()*this.getEm();case this.isString(/ex$/):return this.getNumber()*this.getEm()/2;case this.isString(/px$/):return this.getNumber();case this.isString(/pt$/):return this.getNumber()*this.getDpi()*(1/72);case this.isString(/pc$/):return 15*this.getNumber();case this.isString(/cm$/):return this.getNumber()*this.getDpi()/2.54;case this.isString(/mm$/):return this.getNumber()*this.getDpi()/25.4;case this.isString(/in$/):return this.getNumber()*this.getDpi();case this.isString(/%$/)&&rA:return this.getNumber()*this.getEm();case this.isString(/%$/):return this.getNumber()*nA.computeSize(AA);default:var iA=this.getNumber();return eA&&iA<1?iA*nA.computeSize(AA):iA}}getMilliseconds(){return this.hasValue()?this.isString(/ms$/)?this.getNumber():1e3*this.getNumber():0}getRadians(){if(!this.hasValue())return 0;switch(!0){case this.isString(/deg$/):return this.getNumber()*(Math.PI/180);case this.isString(/grad$/):return this.getNumber()*(Math.PI/200);case this.isString(/rad$/):return this.getNumber();default:return this.getNumber()*(Math.PI/180)}}getDefinition(){var tA=this.getString(),eA=/#([^)'\"]+)/.exec(tA);return eA&&(eA=eA[1]),eA||(eA=tA),this.document.definitions[eA]}getFillStyleDefinition(tA,eA){var AA=this.getDefinition();if(!AA)return null;if(\"function\"==typeof AA.createGradient)return AA.createGradient(this.document.ctx,tA,eA);if(\"function\"==typeof AA.createPattern){if(AA.getHrefAttribute().hasValue()){var rA=AA.getAttribute(\"patternTransform\");AA=AA.getHrefAttribute().getDefinition(),rA.hasValue()&&AA.getAttribute(\"patternTransform\",!0).setValue(rA.value)}return AA.createPattern(this.document.ctx,tA,eA)}return null}getTextBaseline(){return this.hasValue()?Property.textBaselineMapping[this.getString()]:null}addOpacity(tA){for(var eA=this.getColor(),AA=eA.length,rA=0,nA=0;nA<AA&&(\",\"===eA[nA]&&rA++,3!==rA);nA++);if(tA.hasValue()&&this.isString()&&3!==rA){var iA=new rgbcolor(eA);iA.ok&&(iA.alpha=tA.getNumber(),eA=iA.toRGBA())}return new Property(this.document,this.name,eA)}}Property.textBaselineMapping={baseline:\"alphabetic\",\"before-edge\":\"top\",\"text-before-edge\":\"top\",middle:\"middle\",central:\"middle\",\"after-edge\":\"bottom\",\"text-after-edge\":\"bottom\",ideographic:\"ideographic\",alphabetic:\"alphabetic\",hanging:\"hanging\",mathematical:\"alphabetic\"};class ViewPort{constructor(){this.viewPorts=[]}clear(){this.viewPorts=[]}setCurrent(tA,eA){this.viewPorts.push({width:tA,height:eA})}removeCurrent(){this.viewPorts.pop()}getCurrent(){var{viewPorts:tA}=this;return tA[tA.length-1]}get width(){return this.getCurrent().width}get height(){return this.getCurrent().height}computeSize(tA){return\"number\"==typeof tA?tA:\"x\"===tA?this.width:\"y\"===tA?this.height:Math.sqrt(Math.pow(this.width,2)+Math.pow(this.height,2))/Math.sqrt(2)}}class Point{constructor(tA,eA){this.x=tA,this.y=eA}static parse(tA){var eA=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,[AA=eA,rA=eA]=toNumbers(tA);return new Point(AA,rA)}static parseScale(tA){var eA=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,[AA=eA,rA=AA]=toNumbers(tA);return new Point(AA,rA)}static parsePath(tA){for(var eA=toNumbers(tA),AA=eA.length,rA=[],nA=0;nA<AA;nA+=2)rA.push(new Point(eA[nA],eA[nA+1]));return rA}angleTo(tA){return Math.atan2(tA.y-this.y,tA.x-this.x)}applyTransform(tA){var{x:eA,y:AA}=this,rA=eA*tA[0]+AA*tA[2]+tA[4],nA=eA*tA[1]+AA*tA[3]+tA[5];this.x=rA,this.y=nA}}class Mouse{constructor(tA){this.screen=tA,this.working=!1,this.events=[],this.eventElements=[],this.onClick=this.onClick.bind(this),this.onMouseMove=this.onMouseMove.bind(this)}isWorking(){return this.working}start(){if(!this.working){var{screen:tA,onClick:eA,onMouseMove:AA}=this,rA=tA.ctx.canvas;rA.onclick=eA,rA.onmousemove=AA,this.working=!0}}stop(){if(this.working){var tA=this.screen.ctx.canvas;this.working=!1,tA.onclick=null,tA.onmousemove=null}}hasEvents(){return this.working&&this.events.length>0}runEvents(){if(this.working){var{screen:tA,events:eA,eventElements:AA}=this,{style:rA}=tA.ctx.canvas;rA&&(rA.cursor=\"\"),eA.forEach(((tA,eA)=>{for(var{run:rA}=tA,nA=AA[eA];nA;)rA(nA),nA=nA.parent})),this.events=[],this.eventElements=[]}}checkPath(tA,eA){if(this.working&&eA){var{events:AA,eventElements:rA}=this;AA.forEach(((AA,nA)=>{var{x:iA,y:sA}=AA;!rA[nA]&&eA.isPointInPath&&eA.isPointInPath(iA,sA)&&(rA[nA]=tA)}))}}checkBoundingBox(tA,eA){if(this.working&&eA){var{events:AA,eventElements:rA}=this;AA.forEach(((AA,nA)=>{var{x:iA,y:sA}=AA;!rA[nA]&&eA.isPointInBox(iA,sA)&&(rA[nA]=tA)}))}}mapXY(tA,eA){for(var{window:AA,ctx:rA}=this.screen,nA=new Point(tA,eA),iA=rA.canvas;iA;)nA.x-=iA.offsetLeft,nA.y-=iA.offsetTop,iA=iA.offsetParent;return AA.scrollX&&(nA.x+=AA.scrollX),AA.scrollY&&(nA.y+=AA.scrollY),nA}onClick(tA){var{x:eA,y:AA}=this.mapXY(tA.clientX,tA.clientY);this.events.push({type:\"onclick\",x:eA,y:AA,run(tA){tA.onClick&&tA.onClick()}})}onMouseMove(tA){var{x:eA,y:AA}=this.mapXY(tA.clientX,tA.clientY);this.events.push({type:\"onmousemove\",x:eA,y:AA,run(tA){tA.onMouseMove&&tA.onMouseMove()}})}}var Yb=\"undefined\"!=typeof window?window:null,Jb=\"undefined\"!=typeof fetch?fetch.bind(void 0):null;class Screen{constructor(tA){var{fetch:eA=Jb,window:AA=Yb}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.ctx=tA,this.FRAMERATE=30,this.MAX_VIRTUAL_PIXELS=3e4,this.CLIENT_WIDTH=800,this.CLIENT_HEIGHT=600,this.viewPort=new ViewPort,this.mouse=new Mouse(this),this.animations=[],this.waits=[],this.frameDuration=0,this.isReadyLock=!1,this.isFirstRender=!0,this.intervalId=null,this.window=AA,this.fetch=eA}wait(tA){this.waits.push(tA)}ready(){return this.readyPromise?this.readyPromise:Promise.resolve()}isReady(){if(this.isReadyLock)return!0;var tA=this.waits.every((tA=>tA()));return tA&&(this.waits=[],this.resolveReady&&this.resolveReady()),this.isReadyLock=tA,tA}setDefaults(tA){tA.strokeStyle=\"rgba(0,0,0,0)\",tA.lineCap=\"butt\",tA.lineJoin=\"miter\",tA.miterLimit=4}setViewBox(tA){var{document:eA,ctx:AA,aspectRatio:rA,width:nA,desiredWidth:iA,height:sA,desiredHeight:oA,minX:aA=0,minY:lA=0,refX:cA,refY:uA,clip:hA=!1,clipX:dA=0,clipY:fA=0}=tA,gA=compressSpaces(rA).replace(/^defer\\s/,\"\"),[pA,mA]=gA.split(\" \"),wA=pA||\"xMidYMid\",yA=mA||\"meet\",BA=nA/iA,bA=sA/oA,vA=Math.min(BA,bA),CA=Math.max(BA,bA),SA=iA,xA=oA;\"meet\"===yA&&(SA*=vA,xA*=vA),\"slice\"===yA&&(SA*=CA,xA*=CA);var FA=new Property(eA,\"refX\",cA),EA=new Property(eA,\"refY\",uA),QA=FA.hasValue()&&EA.hasValue();if(QA&&AA.translate(-vA*FA.getPixels(\"x\"),-vA*EA.getPixels(\"y\")),hA){var UA=vA*dA,PA=vA*fA;AA.beginPath(),AA.moveTo(UA,PA),AA.lineTo(nA,PA),AA.lineTo(nA,sA),AA.lineTo(UA,sA),AA.closePath(),AA.clip()}if(!QA){var _A=\"meet\"===yA&&vA===bA,LA=\"slice\"===yA&&CA===bA,IA=\"meet\"===yA&&vA===BA,NA=\"slice\"===yA&&CA===BA;wA.startsWith(\"xMid\")&&(_A||LA)&&AA.translate(nA/2-SA/2,0),wA.endsWith(\"YMid\")&&(IA||NA)&&AA.translate(0,sA/2-xA/2),wA.startsWith(\"xMax\")&&(_A||LA)&&AA.translate(nA-SA,0),wA.endsWith(\"YMax\")&&(IA||NA)&&AA.translate(0,sA-xA)}switch(!0){case\"none\"===wA:AA.scale(BA,bA);break;case\"meet\"===yA:AA.scale(vA,vA);break;case\"slice\"===yA:AA.scale(CA,CA)}AA.translate(-aA,-lA)}start(tA){var{enableRedraw:eA=!1,ignoreMouse:AA=!1,ignoreAnimation:rA=!1,ignoreDimensions:nA=!1,ignoreClear:iA=!1,forceRedraw:sA,scaleWidth:oA,scaleHeight:aA,offsetX:lA,offsetY:cA}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{FRAMERATE:uA,mouse:hA}=this,dA=1e3/uA;if(this.frameDuration=dA,this.readyPromise=new Promise((tA=>{this.resolveReady=tA})),this.isReady()&&this.render(tA,nA,iA,oA,aA,lA,cA),eA){var fA=Date.now(),gA=fA,pA=0,tick=()=>{fA=Date.now(),(pA=fA-gA)>=dA&&(gA=fA-pA%dA,this.shouldUpdate(rA,sA)&&(this.render(tA,nA,iA,oA,aA,lA,cA),hA.runEvents())),this.intervalId=VB(tick)};AA||hA.start(),this.intervalId=VB(tick)}}stop(){this.intervalId&&(VB.cancel(this.intervalId),this.intervalId=null),this.mouse.stop()}shouldUpdate(tA,eA){if(!tA){var{frameDuration:AA}=this;if(this.animations.reduce(((tA,eA)=>eA.update(AA)||tA),!1))return!0}return!(\"function\"!=typeof eA||!eA())||(!(this.isReadyLock||!this.isReady())||!!this.mouse.hasEvents())}render(tA,eA,AA,rA,nA,iA,sA){var{CLIENT_WIDTH:oA,CLIENT_HEIGHT:aA,viewPort:lA,ctx:cA,isFirstRender:uA}=this,hA=cA.canvas;lA.clear(),hA.width&&hA.height?lA.setCurrent(hA.width,hA.height):lA.setCurrent(oA,aA);var dA=tA.getStyle(\"width\"),fA=tA.getStyle(\"height\");!eA&&(uA||\"number\"!=typeof rA&&\"number\"!=typeof nA)&&(dA.hasValue()&&(hA.width=dA.getPixels(\"x\"),hA.style&&(hA.style.width=\"\".concat(hA.width,\"px\"))),fA.hasValue()&&(hA.height=fA.getPixels(\"y\"),hA.style&&(hA.style.height=\"\".concat(hA.height,\"px\"))));var gA=hA.clientWidth||hA.width,pA=hA.clientHeight||hA.height;if(eA&&dA.hasValue()&&fA.hasValue()&&(gA=dA.getPixels(\"x\"),pA=fA.getPixels(\"y\")),lA.setCurrent(gA,pA),\"number\"==typeof iA&&tA.getAttribute(\"x\",!0).setValue(iA),\"number\"==typeof sA&&tA.getAttribute(\"y\",!0).setValue(sA),\"number\"==typeof rA||\"number\"==typeof nA){var mA=toNumbers(tA.getAttribute(\"viewBox\").getString()),wA=0,yA=0;if(\"number\"==typeof rA){var BA=tA.getStyle(\"width\");BA.hasValue()?wA=BA.getPixels(\"x\")/rA:isNaN(mA[2])||(wA=mA[2]/rA)}if(\"number\"==typeof nA){var bA=tA.getStyle(\"height\");bA.hasValue()?yA=bA.getPixels(\"y\")/nA:isNaN(mA[3])||(yA=mA[3]/nA)}wA||(wA=yA),yA||(yA=wA),tA.getAttribute(\"width\",!0).setValue(rA),tA.getAttribute(\"height\",!0).setValue(nA);var vA=tA.getStyle(\"transform\",!0,!0);vA.setValue(\"\".concat(vA.getString(),\" scale(\").concat(1/wA,\", \").concat(1/yA,\")\"))}AA||cA.clearRect(0,0,gA,pA),tA.render(cA),uA&&(this.isFirstRender=!1)}}Screen.defaultWindow=Yb,Screen.defaultFetch=Jb;var{defaultFetch:Zb}=Screen,$b=\"undefined\"!=typeof DOMParser?DOMParser:null;class Parser{constructor(){var{fetch:tA=Zb,DOMParser:eA=$b}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.fetch=tA,this.DOMParser=eA}parse(tA){var eA=this;return _asyncToGenerator((function*(){return tA.startsWith(\"<\")?eA.parseFromString(tA):eA.load(tA)}))()}parseFromString(tA){var eA=new this.DOMParser;try{return this.checkDocument(eA.parseFromString(tA,\"image/svg+xml\"))}catch(AA){return this.checkDocument(eA.parseFromString(tA,\"text/xml\"))}}checkDocument(tA){var eA=tA.getElementsByTagName(\"parsererror\")[0];if(eA)throw new Error(eA.textContent);return tA}load(tA){var eA=this;return _asyncToGenerator((function*(){var AA=yield eA.fetch(tA),rA=yield AA.text();return eA.parseFromString(rA)}))()}}class Translate{constructor(tA,eA){this.type=\"translate\",this.point=null,this.point=Point.parse(eA)}apply(tA){var{x:eA,y:AA}=this.point;tA.translate(eA||0,AA||0)}unapply(tA){var{x:eA,y:AA}=this.point;tA.translate(-1*eA||0,-1*AA||0)}applyToPoint(tA){var{x:eA,y:AA}=this.point;tA.applyTransform([1,0,0,1,eA||0,AA||0])}}class Rotate{constructor(tA,eA,AA){this.type=\"rotate\",this.angle=null,this.originX=null,this.originY=null,this.cx=0,this.cy=0;var rA=toNumbers(eA);this.angle=new Property(tA,\"angle\",rA[0]),this.originX=AA[0],this.originY=AA[1],this.cx=rA[1]||0,this.cy=rA[2]||0}apply(tA){var{cx:eA,cy:AA,originX:rA,originY:nA,angle:iA}=this,sA=eA+rA.getPixels(\"x\"),oA=AA+nA.getPixels(\"y\");tA.translate(sA,oA),tA.rotate(iA.getRadians()),tA.translate(-sA,-oA)}unapply(tA){var{cx:eA,cy:AA,originX:rA,originY:nA,angle:iA}=this,sA=eA+rA.getPixels(\"x\"),oA=AA+nA.getPixels(\"y\");tA.translate(sA,oA),tA.rotate(-1*iA.getRadians()),tA.translate(-sA,-oA)}applyToPoint(tA){var{cx:eA,cy:AA,angle:rA}=this,nA=rA.getRadians();tA.applyTransform([1,0,0,1,eA||0,AA||0]),tA.applyTransform([Math.cos(nA),Math.sin(nA),-Math.sin(nA),Math.cos(nA),0,0]),tA.applyTransform([1,0,0,1,-eA||0,-AA||0])}}class Scale{constructor(tA,eA,AA){this.type=\"scale\",this.scale=null,this.originX=null,this.originY=null;var rA=Point.parseScale(eA);0!==rA.x&&0!==rA.y||(rA.x=1e-8,rA.y=1e-8),this.scale=rA,this.originX=AA[0],this.originY=AA[1]}apply(tA){var{scale:{x:eA,y:AA},originX:rA,originY:nA}=this,iA=rA.getPixels(\"x\"),sA=nA.getPixels(\"y\");tA.translate(iA,sA),tA.scale(eA,AA||eA),tA.translate(-iA,-sA)}unapply(tA){var{scale:{x:eA,y:AA},originX:rA,originY:nA}=this,iA=rA.getPixels(\"x\"),sA=nA.getPixels(\"y\");tA.translate(iA,sA),tA.scale(1/eA,1/AA||eA),tA.translate(-iA,-sA)}applyToPoint(tA){var{x:eA,y:AA}=this.scale;tA.applyTransform([eA||0,0,0,AA||0,0,0])}}class Matrix{constructor(tA,eA,AA){this.type=\"matrix\",this.matrix=[],this.originX=null,this.originY=null,this.matrix=toNumbers(eA),this.originX=AA[0],this.originY=AA[1]}apply(tA){var{originX:eA,originY:AA,matrix:rA}=this,nA=eA.getPixels(\"x\"),iA=AA.getPixels(\"y\");tA.translate(nA,iA),tA.transform(rA[0],rA[1],rA[2],rA[3],rA[4],rA[5]),tA.translate(-nA,-iA)}unapply(tA){var{originX:eA,originY:AA,matrix:rA}=this,nA=rA[0],iA=rA[2],sA=rA[4],oA=rA[1],aA=rA[3],lA=rA[5],cA=1/(nA*(1*aA-0*lA)-iA*(1*oA-0*lA)+sA*(0*oA-0*aA)),uA=eA.getPixels(\"x\"),hA=AA.getPixels(\"y\");tA.translate(uA,hA),tA.transform(cA*(1*aA-0*lA),cA*(0*lA-1*oA),cA*(0*sA-1*iA),cA*(1*nA-0*sA),cA*(iA*lA-sA*aA),cA*(sA*oA-nA*lA)),tA.translate(-uA,-hA)}applyToPoint(tA){tA.applyTransform(this.matrix)}}class Skew extends Matrix{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"skew\",this.angle=null,this.angle=new Property(tA,\"angle\",eA)}}class SkewX extends Skew{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"skewX\",this.matrix=[1,0,Math.tan(this.angle.getRadians()),1,0,0]}}class SkewY extends Skew{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"skewY\",this.matrix=[1,Math.tan(this.angle.getRadians()),0,1,0,0]}}class Transform{constructor(tA,eA,AA){this.document=tA,this.transforms=[];var rA=function parseTransforms(tA){return compressSpaces(tA).trim().replace(/\\)([a-zA-Z])/g,\") $1\").replace(/\\)(\\s?,\\s?)/g,\") \").split(/\\s(?=[a-z])/)}(eA);rA.forEach((tA=>{if(\"none\"!==tA){var[eA,rA]=function parseTransform(tA){var[eA,AA]=tA.split(\"(\");return[eA.trim(),AA.trim().replace(\")\",\"\")]}(tA),nA=Transform.transformTypes[eA];void 0!==nA&&this.transforms.push(new nA(this.document,rA,AA))}}))}static fromElement(tA,eA){var AA=eA.getStyle(\"transform\",!1,!0),[rA,nA=rA]=eA.getStyle(\"transform-origin\",!1,!0).split(),iA=[rA,nA];return AA.hasValue()?new Transform(tA,AA.getString(),iA):null}apply(tA){for(var{transforms:eA}=this,AA=eA.length,rA=0;rA<AA;rA++)eA[rA].apply(tA)}unapply(tA){for(var{transforms:eA}=this,AA=eA.length-1;AA>=0;AA--)eA[AA].unapply(tA)}applyToPoint(tA){for(var{transforms:eA}=this,AA=eA.length,rA=0;rA<AA;rA++)eA[rA].applyToPoint(tA)}}Transform.transformTypes={translate:Translate,rotate:Rotate,scale:Scale,matrix:Matrix,skewX:SkewX,skewY:SkewY};class Element{constructor(tA,eA){var AA=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.document=tA,this.node=eA,this.captureTextNodes=AA,this.attributes={},this.styles={},this.stylesSpecificity={},this.animationFrozen=!1,this.animationFrozenValue=\"\",this.parent=null,this.children=[],eA&&1===eA.nodeType){if(Array.from(eA.attributes).forEach((eA=>{var AA=normalizeAttributeName(eA.nodeName);this.attributes[AA]=new Property(tA,AA,eA.value)})),this.addStylesFromStyleDefinition(),this.getAttribute(\"style\").hasValue()){var rA=this.getAttribute(\"style\").getString().split(\";\").map((tA=>tA.trim()));rA.forEach((eA=>{if(eA){var[AA,rA]=eA.split(\":\").map((tA=>tA.trim()));this.styles[AA]=new Property(tA,AA,rA)}}))}var{definitions:nA}=tA,iA=this.getAttribute(\"id\");iA.hasValue()&&(nA[iA.getString()]||(nA[iA.getString()]=this)),Array.from(eA.childNodes).forEach((eA=>{if(1===eA.nodeType)this.addChild(eA);else if(AA&&(3===eA.nodeType||4===eA.nodeType)){var rA=tA.createTextNode(eA);rA.getText().length>0&&this.addChild(rA)}}))}}getAttribute(tA){var eA=arguments.length>1&&void 0!==arguments[1]&&arguments[1],AA=this.attributes[tA];if(!AA&&eA){var rA=new Property(this.document,tA,\"\");return this.attributes[tA]=rA,rA}return AA||Property.empty(this.document)}getHrefAttribute(){for(var tA in this.attributes)if(\"href\"===tA||tA.endsWith(\":href\"))return this.attributes[tA];return Property.empty(this.document)}getStyle(tA){var eA=arguments.length>1&&void 0!==arguments[1]&&arguments[1],AA=arguments.length>2&&void 0!==arguments[2]&&arguments[2],rA=this.styles[tA];if(rA)return rA;var nA=this.getAttribute(tA);if(null!=nA&&nA.hasValue())return this.styles[tA]=nA,nA;if(!AA){var{parent:iA}=this;if(iA){var sA=iA.getStyle(tA);if(null!=sA&&sA.hasValue())return sA}}if(eA){var oA=new Property(this.document,tA,\"\");return this.styles[tA]=oA,oA}return rA||Property.empty(this.document)}render(tA){if(\"none\"!==this.getStyle(\"display\").getString()&&\"hidden\"!==this.getStyle(\"visibility\").getString()){if(tA.save(),this.getStyle(\"mask\").hasValue()){var eA=this.getStyle(\"mask\").getDefinition();eA&&(this.applyEffects(tA),eA.apply(tA,this))}else if(\"none\"!==this.getStyle(\"filter\").getValue(\"none\")){var AA=this.getStyle(\"filter\").getDefinition();AA&&(this.applyEffects(tA),AA.apply(tA,this))}else this.setContext(tA),this.renderChildren(tA),this.clearContext(tA);tA.restore()}}setContext(tA){}applyEffects(tA){var eA=Transform.fromElement(this.document,this);eA&&eA.apply(tA);var AA=this.getStyle(\"clip-path\",!1,!0);if(AA.hasValue()){var rA=AA.getDefinition();rA&&rA.apply(tA)}}clearContext(tA){}renderChildren(tA){this.children.forEach((eA=>{eA.render(tA)}))}addChild(tA){var eA=tA instanceof Element?tA:this.document.createElement(tA);eA.parent=this,Element.ignoreChildTypes.includes(eA.type)||this.children.push(eA)}matchesSelector(tA){var eA,{node:AA}=this;if(\"function\"==typeof AA.matches)return AA.matches(tA);var rA=null===(eA=AA.getAttribute)||void 0===eA?void 0:eA.call(AA,\"class\");return!(!rA||\"\"===rA)&&rA.split(\" \").some((eA=>\".\".concat(eA)===tA))}addStylesFromStyleDefinition(){var{styles:tA,stylesSpecificity:eA}=this.document;for(var AA in tA)if(!AA.startsWith(\"@\")&&this.matchesSelector(AA)){var rA=tA[AA],nA=eA[AA];if(rA)for(var iA in rA){var sA=this.stylesSpecificity[iA];void 0===sA&&(sA=\"000\"),nA>=sA&&(this.styles[iA]=rA[iA],this.stylesSpecificity[iA]=nA)}}}removeStyles(tA,eA){return eA.reduce(((eA,AA)=>{var rA=tA.getStyle(AA);if(!rA.hasValue())return eA;var nA=rA.getString();return rA.setValue(\"\"),[...eA,[AA,nA]]}),[])}restoreStyles(tA,eA){eA.forEach((eA=>{var[AA,rA]=eA;tA.getStyle(AA,!0).setValue(rA)}))}isFirstChild(){var tA;return 0===(null===(tA=this.parent)||void 0===tA?void 0:tA.children.indexOf(this))}}Element.ignoreChildTypes=[\"title\"];class UnknownElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA)}}function wrapFontFamily(tA){var eA=tA.trim();return/^('|\")/.test(eA)?eA:'\"'.concat(eA,'\"')}function prepareFontStyle(tA){if(!tA)return\"\";var eA=tA.trim().toLowerCase();switch(eA){case\"normal\":case\"italic\":case\"oblique\":case\"inherit\":case\"initial\":case\"unset\":return eA;default:return/^oblique\\s+(-|)\\d+deg$/.test(eA)?eA:\"\"}}function prepareFontWeight(tA){if(!tA)return\"\";var eA=tA.trim().toLowerCase();switch(eA){case\"normal\":case\"bold\":case\"lighter\":case\"bolder\":case\"inherit\":case\"initial\":case\"unset\":return eA;default:return/^[\\d.]+$/.test(eA)?eA:\"\"}}class Font{constructor(tA,eA,AA,rA,nA,iA){var sA=iA?\"string\"==typeof iA?Font.parse(iA):iA:{};this.fontFamily=nA||sA.fontFamily,this.fontSize=rA||sA.fontSize,this.fontStyle=tA||sA.fontStyle,this.fontWeight=AA||sA.fontWeight,this.fontVariant=eA||sA.fontVariant}static parse(){var tA=arguments.length>1?arguments[1]:void 0,eA=\"\",AA=\"\",rA=\"\",nA=\"\",iA=\"\",sA=compressSpaces(arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\").trim().split(\" \"),oA={fontSize:!1,fontStyle:!1,fontWeight:!1,fontVariant:!1};return sA.forEach((tA=>{switch(!0){case!oA.fontStyle&&Font.styles.includes(tA):\"inherit\"!==tA&&(eA=tA),oA.fontStyle=!0;break;case!oA.fontVariant&&Font.variants.includes(tA):\"inherit\"!==tA&&(AA=tA),oA.fontStyle=!0,oA.fontVariant=!0;break;case!oA.fontWeight&&Font.weights.includes(tA):\"inherit\"!==tA&&(rA=tA),oA.fontStyle=!0,oA.fontVariant=!0,oA.fontWeight=!0;break;case!oA.fontSize:\"inherit\"!==tA&&([nA]=tA.split(\"/\")),oA.fontStyle=!0,oA.fontVariant=!0,oA.fontWeight=!0,oA.fontSize=!0;break;default:\"inherit\"!==tA&&(iA+=tA)}})),new Font(eA,AA,rA,nA,iA,tA)}toString(){return[prepareFontStyle(this.fontStyle),this.fontVariant,prepareFontWeight(this.fontWeight),this.fontSize,(tA=this.fontFamily,\"undefined\"==typeof process?tA:tA.trim().split(\",\").map(wrapFontFamily).join(\",\"))].join(\" \").trim();var tA}}Font.styles=\"normal|italic|oblique|inherit\",Font.variants=\"normal|small-caps|inherit\",Font.weights=\"normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit\";class BoundingBox{constructor(){var tA=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Number.NaN,eA=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.NaN,AA=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.NaN,rA=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Number.NaN;this.x1=tA,this.y1=eA,this.x2=AA,this.y2=rA,this.addPoint(tA,eA),this.addPoint(AA,rA)}get x(){return this.x1}get y(){return this.y1}get width(){return this.x2-this.x1}get height(){return this.y2-this.y1}addPoint(tA,eA){void 0!==tA&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=tA,this.x2=tA),tA<this.x1&&(this.x1=tA),tA>this.x2&&(this.x2=tA)),void 0!==eA&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=eA,this.y2=eA),eA<this.y1&&(this.y1=eA),eA>this.y2&&(this.y2=eA))}addX(tA){this.addPoint(tA,null)}addY(tA){this.addPoint(null,tA)}addBoundingBox(tA){if(tA){var{x1:eA,y1:AA,x2:rA,y2:nA}=tA;this.addPoint(eA,AA),this.addPoint(rA,nA)}}sumCubic(tA,eA,AA,rA,nA){return Math.pow(1-tA,3)*eA+3*Math.pow(1-tA,2)*tA*AA+3*(1-tA)*Math.pow(tA,2)*rA+Math.pow(tA,3)*nA}bezierCurveAdd(tA,eA,AA,rA,nA){var iA=6*eA-12*AA+6*rA,sA=-3*eA+9*AA-9*rA+3*nA,oA=3*AA-3*eA;if(0!==sA){var aA=Math.pow(iA,2)-4*oA*sA;if(!(aA<0)){var lA=(-iA+Math.sqrt(aA))/(2*sA);0<lA&&lA<1&&(tA?this.addX(this.sumCubic(lA,eA,AA,rA,nA)):this.addY(this.sumCubic(lA,eA,AA,rA,nA)));var cA=(-iA-Math.sqrt(aA))/(2*sA);0<cA&&cA<1&&(tA?this.addX(this.sumCubic(cA,eA,AA,rA,nA)):this.addY(this.sumCubic(cA,eA,AA,rA,nA)))}}else{if(0===iA)return;var uA=-oA/iA;0<uA&&uA<1&&(tA?this.addX(this.sumCubic(uA,eA,AA,rA,nA)):this.addY(this.sumCubic(uA,eA,AA,rA,nA)))}}addBezierCurve(tA,eA,AA,rA,nA,iA,sA,oA){this.addPoint(tA,eA),this.addPoint(sA,oA),this.bezierCurveAdd(!0,tA,AA,nA,sA),this.bezierCurveAdd(!1,eA,rA,iA,oA)}addQuadraticCurve(tA,eA,AA,rA,nA,iA){var sA=tA+2/3*(AA-tA),oA=eA+2/3*(rA-eA),aA=sA+1/3*(nA-tA),lA=oA+1/3*(iA-eA);this.addBezierCurve(tA,eA,sA,aA,oA,lA,nA,iA)}isPointInBox(tA,eA){var{x1:AA,y1:rA,x2:nA,y2:iA}=this;return AA<=tA&&tA<=nA&&rA<=eA&&eA<=iA}}class PathParser extends Cb{constructor(tA){super(tA.replace(/([+\\-.])\\s+/gm,\"$1\").replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g,\"\")),this.control=null,this.start=null,this.current=null,this.command=null,this.commands=this.commands,this.i=-1,this.previousCommand=null,this.points=[],this.angles=[]}reset(){this.i=-1,this.command=null,this.previousCommand=null,this.start=new Point(0,0),this.control=new Point(0,0),this.current=new Point(0,0),this.points=[],this.angles=[]}isEnd(){var{i:tA,commands:eA}=this;return tA>=eA.length-1}next(){var tA=this.commands[++this.i];return this.previousCommand=this.command,this.command=tA,tA}getPoint(){var tA=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"x\",eA=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"y\",AA=new Point(this.command[tA],this.command[eA]);return this.makeAbsolute(AA)}getAsControlPoint(tA,eA){var AA=this.getPoint(tA,eA);return this.control=AA,AA}getAsCurrentPoint(tA,eA){var AA=this.getPoint(tA,eA);return this.current=AA,AA}getReflectedControlPoint(){var tA=this.previousCommand.type;if(tA!==Cb.CURVE_TO&&tA!==Cb.SMOOTH_CURVE_TO&&tA!==Cb.QUAD_TO&&tA!==Cb.SMOOTH_QUAD_TO)return this.current;var{current:{x:eA,y:AA},control:{x:rA,y:nA}}=this;return new Point(2*eA-rA,2*AA-nA)}makeAbsolute(tA){if(this.command.relative){var{x:eA,y:AA}=this.current;tA.x+=eA,tA.y+=AA}return tA}addMarker(tA,eA,AA){var{points:rA,angles:nA}=this;AA&&nA.length>0&&!nA[nA.length-1]&&(nA[nA.length-1]=rA[rA.length-1].angleTo(AA)),this.addMarkerAngle(tA,eA?eA.angleTo(tA):null)}addMarkerAngle(tA,eA){this.points.push(tA),this.angles.push(eA)}getMarkerPoints(){return this.points}getMarkerAngles(){for(var{angles:tA}=this,eA=tA.length,AA=0;AA<eA;AA++)if(!tA[AA])for(var rA=AA+1;rA<eA;rA++)if(tA[rA]){tA[AA]=tA[rA];break}return tA}}class RenderedElement extends Element{constructor(){super(...arguments),this.modifiedEmSizeStack=!1}calculateOpacity(){for(var tA=1,eA=this;eA;){var AA=eA.getStyle(\"opacity\",!1,!0);AA.hasValue(!0)&&(tA*=AA.getNumber()),eA=eA.parent}return tA}setContext(tA){var eA=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!eA){var AA=this.getStyle(\"fill\"),rA=this.getStyle(\"fill-opacity\"),nA=this.getStyle(\"stroke\"),iA=this.getStyle(\"stroke-opacity\");if(AA.isUrlDefinition()){var sA=AA.getFillStyleDefinition(this,rA);sA&&(tA.fillStyle=sA)}else if(AA.hasValue()){\"currentColor\"===AA.getString()&&AA.setValue(this.getStyle(\"color\").getColor());var oA=AA.getColor();\"inherit\"!==oA&&(tA.fillStyle=\"none\"===oA?\"rgba(0,0,0,0)\":oA)}if(rA.hasValue()){var aA=new Property(this.document,\"fill\",tA.fillStyle).addOpacity(rA).getColor();tA.fillStyle=aA}if(nA.isUrlDefinition()){var lA=nA.getFillStyleDefinition(this,iA);lA&&(tA.strokeStyle=lA)}else if(nA.hasValue()){\"currentColor\"===nA.getString()&&nA.setValue(this.getStyle(\"color\").getColor());var cA=nA.getString();\"inherit\"!==cA&&(tA.strokeStyle=\"none\"===cA?\"rgba(0,0,0,0)\":cA)}if(iA.hasValue()){var uA=new Property(this.document,\"stroke\",tA.strokeStyle).addOpacity(iA).getString();tA.strokeStyle=uA}var hA=this.getStyle(\"stroke-width\");if(hA.hasValue()){var dA=hA.getPixels();tA.lineWidth=dA||1e-8}var fA=this.getStyle(\"stroke-linecap\"),gA=this.getStyle(\"stroke-linejoin\"),pA=this.getStyle(\"stroke-miterlimit\"),mA=this.getStyle(\"stroke-dasharray\"),wA=this.getStyle(\"stroke-dashoffset\");if(fA.hasValue()&&(tA.lineCap=fA.getString()),gA.hasValue()&&(tA.lineJoin=gA.getString()),pA.hasValue()&&(tA.miterLimit=pA.getNumber()),mA.hasValue()&&\"none\"!==mA.getString()){var yA=toNumbers(mA.getString());void 0!==tA.setLineDash?tA.setLineDash(yA):void 0!==tA.webkitLineDash?tA.webkitLineDash=yA:void 0===tA.mozDash||1===yA.length&&0===yA[0]||(tA.mozDash=yA);var BA=wA.getPixels();void 0!==tA.lineDashOffset?tA.lineDashOffset=BA:void 0!==tA.webkitLineDashOffset?tA.webkitLineDashOffset=BA:void 0!==tA.mozDashOffset&&(tA.mozDashOffset=BA)}}if(this.modifiedEmSizeStack=!1,void 0!==tA.font){var bA=this.getStyle(\"font\"),vA=this.getStyle(\"font-style\"),CA=this.getStyle(\"font-variant\"),SA=this.getStyle(\"font-weight\"),xA=this.getStyle(\"font-size\"),FA=this.getStyle(\"font-family\"),EA=new Font(vA.getString(),CA.getString(),SA.getString(),xA.hasValue()?\"\".concat(xA.getPixels(!0),\"px\"):\"\",FA.getString(),Font.parse(bA.getString(),tA.font));vA.setValue(EA.fontStyle),CA.setValue(EA.fontVariant),SA.setValue(EA.fontWeight),xA.setValue(EA.fontSize),FA.setValue(EA.fontFamily),tA.font=EA.toString(),xA.isPixels()&&(this.document.emSize=xA.getPixels(),this.modifiedEmSizeStack=!0)}eA||(this.applyEffects(tA),tA.globalAlpha=this.calculateOpacity())}clearContext(tA){super.clearContext(tA),this.modifiedEmSizeStack&&this.document.popEmSize()}}class PathElement extends RenderedElement{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"path\",this.pathParser=null,this.pathParser=new PathParser(this.getAttribute(\"d\").getString())}path(tA){var{pathParser:eA}=this,AA=new BoundingBox;for(eA.reset(),tA&&tA.beginPath();!eA.isEnd();)switch(eA.next().type){case PathParser.MOVE_TO:this.pathM(tA,AA);break;case PathParser.LINE_TO:this.pathL(tA,AA);break;case PathParser.HORIZ_LINE_TO:this.pathH(tA,AA);break;case PathParser.VERT_LINE_TO:this.pathV(tA,AA);break;case PathParser.CURVE_TO:this.pathC(tA,AA);break;case PathParser.SMOOTH_CURVE_TO:this.pathS(tA,AA);break;case PathParser.QUAD_TO:this.pathQ(tA,AA);break;case PathParser.SMOOTH_QUAD_TO:this.pathT(tA,AA);break;case PathParser.ARC:this.pathA(tA,AA);break;case PathParser.CLOSE_PATH:this.pathZ(tA,AA)}return AA}getBoundingBox(tA){return this.path()}getMarkers(){var{pathParser:tA}=this,eA=tA.getMarkerPoints(),AA=tA.getMarkerAngles(),rA=eA.map(((tA,eA)=>[tA,AA[eA]]));return rA}renderChildren(tA){this.path(tA),this.document.screen.mouse.checkPath(this,tA);var eA=this.getStyle(\"fill-rule\");\"\"!==tA.fillStyle&&(\"inherit\"!==eA.getString(\"inherit\")?tA.fill(eA.getString()):tA.fill()),\"\"!==tA.strokeStyle&&(\"non-scaling-stroke\"===this.getAttribute(\"vector-effect\").getString()?(tA.save(),tA.setTransform(1,0,0,1,0,0),tA.stroke(),tA.restore()):tA.stroke());var AA=this.getMarkers();if(AA){var rA=AA.length-1,nA=this.getStyle(\"marker-start\"),iA=this.getStyle(\"marker-mid\"),sA=this.getStyle(\"marker-end\");if(nA.isUrlDefinition()){var oA=nA.getDefinition(),[aA,lA]=AA[0];oA.render(tA,aA,lA)}if(iA.isUrlDefinition())for(var cA=iA.getDefinition(),uA=1;uA<rA;uA++){var[hA,dA]=AA[uA];cA.render(tA,hA,dA)}if(sA.isUrlDefinition()){var fA=sA.getDefinition(),[gA,pA]=AA[rA];fA.render(tA,gA,pA)}}}static pathM(tA){var eA=tA.getAsCurrentPoint();return tA.start=tA.current,{point:eA}}pathM(tA,eA){var{pathParser:AA}=this,{point:rA}=PathElement.pathM(AA),{x:nA,y:iA}=rA;AA.addMarker(rA),eA.addPoint(nA,iA),tA&&tA.moveTo(nA,iA)}static pathL(tA){var{current:eA}=tA;return{current:eA,point:tA.getAsCurrentPoint()}}pathL(tA,eA){var{pathParser:AA}=this,{current:rA,point:nA}=PathElement.pathL(AA),{x:iA,y:sA}=nA;AA.addMarker(nA,rA),eA.addPoint(iA,sA),tA&&tA.lineTo(iA,sA)}static pathH(tA){var{current:eA,command:AA}=tA,rA=new Point((AA.relative?eA.x:0)+AA.x,eA.y);return tA.current=rA,{current:eA,point:rA}}pathH(tA,eA){var{pathParser:AA}=this,{current:rA,point:nA}=PathElement.pathH(AA),{x:iA,y:sA}=nA;AA.addMarker(nA,rA),eA.addPoint(iA,sA),tA&&tA.lineTo(iA,sA)}static pathV(tA){var{current:eA,command:AA}=tA,rA=new Point(eA.x,(AA.relative?eA.y:0)+AA.y);return tA.current=rA,{current:eA,point:rA}}pathV(tA,eA){var{pathParser:AA}=this,{current:rA,point:nA}=PathElement.pathV(AA),{x:iA,y:sA}=nA;AA.addMarker(nA,rA),eA.addPoint(iA,sA),tA&&tA.lineTo(iA,sA)}static pathC(tA){var{current:eA}=tA;return{current:eA,point:tA.getPoint(\"x1\",\"y1\"),controlPoint:tA.getAsControlPoint(\"x2\",\"y2\"),currentPoint:tA.getAsCurrentPoint()}}pathC(tA,eA){var{pathParser:AA}=this,{current:rA,point:nA,controlPoint:iA,currentPoint:sA}=PathElement.pathC(AA);AA.addMarker(sA,iA,nA),eA.addBezierCurve(rA.x,rA.y,nA.x,nA.y,iA.x,iA.y,sA.x,sA.y),tA&&tA.bezierCurveTo(nA.x,nA.y,iA.x,iA.y,sA.x,sA.y)}static pathS(tA){var{current:eA}=tA;return{current:eA,point:tA.getReflectedControlPoint(),controlPoint:tA.getAsControlPoint(\"x2\",\"y2\"),currentPoint:tA.getAsCurrentPoint()}}pathS(tA,eA){var{pathParser:AA}=this,{current:rA,point:nA,controlPoint:iA,currentPoint:sA}=PathElement.pathS(AA);AA.addMarker(sA,iA,nA),eA.addBezierCurve(rA.x,rA.y,nA.x,nA.y,iA.x,iA.y,sA.x,sA.y),tA&&tA.bezierCurveTo(nA.x,nA.y,iA.x,iA.y,sA.x,sA.y)}static pathQ(tA){var{current:eA}=tA;return{current:eA,controlPoint:tA.getAsControlPoint(\"x1\",\"y1\"),currentPoint:tA.getAsCurrentPoint()}}pathQ(tA,eA){var{pathParser:AA}=this,{current:rA,controlPoint:nA,currentPoint:iA}=PathElement.pathQ(AA);AA.addMarker(iA,nA,nA),eA.addQuadraticCurve(rA.x,rA.y,nA.x,nA.y,iA.x,iA.y),tA&&tA.quadraticCurveTo(nA.x,nA.y,iA.x,iA.y)}static pathT(tA){var{current:eA}=tA,AA=tA.getReflectedControlPoint();return tA.control=AA,{current:eA,controlPoint:AA,currentPoint:tA.getAsCurrentPoint()}}pathT(tA,eA){var{pathParser:AA}=this,{current:rA,controlPoint:nA,currentPoint:iA}=PathElement.pathT(AA);AA.addMarker(iA,nA,nA),eA.addQuadraticCurve(rA.x,rA.y,nA.x,nA.y,iA.x,iA.y),tA&&tA.quadraticCurveTo(nA.x,nA.y,iA.x,iA.y)}static pathA(tA){var{current:eA,command:AA}=tA,{rX:rA,rY:nA,xRot:iA,lArcFlag:sA,sweepFlag:oA}=AA,aA=iA*(Math.PI/180),lA=tA.getAsCurrentPoint(),cA=new Point(Math.cos(aA)*(eA.x-lA.x)/2+Math.sin(aA)*(eA.y-lA.y)/2,-Math.sin(aA)*(eA.x-lA.x)/2+Math.cos(aA)*(eA.y-lA.y)/2),uA=Math.pow(cA.x,2)/Math.pow(rA,2)+Math.pow(cA.y,2)/Math.pow(nA,2);uA>1&&(rA*=Math.sqrt(uA),nA*=Math.sqrt(uA));var hA=(sA===oA?-1:1)*Math.sqrt((Math.pow(rA,2)*Math.pow(nA,2)-Math.pow(rA,2)*Math.pow(cA.y,2)-Math.pow(nA,2)*Math.pow(cA.x,2))/(Math.pow(rA,2)*Math.pow(cA.y,2)+Math.pow(nA,2)*Math.pow(cA.x,2)));isNaN(hA)&&(hA=0);var dA=new Point(hA*rA*cA.y/nA,hA*-nA*cA.x/rA),fA=new Point((eA.x+lA.x)/2+Math.cos(aA)*dA.x-Math.sin(aA)*dA.y,(eA.y+lA.y)/2+Math.sin(aA)*dA.x+Math.cos(aA)*dA.y),gA=vectorsAngle([1,0],[(cA.x-dA.x)/rA,(cA.y-dA.y)/nA]),pA=[(cA.x-dA.x)/rA,(cA.y-dA.y)/nA],mA=[(-cA.x-dA.x)/rA,(-cA.y-dA.y)/nA],wA=vectorsAngle(pA,mA);return vectorsRatio(pA,mA)<=-1&&(wA=Math.PI),vectorsRatio(pA,mA)>=1&&(wA=0),{currentPoint:lA,rX:rA,rY:nA,sweepFlag:oA,xAxisRotation:aA,centp:fA,a1:gA,ad:wA}}pathA(tA,eA){var{pathParser:AA}=this,{currentPoint:rA,rX:nA,rY:iA,sweepFlag:sA,xAxisRotation:oA,centp:aA,a1:lA,ad:cA}=PathElement.pathA(AA),uA=1-sA?1:-1,hA=lA+uA*(cA/2),dA=new Point(aA.x+nA*Math.cos(hA),aA.y+iA*Math.sin(hA));if(AA.addMarkerAngle(dA,hA-uA*Math.PI/2),AA.addMarkerAngle(rA,hA-uA*Math.PI),eA.addPoint(rA.x,rA.y),tA&&!isNaN(lA)&&!isNaN(cA)){var fA=nA>iA?nA:iA,gA=nA>iA?1:nA/iA,pA=nA>iA?iA/nA:1;tA.translate(aA.x,aA.y),tA.rotate(oA),tA.scale(gA,pA),tA.arc(0,0,fA,lA,lA+cA,Boolean(1-sA)),tA.scale(1/gA,1/pA),tA.rotate(-oA),tA.translate(-aA.x,-aA.y)}}static pathZ(tA){tA.current=tA.start}pathZ(tA,eA){PathElement.pathZ(this.pathParser),tA&&eA.x1!==eA.x2&&eA.y1!==eA.y2&&tA.closePath()}}class GlyphElement extends PathElement{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"glyph\",this.horizAdvX=this.getAttribute(\"horiz-adv-x\").getNumber(),this.unicode=this.getAttribute(\"unicode\").getString(),this.arabicForm=this.getAttribute(\"arabic-form\").getString()}}class TextElement extends RenderedElement{constructor(tA,eA,AA){super(tA,eA,new.target===TextElement||AA),this.type=\"text\",this.x=0,this.y=0,this.measureCache=-1}setContext(tA){var eA=arguments.length>1&&void 0!==arguments[1]&&arguments[1];super.setContext(tA,eA);var AA=this.getStyle(\"dominant-baseline\").getTextBaseline()||this.getStyle(\"alignment-baseline\").getTextBaseline();AA&&(tA.textBaseline=AA)}initializeCoordinates(){this.x=0,this.y=0,this.leafTexts=[],this.textChunkStart=0,this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY}getBoundingBox(tA){if(\"text\"!==this.type)return this.getTElementBoundingBox(tA);this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(tA);var eA=null;return this.children.forEach(((AA,rA)=>{var nA=this.getChildBoundingBox(tA,this,this,rA);eA?eA.addBoundingBox(nA):eA=nA})),eA}getFontSize(){var{document:tA,parent:eA}=this,AA=Font.parse(tA.ctx.font).fontSize;return eA.getStyle(\"font-size\").getNumber(AA)}getTElementBoundingBox(tA){var eA=this.getFontSize();return new BoundingBox(this.x,this.y-eA,this.x+this.measureText(tA),this.y)}getGlyph(tA,eA,AA){var rA=eA[AA],nA=null;if(tA.isArabic){var iA=eA.length,sA=eA[AA-1],oA=eA[AA+1],aA=\"isolated\";if((0===AA||\" \"===sA)&&AA<iA-1&&\" \"!==oA&&(aA=\"terminal\"),AA>0&&\" \"!==sA&&AA<iA-1&&\" \"!==oA&&(aA=\"medial\"),AA>0&&\" \"!==sA&&(AA===iA-1||\" \"===oA)&&(aA=\"initial\"),void 0!==tA.glyphs[rA]){var lA=tA.glyphs[rA];nA=lA instanceof GlyphElement?lA:lA[aA]}}else nA=tA.glyphs[rA];return nA||(nA=tA.missingGlyph),nA}getText(){return\"\"}getTextFromNode(tA){var eA=tA||this.node,AA=Array.from(eA.parentNode.childNodes),rA=AA.indexOf(eA),nA=AA.length-1,iA=compressSpaces(eA.textContent||\"\");return 0===rA&&(iA=trimLeft(iA)),rA===nA&&(iA=trimRight(iA)),iA}renderChildren(tA){if(\"text\"===this.type){this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(tA),this.children.forEach(((eA,AA)=>{this.renderChild(tA,this,this,AA)}));var{mouse:eA}=this.document.screen;eA.isWorking()&&eA.checkBoundingBox(this,this.getBoundingBox(tA))}else this.renderTElementChildren(tA)}renderTElementChildren(tA){var{document:eA,parent:AA}=this,rA=this.getText(),nA=AA.getStyle(\"font-family\").getDefinition();if(nA)for(var{unitsPerEm:iA}=nA.fontFace,sA=Font.parse(eA.ctx.font),oA=AA.getStyle(\"font-size\").getNumber(sA.fontSize),aA=AA.getStyle(\"font-style\").getString(sA.fontStyle),lA=oA/iA,cA=nA.isRTL?rA.split(\"\").reverse().join(\"\"):rA,uA=toNumbers(AA.getAttribute(\"dx\").getString()),hA=cA.length,dA=0;dA<hA;dA++){var fA=this.getGlyph(nA,cA,dA);tA.translate(this.x,this.y),tA.scale(lA,-lA);var gA=tA.lineWidth;tA.lineWidth=tA.lineWidth*iA/oA,\"italic\"===aA&&tA.transform(1,0,.4,1,0,0),fA.render(tA),\"italic\"===aA&&tA.transform(1,0,-.4,1,0,0),tA.lineWidth=gA,tA.scale(1/lA,-1/lA),tA.translate(-this.x,-this.y),this.x+=oA*(fA.horizAdvX||nA.horizAdvX)/iA,void 0===uA[dA]||isNaN(uA[dA])||(this.x+=uA[dA])}else{var{x:pA,y:mA}=this;tA.fillStyle&&tA.fillText(rA,pA,mA),tA.strokeStyle&&tA.strokeText(rA,pA,mA)}}applyAnchoring(){if(!(this.textChunkStart>=this.leafTexts.length)){var tA=this.leafTexts[this.textChunkStart],eA=tA.getStyle(\"text-anchor\").getString(\"start\"),AA=0;AA=\"start\"===eA?tA.x-this.minX:\"end\"===eA?tA.x-this.maxX:tA.x-(this.minX+this.maxX)/2;for(var rA=this.textChunkStart;rA<this.leafTexts.length;rA++)this.leafTexts[rA].x+=AA;this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY,this.textChunkStart=this.leafTexts.length}}adjustChildCoordinatesRecursive(tA){this.children.forEach(((eA,AA)=>{this.adjustChildCoordinatesRecursiveCore(tA,this,this,AA)})),this.applyAnchoring()}adjustChildCoordinatesRecursiveCore(tA,eA,AA,rA){var nA=AA.children[rA];nA.children.length>0?nA.children.forEach(((AA,rA)=>{eA.adjustChildCoordinatesRecursiveCore(tA,eA,nA,rA)})):this.adjustChildCoordinates(tA,eA,AA,rA)}adjustChildCoordinates(tA,eA,AA,rA){var nA=AA.children[rA];if(\"function\"!=typeof nA.measureText)return nA;tA.save(),nA.setContext(tA,!0);var iA=nA.getAttribute(\"x\"),sA=nA.getAttribute(\"y\"),oA=nA.getAttribute(\"dx\"),aA=nA.getAttribute(\"dy\"),lA=nA.getStyle(\"font-family\").getDefinition(),cA=Boolean(lA)&&lA.isRTL;0===rA&&(iA.hasValue()||iA.setValue(nA.getInheritedAttribute(\"x\")),sA.hasValue()||sA.setValue(nA.getInheritedAttribute(\"y\")),oA.hasValue()||oA.setValue(nA.getInheritedAttribute(\"dx\")),aA.hasValue()||aA.setValue(nA.getInheritedAttribute(\"dy\")));var uA=nA.measureText(tA);return cA&&(eA.x-=uA),iA.hasValue()?(eA.applyAnchoring(),nA.x=iA.getPixels(\"x\"),oA.hasValue()&&(nA.x+=oA.getPixels(\"x\"))):(oA.hasValue()&&(eA.x+=oA.getPixels(\"x\")),nA.x=eA.x),eA.x=nA.x,cA||(eA.x+=uA),sA.hasValue()?(nA.y=sA.getPixels(\"y\"),aA.hasValue()&&(nA.y+=aA.getPixels(\"y\"))):(aA.hasValue()&&(eA.y+=aA.getPixels(\"y\")),nA.y=eA.y),eA.y=nA.y,eA.leafTexts.push(nA),eA.minX=Math.min(eA.minX,nA.x,nA.x+uA),eA.maxX=Math.max(eA.maxX,nA.x,nA.x+uA),nA.clearContext(tA),tA.restore(),nA}getChildBoundingBox(tA,eA,AA,rA){var nA=AA.children[rA];if(\"function\"!=typeof nA.getBoundingBox)return null;var iA=nA.getBoundingBox(tA);return iA?(nA.children.forEach(((AA,rA)=>{var sA=eA.getChildBoundingBox(tA,eA,nA,rA);iA.addBoundingBox(sA)})),iA):null}renderChild(tA,eA,AA,rA){var nA=AA.children[rA];nA.render(tA),nA.children.forEach(((AA,rA)=>{eA.renderChild(tA,eA,nA,rA)}))}measureText(tA){var{measureCache:eA}=this;if(~eA)return eA;var AA=this.getText(),rA=this.measureTargetText(tA,AA);return this.measureCache=rA,rA}measureTargetText(tA,eA){if(!eA.length)return 0;var{parent:AA}=this,rA=AA.getStyle(\"font-family\").getDefinition();if(rA){for(var nA=this.getFontSize(),iA=rA.isRTL?eA.split(\"\").reverse().join(\"\"):eA,sA=toNumbers(AA.getAttribute(\"dx\").getString()),oA=iA.length,aA=0,lA=0;lA<oA;lA++){aA+=(this.getGlyph(rA,iA,lA).horizAdvX||rA.horizAdvX)*nA/rA.fontFace.unitsPerEm,void 0===sA[lA]||isNaN(sA[lA])||(aA+=sA[lA])}return aA}if(!tA.measureText)return 10*eA.length;tA.save(),this.setContext(tA,!0);var{width:cA}=tA.measureText(eA);return this.clearContext(tA),tA.restore(),cA}getInheritedAttribute(tA){for(var eA=this;eA instanceof TextElement&&eA.isFirstChild();){var AA=eA.parent.getAttribute(tA);if(AA.hasValue(!0))return AA.getValue(\"0\");eA=eA.parent}return null}}class TSpanElement extends TextElement{constructor(tA,eA,AA){super(tA,eA,new.target===TSpanElement||AA),this.type=\"tspan\",this.text=this.children.length>0?\"\":this.getTextFromNode()}getText(){return this.text}}class TextNode extends TSpanElement{constructor(){super(...arguments),this.type=\"textNode\"}}class SVGElement extends RenderedElement{constructor(){super(...arguments),this.type=\"svg\",this.root=!1}setContext(tA){var eA,{document:AA}=this,{screen:rA,window:nA}=AA,iA=tA.canvas;if(rA.setDefaults(tA),iA.style&&void 0!==tA.font&&nA&&void 0!==nA.getComputedStyle){tA.font=nA.getComputedStyle(iA).getPropertyValue(\"font\");var sA=new Property(AA,\"fontSize\",Font.parse(tA.font).fontSize);sA.hasValue()&&(AA.rootEmSize=sA.getPixels(\"y\"),AA.emSize=AA.rootEmSize)}this.getAttribute(\"x\").hasValue()||this.getAttribute(\"x\",!0).setValue(0),this.getAttribute(\"y\").hasValue()||this.getAttribute(\"y\",!0).setValue(0);var{width:oA,height:aA}=rA.viewPort;this.getStyle(\"width\").hasValue()||this.getStyle(\"width\",!0).setValue(\"100%\"),this.getStyle(\"height\").hasValue()||this.getStyle(\"height\",!0).setValue(\"100%\"),this.getStyle(\"color\").hasValue()||this.getStyle(\"color\",!0).setValue(\"black\");var lA=this.getAttribute(\"refX\"),cA=this.getAttribute(\"refY\"),uA=this.getAttribute(\"viewBox\"),hA=uA.hasValue()?toNumbers(uA.getString()):null,dA=!this.root&&\"visible\"!==this.getStyle(\"overflow\").getValue(\"hidden\"),fA=0,gA=0,pA=0,mA=0;hA&&(fA=hA[0],gA=hA[1]),this.root||(oA=this.getStyle(\"width\").getPixels(\"x\"),aA=this.getStyle(\"height\").getPixels(\"y\"),\"marker\"===this.type&&(pA=fA,mA=gA,fA=0,gA=0)),rA.viewPort.setCurrent(oA,aA),!this.node||this.parent&&\"foreignObject\"!==(null===(eA=this.node.parentNode)||void 0===eA?void 0:eA.nodeName)||!this.getStyle(\"transform\",!1,!0).hasValue()||this.getStyle(\"transform-origin\",!1,!0).hasValue()||this.getStyle(\"transform-origin\",!0,!0).setValue(\"50% 50%\"),super.setContext(tA),tA.translate(this.getAttribute(\"x\").getPixels(\"x\"),this.getAttribute(\"y\").getPixels(\"y\")),hA&&(oA=hA[2],aA=hA[3]),AA.setViewBox({ctx:tA,aspectRatio:this.getAttribute(\"preserveAspectRatio\").getString(),width:rA.viewPort.width,desiredWidth:oA,height:rA.viewPort.height,desiredHeight:aA,minX:fA,minY:gA,refX:lA.getValue(),refY:cA.getValue(),clip:dA,clipX:pA,clipY:mA}),hA&&(rA.viewPort.removeCurrent(),rA.viewPort.setCurrent(oA,aA))}clearContext(tA){super.clearContext(tA),this.document.screen.viewPort.removeCurrent()}resize(tA){var eA=arguments.length>1&&void 0!==arguments[1]?arguments[1]:tA,AA=arguments.length>2&&void 0!==arguments[2]&&arguments[2],rA=this.getAttribute(\"width\",!0),nA=this.getAttribute(\"height\",!0),iA=this.getAttribute(\"viewBox\"),sA=this.getAttribute(\"style\"),oA=rA.getNumber(0),aA=nA.getNumber(0);if(AA)if(\"string\"==typeof AA)this.getAttribute(\"preserveAspectRatio\",!0).setValue(AA);else{var lA=this.getAttribute(\"preserveAspectRatio\");lA.hasValue()&&lA.setValue(lA.getString().replace(/^\\s*(\\S.*\\S)\\s*$/,\"$1\"))}if(rA.setValue(tA),nA.setValue(eA),iA.hasValue()||iA.setValue(\"0 0 \".concat(oA||tA,\" \").concat(aA||eA)),sA.hasValue()){var cA=this.getStyle(\"width\"),uA=this.getStyle(\"height\");cA.hasValue()&&cA.setValue(\"\".concat(tA,\"px\")),uA.hasValue()&&uA.setValue(\"\".concat(eA,\"px\"))}}}class RectElement extends PathElement{constructor(){super(...arguments),this.type=\"rect\"}path(tA){var eA=this.getAttribute(\"x\").getPixels(\"x\"),AA=this.getAttribute(\"y\").getPixels(\"y\"),rA=this.getStyle(\"width\",!1,!0).getPixels(\"x\"),nA=this.getStyle(\"height\",!1,!0).getPixels(\"y\"),iA=this.getAttribute(\"rx\"),sA=this.getAttribute(\"ry\"),oA=iA.getPixels(\"x\"),aA=sA.getPixels(\"y\");if(iA.hasValue()&&!sA.hasValue()&&(aA=oA),sA.hasValue()&&!iA.hasValue()&&(oA=aA),oA=Math.min(oA,rA/2),aA=Math.min(aA,nA/2),tA){var lA=(Math.sqrt(2)-1)/3*4;tA.beginPath(),nA>0&&rA>0&&(tA.moveTo(eA+oA,AA),tA.lineTo(eA+rA-oA,AA),tA.bezierCurveTo(eA+rA-oA+lA*oA,AA,eA+rA,AA+aA-lA*aA,eA+rA,AA+aA),tA.lineTo(eA+rA,AA+nA-aA),tA.bezierCurveTo(eA+rA,AA+nA-aA+lA*aA,eA+rA-oA+lA*oA,AA+nA,eA+rA-oA,AA+nA),tA.lineTo(eA+oA,AA+nA),tA.bezierCurveTo(eA+oA-lA*oA,AA+nA,eA,AA+nA-aA+lA*aA,eA,AA+nA-aA),tA.lineTo(eA,AA+aA),tA.bezierCurveTo(eA,AA+aA-lA*aA,eA+oA-lA*oA,AA,eA+oA,AA),tA.closePath())}return new BoundingBox(eA,AA,eA+rA,AA+nA)}getMarkers(){return null}}class CircleElement extends PathElement{constructor(){super(...arguments),this.type=\"circle\"}path(tA){var eA=this.getAttribute(\"cx\").getPixels(\"x\"),AA=this.getAttribute(\"cy\").getPixels(\"y\"),rA=this.getAttribute(\"r\").getPixels();return tA&&rA>0&&(tA.beginPath(),tA.arc(eA,AA,rA,0,2*Math.PI,!1),tA.closePath()),new BoundingBox(eA-rA,AA-rA,eA+rA,AA+rA)}getMarkers(){return null}}class EllipseElement extends PathElement{constructor(){super(...arguments),this.type=\"ellipse\"}path(tA){var eA=(Math.sqrt(2)-1)/3*4,AA=this.getAttribute(\"rx\").getPixels(\"x\"),rA=this.getAttribute(\"ry\").getPixels(\"y\"),nA=this.getAttribute(\"cx\").getPixels(\"x\"),iA=this.getAttribute(\"cy\").getPixels(\"y\");return tA&&AA>0&&rA>0&&(tA.beginPath(),tA.moveTo(nA+AA,iA),tA.bezierCurveTo(nA+AA,iA+eA*rA,nA+eA*AA,iA+rA,nA,iA+rA),tA.bezierCurveTo(nA-eA*AA,iA+rA,nA-AA,iA+eA*rA,nA-AA,iA),tA.bezierCurveTo(nA-AA,iA-eA*rA,nA-eA*AA,iA-rA,nA,iA-rA),tA.bezierCurveTo(nA+eA*AA,iA-rA,nA+AA,iA-eA*rA,nA+AA,iA),tA.closePath()),new BoundingBox(nA-AA,iA-rA,nA+AA,iA+rA)}getMarkers(){return null}}class LineElement extends PathElement{constructor(){super(...arguments),this.type=\"line\"}getPoints(){return[new Point(this.getAttribute(\"x1\").getPixels(\"x\"),this.getAttribute(\"y1\").getPixels(\"y\")),new Point(this.getAttribute(\"x2\").getPixels(\"x\"),this.getAttribute(\"y2\").getPixels(\"y\"))]}path(tA){var[{x:eA,y:AA},{x:rA,y:nA}]=this.getPoints();return tA&&(tA.beginPath(),tA.moveTo(eA,AA),tA.lineTo(rA,nA)),new BoundingBox(eA,AA,rA,nA)}getMarkers(){var[tA,eA]=this.getPoints(),AA=tA.angleTo(eA);return[[tA,AA],[eA,AA]]}}class PolylineElement extends PathElement{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"polyline\",this.points=[],this.points=Point.parsePath(this.getAttribute(\"points\").getString())}path(tA){var{points:eA}=this,[{x:AA,y:rA}]=eA,nA=new BoundingBox(AA,rA);return tA&&(tA.beginPath(),tA.moveTo(AA,rA)),eA.forEach((eA=>{var{x:AA,y:rA}=eA;nA.addPoint(AA,rA),tA&&tA.lineTo(AA,rA)})),nA}getMarkers(){var{points:tA}=this,eA=tA.length-1,AA=[];return tA.forEach(((rA,nA)=>{nA!==eA&&AA.push([rA,rA.angleTo(tA[nA+1])])})),AA.length>0&&AA.push([tA[tA.length-1],AA[AA.length-1][1]]),AA}}class PolygonElement extends PolylineElement{constructor(){super(...arguments),this.type=\"polygon\"}path(tA){var eA=super.path(tA),[{x:AA,y:rA}]=this.points;return tA&&(tA.lineTo(AA,rA),tA.closePath()),eA}}class PatternElement extends Element{constructor(){super(...arguments),this.type=\"pattern\"}createPattern(tA,eA,AA){var rA=this.getStyle(\"width\").getPixels(\"x\",!0),nA=this.getStyle(\"height\").getPixels(\"y\",!0),iA=new SVGElement(this.document,null);iA.attributes.viewBox=new Property(this.document,\"viewBox\",this.getAttribute(\"viewBox\").getValue()),iA.attributes.width=new Property(this.document,\"width\",\"\".concat(rA,\"px\")),iA.attributes.height=new Property(this.document,\"height\",\"\".concat(nA,\"px\")),iA.attributes.transform=new Property(this.document,\"transform\",this.getAttribute(\"patternTransform\").getValue()),iA.children=this.children;var sA=this.document.createCanvas(rA,nA),oA=sA.getContext(\"2d\"),aA=this.getAttribute(\"x\"),lA=this.getAttribute(\"y\");aA.hasValue()&&lA.hasValue()&&oA.translate(aA.getPixels(\"x\",!0),lA.getPixels(\"y\",!0)),AA.hasValue()?this.styles[\"fill-opacity\"]=AA:Reflect.deleteProperty(this.styles,\"fill-opacity\");for(var cA=-1;cA<=1;cA++)for(var uA=-1;uA<=1;uA++)oA.save(),iA.attributes.x=new Property(this.document,\"x\",cA*sA.width),iA.attributes.y=new Property(this.document,\"y\",uA*sA.height),iA.render(oA),oA.restore();return tA.createPattern(sA,\"repeat\")}}class MarkerElement extends Element{constructor(){super(...arguments),this.type=\"marker\"}render(tA,eA,AA){if(eA){var{x:rA,y:nA}=eA,iA=this.getAttribute(\"orient\").getString(\"auto\"),sA=this.getAttribute(\"markerUnits\").getString(\"strokeWidth\");tA.translate(rA,nA),\"auto\"===iA&&tA.rotate(AA),\"strokeWidth\"===sA&&tA.scale(tA.lineWidth,tA.lineWidth),tA.save();var oA=new SVGElement(this.document,null);oA.type=this.type,oA.attributes.viewBox=new Property(this.document,\"viewBox\",this.getAttribute(\"viewBox\").getValue()),oA.attributes.refX=new Property(this.document,\"refX\",this.getAttribute(\"refX\").getValue()),oA.attributes.refY=new Property(this.document,\"refY\",this.getAttribute(\"refY\").getValue()),oA.attributes.width=new Property(this.document,\"width\",this.getAttribute(\"markerWidth\").getValue()),oA.attributes.height=new Property(this.document,\"height\",this.getAttribute(\"markerHeight\").getValue()),oA.attributes.overflow=new Property(this.document,\"overflow\",this.getAttribute(\"overflow\").getValue()),oA.attributes.fill=new Property(this.document,\"fill\",this.getAttribute(\"fill\").getColor(\"black\")),oA.attributes.stroke=new Property(this.document,\"stroke\",this.getAttribute(\"stroke\").getValue(\"none\")),oA.children=this.children,oA.render(tA),tA.restore(),\"strokeWidth\"===sA&&tA.scale(1/tA.lineWidth,1/tA.lineWidth),\"auto\"===iA&&tA.rotate(-AA),tA.translate(-rA,-nA)}}}class DefsElement extends Element{constructor(){super(...arguments),this.type=\"defs\"}render(){}}class GElement extends RenderedElement{constructor(){super(...arguments),this.type=\"g\"}getBoundingBox(tA){var eA=new BoundingBox;return this.children.forEach((AA=>{eA.addBoundingBox(AA.getBoundingBox(tA))})),eA}}class GradientElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA),this.attributesToInherit=[\"gradientUnits\"],this.stops=[];var{stops:rA,children:nA}=this;nA.forEach((tA=>{\"stop\"===tA.type&&rA.push(tA)}))}getGradientUnits(){return this.getAttribute(\"gradientUnits\").getString(\"objectBoundingBox\")}createGradient(tA,eA,AA){var rA=this;this.getHrefAttribute().hasValue()&&(rA=this.getHrefAttribute().getDefinition(),this.inheritStopContainer(rA));var{stops:nA}=rA,iA=this.getGradient(tA,eA);if(!iA)return this.addParentOpacity(AA,nA[nA.length-1].color);if(nA.forEach((tA=>{iA.addColorStop(tA.offset,this.addParentOpacity(AA,tA.color))})),this.getAttribute(\"gradientTransform\").hasValue()){var{document:sA}=this,{MAX_VIRTUAL_PIXELS:oA,viewPort:aA}=sA.screen,[lA]=aA.viewPorts,cA=new RectElement(sA,null);cA.attributes.x=new Property(sA,\"x\",-oA/3),cA.attributes.y=new Property(sA,\"y\",-oA/3),cA.attributes.width=new Property(sA,\"width\",oA),cA.attributes.height=new Property(sA,\"height\",oA);var uA=new GElement(sA,null);uA.attributes.transform=new Property(sA,\"transform\",this.getAttribute(\"gradientTransform\").getValue()),uA.children=[cA];var hA=new SVGElement(sA,null);hA.attributes.x=new Property(sA,\"x\",0),hA.attributes.y=new Property(sA,\"y\",0),hA.attributes.width=new Property(sA,\"width\",lA.width),hA.attributes.height=new Property(sA,\"height\",lA.height),hA.children=[uA];var dA=sA.createCanvas(lA.width,lA.height),fA=dA.getContext(\"2d\");return fA.fillStyle=iA,hA.render(fA),fA.createPattern(dA,\"no-repeat\")}return iA}inheritStopContainer(tA){this.attributesToInherit.forEach((eA=>{!this.getAttribute(eA).hasValue()&&tA.getAttribute(eA).hasValue()&&this.getAttribute(eA,!0).setValue(tA.getAttribute(eA).getValue())}))}addParentOpacity(tA,eA){return tA.hasValue()?new Property(this.document,\"color\",eA).addOpacity(tA).getColor():eA}}class LinearGradientElement extends GradientElement{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"linearGradient\",this.attributesToInherit.push(\"x1\",\"y1\",\"x2\",\"y2\")}getGradient(tA,eA){var AA=\"objectBoundingBox\"===this.getGradientUnits(),rA=AA?eA.getBoundingBox(tA):null;if(AA&&!rA)return null;this.getAttribute(\"x1\").hasValue()||this.getAttribute(\"y1\").hasValue()||this.getAttribute(\"x2\").hasValue()||this.getAttribute(\"y2\").hasValue()||(this.getAttribute(\"x1\",!0).setValue(0),this.getAttribute(\"y1\",!0).setValue(0),this.getAttribute(\"x2\",!0).setValue(1),this.getAttribute(\"y2\",!0).setValue(0));var nA=AA?rA.x+rA.width*this.getAttribute(\"x1\").getNumber():this.getAttribute(\"x1\").getPixels(\"x\"),iA=AA?rA.y+rA.height*this.getAttribute(\"y1\").getNumber():this.getAttribute(\"y1\").getPixels(\"y\"),sA=AA?rA.x+rA.width*this.getAttribute(\"x2\").getNumber():this.getAttribute(\"x2\").getPixels(\"x\"),oA=AA?rA.y+rA.height*this.getAttribute(\"y2\").getNumber():this.getAttribute(\"y2\").getPixels(\"y\");return nA===sA&&iA===oA?null:tA.createLinearGradient(nA,iA,sA,oA)}}class RadialGradientElement extends GradientElement{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"radialGradient\",this.attributesToInherit.push(\"cx\",\"cy\",\"r\",\"fx\",\"fy\",\"fr\")}getGradient(tA,eA){var AA=\"objectBoundingBox\"===this.getGradientUnits(),rA=eA.getBoundingBox(tA);if(AA&&!rA)return null;this.getAttribute(\"cx\").hasValue()||this.getAttribute(\"cx\",!0).setValue(\"50%\"),this.getAttribute(\"cy\").hasValue()||this.getAttribute(\"cy\",!0).setValue(\"50%\"),this.getAttribute(\"r\").hasValue()||this.getAttribute(\"r\",!0).setValue(\"50%\");var nA=AA?rA.x+rA.width*this.getAttribute(\"cx\").getNumber():this.getAttribute(\"cx\").getPixels(\"x\"),iA=AA?rA.y+rA.height*this.getAttribute(\"cy\").getNumber():this.getAttribute(\"cy\").getPixels(\"y\"),sA=nA,oA=iA;this.getAttribute(\"fx\").hasValue()&&(sA=AA?rA.x+rA.width*this.getAttribute(\"fx\").getNumber():this.getAttribute(\"fx\").getPixels(\"x\")),this.getAttribute(\"fy\").hasValue()&&(oA=AA?rA.y+rA.height*this.getAttribute(\"fy\").getNumber():this.getAttribute(\"fy\").getPixels(\"y\"));var aA=AA?(rA.width+rA.height)/2*this.getAttribute(\"r\").getNumber():this.getAttribute(\"r\").getPixels(),lA=this.getAttribute(\"fr\").getPixels();return tA.createRadialGradient(sA,oA,lA,nA,iA,aA)}}class StopElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"stop\";var rA=Math.max(0,Math.min(1,this.getAttribute(\"offset\").getNumber())),nA=this.getStyle(\"stop-opacity\"),iA=this.getStyle(\"stop-color\",!0);\"\"===iA.getString()&&iA.setValue(\"#000\"),nA.hasValue()&&(iA=iA.addOpacity(nA)),this.offset=rA,this.color=iA.getColor()}}class AnimateElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"animate\",this.duration=0,this.initialValue=null,this.initialUnits=\"\",this.removed=!1,this.frozen=!1,tA.screen.animations.push(this),this.begin=this.getAttribute(\"begin\").getMilliseconds(),this.maxDuration=this.begin+this.getAttribute(\"dur\").getMilliseconds(),this.from=this.getAttribute(\"from\"),this.to=this.getAttribute(\"to\"),this.values=new Property(tA,\"values\",null);var rA=this.getAttribute(\"values\");rA.hasValue()&&this.values.setValue(rA.getString().split(\";\"))}getProperty(){var tA=this.getAttribute(\"attributeType\").getString(),eA=this.getAttribute(\"attributeName\").getString();return\"CSS\"===tA?this.parent.getStyle(eA,!0):this.parent.getAttribute(eA,!0)}calcValue(){var{initialUnits:tA}=this,{progress:eA,from:AA,to:rA}=this.getProgress(),nA=AA.getNumber()+(rA.getNumber()-AA.getNumber())*eA;return\"%\"===tA&&(nA*=100),\"\".concat(nA).concat(tA)}update(tA){var{parent:eA}=this,AA=this.getProperty();if(this.initialValue||(this.initialValue=AA.getString(),this.initialUnits=AA.getUnits()),this.duration>this.maxDuration){var rA=this.getAttribute(\"fill\").getString(\"remove\");if(\"indefinite\"===this.getAttribute(\"repeatCount\").getString()||\"indefinite\"===this.getAttribute(\"repeatDur\").getString())this.duration=0;else if(\"freeze\"!==rA||this.frozen){if(\"remove\"===rA&&!this.removed)return this.removed=!0,AA.setValue(eA.animationFrozen?eA.animationFrozenValue:this.initialValue),!0}else this.frozen=!0,eA.animationFrozen=!0,eA.animationFrozenValue=AA.getString();return!1}this.duration+=tA;var nA=!1;if(this.begin<this.duration){var iA=this.calcValue(),sA=this.getAttribute(\"type\");if(sA.hasValue()){var oA=sA.getString();iA=\"\".concat(oA,\"(\").concat(iA,\")\")}AA.setValue(iA),nA=!0}return nA}getProgress(){var{document:tA,values:eA}=this,AA={progress:(this.duration-this.begin)/(this.maxDuration-this.begin)};if(eA.hasValue()){var rA=AA.progress*(eA.getValue().length-1),nA=Math.floor(rA),iA=Math.ceil(rA);AA.from=new Property(tA,\"from\",parseFloat(eA.getValue()[nA])),AA.to=new Property(tA,\"to\",parseFloat(eA.getValue()[iA])),AA.progress=(rA-nA)/(iA-nA)}else AA.from=this.from,AA.to=this.to;return AA}}class AnimateColorElement extends AnimateElement{constructor(){super(...arguments),this.type=\"animateColor\"}calcValue(){var{progress:tA,from:eA,to:AA}=this.getProgress(),rA=new rgbcolor(eA.getColor()),nA=new rgbcolor(AA.getColor());if(rA.ok&&nA.ok){var iA=rA.r+(nA.r-rA.r)*tA,sA=rA.g+(nA.g-rA.g)*tA,oA=rA.b+(nA.b-rA.b)*tA;return\"rgb(\".concat(Math.floor(iA),\", \").concat(Math.floor(sA),\", \").concat(Math.floor(oA),\")\")}return this.getAttribute(\"from\").getColor()}}class AnimateTransformElement extends AnimateElement{constructor(){super(...arguments),this.type=\"animateTransform\"}calcValue(){var{progress:tA,from:eA,to:AA}=this.getProgress(),rA=toNumbers(eA.getString()),nA=toNumbers(AA.getString()),iA=rA.map(((eA,AA)=>eA+(nA[AA]-eA)*tA)).join(\" \");return iA}}class FontElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"font\",this.glyphs={},this.horizAdvX=this.getAttribute(\"horiz-adv-x\").getNumber();var{definitions:rA}=tA,{children:nA}=this;for(var iA of nA)switch(iA.type){case\"font-face\":this.fontFace=iA;var sA=iA.getStyle(\"font-family\");sA.hasValue()&&(rA[sA.getString()]=this);break;case\"missing-glyph\":this.missingGlyph=iA;break;case\"glyph\":var oA=iA;oA.arabicForm?(this.isRTL=!0,this.isArabic=!0,void 0===this.glyphs[oA.unicode]&&(this.glyphs[oA.unicode]={}),this.glyphs[oA.unicode][oA.arabicForm]=oA):this.glyphs[oA.unicode]=oA}}render(){}}class FontFaceElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"font-face\",this.ascent=this.getAttribute(\"ascent\").getNumber(),this.descent=this.getAttribute(\"descent\").getNumber(),this.unitsPerEm=this.getAttribute(\"units-per-em\").getNumber()}}class MissingGlyphElement extends PathElement{constructor(){super(...arguments),this.type=\"missing-glyph\",this.horizAdvX=0}}class TRefElement extends TextElement{constructor(){super(...arguments),this.type=\"tref\"}getText(){var tA=this.getHrefAttribute().getDefinition();if(tA){var eA=tA.children[0];if(eA)return eA.getText()}return\"\"}}class AElement extends TextElement{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"a\";var{childNodes:rA}=eA,nA=rA[0],iA=rA.length>0&&Array.from(rA).every((tA=>3===tA.nodeType));this.hasText=iA,this.text=iA?this.getTextFromNode(nA):\"\"}getText(){return this.text}renderChildren(tA){if(this.hasText){super.renderChildren(tA);var{document:eA,x:AA,y:rA}=this,{mouse:nA}=eA.screen,iA=new Property(eA,\"fontSize\",Font.parse(eA.ctx.font).fontSize);nA.isWorking()&&nA.checkBoundingBox(this,new BoundingBox(AA,rA-iA.getPixels(\"y\"),AA+this.measureText(tA),rA))}else if(this.children.length>0){var sA=new GElement(this.document,null);sA.children=this.children,sA.parent=this,sA.render(tA)}}onClick(){var{window:tA}=this.document;tA&&tA.open(this.getHrefAttribute().getString())}onMouseMove(){this.document.ctx.canvas.style.cursor=\"pointer\"}}function ownKeys$2(tA,eA){var AA=Object.keys(tA);if(Object.getOwnPropertySymbols){var rA=Object.getOwnPropertySymbols(tA);eA&&(rA=rA.filter((function(eA){return Object.getOwnPropertyDescriptor(tA,eA).enumerable}))),AA.push.apply(AA,rA)}return AA}function _objectSpread$2(tA){for(var eA=1;eA<arguments.length;eA++){var AA=null!=arguments[eA]?arguments[eA]:{};eA%2?ownKeys$2(Object(AA),!0).forEach((function(eA){_defineProperty(tA,eA,AA[eA])})):Object.getOwnPropertyDescriptors?Object.defineProperties(tA,Object.getOwnPropertyDescriptors(AA)):ownKeys$2(Object(AA)).forEach((function(eA){Object.defineProperty(tA,eA,Object.getOwnPropertyDescriptor(AA,eA))}))}return tA}class TextPathElement extends TextElement{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"textPath\",this.textWidth=0,this.textHeight=0,this.pathLength=-1,this.glyphInfo=null,this.letterSpacingCache=[],this.measuresCache=new Map([[\"\",0]]);var rA=this.getHrefAttribute().getDefinition();this.text=this.getTextFromNode(),this.dataArray=this.parsePathData(rA)}getText(){return this.text}path(tA){var{dataArray:eA}=this;tA&&tA.beginPath(),eA.forEach((eA=>{var{type:AA,points:rA}=eA;switch(AA){case PathParser.LINE_TO:tA&&tA.lineTo(rA[0],rA[1]);break;case PathParser.MOVE_TO:tA&&tA.moveTo(rA[0],rA[1]);break;case PathParser.CURVE_TO:tA&&tA.bezierCurveTo(rA[0],rA[1],rA[2],rA[3],rA[4],rA[5]);break;case PathParser.QUAD_TO:tA&&tA.quadraticCurveTo(rA[0],rA[1],rA[2],rA[3]);break;case PathParser.ARC:var[nA,iA,sA,oA,aA,lA,cA,uA]=rA,hA=sA>oA?sA:oA,dA=sA>oA?1:sA/oA,fA=sA>oA?oA/sA:1;tA&&(tA.translate(nA,iA),tA.rotate(cA),tA.scale(dA,fA),tA.arc(0,0,hA,aA,aA+lA,Boolean(1-uA)),tA.scale(1/dA,1/fA),tA.rotate(-cA),tA.translate(-nA,-iA));break;case PathParser.CLOSE_PATH:tA&&tA.closePath()}}))}renderChildren(tA){this.setTextData(tA),tA.save();var eA=this.parent.getStyle(\"text-decoration\").getString(),AA=this.getFontSize(),{glyphInfo:rA}=this,nA=tA.fillStyle;\"underline\"===eA&&tA.beginPath(),rA.forEach(((rA,nA)=>{var{p0:iA,p1:sA,rotation:oA,text:aA}=rA;tA.save(),tA.translate(iA.x,iA.y),tA.rotate(oA),tA.fillStyle&&tA.fillText(aA,0,0),tA.strokeStyle&&tA.strokeText(aA,0,0),tA.restore(),\"underline\"===eA&&(0===nA&&tA.moveTo(iA.x,iA.y+AA/8),tA.lineTo(sA.x,sA.y+AA/5))})),\"underline\"===eA&&(tA.lineWidth=AA/20,tA.strokeStyle=nA,tA.stroke(),tA.closePath()),tA.restore()}getLetterSpacingAt(){var tA=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.letterSpacingCache[tA]||0}findSegmentToFitChar(tA,eA,AA,rA,nA,iA,sA,oA,aA){var lA=iA,cA=this.measureText(tA,oA);\" \"===oA&&\"justify\"===eA&&AA<rA&&(cA+=(rA-AA)/nA),aA>-1&&(lA+=this.getLetterSpacingAt(aA));var uA=this.textHeight/20,hA=this.getEquidistantPointOnPath(lA,uA,0),dA=this.getEquidistantPointOnPath(lA+cA,uA,0),fA={p0:hA,p1:dA},gA=hA&&dA?Math.atan2(dA.y-hA.y,dA.x-hA.x):0;if(sA){var pA=Math.cos(Math.PI/2+gA)*sA,mA=Math.cos(-gA)*sA;fA.p0=_objectSpread$2(_objectSpread$2({},hA),{},{x:hA.x+pA,y:hA.y+mA}),fA.p1=_objectSpread$2(_objectSpread$2({},dA),{},{x:dA.x+pA,y:dA.y+mA})}return{offset:lA+=cA,segment:fA,rotation:gA}}measureText(tA,eA){var{measuresCache:AA}=this,rA=eA||this.getText();if(AA.has(rA))return AA.get(rA);var nA=this.measureTargetText(tA,rA);return AA.set(rA,nA),nA}setTextData(tA){if(!this.glyphInfo){var eA=this.getText(),AA=eA.split(\"\"),rA=eA.split(\" \").length-1,nA=this.parent.getAttribute(\"dx\").split().map((tA=>tA.getPixels(\"x\"))),iA=this.parent.getAttribute(\"dy\").getPixels(\"y\"),sA=this.parent.getStyle(\"text-anchor\").getString(\"start\"),oA=this.getStyle(\"letter-spacing\"),aA=this.parent.getStyle(\"letter-spacing\"),lA=0;oA.hasValue()&&\"inherit\"!==oA.getValue()?oA.hasValue()&&\"initial\"!==oA.getValue()&&\"unset\"!==oA.getValue()&&(lA=oA.getPixels()):lA=aA.getPixels();var cA=[],uA=eA.length;this.letterSpacingCache=cA;for(var hA=0;hA<uA;hA++)cA.push(void 0!==nA[hA]?nA[hA]:lA);var dA=cA.reduce(((tA,eA,AA)=>0===AA?0:tA+eA||0),0),fA=this.measureText(tA),gA=Math.max(fA+dA,0);this.textWidth=fA,this.textHeight=this.getFontSize(),this.glyphInfo=[];var pA=this.getPathLength(),mA=this.getStyle(\"startOffset\").getNumber(0)*pA,wA=0;\"middle\"!==sA&&\"center\"!==sA||(wA=-gA/2),\"end\"!==sA&&\"right\"!==sA||(wA=-gA),wA+=mA,AA.forEach(((eA,nA)=>{var{offset:oA,segment:aA,rotation:lA}=this.findSegmentToFitChar(tA,sA,gA,pA,rA,wA,iA,eA,nA);wA=oA,aA.p0&&aA.p1&&this.glyphInfo.push({text:AA[nA],p0:aA.p0,p1:aA.p1,rotation:lA})}))}}parsePathData(tA){if(this.pathLength=-1,!tA)return[];var eA=[],{pathParser:AA}=tA;for(AA.reset();!AA.isEnd();){var{current:rA}=AA,nA=rA?rA.x:0,iA=rA?rA.y:0,sA=AA.next(),oA=sA.type,aA=[];switch(sA.type){case PathParser.MOVE_TO:this.pathM(AA,aA);break;case PathParser.LINE_TO:oA=this.pathL(AA,aA);break;case PathParser.HORIZ_LINE_TO:oA=this.pathH(AA,aA);break;case PathParser.VERT_LINE_TO:oA=this.pathV(AA,aA);break;case PathParser.CURVE_TO:this.pathC(AA,aA);break;case PathParser.SMOOTH_CURVE_TO:oA=this.pathS(AA,aA);break;case PathParser.QUAD_TO:this.pathQ(AA,aA);break;case PathParser.SMOOTH_QUAD_TO:oA=this.pathT(AA,aA);break;case PathParser.ARC:aA=this.pathA(AA);break;case PathParser.CLOSE_PATH:PathElement.pathZ(AA)}sA.type!==PathParser.CLOSE_PATH?eA.push({type:oA,points:aA,start:{x:nA,y:iA},pathLength:this.calcLength(nA,iA,oA,aA)}):eA.push({type:PathParser.CLOSE_PATH,points:[],pathLength:0})}return eA}pathM(tA,eA){var{x:AA,y:rA}=PathElement.pathM(tA).point;eA.push(AA,rA)}pathL(tA,eA){var{x:AA,y:rA}=PathElement.pathL(tA).point;return eA.push(AA,rA),PathParser.LINE_TO}pathH(tA,eA){var{x:AA,y:rA}=PathElement.pathH(tA).point;return eA.push(AA,rA),PathParser.LINE_TO}pathV(tA,eA){var{x:AA,y:rA}=PathElement.pathV(tA).point;return eA.push(AA,rA),PathParser.LINE_TO}pathC(tA,eA){var{point:AA,controlPoint:rA,currentPoint:nA}=PathElement.pathC(tA);eA.push(AA.x,AA.y,rA.x,rA.y,nA.x,nA.y)}pathS(tA,eA){var{point:AA,controlPoint:rA,currentPoint:nA}=PathElement.pathS(tA);return eA.push(AA.x,AA.y,rA.x,rA.y,nA.x,nA.y),PathParser.CURVE_TO}pathQ(tA,eA){var{controlPoint:AA,currentPoint:rA}=PathElement.pathQ(tA);eA.push(AA.x,AA.y,rA.x,rA.y)}pathT(tA,eA){var{controlPoint:AA,currentPoint:rA}=PathElement.pathT(tA);return eA.push(AA.x,AA.y,rA.x,rA.y),PathParser.QUAD_TO}pathA(tA){var{rX:eA,rY:AA,sweepFlag:rA,xAxisRotation:nA,centp:iA,a1:sA,ad:oA}=PathElement.pathA(tA);return 0===rA&&oA>0&&(oA-=2*Math.PI),1===rA&&oA<0&&(oA+=2*Math.PI),[iA.x,iA.y,eA,AA,sA,oA,nA,rA]}calcLength(tA,eA,AA,rA){var nA=0,iA=null,sA=null,oA=0;switch(AA){case PathParser.LINE_TO:return this.getLineLength(tA,eA,rA[0],rA[1]);case PathParser.CURVE_TO:for(nA=0,iA=this.getPointOnCubicBezier(0,tA,eA,rA[0],rA[1],rA[2],rA[3],rA[4],rA[5]),oA=.01;oA<=1;oA+=.01)sA=this.getPointOnCubicBezier(oA,tA,eA,rA[0],rA[1],rA[2],rA[3],rA[4],rA[5]),nA+=this.getLineLength(iA.x,iA.y,sA.x,sA.y),iA=sA;return nA;case PathParser.QUAD_TO:for(nA=0,iA=this.getPointOnQuadraticBezier(0,tA,eA,rA[0],rA[1],rA[2],rA[3]),oA=.01;oA<=1;oA+=.01)sA=this.getPointOnQuadraticBezier(oA,tA,eA,rA[0],rA[1],rA[2],rA[3]),nA+=this.getLineLength(iA.x,iA.y,sA.x,sA.y),iA=sA;return nA;case PathParser.ARC:nA=0;var aA=rA[4],lA=rA[5],cA=rA[4]+lA,uA=Math.PI/180;if(Math.abs(aA-cA)<uA&&(uA=Math.abs(aA-cA)),iA=this.getPointOnEllipticalArc(rA[0],rA[1],rA[2],rA[3],aA,0),lA<0)for(oA=aA-uA;oA>cA;oA-=uA)sA=this.getPointOnEllipticalArc(rA[0],rA[1],rA[2],rA[3],oA,0),nA+=this.getLineLength(iA.x,iA.y,sA.x,sA.y),iA=sA;else for(oA=aA+uA;oA<cA;oA+=uA)sA=this.getPointOnEllipticalArc(rA[0],rA[1],rA[2],rA[3],oA,0),nA+=this.getLineLength(iA.x,iA.y,sA.x,sA.y),iA=sA;return sA=this.getPointOnEllipticalArc(rA[0],rA[1],rA[2],rA[3],cA,0),nA+=this.getLineLength(iA.x,iA.y,sA.x,sA.y)}return 0}getPointOnLine(tA,eA,AA,rA,nA){var iA=arguments.length>5&&void 0!==arguments[5]?arguments[5]:eA,sA=arguments.length>6&&void 0!==arguments[6]?arguments[6]:AA,oA=(nA-AA)/(rA-eA+1e-8),aA=Math.sqrt(tA*tA/(1+oA*oA));rA<eA&&(aA*=-1);var lA=oA*aA,cA=null;if(rA===eA)cA={x:iA,y:sA+lA};else if((sA-AA)/(iA-eA+1e-8)===oA)cA={x:iA+aA,y:sA+lA};else{var uA,hA,dA=this.getLineLength(eA,AA,rA,nA);if(dA<1e-8)return null;var fA=(iA-eA)*(rA-eA)+(sA-AA)*(nA-AA);uA=eA+(fA/=dA*dA)*(rA-eA),hA=AA+fA*(nA-AA);var gA=this.getLineLength(iA,sA,uA,hA),pA=Math.sqrt(tA*tA-gA*gA);aA=Math.sqrt(pA*pA/(1+oA*oA)),rA<eA&&(aA*=-1),cA={x:uA+aA,y:hA+(lA=oA*aA)}}return cA}getPointOnPath(tA){var eA=this.getPathLength(),AA=0,rA=null;if(tA<-5e-5||tA-5e-5>eA)return null;var{dataArray:nA}=this;for(var iA of nA){if(!iA||!(iA.pathLength<5e-5||AA+iA.pathLength+5e-5<tA)){var sA=tA-AA,oA=0;switch(iA.type){case PathParser.LINE_TO:rA=this.getPointOnLine(sA,iA.start.x,iA.start.y,iA.points[0],iA.points[1],iA.start.x,iA.start.y);break;case PathParser.ARC:var aA=iA.points[4],lA=iA.points[5],cA=iA.points[4]+lA;if(oA=aA+sA/iA.pathLength*lA,lA<0&&oA<cA||lA>=0&&oA>cA)break;rA=this.getPointOnEllipticalArc(iA.points[0],iA.points[1],iA.points[2],iA.points[3],oA,iA.points[6]);break;case PathParser.CURVE_TO:(oA=sA/iA.pathLength)>1&&(oA=1),rA=this.getPointOnCubicBezier(oA,iA.start.x,iA.start.y,iA.points[0],iA.points[1],iA.points[2],iA.points[3],iA.points[4],iA.points[5]);break;case PathParser.QUAD_TO:(oA=sA/iA.pathLength)>1&&(oA=1),rA=this.getPointOnQuadraticBezier(oA,iA.start.x,iA.start.y,iA.points[0],iA.points[1],iA.points[2],iA.points[3])}if(rA)return rA;break}AA+=iA.pathLength}return null}getLineLength(tA,eA,AA,rA){return Math.sqrt((AA-tA)*(AA-tA)+(rA-eA)*(rA-eA))}getPathLength(){return-1===this.pathLength&&(this.pathLength=this.dataArray.reduce(((tA,eA)=>eA.pathLength>0?tA+eA.pathLength:tA),0)),this.pathLength}getPointOnCubicBezier(tA,eA,AA,rA,nA,iA,sA,oA,aA){return{x:oA*CB1(tA)+iA*CB2(tA)+rA*CB3(tA)+eA*CB4(tA),y:aA*CB1(tA)+sA*CB2(tA)+nA*CB3(tA)+AA*CB4(tA)}}getPointOnQuadraticBezier(tA,eA,AA,rA,nA,iA,sA){return{x:iA*QB1(tA)+rA*QB2(tA)+eA*QB3(tA),y:sA*QB1(tA)+nA*QB2(tA)+AA*QB3(tA)}}getPointOnEllipticalArc(tA,eA,AA,rA,nA,iA){var sA=Math.cos(iA),oA=Math.sin(iA),aA=AA*Math.cos(nA),lA=rA*Math.sin(nA);return{x:tA+(aA*sA-lA*oA),y:eA+(aA*oA+lA*sA)}}buildEquidistantCache(tA,eA){var AA=this.getPathLength(),rA=eA||.25,nA=tA||AA/100;if(!this.equidistantCache||this.equidistantCache.step!==nA||this.equidistantCache.precision!==rA){this.equidistantCache={step:nA,precision:rA,points:[]};for(var iA=0,sA=0;sA<=AA;sA+=rA){var oA=this.getPointOnPath(sA),aA=this.getPointOnPath(sA+rA);oA&&aA&&((iA+=this.getLineLength(oA.x,oA.y,aA.x,aA.y))>=nA&&(this.equidistantCache.points.push({x:oA.x,y:oA.y,distance:sA}),iA-=nA))}}}getEquidistantPointOnPath(tA,eA,AA){if(this.buildEquidistantCache(eA,AA),tA<0||tA-this.getPathLength()>5e-5)return null;var rA=Math.round(tA/this.getPathLength()*(this.equidistantCache.points.length-1));return this.equidistantCache.points[rA]||null}}var tv=/^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;class ImageElement extends RenderedElement{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"image\",this.loaded=!1;var rA=this.getHrefAttribute().getString();if(rA){var nA=rA.endsWith(\".svg\")||/^\\s*data:image\\/svg\\+xml/i.test(rA);tA.images.push(this),nA?this.loadSvg(rA):this.loadImage(rA),this.isSvg=nA}}loadImage(tA){var eA=this;return _asyncToGenerator((function*(){try{var AA=yield eA.document.createImage(tA);eA.image=AA}catch(eA){console.error('Error while loading image \"'.concat(tA,'\":'),eA)}eA.loaded=!0}))()}loadSvg(tA){var eA=this;return _asyncToGenerator((function*(){var AA=tv.exec(tA);if(AA){var rA=AA[5];\"base64\"===AA[4]?eA.image=atob(rA):eA.image=decodeURIComponent(rA)}else try{var nA=yield eA.document.fetch(tA),iA=yield nA.text();eA.image=iA}catch(eA){console.error('Error while loading image \"'.concat(tA,'\":'),eA)}eA.loaded=!0}))()}renderChildren(tA){var{document:eA,image:AA,loaded:rA}=this,nA=this.getAttribute(\"x\").getPixels(\"x\"),iA=this.getAttribute(\"y\").getPixels(\"y\"),sA=this.getStyle(\"width\").getPixels(\"x\"),oA=this.getStyle(\"height\").getPixels(\"y\");if(rA&&AA&&sA&&oA){if(tA.save(),tA.translate(nA,iA),this.isSvg){var aA=eA.canvg.forkString(tA,this.image,{ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0,offsetX:0,offsetY:0,scaleWidth:sA,scaleHeight:oA});aA.document.documentElement.parent=this,aA.render()}else{var lA=this.image;eA.setViewBox({ctx:tA,aspectRatio:this.getAttribute(\"preserveAspectRatio\").getString(),width:sA,desiredWidth:lA.width,height:oA,desiredHeight:lA.height}),this.loaded&&(void 0===lA.complete||lA.complete)&&tA.drawImage(lA,0,0)}tA.restore()}}getBoundingBox(){var tA=this.getAttribute(\"x\").getPixels(\"x\"),eA=this.getAttribute(\"y\").getPixels(\"y\"),AA=this.getStyle(\"width\").getPixels(\"x\"),rA=this.getStyle(\"height\").getPixels(\"y\");return new BoundingBox(tA,eA,tA+AA,eA+rA)}}class SymbolElement extends RenderedElement{constructor(){super(...arguments),this.type=\"symbol\"}render(tA){}}class SVGFontLoader{constructor(tA){this.document=tA,this.loaded=!1,tA.fonts.push(this)}load(tA,eA){var AA=this;return _asyncToGenerator((function*(){try{var{document:rA}=AA,nA=(yield rA.canvg.parser.load(eA)).getElementsByTagName(\"font\");Array.from(nA).forEach((eA=>{var AA=rA.createElement(eA);rA.definitions[tA]=AA}))}catch(tA){console.error('Error while loading font \"'.concat(eA,'\":'),tA)}AA.loaded=!0}))()}}class StyleElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"style\";var rA=compressSpaces(Array.from(eA.childNodes).map((tA=>tA.textContent)).join(\"\").replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm,\"\").replace(/@import.*;/g,\"\"));rA.split(\"}\").forEach((eA=>{var AA=eA.trim();if(AA){var rA=AA.split(\"{\"),nA=rA[0].split(\",\"),iA=rA[1].split(\";\");nA.forEach((eA=>{var AA=eA.trim();if(AA){var rA=tA.styles[AA]||{};if(iA.forEach((eA=>{var AA=eA.indexOf(\":\"),nA=eA.substr(0,AA).trim(),iA=eA.substr(AA+1,eA.length-AA).trim();nA&&iA&&(rA[nA]=new Property(tA,nA,iA))})),tA.styles[AA]=rA,tA.stylesSpecificity[AA]=getSelectorSpecificity(AA),\"@font-face\"===AA){var nA=rA[\"font-family\"].getString().replace(/\"|'/g,\"\");rA.src.getString().split(\",\").forEach((eA=>{if(eA.indexOf('format(\"svg\")')>0){var AA=parseExternalUrl(eA);AA&&new SVGFontLoader(tA).load(nA,AA)}}))}}}))}}))}}StyleElement.parseExternalUrl=parseExternalUrl;class UseElement extends RenderedElement{constructor(){super(...arguments),this.type=\"use\"}setContext(tA){super.setContext(tA);var eA=this.getAttribute(\"x\"),AA=this.getAttribute(\"y\");eA.hasValue()&&tA.translate(eA.getPixels(\"x\"),0),AA.hasValue()&&tA.translate(0,AA.getPixels(\"y\"))}path(tA){var{element:eA}=this;eA&&eA.path(tA)}renderChildren(tA){var{document:eA,element:AA}=this;if(AA){var rA=AA;if(\"symbol\"===AA.type&&((rA=new SVGElement(eA,null)).attributes.viewBox=new Property(eA,\"viewBox\",AA.getAttribute(\"viewBox\").getString()),rA.attributes.preserveAspectRatio=new Property(eA,\"preserveAspectRatio\",AA.getAttribute(\"preserveAspectRatio\").getString()),rA.attributes.overflow=new Property(eA,\"overflow\",AA.getAttribute(\"overflow\").getString()),rA.children=AA.children,AA.styles.opacity=new Property(eA,\"opacity\",this.calculateOpacity())),\"svg\"===rA.type){var nA=this.getStyle(\"width\",!1,!0),iA=this.getStyle(\"height\",!1,!0);nA.hasValue()&&(rA.attributes.width=new Property(eA,\"width\",nA.getString())),iA.hasValue()&&(rA.attributes.height=new Property(eA,\"height\",iA.getString()))}var sA=rA.parent;rA.parent=this,rA.render(tA),rA.parent=sA}}getBoundingBox(tA){var{element:eA}=this;return eA?eA.getBoundingBox(tA):null}elementTransform(){var{document:tA,element:eA}=this;return Transform.fromElement(tA,eA)}get element(){return this.cachedElement||(this.cachedElement=this.getHrefAttribute().getDefinition()),this.cachedElement}}function imGet(tA,eA,AA,rA,nA,iA){return tA[AA*rA*4+4*eA+iA]}function imSet(tA,eA,AA,rA,nA,iA,sA){tA[AA*rA*4+4*eA+iA]=sA}function m(tA,eA,AA){return tA[eA]*AA}function c(tA,eA,AA,rA){return eA+Math.cos(tA)*AA+Math.sin(tA)*rA}class FeColorMatrixElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"feColorMatrix\";var rA=toNumbers(this.getAttribute(\"values\").getString());switch(this.getAttribute(\"type\").getString(\"matrix\")){case\"saturate\":var nA=rA[0];rA=[.213+.787*nA,.715-.715*nA,.072-.072*nA,0,0,.213-.213*nA,.715+.285*nA,.072-.072*nA,0,0,.213-.213*nA,.715-.715*nA,.072+.928*nA,0,0,0,0,0,1,0,0,0,0,0,1];break;case\"hueRotate\":var iA=rA[0]*Math.PI/180;rA=[c(iA,.213,.787,-.213),c(iA,.715,-.715,-.715),c(iA,.072,-.072,.928),0,0,c(iA,.213,-.213,.143),c(iA,.715,.285,.14),c(iA,.072,-.072,-.283),0,0,c(iA,.213,-.213,-.787),c(iA,.715,-.715,.715),c(iA,.072,.928,.072),0,0,0,0,0,1,0,0,0,0,0,1];break;case\"luminanceToAlpha\":rA=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,.2125,.7154,.0721,0,0,0,0,0,0,1]}this.matrix=rA,this.includeOpacity=this.getAttribute(\"includeOpacity\").hasValue()}apply(tA,eA,AA,rA,nA){for(var{includeOpacity:iA,matrix:sA}=this,oA=tA.getImageData(0,0,rA,nA),aA=0;aA<nA;aA++)for(var lA=0;lA<rA;lA++){var cA=imGet(oA.data,lA,aA,rA,0,0),uA=imGet(oA.data,lA,aA,rA,0,1),hA=imGet(oA.data,lA,aA,rA,0,2),dA=imGet(oA.data,lA,aA,rA,0,3),fA=m(sA,0,cA)+m(sA,1,uA)+m(sA,2,hA)+m(sA,3,dA)+m(sA,4,1),gA=m(sA,5,cA)+m(sA,6,uA)+m(sA,7,hA)+m(sA,8,dA)+m(sA,9,1),pA=m(sA,10,cA)+m(sA,11,uA)+m(sA,12,hA)+m(sA,13,dA)+m(sA,14,1),mA=m(sA,15,cA)+m(sA,16,uA)+m(sA,17,hA)+m(sA,18,dA)+m(sA,19,1);iA&&(fA=0,gA=0,pA=0,mA*=dA/255),imSet(oA.data,lA,aA,rA,0,0,fA),imSet(oA.data,lA,aA,rA,0,1,gA),imSet(oA.data,lA,aA,rA,0,2,pA),imSet(oA.data,lA,aA,rA,0,3,mA)}tA.clearRect(0,0,rA,nA),tA.putImageData(oA,0,0)}}class MaskElement extends Element{constructor(){super(...arguments),this.type=\"mask\"}apply(tA,eA){var{document:AA}=this,rA=this.getAttribute(\"x\").getPixels(\"x\"),nA=this.getAttribute(\"y\").getPixels(\"y\"),iA=this.getStyle(\"width\").getPixels(\"x\"),sA=this.getStyle(\"height\").getPixels(\"y\");if(!iA&&!sA){var oA=new BoundingBox;this.children.forEach((eA=>{oA.addBoundingBox(eA.getBoundingBox(tA))})),rA=Math.floor(oA.x1),nA=Math.floor(oA.y1),iA=Math.floor(oA.width),sA=Math.floor(oA.height)}var aA=this.removeStyles(eA,MaskElement.ignoreStyles),lA=AA.createCanvas(rA+iA,nA+sA),cA=lA.getContext(\"2d\");AA.screen.setDefaults(cA),this.renderChildren(cA),new FeColorMatrixElement(AA,{nodeType:1,childNodes:[],attributes:[{nodeName:\"type\",value:\"luminanceToAlpha\"},{nodeName:\"includeOpacity\",value:\"true\"}]}).apply(cA,0,0,rA+iA,nA+sA);var uA=AA.createCanvas(rA+iA,nA+sA),hA=uA.getContext(\"2d\");AA.screen.setDefaults(hA),eA.render(hA),hA.globalCompositeOperation=\"destination-in\",hA.fillStyle=cA.createPattern(lA,\"no-repeat\"),hA.fillRect(0,0,rA+iA,nA+sA),tA.fillStyle=hA.createPattern(uA,\"no-repeat\"),tA.fillRect(0,0,rA+iA,nA+sA),this.restoreStyles(eA,aA)}render(tA){}}MaskElement.ignoreStyles=[\"mask\",\"transform\",\"clip-path\"];var noop=()=>{};class ClipPathElement extends Element{constructor(){super(...arguments),this.type=\"clipPath\"}apply(tA){var{document:eA}=this,AA=Reflect.getPrototypeOf(tA),{beginPath:rA,closePath:nA}=tA;AA&&(AA.beginPath=noop,AA.closePath=noop),Reflect.apply(rA,tA,[]),this.children.forEach((rA=>{if(void 0!==rA.path){var iA=void 0!==rA.elementTransform?rA.elementTransform():null;iA||(iA=Transform.fromElement(eA,rA)),iA&&iA.apply(tA),rA.path(tA),AA&&(AA.closePath=nA),iA&&iA.unapply(tA)}})),Reflect.apply(nA,tA,[]),tA.clip(),AA&&(AA.beginPath=rA,AA.closePath=nA)}render(tA){}}class FilterElement extends Element{constructor(){super(...arguments),this.type=\"filter\"}apply(tA,eA){var{document:AA,children:rA}=this,nA=eA.getBoundingBox(tA);if(nA){var iA=0,sA=0;rA.forEach((tA=>{var eA=tA.extraFilterDistance||0;iA=Math.max(iA,eA),sA=Math.max(sA,eA)}));var oA=Math.floor(nA.width),aA=Math.floor(nA.height),lA=oA+2*iA,cA=aA+2*sA;if(!(lA<1||cA<1)){var uA=Math.floor(nA.x),hA=Math.floor(nA.y),dA=this.removeStyles(eA,FilterElement.ignoreStyles),fA=AA.createCanvas(lA,cA),gA=fA.getContext(\"2d\");AA.screen.setDefaults(gA),gA.translate(-uA+iA,-hA+sA),eA.render(gA),rA.forEach((tA=>{\"function\"==typeof tA.apply&&tA.apply(gA,0,0,lA,cA)})),tA.drawImage(fA,0,0,lA,cA,uA-iA,hA-sA,lA,cA),this.restoreStyles(eA,dA)}}}render(tA){}}FilterElement.ignoreStyles=[\"filter\",\"transform\",\"clip-path\"];class FeDropShadowElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"feDropShadow\",this.addStylesFromStyleDefinition()}apply(tA,eA,AA,rA,nA){}}class FeMorphologyElement extends Element{constructor(){super(...arguments),this.type=\"feMorphology\"}apply(tA,eA,AA,rA,nA){}}class FeCompositeElement extends Element{constructor(){super(...arguments),this.type=\"feComposite\"}apply(tA,eA,AA,rA,nA){}}class FeGaussianBlurElement extends Element{constructor(tA,eA,AA){super(tA,eA,AA),this.type=\"feGaussianBlur\",this.blurRadius=Math.floor(this.getAttribute(\"stdDeviation\").getNumber()),this.extraFilterDistance=this.blurRadius}apply(tA,eA,AA,rA,nA){var{document:iA,blurRadius:sA}=this,oA=iA.window?iA.window.document.body:null,aA=tA.canvas;aA.id=iA.getUniqueId(),oA&&(aA.style.display=\"none\",oA.appendChild(aA)),processCanvasRGBA(aA,eA,AA,rA,nA,sA),oA&&oA.removeChild(aA)}}class TitleElement extends Element{constructor(){super(...arguments),this.type=\"title\"}}class DescElement extends Element{constructor(){super(...arguments),this.type=\"desc\"}}var ev={svg:SVGElement,rect:RectElement,circle:CircleElement,ellipse:EllipseElement,line:LineElement,polyline:PolylineElement,polygon:PolygonElement,path:PathElement,pattern:PatternElement,marker:MarkerElement,defs:DefsElement,linearGradient:LinearGradientElement,radialGradient:RadialGradientElement,stop:StopElement,animate:AnimateElement,animateColor:AnimateColorElement,animateTransform:AnimateTransformElement,font:FontElement,\"font-face\":FontFaceElement,\"missing-glyph\":MissingGlyphElement,glyph:GlyphElement,text:TextElement,tspan:TSpanElement,tref:TRefElement,a:AElement,textPath:TextPathElement,image:ImageElement,g:GElement,symbol:SymbolElement,style:StyleElement,use:UseElement,mask:MaskElement,clipPath:ClipPathElement,filter:FilterElement,feDropShadow:FeDropShadowElement,feMorphology:FeMorphologyElement,feComposite:FeCompositeElement,feColorMatrix:FeColorMatrixElement,feGaussianBlur:FeGaussianBlurElement,title:TitleElement,desc:DescElement};function ownKeys$1(tA,eA){var AA=Object.keys(tA);if(Object.getOwnPropertySymbols){var rA=Object.getOwnPropertySymbols(tA);eA&&(rA=rA.filter((function(eA){return Object.getOwnPropertyDescriptor(tA,eA).enumerable}))),AA.push.apply(AA,rA)}return AA}function _createImage(){return _createImage=_asyncToGenerator((function*(tA){var eA=arguments.length>1&&void 0!==arguments[1]&&arguments[1],AA=document.createElement(\"img\");return eA&&(AA.crossOrigin=\"Anonymous\"),new Promise(((eA,rA)=>{AA.onload=()=>{eA(AA)},AA.onerror=(tA,eA,AA,nA,iA)=>{rA(iA)},AA.src=tA}))})),_createImage.apply(this,arguments)}class Document{constructor(tA){var{rootEmSize:eA=12,emSize:AA=12,createCanvas:rA=Document.createCanvas,createImage:nA=Document.createImage,anonymousCrossOrigin:iA}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.canvg=tA,this.definitions={},this.styles={},this.stylesSpecificity={},this.images=[],this.fonts=[],this.emSizeStack=[],this.uniqueId=0,this.screen=tA.screen,this.rootEmSize=eA,this.emSize=AA,this.createCanvas=rA,this.createImage=this.bindCreateImage(nA,iA),this.screen.wait(this.isImagesLoaded.bind(this)),this.screen.wait(this.isFontsLoaded.bind(this))}bindCreateImage(tA,eA){return\"boolean\"==typeof eA?(AA,rA)=>tA(AA,\"boolean\"==typeof rA?rA:eA):tA}get window(){return this.screen.window}get fetch(){return this.screen.fetch}get ctx(){return this.screen.ctx}get emSize(){var{emSizeStack:tA}=this;return tA[tA.length-1]}set emSize(tA){var{emSizeStack:eA}=this;eA.push(tA)}popEmSize(){var{emSizeStack:tA}=this;tA.pop()}getUniqueId(){return\"canvg\".concat(++this.uniqueId)}isImagesLoaded(){return this.images.every((tA=>tA.loaded))}isFontsLoaded(){return this.fonts.every((tA=>tA.loaded))}createDocumentElement(tA){var eA=this.createElement(tA.documentElement);return eA.root=!0,eA.addStylesFromStyleDefinition(),this.documentElement=eA,eA}createElement(tA){var eA=tA.nodeName.replace(/^[^:]+:/,\"\"),AA=Document.elementTypes[eA];return void 0!==AA?new AA(this,tA):new UnknownElement(this,tA)}createTextNode(tA){return new TextNode(this,tA)}setViewBox(tA){this.screen.setViewBox(function _objectSpread$1(tA){for(var eA=1;eA<arguments.length;eA++){var AA=null!=arguments[eA]?arguments[eA]:{};eA%2?ownKeys$1(Object(AA),!0).forEach((function(eA){_defineProperty(tA,eA,AA[eA])})):Object.getOwnPropertyDescriptors?Object.defineProperties(tA,Object.getOwnPropertyDescriptors(AA)):ownKeys$1(Object(AA)).forEach((function(eA){Object.defineProperty(tA,eA,Object.getOwnPropertyDescriptor(AA,eA))}))}return tA}({document:this},tA))}}function ownKeys(tA,eA){var AA=Object.keys(tA);if(Object.getOwnPropertySymbols){var rA=Object.getOwnPropertySymbols(tA);eA&&(rA=rA.filter((function(eA){return Object.getOwnPropertyDescriptor(tA,eA).enumerable}))),AA.push.apply(AA,rA)}return AA}function _objectSpread(tA){for(var eA=1;eA<arguments.length;eA++){var AA=null!=arguments[eA]?arguments[eA]:{};eA%2?ownKeys(Object(AA),!0).forEach((function(eA){_defineProperty(tA,eA,AA[eA])})):Object.getOwnPropertyDescriptors?Object.defineProperties(tA,Object.getOwnPropertyDescriptors(AA)):ownKeys(Object(AA)).forEach((function(eA){Object.defineProperty(tA,eA,Object.getOwnPropertyDescriptor(AA,eA))}))}return tA}Document.createCanvas=function createCanvas(tA,eA){var AA=document.createElement(\"canvas\");return AA.width=tA,AA.height=eA,AA},Document.createImage=function createImage(tA){return _createImage.apply(this,arguments)},Document.elementTypes=ev;class Canvg{constructor(tA,eA){var AA=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.parser=new Parser(AA),this.screen=new Screen(tA,AA),this.options=AA;var rA=new Document(this,AA),nA=rA.createDocumentElement(eA);this.document=rA,this.documentElement=nA}static from(tA,eA){var AA=arguments;return _asyncToGenerator((function*(){var rA=AA.length>2&&void 0!==AA[2]?AA[2]:{},nA=new Parser(rA),iA=yield nA.parse(eA);return new Canvg(tA,iA,rA)}))()}static fromString(tA,eA){var AA=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},rA=new Parser(AA).parseFromString(eA);return new Canvg(tA,rA,AA)}fork(tA,eA){var AA=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Canvg.from(tA,eA,_objectSpread(_objectSpread({},this.options),AA))}forkString(tA,eA){var AA=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Canvg.fromString(tA,eA,_objectSpread(_objectSpread({},this.options),AA))}ready(){return this.screen.ready()}isReady(){return this.screen.isReady()}render(){var tA=arguments,eA=this;return _asyncToGenerator((function*(){var AA=tA.length>0&&void 0!==tA[0]?tA[0]:{};eA.start(_objectSpread({enableRedraw:!0,ignoreAnimation:!0,ignoreMouse:!0},AA)),yield eA.ready(),eA.stop()}))()}start(){var tA=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{documentElement:eA,screen:AA,options:rA}=this;AA.start(eA,_objectSpread(_objectSpread({enableRedraw:!0},rA),tA))}stop(){this.screen.stop()}resize(tA){var eA=arguments.length>1&&void 0!==arguments[1]?arguments[1]:tA,AA=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.documentElement.resize(tA,eA,AA)}}var Av=Object.freeze({__proto__:null,AElement:AElement,AnimateColorElement:AnimateColorElement,AnimateElement:AnimateElement,AnimateTransformElement:AnimateTransformElement,BoundingBox:BoundingBox,CB1:CB1,CB2:CB2,CB3:CB3,CB4:CB4,Canvg:Canvg,CircleElement:CircleElement,ClipPathElement:ClipPathElement,DefsElement:DefsElement,DescElement:DescElement,Document:Document,Element:Element,EllipseElement:EllipseElement,FeColorMatrixElement:FeColorMatrixElement,FeCompositeElement:FeCompositeElement,FeDropShadowElement:FeDropShadowElement,FeGaussianBlurElement:FeGaussianBlurElement,FeMorphologyElement:FeMorphologyElement,FilterElement:FilterElement,Font:Font,FontElement:FontElement,FontFaceElement:FontFaceElement,GElement:GElement,GlyphElement:GlyphElement,GradientElement:GradientElement,ImageElement:ImageElement,LineElement:LineElement,LinearGradientElement:LinearGradientElement,MarkerElement:MarkerElement,MaskElement:MaskElement,Matrix:Matrix,MissingGlyphElement:MissingGlyphElement,Mouse:Mouse,PSEUDO_ZERO:1e-8,Parser:Parser,PathElement:PathElement,PathParser:PathParser,PatternElement:PatternElement,Point:Point,PolygonElement:PolygonElement,PolylineElement:PolylineElement,Property:Property,QB1:QB1,QB2:QB2,QB3:QB3,RadialGradientElement:RadialGradientElement,RectElement:RectElement,RenderedElement:RenderedElement,Rotate:Rotate,SVGElement:SVGElement,SVGFontLoader:SVGFontLoader,Scale:Scale,Screen:Screen,Skew:Skew,SkewX:SkewX,SkewY:SkewY,StopElement:StopElement,StyleElement:StyleElement,SymbolElement:SymbolElement,TRefElement:TRefElement,TSpanElement:TSpanElement,TextElement:TextElement,TextPathElement:TextPathElement,TitleElement:TitleElement,Transform:Transform,Translate:Translate,UnknownElement:UnknownElement,UseElement:UseElement,ViewPort:ViewPort,compressSpaces:compressSpaces,default:Canvg,getSelectorSpecificity:getSelectorSpecificity,normalizeAttributeName:normalizeAttributeName,normalizeColor:normalizeColor,parseExternalUrl:parseExternalUrl,presets:Rb,toNumbers:toNumbers,trimLeft:trimLeft,trimRight:trimRight,vectorMagnitude:vectorMagnitude,vectorsAngle:vectorsAngle,vectorsRatio:vectorsRatio});export{SvgCanvas as default};\n//# sourceMappingURL=svgcanvas.js.map\n","/**\n* @external Math\n*/\n/**\n* @memberof external:Math\n* @param {Float} value\n* @param {Float} precision\n* @returns {Float}\n*/\nfunction toFixedNumeric (value, precision) {\n if (precision === undefined) precision = 0\n return Math.round(value * (10 ** precision)) / (10 ** precision)\n}\n/**\n * Controls for all the input elements for the typing in color values.\n */\nexport default class ColorValuePicker {\n /**\n * @param {external:jQuery} picker\n * @param {external:jQuery.jPicker.Color} color\n * @param {external:jQuery.fn.$.fn.jPicker} bindedHex\n * @param {Float} alphaPrecision\n */\n constructor (picker, color, bindedHex, alphaPrecision) {\n const that = this // private properties and methods\n const inputs = picker.querySelectorAll('td.Text input')\n // input box key down - use arrows to alter color\n /**\n *\n * @param {Event} e\n * @returns {Event|false|void}\n */\n function keyDown (e) {\n if (e.target.value === '' && e.target !== hex && ((bindedHex && e.target !== bindedHex) || !bindedHex)) return undefined\n if (!validateKey(e)) return e\n switch (e.target) {\n case red:\n switch (e.keyCode) {\n case 38:\n red.value = setValueInRange.call(that, (red.value << 0) + 1, 0, 255)\n color.val('r', red.value, e.target)\n return false\n case 40:\n red.value = setValueInRange.call(that, (red.value << 0) - 1, 0, 255)\n color.val('r', red.value, e.target)\n return false\n }\n break\n case green:\n switch (e.keyCode) {\n case 38:\n green.value = setValueInRange.call(that, (green.value << 0) + 1, 0, 255)\n color.val('g', green.value, e.target)\n return false\n case 40:\n green.value = setValueInRange.call(that, (green.value << 0) - 1, 0, 255)\n color.val('g', green.value, e.target)\n return false\n }\n break\n case blue:\n switch (e.keyCode) {\n case 38:\n blue.value = setValueInRange.call(that, (blue.value << 0) + 1, 0, 255)\n color.val('b', blue.value, e.target)\n return false\n case 40:\n blue.value = setValueInRange.call(that, (blue.value << 0) - 1, 0, 255)\n color.val('b', blue.value, e.target)\n return false\n }\n break\n case alpha:\n switch (e.keyCode) {\n case 38:\n alpha.value = setValueInRange.call(that, Number.parseFloat(alpha.value) + 1, 0, 100)\n color.val('a', toFixedNumeric((alpha.value * 255) / 100, alphaPrecision), e.target)\n return false\n case 40:\n alpha.value = setValueInRange.call(that, Number.parseFloat(alpha.value) - 1, 0, 100)\n color.val('a', toFixedNumeric((alpha.value * 255) / 100, alphaPrecision), e.target)\n return false\n }\n break\n case hue:\n switch (e.keyCode) {\n case 38:\n hue.value = setValueInRange.call(that, (hue.value << 0) + 1, 0, 360)\n color.val('h', hue.value, e.target)\n return false\n case 40:\n hue.value = setValueInRange.call(that, (hue.value << 0) - 1, 0, 360)\n color.val('h', hue.value, e.target)\n return false\n }\n break\n case saturation:\n switch (e.keyCode) {\n case 38:\n saturation.value = setValueInRange.call(that, (saturation.value << 0) + 1, 0, 100)\n color.val('s', saturation.value, e.target)\n return false\n case 40:\n saturation.value = setValueInRange.call(that, (saturation.value << 0) - 1, 0, 100)\n color.val('s', saturation.value, e.target)\n return false\n }\n break\n case value:\n switch (e.keyCode) {\n case 38:\n value.value = setValueInRange.call(that, (value.value << 0) + 1, 0, 100)\n color.val('v', value.value, e.target)\n return false\n case 40:\n value.value = setValueInRange.call(that, (value.value << 0) - 1, 0, 100)\n color.val('v', value.value, e.target)\n return false\n }\n break\n }\n return undefined\n }\n // input box key up - validate value and set color\n /**\n * @param {Event} e\n * @returns {Event|void}\n * @todo Why is this returning an event?\n */\n function keyUp (e) {\n if (e.target.value === '' && e.target !== hex &&\n ((bindedHex && e.target !== bindedHex) ||\n !bindedHex)) return undefined\n if (!validateKey(e)) return e\n switch (e.target) {\n case red:\n red.value = setValueInRange.call(that, red.value, 0, 255)\n color.val('r', red.value, e.target)\n break\n case green:\n green.value = setValueInRange.call(that, green.value, 0, 255)\n color.val('g', green.value, e.target)\n break\n case blue:\n blue.value = setValueInRange.call(that, blue.value, 0, 255)\n color.val('b', blue.value, e.target)\n break\n case alpha:\n alpha.value = setValueInRange.call(that, alpha.value, 0, 100)\n color.val('a', toFixedNumeric((alpha.value * 255) / 100, alphaPrecision), e.target)\n break\n case hue:\n hue.value = setValueInRange.call(that, hue.value, 0, 360)\n color.val('h', hue.value, e.target)\n break\n case saturation:\n saturation.value = setValueInRange.call(that, saturation.value, 0, 100)\n color.val('s', saturation.value, e.target)\n break\n case value:\n value.value = setValueInRange.call(that, value.value, 0, 100)\n color.val('v', value.value, e.target)\n break\n case hex:\n hex.value = hex.value.replace(/[^a-fA-F\\d]/g, '').toLowerCase().substring(0, 6)\n bindedHex && bindedHex.val(hex.value)\n color.val('hex', hex.value !== '' ? hex.value : null, e.target)\n break\n case bindedHex:\n bindedHex.value = bindedHex.value.replace(/[^a-fA-F\\d]/g, '').toLowerCase().substring(0, 6)\n hex.val(bindedHex.value)\n color.val('hex', bindedHex.value !== '' ? bindedHex.value : null, e.target)\n break\n case ahex:\n ahex.value = ahex.value.replace(/[^a-fA-F\\d]/g, '').toLowerCase().substring(0, 2)\n color.val('a', ahex.value ? Number.parseInt(ahex.value, 16) : null, e.target)\n break\n }\n return undefined\n }\n // input box blur - reset to original if value empty\n /**\n * @param {Event} e\n * @returns {void}\n */\n function blur (e) {\n if (color.value) {\n switch (e.target) {\n case red:\n color.value = 'r'\n red.value = color.value\n break\n case green:\n color.value = 'g'\n green.value = color.value\n break\n case blue:\n color.value = 'b'\n blue.value = color.value\n break\n case alpha:\n color.value = 'a'\n alpha.value = toFixedNumeric((color.value * 100) / 255, alphaPrecision)\n break\n case hue:\n color.value = 'h'\n hue.value = color.value\n break\n case saturation:\n color.value = 's'\n saturation.value = color.value\n break\n case value:\n color.value = 'v'\n value.value = color.value\n break\n case hex:\n case bindedHex:\n color.value = 'hex'\n hex.value = color.value\n bindedHex.value = color.value\n break\n case ahex:\n color.value = 'ahex'\n ahex.value = color.value.substring(6)\n break\n }\n }\n }\n /**\n * @param {Event} e\n * @returns {boolean}\n */\n function validateKey (e) {\n switch (e.keyCode) {\n case 9:\n case 16:\n case 29:\n case 37:\n case 39:\n return false\n case 'c'.charCodeAt():\n case 'v'.charCodeAt():\n if (e.ctrlKey) return false\n }\n return true\n }\n\n /**\n * Constrain value within range.\n * @param {Float|string} value\n * @param {Float} min\n * @param {Float} max\n * @returns {Float|string} Returns a number or numeric string\n */\n function setValueInRange (value, min, max) {\n if (value === '' || isNaN(value)) return min\n if (value > max) return max\n if (value < min) return min\n return value\n }\n /**\n * @param {external:jQuery} ui\n * @param {Element} context\n * @returns {void}\n */\n function colorChanged (ui, context) {\n const all = ui.val('all')\n if (context !== red) red.value = (all ? all.r : '')\n if (context !== green) green.value = (all ? all.g : '')\n if (context !== blue) blue.value = (all ? all.b : '')\n if (alpha && context !== alpha) alpha.value = (all ? toFixedNumeric((all.a * 100) / 255, alphaPrecision) : '')\n if (context !== hue) hue.value = (all ? all.h : '')\n if (context !== saturation) saturation.value = (all ? all.s : '')\n if (context !== value) value.value = (all ? all.v : '')\n if (context !== hex && ((bindedHex && context !== bindedHex) || !bindedHex)) hex.value = (all ? all.hex : '')\n if (bindedHex && context !== bindedHex && context !== hex) bindedHex.value = (all ? all.hex : '')\n if (ahex && context !== ahex) ahex.value = (all ? all.ahex.substring(6) : '')\n }\n /**\n * Unbind all events and null objects.\n * @returns {void}\n */\n function destroy () {\n red.removeEventListener('keyup', keyUp)\n green.removeEventListener('keyup', keyUp)\n blue.removeEventListener('keyup', keyUp)\n hue.removeEventListener('keyup', keyUp)\n saturation.removeEventListener('keyup', keyUp)\n value.removeEventListener('keyup', keyUp)\n hex.removeEventListener('keyup', keyUp)\n\n red.removeEventListener('blur', blur)\n green.removeEventListener('blur', blur)\n blue.removeEventListener('blur', blur)\n hue.removeEventListener('blur', blur)\n saturation.removeEventListener('blur', blur)\n value.removeEventListener('blur', blur)\n hex.removeEventListener('blur', blur)\n\n red.removeEventListener('keydown', keyDown)\n green.removeEventListener('keydown', keyDown)\n blue.removeEventListener('keydown', keyDown)\n hue.removeEventListener('keydown', keyDown)\n saturation.removeEventListener('keydown', keyDown)\n value.removeEventListener('keydown', keyDown)\n\n if (alpha !== null) {\n alpha.removeEventListener('keyup', keyUp)\n alpha.removeEventListener('blur', blur)\n alpha.removeEventListener('keydown', keyDown)\n }\n if (ahex !== null) {\n ahex.removeEventListener('keyup', keyUp)\n ahex.removeEventListener('blur', blur)\n }\n if (bindedHex !== null) {\n bindedHex.removeEventListener('keyup', keyUp)\n bindedHex.removeEventListener('blur', blur)\n }\n color.unbind(colorChanged)\n red = null\n green = null\n blue = null\n alpha = null\n hue = null\n saturation = null\n value = null\n hex = null\n ahex = null\n }\n let\n red = inputs[3]\n let green = inputs[4]\n let blue = inputs[5]\n let alpha = inputs.length > 7 ? inputs[6] : null\n let hue = inputs[0]\n let saturation = inputs[1]\n let value = inputs[2]\n let hex = inputs[(inputs.length > 7) ? 7 : 6]\n let ahex = inputs.length > 7 ? inputs[8] : null\n Object.assign(that, { destroy })\n red.addEventListener('keyup', keyUp)\n green.addEventListener('keyup', keyUp)\n blue.addEventListener('keyup', keyUp)\n hue.addEventListener('keyup', keyUp)\n saturation.addEventListener('keyup', keyUp)\n value.addEventListener('keyup', keyUp)\n hex.addEventListener('keyup', keyUp)\n\n red.addEventListener('blur', blur)\n green.addEventListener('blur', blur)\n blue.addEventListener('blur', blur)\n hue.addEventListener('blur', blur)\n saturation.addEventListener('blur', blur)\n value.addEventListener('blur', blur)\n hex.addEventListener('blur', blur)\n\n red.addEventListener('keydown', keyDown)\n green.addEventListener('keydown', keyDown)\n blue.addEventListener('keydown', keyDown)\n hue.addEventListener('keydown', keyDown)\n saturation.addEventListener('keydown', keyDown)\n value.addEventListener('keydown', keyDown)\n\n if (alpha !== null) {\n alpha.addEventListener('keyup', keyUp)\n alpha.addEventListener('blur', blur)\n alpha.addEventListener('keydown', keyDown)\n }\n if (ahex !== null) {\n ahex.addEventListener('keyup', keyUp)\n ahex.addEventListener('blur', blur)\n }\n if (bindedHex !== null) {\n bindedHex.addEventListener('keyup', keyUp)\n bindedHex.addEventListener('blur', blur)\n }\n color.bind(colorChanged)\n }\n}\n","/**\n * @param {any} obj\n * @returns {any}\n */\nexport function findPos (obj) {\n let curleft = 0\n let curtop = 0\n if (obj.offsetParent) {\n do {\n curleft += obj.offsetLeft\n curtop += obj.offsetTop\n // eslint-disable-next-line no-cond-assign\n } while (obj = obj.offsetParent)\n return { left: curleft, top: curtop }\n }\n return { left: curleft, top: curtop }\n}\n\nexport function isObject (item) {\n return (item && typeof item === 'object' && !Array.isArray(item))\n}\n\nexport function mergeDeep (target, source) {\n const output = Object.assign({}, target)\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!(key in target)) { Object.assign(output, { [key]: source[key] }) } else { output[key] = mergeDeep(target[key], source[key]) }\n } else {\n Object.assign(output, { [key]: source[key] })\n }\n })\n }\n return output\n}\n\n/**\n * Get the closest matching element up the DOM tree.\n * @param {Element} elem Starting element\n * @param {String} selector Selector to match against (class, ID, data attribute, or tag)\n * @return {Boolean|Element} Returns null if not match found\n */\nexport function getClosest (elem, selector) {\n const firstChar = selector.charAt(0)\n const supports = 'classList' in document.documentElement\n let attribute; let value\n // If selector is a data attribute, split attribute from value\n if (firstChar === '[') {\n selector = selector.substr(1, selector.length - 2)\n attribute = selector.split('=')\n if (attribute.length > 1) {\n value = true\n attribute[1] = attribute[1].replace(/\"/g, '').replace(/'/g, '')\n }\n }\n // Get closest match\n for (; elem && elem !== document && elem.nodeType === 1; elem = elem.parentNode) {\n // If selector is a class\n if (firstChar === '.') {\n if (supports) {\n if (elem.classList.contains(selector.substr(1))) {\n return elem\n }\n } else {\n if (new RegExp('(^|\\\\s)' + selector.substr(1) + '(\\\\s|$)').test(elem.className)) {\n return elem\n }\n }\n }\n // If selector is an ID\n if (firstChar === '#') {\n if (elem.id === selector.substr(1)) {\n return elem\n }\n }\n // If selector is a data attribute\n if (firstChar === '[') {\n if (elem.hasAttribute(attribute[0])) {\n if (value) {\n if (elem.getAttribute(attribute[0]) === attribute[1]) {\n return elem\n }\n } else {\n return elem\n }\n }\n }\n // If selector is a tag\n if (elem.tagName.toLowerCase() === selector) {\n return elem\n }\n }\n return null\n}\n\n/**\n * Get all DOM element up the tree that contain a class, ID, or data attribute\n * @param {Node} elem The base element\n * @param {String} selector The class, id, data attribute, or tag to look for\n * @return {Array} Null if no match\n */\nexport function getParents (elem, selector) {\n const parents = []\n const firstChar = selector?.charAt(0)\n // Get matches\n for (; elem && elem !== document; elem = elem.parentNode) {\n if (selector) {\n // If selector is a class\n if (firstChar === '.') {\n if (elem.classList.contains(selector.substr(1))) {\n parents.push(elem)\n }\n }\n // If selector is an ID\n if (firstChar === '#') {\n if (elem.id === selector.substr(1)) {\n parents.push(elem)\n }\n }\n // If selector is a data attribute\n if (firstChar === '[') {\n if (elem.hasAttribute(selector.substr(1, selector.length - 1))) {\n parents.push(elem)\n }\n }\n // If selector is a tag\n if (elem.tagName.toLowerCase() === selector) {\n parents.push(elem)\n }\n } else {\n parents.push(elem)\n }\n }\n // Return parents if any exist\n return parents.length ? parents : null\n}\n\nexport function getParentsUntil (elem, parent, selector) {\n const parents = []\n const parentType = parent?.charAt(0)\n const selectorType = selector?.selector.charAt(0)\n // Get matches\n for (; elem && elem !== document; elem = elem.parentNode) {\n // Check if parent has been reached\n if (parent) {\n // If parent is a class\n if (parentType === '.') {\n if (elem.classList.contains(parent.substr(1))) {\n break\n }\n }\n // If parent is an ID\n if (parentType === '#') {\n if (elem.id === parent.substr(1)) {\n break\n }\n }\n // If parent is a data attribute\n if (parentType === '[') {\n if (elem.hasAttribute(parent.substr(1, parent.length - 1))) {\n break\n }\n }\n // If parent is a tag\n if (elem.tagName.toLowerCase() === parent) {\n break\n }\n }\n if (selector) {\n // If selector is a class\n if (selectorType === '.') {\n if (elem.classList.contains(selector.substr(1))) {\n parents.push(elem)\n }\n }\n // If selector is an ID\n if (selectorType === '#') {\n if (elem.id === selector.substr(1)) {\n parents.push(elem)\n }\n }\n // If selector is a data attribute\n if (selectorType === '[') {\n if (elem.hasAttribute(selector.substr(1, selector.length - 1))) {\n parents.push(elem)\n }\n }\n // If selector is a tag\n if (elem.tagName.toLowerCase() === selector) {\n parents.push(elem)\n }\n } else {\n parents.push(elem)\n }\n }\n // Return parents if any exist\n return parents.length ? parents : null\n}\n","import { findPos } from '../../../common/util.js'\n/**\n * Whether a value is `null` or `undefined`.\n * @param {any} val\n * @returns {boolean}\n */\nconst isNullish = (val) => {\n return val === null || val === undefined\n}\n/**\n * Encapsulate slider functionality for the ColorMap and ColorBar -\n * could be useful to use a jQuery UI draggable for this with certain extensions.\n * @memberof module:jPicker\n */\nexport default class Slider {\n /**\n * @param {external:jQuery} bar\n * @param {module:jPicker.SliderOptions} options\n */\n constructor (bar, options) {\n const that = this\n /**\n * Fire events on the supplied `context`\n * @param {module:jPicker.JPickerInit} context\n * @returns {void}\n */\n function fireChangeEvents (context) {\n changeEvents.forEach((changeEvent) => {\n changeEvent.call(that, that, context)\n })\n }\n\n /**\n * Bind the mousedown to the bar not the arrow for quick snapping to the clicked location.\n * @param {external:jQuery.Event} e\n * @returns {void}\n */\n function mouseDown (e) {\n const off = findPos(bar)\n offset = { l: off.left | 0, t: off.top | 0 }\n clearTimeout(timeout)\n // using setTimeout for visual updates - once the style is updated the browser will re-render internally allowing the next Javascript to run\n timeout = setTimeout(function () {\n setValuesFromMousePosition.call(that, e)\n }, 0)\n // Bind mousemove and mouseup event to the document so it responds when dragged of of the bar - we will unbind these when on mouseup to save processing\n document.addEventListener('mousemove', mouseMove)\n document.addEventListener('mouseup', mouseUp)\n e.preventDefault() // don't try to select anything or drag the image to the desktop\n }\n /**\n * Set the values as the mouse moves.\n * @param {external:jQuery.Event} e\n * @returns {false}\n */\n function mouseMove (e) {\n clearTimeout(timeout)\n timeout = setTimeout(function () {\n setValuesFromMousePosition.call(that, e)\n }, 0)\n e.stopPropagation()\n e.preventDefault()\n return false\n }\n /**\n * Unbind the document events - they aren't needed when not dragging.\n * @param {external:jQuery.Event} e\n * @returns {false}\n */\n function mouseUp (e) {\n document.removeEventListener('mousemove', mouseMove)\n document.removeEventListener('mouseup', mouseUp)\n e.stopPropagation()\n e.preventDefault()\n return false\n }\n\n /**\n * Calculate mouse position and set value within the current range.\n * @param {Event} e\n * @returns {void}\n */\n function setValuesFromMousePosition (e) {\n const barW = bar.w // local copies for YUI compressor\n const barH = bar.h\n let locX = e.pageX - offset.l\n let locY = e.pageY - offset.t\n // keep the arrow within the bounds of the bar\n if (locX < 0) locX = 0\n else if (locX > barW) locX = barW\n if (locY < 0) locY = 0\n else if (locY > barH) locY = barH\n val.call(that, 'xy', {\n x: ((locX / barW) * rangeX) + minX,\n y: ((locY / barH) * rangeY) + minY\n })\n }\n /**\n *\n * @returns {void}\n */\n function draw () {\n const\n barW = bar.w\n const barH = bar.h\n const arrowW = arrow.w\n const arrowH = arrow.h\n let arrowOffsetX = 0\n let arrowOffsetY = 0\n setTimeout(function () {\n if (rangeX > 0) { // range is greater than zero\n // constrain to bounds\n if (x === maxX) arrowOffsetX = barW\n else arrowOffsetX = ((x / rangeX) * barW) | 0\n }\n if (rangeY > 0) { // range is greater than zero\n // constrain to bounds\n if (y === maxY) arrowOffsetY = barH\n else arrowOffsetY = ((y / rangeY) * barH) | 0\n }\n // if arrow width is greater than bar width, center arrow and prevent horizontal dragging\n if (arrowW >= barW) arrowOffsetX = (barW >> 1) - (arrowW >> 1) // number >> 1 - superfast bitwise divide by two and truncate (move bits over one bit discarding lowest)\n else arrowOffsetX -= arrowW >> 1\n // if arrow height is greater than bar height, center arrow and prevent vertical dragging\n if (arrowH >= barH) arrowOffsetY = (barH >> 1) - (arrowH >> 1)\n else arrowOffsetY -= arrowH >> 1\n // set the arrow position based on these offsets\n arrow.style.left = arrowOffsetX + 'px'\n arrow.style.top = arrowOffsetY + 'px'\n })\n }\n\n /**\n * Get or set a value.\n * @param {?(\"xy\"|\"x\"|\"y\")} name\n * @param {module:math.XYObject} value\n * @param {module:jPicker.Slider} context\n * @returns {module:math.XYObject|Float|void}\n */\n function val (name, value, context) {\n const set = value !== undefined\n if (!set) {\n if (isNullish(name)) name = 'xy'\n switch (name.toLowerCase()) {\n case 'x': return x\n case 'y': return y\n case 'xy':\n default: return { x, y }\n }\n }\n if (!isNullish(context) && context === that) return undefined\n let changed = false\n\n let newX; let newY\n if (isNullish(name)) name = 'xy'\n switch (name.toLowerCase()) {\n case 'x':\n newX = (value && ((value.x && value.x | 0) || value | 0)) || 0\n break\n case 'y':\n newY = (value && ((value.y && value.y | 0) || value | 0)) || 0\n break\n case 'xy':\n default:\n newX = (value && value.x && value.x | 0) || 0\n newY = (value && value.y && value.y | 0) || 0\n break\n }\n if (!isNullish(newX)) {\n if (newX < minX) newX = minX\n else if (newX > maxX) newX = maxX\n if (x !== newX) {\n x = newX\n changed = true\n }\n }\n if (!isNullish(newY)) {\n if (newY < minY) newY = minY\n else if (newY > maxY) newY = maxY\n if (y !== newY) {\n y = newY\n changed = true\n }\n }\n changed && fireChangeEvents.call(that, context || that)\n return undefined\n }\n\n /**\n * @typedef {PlainObject} module:jPicker.MinMaxRangeX\n * @property {Float} minX\n * @property {Float} maxX\n * @property {Float} rangeX\n */\n /**\n * @typedef {PlainObject} module:jPicker.MinMaxRangeY\n * @property {Float} minY\n * @property {Float} maxY\n * @property {Float} rangeY\n */\n /**\n * @typedef {module:jPicker.MinMaxRangeY|module:jPicker.MinMaxRangeX} module:jPicker.MinMaxRangeXY\n */\n\n /**\n *\n * @param {\"minx\"|\"maxx\"|\"rangex\"|\"miny\"|\"maxy\"|\"rangey\"|\"all\"} name\n * @param {module:jPicker.MinMaxRangeXY} value\n * @returns {module:jPicker.MinMaxRangeXY|module:jPicker.MinMaxRangeX|module:jPicker.MinMaxRangeY|void}\n */\n function range (name, value) {\n const set = value !== undefined\n if (!set) {\n if (isNullish(name)) name = 'all'\n switch (name.toLowerCase()) {\n case 'minx': return minX\n case 'maxx': return maxX\n case 'rangex': return { minX, maxX, rangeX }\n case 'miny': return minY\n case 'maxy': return maxY\n case 'rangey': return { minY, maxY, rangeY }\n case 'all':\n default: return { minX, maxX, rangeX, minY, maxY, rangeY }\n }\n }\n let // changed = false,\n newMinX\n let newMaxX\n let newMinY\n let newMaxY\n if (isNullish(name)) name = 'all'\n switch (name.toLowerCase()) {\n case 'minx':\n newMinX = (value && ((value.minX && value.minX | 0) || value | 0)) || 0\n break\n case 'maxx':\n newMaxX = (value && ((value.maxX && value.maxX | 0) || value | 0)) || 0\n break\n case 'rangex':\n newMinX = (value && value.minX && value.minX | 0) || 0\n newMaxX = (value && value.maxX && value.maxX | 0) || 0\n break\n case 'miny':\n newMinY = (value && ((value.minY && value.minY | 0) || value | 0)) || 0\n break\n case 'maxy':\n newMaxY = (value && ((value.maxY && value.maxY | 0) || value | 0)) || 0\n break\n case 'rangey':\n newMinY = (value && value.minY && value.minY | 0) || 0\n newMaxY = (value && value.maxY && value.maxY | 0) || 0\n break\n case 'all':\n default:\n newMinX = (value && value.minX && value.minX | 0) || 0\n newMaxX = (value && value.maxX && value.maxX | 0) || 0\n newMinY = (value && value.minY && value.minY | 0) || 0\n newMaxY = (value && value.maxY && value.maxY | 0) || 0\n break\n }\n\n if (!isNullish(newMinX) && minX !== newMinX) {\n minX = newMinX\n rangeX = maxX - minX\n }\n if (!isNullish(newMaxX) && maxX !== newMaxX) {\n maxX = newMaxX\n rangeX = maxX - minX\n }\n if (!isNullish(newMinY) && minY !== newMinY) {\n minY = newMinY\n rangeY = maxY - minY\n }\n if (!isNullish(newMaxY) && maxY !== newMaxY) {\n maxY = newMaxY\n rangeY = maxY - minY\n }\n return undefined\n }\n /**\n * @param {GenericCallback} callback\n * @returns {void}\n */\n function bind (callback) {\n if (typeof callback === 'function') changeEvents.push(callback)\n }\n /**\n * @param {GenericCallback} callback\n * @returns {void}\n */\n function unbind (callback) {\n if (typeof callback !== 'function') return\n let i\n while ((i = changeEvents.includes(callback))) changeEvents.splice(i, 1)\n }\n /**\n *\n * @returns {void}\n */\n function destroy () {\n // unbind all possible events and null objects\n document.removeEventListener('mousemove', mouseMove)\n document.removeEventListener('mouseup', mouseUp)\n bar.removeEventListener('mousedown', mouseDown)\n bar = null\n arrow = null\n changeEvents = null\n }\n let offset\n let timeout\n let x = 0\n let y = 0\n let minX = 0\n let maxX = 100\n let rangeX = 100\n let minY = 0\n let maxY = 100\n let rangeY = 100\n let arrow = bar.querySelector('img') // the arrow image to drag\n let changeEvents = []\n Object.assign(that, {\n val,\n range,\n bind,\n unbind,\n destroy\n })\n // initialize this control\n arrow.src = options.arrow && options.arrow.image\n arrow.w = (options.arrow && options.arrow.width) || parseFloat(getComputedStyle(arrow, null).width.replace('px', ''))\n arrow.h = (options.arrow && options.arrow.height) || parseFloat(getComputedStyle(arrow, null).height.replace('px', ''))\n bar.w = (options.map && options.map.width) || parseFloat(getComputedStyle(bar, null).width.replace('px', ''))\n bar.h = (options.map && options.map.height) || parseFloat(getComputedStyle(bar, null).height.replace('px', ''))\n bar.addEventListener('mousedown', mouseDown)\n bind.call(that, draw)\n }\n}\n","/* globals svgEditor */\n/**\n * @file jPicker (Adapted from version 1.1.6)\n *\n * jQuery Plugin for Photoshop style color picker\n *\n * @module jPicker\n * @copyright (c) 2010 Christopher T. Tillman\n * Digital Magic Productions, Inc. ({@link http://www.digitalmagicpro.com/})\n * FREE to use, alter, copy, sell, and especially ENHANCE\n * @license MIT\n *\n * Painstakingly ported from John Dyers' excellent work on his own color picker based on the Prototype framework.\n *\n * John Dyers' website: {@link http://johndyer.name}\n * Color Picker page: {@link http://johndyer.name/photoshop-like-javascript-color-picker/}\n */\n/* eslint-disable max-len */\nimport ColorValuePicker from './ColorValuePicker.js'\nimport Slider from './Slider.js'\nimport { findPos, mergeDeep } from '../../../common/util.js'\n\n/**\n* @external Math\n*/\n/**\n* @memberof external:Math\n* @param {Float} value\n* @param {Float} precision\n* @returns {Float}\n*/\nfunction toFixedNumeric (value, precision) {\n if (precision === undefined) precision = 0\n return Math.round(value * (10 ** precision)) / (10 ** precision)\n}\n\n/**\n * Whether a value is `null` or `undefined`.\n * @param {any} val\n * @returns {boolean}\n */\nconst isNullish = (val) => {\n return val === null || val === undefined\n}\n\n/**\n* @function module:jPicker.jPicker\n* @param {external:jQuery} $ The jQuery object, {@link external:jQuery.fn.$.fn.jPicker}, {@link external:jQuery.fn.$.fn.jPicker.defaults})\n* @returns {external:jQuery}\n*/\n// const jPicker = function ($) {\n/**\n* @typedef {PlainObject} module:jPicker.SliderOptions\n* @property {external:jQuery|PlainObject} arrow\n* @property {string} arrow.image Not in use?\n* @property {Float} arrow.width\n* @property {Float} arrow.height\n* @property {PlainObject} map\n* @property {Float} map.width\n* @property {Float} map.height\n*/\n\n/**\n* @typedef {PlainObject} module:jPicker.JPickerInit\n* @property {Integer} [a]\n* @property {Integer} [b]\n* @property {Integer} [g]\n* @property {Integer} [h]\n* @property {Integer} [r]\n* @property {Integer} [s]\n* @property {Integer} [v]\n* @property {string} [hex]\n* @property {string} [ahex]\n*/\n/**\n* @namespace {PlainObject} jPicker\n* @memberof external:jQuery\n*/\nexport const jPicker = /** @lends external:jQuery.jPicker */ {\n /**\n * Array holding references to each active instance of the jPicker control.\n * @type {external:jQuery.fn.$.fn.jPicker[]}\n */\n List: [],\n /**\n * Color object - we will be able to assign by any color space type or\n * retrieve any color space info.\n * We want this public so we can optionally assign new color objects to\n * initial values using inputs other than a string hex value (also supported)\n * Note: JSDoc didn't document when expressed here as an ES6 Class.\n * @namespace\n * @class\n * @memberof external:jQuery.jPicker\n * @param {module:jPicker.JPickerInit} init\n * @returns {external:jQuery.jPicker.Color}\n */\n Color: function (init) {\n const that = this\n /**\n *\n * @param {module:jPicker.Slider} context\n * @returns {void}\n */\n function fireChangeEvents (context) {\n for (let i = 0; i < changeEvents.length; i++) changeEvents[i].call(that, that, context)\n }\n\n /**\n * @param {string|\"ahex\"|\"hex\"|\"all\"|\"\"|null|void} name String composed of letters \"r\", \"g\", \"b\", \"a\", \"h\", \"s\", and/or \"v\"\n * @param {module:jPicker.RGBA|module:jPicker.JPickerInit|string} [value]\n * @param {external:jQuery.jPicker.Color} context\n * @returns {module:jPicker.JPickerInit|string|null|void}\n */\n function val (name, value, context) {\n // Kind of ugly\n const set = Boolean(value)\n if (set && value.ahex === '') value.ahex = '00000000'\n if (!set) {\n let ret\n if (isNullish(name) || name === '') name = 'all'\n if (isNullish(r)) return null\n switch (name.toLowerCase()) {\n case 'ahex': return ColorMethods.rgbaToHex({ r, g, b, a })\n case 'hex': return val('ahex').substring(0, 6)\n case 'all': return {\n r,\n g,\n b,\n a,\n h,\n s,\n v,\n hex: val.call(that, 'hex'),\n ahex: val.call(that, 'ahex')\n }\n default: {\n ret = {}\n const nameLength = name.length;\n [...name].forEach((ch) => {\n switch (ch) {\n case 'r':\n if (nameLength === 1) ret = r\n else ret.r = r\n break\n case 'g':\n if (nameLength === 1) ret = g\n else ret.g = g\n break\n case 'b':\n if (nameLength === 1) ret = b\n else ret.b = b\n break\n case 'a':\n if (nameLength === 1) ret = a\n else ret.a = a\n break\n case 'h':\n if (nameLength === 1) ret = h\n else ret.h = h\n break\n case 's':\n if (nameLength === 1) ret = s\n else ret.s = s\n break\n case 'v':\n if (nameLength === 1) ret = v\n else ret.v = v\n break\n }\n })\n }\n }\n return typeof ret === 'object' && !Object.keys(ret).length\n ? val.call(that, 'all')\n : ret\n }\n if (!isNullish(context) && context === that) return undefined\n if (isNullish(name)) name = ''\n\n let changed = false\n if (isNullish(value)) {\n if (!isNullish(r)) {\n r = null\n changed = true\n }\n if (!isNullish(g)) {\n g = null\n changed = true\n }\n if (!isNullish(b)) {\n b = null\n changed = true\n }\n if (!isNullish(a)) {\n a = null\n changed = true\n }\n if (!isNullish(h)) {\n h = null\n changed = true\n }\n if (!isNullish(s)) {\n s = null\n changed = true\n }\n if (!isNullish(v)) {\n v = null\n changed = true\n }\n changed && fireChangeEvents.call(that, context || that)\n return undefined\n }\n switch (name.toLowerCase()) {\n case 'ahex':\n case 'hex': {\n const ret = ColorMethods.hexToRgba((value && (value.ahex || value.hex)) || value || 'none')\n val.call(that, 'rgba', {\n r: ret.r,\n g: ret.g,\n b: ret.b,\n a: name === 'ahex'\n ? ret.a\n : !isNullish(a)\n ? a\n : 255\n }, context)\n break\n } default: {\n if (value && (!isNullish(value.ahex) || !isNullish(value.hex))) {\n val.call(that, 'ahex', value.ahex || value.hex || '00000000', context)\n return undefined\n }\n const newV = {}\n let rgb = false; let hsv = false\n if (value.r !== undefined && !name.includes('r')) name += 'r'\n if (value.g !== undefined && !name.includes('g')) name += 'g'\n if (value.b !== undefined && !name.includes('b')) name += 'b'\n if (value.a !== undefined && !name.includes('a')) name += 'a'\n if (value.h !== undefined && !name.includes('h')) name += 'h'\n if (value.s !== undefined && !name.includes('s')) name += 's'\n if (value.v !== undefined && !name.includes('v')) name += 'v';\n [...name].forEach((ch) => {\n switch (ch) {\n case 'r':\n if (hsv) return\n rgb = true\n newV.r = (value.r && value.r | 0) || (value | 0) || 0\n if (newV.r < 0) newV.r = 0\n else if (newV.r > 255) newV.r = 255\n if (r !== newV.r) {\n ({ r } = newV)\n changed = true\n }\n break\n case 'g':\n if (hsv) return\n rgb = true\n newV.g = (value && value.g && value.g | 0) || (value && value | 0) || 0\n if (newV.g < 0) newV.g = 0\n else if (newV.g > 255) newV.g = 255\n if (g !== newV.g) {\n ({ g } = newV)\n changed = true\n }\n break\n case 'b':\n if (hsv) return\n rgb = true\n newV.b = (value && value.b && value.b | 0) || (value && value | 0) || 0\n if (newV.b < 0) newV.b = 0\n else if (newV.b > 255) newV.b = 255\n if (b !== newV.b) {\n ({ b } = newV)\n changed = true\n }\n break\n case 'a':\n newV.a = value && !isNullish(value.a) ? value.a | 0 : value | 0\n if (newV.a < 0) newV.a = 0\n else if (newV.a > 255) newV.a = 255\n if (a !== newV.a) {\n ({ a } = newV)\n changed = true\n }\n break\n case 'h':\n if (rgb) return\n hsv = true\n newV.h = (value && value.h && value.h | 0) || (value && value | 0) || 0\n if (newV.h < 0) newV.h = 0\n else if (newV.h > 360) newV.h = 360\n if (h !== newV.h) {\n ({ h } = newV)\n changed = true\n }\n break\n case 's':\n if (rgb) return\n hsv = true\n newV.s = !isNullish(value.s) ? value.s | 0 : value | 0\n if (newV.s < 0) newV.s = 0\n else if (newV.s > 100) newV.s = 100\n if (s !== newV.s) {\n ({ s } = newV)\n changed = true\n }\n break\n case 'v':\n if (rgb) return\n hsv = true\n newV.v = !isNullish(value.v) ? value.v | 0 : value | 0\n if (newV.v < 0) newV.v = 0\n else if (newV.v > 100) newV.v = 100\n if (v !== newV.v) {\n ({ v } = newV)\n changed = true\n }\n break\n }\n })\n if (changed) {\n if (rgb) {\n r = r || 0\n g = g || 0\n b = b || 0\n const ret = ColorMethods.rgbToHsv({ r, g, b });\n ({ h, s, v } = ret)\n } else if (hsv) {\n h = h || 0\n s = !isNullish(s) ? s : 100\n v = !isNullish(v) ? v : 100\n const ret = ColorMethods.hsvToRgb({ h, s, v });\n ({ r, g, b } = ret)\n }\n a = !isNullish(a) ? a : 255\n fireChangeEvents.call(that, context || that)\n }\n break\n }\n }\n return undefined\n }\n /**\n * @param {GenericCallback} callback\n * @returns {void}\n */\n function bind (callback) {\n if (typeof callback === 'function') changeEvents.push(callback)\n }\n /**\n * @param {GenericCallback} callback\n * @returns {void}\n */\n function unbind (callback) {\n if (typeof callback !== 'function') return\n let i\n while ((i = changeEvents.includes(callback))) {\n changeEvents.splice(i, 1)\n }\n }\n /**\n * Unset `changeEvents`\n * @returns {void}\n */\n function destroy () {\n changeEvents = null\n }\n let r; let g; let b; let a; let h; let s; let v; let changeEvents = []\n Object.assign(that, {\n // public properties and methods\n val,\n bind,\n unbind,\n destroy\n })\n if (init) {\n if (!isNullish(init.ahex)) {\n val('ahex', init)\n } else if (!isNullish(init.hex)) {\n val(\n (!isNullish(init.a) ? 'a' : '') + 'hex',\n !isNullish(init.a)\n ? { ahex: init.hex + ColorMethods.intToHex(init.a) }\n : init\n )\n } else if (!isNullish(init.r) && !isNullish(init.g) && !isNullish(init.b)) {\n val('rgb' + (!isNullish(init.a) ? 'a' : ''), init)\n } else if (!isNullish(init.h) && !isNullish(init.s) && !isNullish(init.v)) {\n val('hsv' + (!isNullish(init.a) ? 'a' : ''), init)\n }\n }\n },\n /**\n * Color conversion methods - make public to give use to external scripts.\n * @namespace\n */\n ColorMethods: {\n /**\n * @typedef {PlainObject} module:jPicker.RGBA\n * @property {Integer} r\n * @property {Integer} g\n * @property {Integer} b\n * @property {Integer} a\n */\n /**\n * @typedef {PlainObject} module:jPicker.RGB\n * @property {Integer} r\n * @property {Integer} g\n * @property {Integer} b\n */\n /**\n * @param {string} hex\n * @returns {module:jPicker.RGBA}\n */\n hexToRgba (hex) {\n if (hex === '' || hex === 'none') return { r: null, g: null, b: null, a: null }\n hex = this.validateHex(hex)\n let r = '00'; let g = '00'; let b = '00'; let a = '255'\n if (hex.length === 6) hex += 'ff'\n if (hex.length > 6) {\n r = hex.substring(0, 2)\n g = hex.substring(2, 4)\n b = hex.substring(4, 6)\n a = hex.substring(6, hex.length)\n } else {\n if (hex.length > 4) {\n r = hex.substring(4, hex.length)\n hex = hex.substring(0, 4)\n }\n if (hex.length > 2) {\n g = hex.substring(2, hex.length)\n hex = hex.substring(0, 2)\n }\n if (hex.length > 0) b = hex.substring(0, hex.length)\n }\n return {\n r: this.hexToInt(r), g: this.hexToInt(g), b: this.hexToInt(b), a: this.hexToInt(a)\n }\n },\n /**\n * @param {string} hex\n * @returns {string}\n */\n validateHex (hex) {\n // if (typeof hex === 'object') return '';\n hex = hex.toLowerCase().replace(/[^a-f\\d]/g, '')\n if (hex.length > 8) hex = hex.substring(0, 8)\n return hex\n },\n /**\n * @param {module:jPicker.RGBA} rgba\n * @returns {string}\n */\n rgbaToHex (rgba) {\n return this.intToHex(rgba.r) + this.intToHex(rgba.g) + this.intToHex(rgba.b) + this.intToHex(rgba.a)\n },\n /**\n * @param {Integer} dec\n * @returns {string}\n */\n intToHex (dec) {\n let result = (dec | 0).toString(16)\n if (result.length === 1) result = ('0' + result)\n return result.toLowerCase()\n },\n /**\n * @param {string} hex\n * @returns {Integer}\n */\n hexToInt (hex) {\n return Number.parseInt(hex, 16)\n },\n /**\n * @typedef {PlainObject} module:jPicker.HSV\n * @property {Integer} h\n * @property {Integer} s\n * @property {Integer} v\n */\n /**\n * @param {module:jPicker.RGB} rgb\n * @returns {module:jPicker.HSV}\n */\n rgbToHsv (rgb) {\n const r = rgb.r / 255; const g = rgb.g / 255; const b = rgb.b / 255; const hsv = { h: 0, s: 0, v: 0 }\n let min = 0; let max = 0\n if (r >= g && r >= b) {\n max = r\n min = g > b ? b : g\n } else if (g >= b && g >= r) {\n max = g\n min = r > b ? b : r\n } else {\n max = b\n min = g > r ? r : g\n }\n hsv.v = max\n hsv.s = max ? (max - min) / max : 0\n let delta\n if (!hsv.s) hsv.h = 0\n else {\n delta = max - min\n if (r === max) hsv.h = (g - b) / delta\n else if (g === max) hsv.h = 2 + (b - r) / delta\n else hsv.h = 4 + (r - g) / delta\n hsv.h = Number.parseInt(hsv.h * 60)\n if (hsv.h < 0) hsv.h += 360\n }\n hsv.s = (hsv.s * 100) | 0\n hsv.v = (hsv.v * 100) | 0\n return hsv\n },\n /**\n * @param {module:jPicker.HSV} hsv\n * @returns {module:jPicker.RGB}\n */\n hsvToRgb (hsv) {\n const rgb = { r: 0, g: 0, b: 0, a: 100 }\n let { h, s, v } = hsv\n if (s === 0) {\n if (v === 0) rgb.r = rgb.g = rgb.b = 0\n else rgb.r = rgb.g = rgb.b = (v * 255 / 100) | 0\n } else {\n if (h === 360) h = 0\n h /= 60\n s /= 100\n v /= 100\n const i = h | 0\n const f = h - i\n const p = v * (1 - s)\n const q = v * (1 - (s * f))\n const t = v * (1 - (s * (1 - f)))\n switch (i) {\n case 0:\n rgb.r = v\n rgb.g = t\n rgb.b = p\n break\n case 1:\n rgb.r = q\n rgb.g = v\n rgb.b = p\n break\n case 2:\n rgb.r = p\n rgb.g = v\n rgb.b = t\n break\n case 3:\n rgb.r = p\n rgb.g = q\n rgb.b = v\n break\n case 4:\n rgb.r = t\n rgb.g = p\n rgb.b = v\n break\n case 5:\n rgb.r = v\n rgb.g = p\n rgb.b = q\n break\n }\n rgb.r = (rgb.r * 255) | 0\n rgb.g = (rgb.g * 255) | 0\n rgb.b = (rgb.b * 255) | 0\n }\n return rgb\n }\n }\n}\nconst { Color, List, ColorMethods } = jPicker // local copies for YUI compressor\n/**\n * @function external:jQuery.fn.jPicker\n * @see {@link external:jQuery.fn.$.fn.jPicker}\n */\n\n/**\n* Will be bound to active {@link jQuery.jPicker.Color}.\n* @callback module:jPicker.LiveCallback\n* @param {external:jQuery} ui\n* @param {Element} context\n* @returns {void}\n*/\n/**\n* @callback module:jPicker.CommitCallback\n* @param {external:jQuery.jPicker.Color} activeColor\n* @param {external:jQuery} okButton\n* @returns {void} Return value not used.\n*/\n/**\n * @callback module:jPicker.CancelCallback\n * @param {external:jQuery.jPicker.Color} activeColor\n * @param {external:jQuery} cancelButton\n * @returns {void} Return value not used.\n */\n/**\n* While it would seem this should specify the name `jPicker` for JSDoc, that doesn't\n* get us treated as a function as well as a namespace (even with `@function name`),\n* so we use an approach to add a redundant `$.fn.` in the name.\n* @namespace\n* @memberof external:jQuery.fn\n* @param {any} elem\n* @param {external:jQuery.fn.jPickerOptions} options\n* @param {module:jPicker.CommitCallback} [commitCallback]\n* @param {module:jPicker.LiveCallback} [liveCallback]\n* @param {module:jPicker.CancelCallback} [cancelCallback]\n* @returns {void}\n*/\nexport function jPickerMethod (elem, options, commitCallback, liveCallback, cancelCallback, i18next) {\n let sets = mergeDeep({}, jPickerDefaults) // local copies for YUI compressor\n sets = mergeDeep(sets, options)\n\n const that = elem\n const settings = sets\n if (that.nodeName.toLowerCase() === 'input') { // Add color picker icon if binding to an input element and bind the events to the input\n Object.assign(settings, {\n window: {\n bindToInput: true,\n expandable: true,\n input: that\n }\n })\n if (that.value === '') {\n settings.color.active = new Color({ hex: null })\n settings.color.current = new Color({ hex: null })\n } else if (ColorMethods.validateHex(that.value)) {\n settings.color.active = new Color({ hex: that.value, a: settings.color.active.val('a') })\n settings.color.current = new Color({ hex: that.value, a: settings.color.active.val('a') })\n }\n }\n if (settings.window.expandable) {\n const content = document.createElement('span')\n content.classList.add('jPicker')\n content.innerHTML = `<span class=\"Icon\" id=\"jq-ae-Icon\">\n <span class=\"Color\" id=\"jq-ae-Color\">&nbsp;</span>\n <span class=\"Alpha\" id=\"jq-ae-Alpha\">&nbsp;</span>\n <span class=\"Image\" id=\"jq-ae-Image\" title=\"${i18next.t('config.open_color_picker')}\">&nbsp;</span>\n <span class=\"Container\" id=\"Container\">&nbsp;</span>\n </span>`\n that.insertAdjacentElement('afterend', content)\n } else {\n settings.window.liveUpdate = false // Basic control binding for inline use - You will need to override the liveCallback or commitCallback function to retrieve results\n }\n const isLessThanIE7 = Number.parseFloat(navigator.appVersion.split('MSIE')[1]) < 7 && document.body.filters // needed to run the AlphaImageLoader function for IE6\n // set color mode and update visuals for the new color mode\n /**\n *\n * @param {\"h\"|\"s\"|\"v\"|\"r\"|\"g\"|\"b\"|\"a\"} colorMode\n * @throws {Error} Invalid mode\n * @returns {void}\n */\n function setColorMode (colorMode) {\n const { active } = color // local copies for YUI compressor\n // {clientPath} = images,\n const hex = active.val('hex')\n let rgbMap; let rgbBar\n settings.color.mode = colorMode\n switch (colorMode) {\n case 'h':\n setTimeout(function () {\n setBG.call(that, colorMapDiv, 'transparent')\n setImgLoc.call(that, colorMapL1, 0)\n setAlpha.call(that, colorMapL1, 100)\n setImgLoc.call(that, colorMapL2, 260)\n setAlpha.call(that, colorMapL2, 100)\n setBG.call(that, colorBarDiv, 'transparent')\n setImgLoc.call(that, colorBarL1, 0)\n setAlpha.call(that, colorBarL1, 100)\n setImgLoc.call(that, colorBarL2, 260)\n setAlpha.call(that, colorBarL2, 100)\n setImgLoc.call(that, colorBarL3, 260)\n setAlpha.call(that, colorBarL3, 100)\n setImgLoc.call(that, colorBarL4, 260)\n setAlpha.call(that, colorBarL4, 100)\n setImgLoc.call(that, colorBarL6, 260)\n setAlpha.call(that, colorBarL6, 100)\n }, 0)\n colorMap.range('all', { minX: 0, maxX: 100, minY: 0, maxY: 100 })\n colorBar.range('rangeY', { minY: 0, maxY: 360 })\n if (isNullish(active.val('ahex'))) break\n colorMap.val('xy', { x: active.val('s'), y: 100 - active.val('v') }, colorMap)\n colorBar.val('y', 360 - active.val('h'), colorBar)\n break\n case 's':\n setTimeout(function () {\n setBG.call(that, colorMapDiv, 'transparent')\n setImgLoc.call(that, colorMapL1, -260)\n setImgLoc.call(that, colorMapL2, -520)\n setImgLoc.call(that, colorBarL1, -260)\n setImgLoc.call(that, colorBarL2, -520)\n setImgLoc.call(that, colorBarL6, 260)\n setAlpha.call(that, colorBarL6, 100)\n }, 0)\n colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 })\n colorBar.range('rangeY', { minY: 0, maxY: 100 })\n if (isNullish(active.val('ahex'))) break\n colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap)\n colorBar.val('y', 100 - active.val('s'), colorBar)\n break\n case 'v':\n setTimeout(function () {\n setBG.call(that, colorMapDiv, '000000')\n setImgLoc.call(that, colorMapL1, -780)\n setImgLoc.call(that, colorMapL2, 260)\n setBG.call(that, colorBarDiv, hex)\n setImgLoc.call(that, colorBarL1, -520)\n setImgLoc.call(that, colorBarL2, 260)\n setAlpha.call(that, colorBarL2, 100)\n setImgLoc.call(that, colorBarL6, 260)\n setAlpha.call(that, colorBarL6, 100)\n }, 0)\n colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 })\n colorBar.range('rangeY', { minY: 0, maxY: 100 })\n if (isNullish(active.val('ahex'))) break\n colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('s') }, colorMap)\n colorBar.val('y', 100 - active.val('v'), colorBar)\n break\n case 'r':\n rgbMap = -1040\n rgbBar = -780\n colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 })\n colorBar.range('rangeY', { minY: 0, maxY: 255 })\n if (isNullish(active.val('ahex'))) break\n colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('g') }, colorMap)\n colorBar.val('y', 255 - active.val('r'), colorBar)\n break\n case 'g':\n rgbMap = -1560\n rgbBar = -1820\n colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 })\n colorBar.range('rangeY', { minY: 0, maxY: 255 })\n if (isNullish(active.val('ahex'))) break\n colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('r') }, colorMap)\n colorBar.val('y', 255 - active.val('g'), colorBar)\n break\n case 'b':\n rgbMap = -2080\n rgbBar = -2860\n colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 })\n colorBar.range('rangeY', { minY: 0, maxY: 255 })\n if (isNullish(active.val('ahex'))) break\n colorMap.val('xy', { x: active.val('r'), y: 255 - active.val('g') }, colorMap)\n colorBar.val('y', 255 - active.val('b'), colorBar)\n break\n case 'a':\n setTimeout(function () {\n setBG.call(that, colorMapDiv, 'transparent')\n setImgLoc.call(that, colorMapL1, -260)\n setImgLoc.call(that, colorMapL2, -520)\n setImgLoc.call(that, colorBarL1, 260)\n setImgLoc.call(that, colorBarL2, 260)\n setAlpha.call(that, colorBarL2, 100)\n setImgLoc.call(that, colorBarL6, 0)\n setAlpha.call(that, colorBarL6, 100)\n }, 0)\n colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 })\n colorBar.range('rangeY', { minY: 0, maxY: 255 })\n if (isNullish(active.val('ahex'))) break\n colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap)\n colorBar.val('y', 255 - active.val('a'), colorBar)\n break\n default:\n throw new Error('Invalid Mode')\n }\n switch (colorMode) {\n case 'h':\n break\n case 's':\n case 'v':\n case 'a':\n setTimeout(function () {\n setAlpha.call(that, colorMapL1, 100)\n setAlpha.call(that, colorBarL1, 100)\n setImgLoc.call(that, colorBarL3, 260)\n setAlpha.call(that, colorBarL3, 100)\n setImgLoc.call(that, colorBarL4, 260)\n setAlpha.call(that, colorBarL4, 100)\n }, 0)\n break\n case 'r':\n case 'g':\n case 'b':\n setTimeout(function () {\n setBG.call(that, colorMapDiv, 'transparent')\n setBG.call(that, colorBarDiv, 'transparent')\n setAlpha.call(that, colorBarL1, 100)\n setAlpha.call(that, colorMapL1, 100)\n setImgLoc.call(that, colorMapL1, rgbMap)\n setImgLoc.call(that, colorMapL2, rgbMap - 260)\n setImgLoc.call(that, colorBarL1, rgbBar - 780)\n setImgLoc.call(that, colorBarL2, rgbBar - 520)\n setImgLoc.call(that, colorBarL3, rgbBar)\n setImgLoc.call(that, colorBarL4, rgbBar - 260)\n setImgLoc.call(that, colorBarL6, 260)\n setAlpha.call(that, colorBarL6, 100)\n }, 0)\n break\n }\n if (isNullish(active.val('ahex'))) return\n activeColorChanged.call(that, active)\n }\n /**\n * Update color when user changes text values.\n * @param {external:jQuery} ui\n * @param {?module:jPicker.Slider} context\n * @returns {void}\n */\n function activeColorChanged (ui, context) {\n if (isNullish(context) || (context !== colorBar && context !== colorMap)) positionMapAndBarArrows.call(that, ui, context)\n setTimeout(function () {\n updatePreview.call(that, ui)\n updateMapVisuals.call(that, ui)\n updateBarVisuals.call(that, ui)\n }, 0)\n }\n\n /**\n * User has dragged the ColorMap pointer.\n * @param {external:jQuery} ui\n * @param {?module:jPicker.Slider} context\n * @returns {void}\n */\n function mapValueChanged (ui, context) {\n const { active } = color\n if (context !== colorMap && isNullish(active.val())) return\n const xy = ui.val('all')\n switch (settings.color.mode) {\n case 'h':\n active.val('sv', { s: xy.x, v: 100 - xy.y }, context)\n break\n case 's':\n case 'a':\n active.val('hv', { h: xy.x, v: 100 - xy.y }, context)\n break\n case 'v':\n active.val('hs', { h: xy.x, s: 100 - xy.y }, context)\n break\n case 'r':\n active.val('gb', { g: 255 - xy.y, b: xy.x }, context)\n break\n case 'g':\n active.val('rb', { r: 255 - xy.y, b: xy.x }, context)\n break\n case 'b':\n active.val('rg', { r: xy.x, g: 255 - xy.y }, context)\n break\n }\n }\n\n /**\n * User has dragged the ColorBar slider.\n * @param {external:jQuery} ui\n * @param {?module:jPicker.Slider} context\n * @returns {void}\n */\n function colorBarValueChanged (ui, context) {\n const { active } = color\n if (context !== colorBar && isNullish(active.val())) return\n switch (settings.color.mode) {\n case 'h':\n active.val('h', { h: 360 - ui.val('y') }, context)\n break\n case 's':\n active.val('s', { s: 100 - ui.val('y') }, context)\n break\n case 'v':\n active.val('v', { v: 100 - ui.val('y') }, context)\n break\n case 'r':\n active.val('r', { r: 255 - ui.val('y') }, context)\n break\n case 'g':\n active.val('g', { g: 255 - ui.val('y') }, context)\n break\n case 'b':\n active.val('b', { b: 255 - ui.val('y') }, context)\n break\n case 'a':\n active.val('a', 255 - ui.val('y'), context)\n break\n }\n }\n\n /**\n * Position map and bar arrows to match current color.\n * @param {external:jQuery} ui\n * @param {?module:jPicker.Slider} context\n * @returns {void}\n */\n function positionMapAndBarArrows (ui, context) {\n if (context !== colorMap) {\n switch (settings.color.mode) {\n case 'h': {\n const sv = ui.val('sv')\n colorMap.val('xy', { x: !isNullish(sv) ? sv.s : 100, y: 100 - (!isNullish(sv) ? sv.v : 100) }, context)\n break\n } case 's':\n // Fall through\n case 'a': {\n const hv = ui.val('hv')\n colorMap.val('xy', { x: (hv && hv.h) || 0, y: 100 - (!isNullish(hv) ? hv.v : 100) }, context)\n break\n } case 'v': {\n const hs = ui.val('hs')\n colorMap.val('xy', { x: (hs && hs.h) || 0, y: 100 - (!isNullish(hs) ? hs.s : 100) }, context)\n break\n } case 'r': {\n const bg = ui.val('bg')\n colorMap.val('xy', { x: (bg && bg.b) || 0, y: 255 - ((bg && bg.g) || 0) }, context)\n break\n } case 'g': {\n const br = ui.val('br')\n colorMap.val('xy', { x: (br && br.b) || 0, y: 255 - ((br && br.r) || 0) }, context)\n break\n } case 'b': {\n const rg = ui.val('rg')\n colorMap.val('xy', { x: (rg && rg.r) || 0, y: 255 - ((rg && rg.g) || 0) }, context)\n break\n }\n }\n }\n if (context !== colorBar) {\n switch (settings.color.mode) {\n case 'h':\n colorBar.val('y', 360 - (ui.val('h') || 0), context)\n break\n case 's': {\n const s = ui.val('s')\n colorBar.val('y', 100 - (!isNullish(s) ? s : 100), context)\n break\n } case 'v': {\n const v = ui.val('v')\n colorBar.val('y', 100 - (!isNullish(v) ? v : 100), context)\n break\n } case 'r':\n colorBar.val('y', 255 - (ui.val('r') || 0), context)\n break\n case 'g':\n colorBar.val('y', 255 - (ui.val('g') || 0), context)\n break\n case 'b':\n colorBar.val('y', 255 - (ui.val('b') || 0), context)\n break\n case 'a': {\n const a = ui.val('a')\n colorBar.val('y', 255 - (!isNullish(a) ? a : 255), context)\n break\n }\n }\n }\n }\n /**\n * @param {external:jQuery} ui\n * @returns {void}\n */\n function updatePreview (ui) {\n try {\n const all = ui.val('all')\n activePreview.style.backgroundColor = (all && '#' + all.hex) || 'transparent'\n setAlpha.call(that, activePreview, (all && toFixedNumeric((all.a * 100) / 255, 4)) || 0)\n } catch (e) { /* empty fn */ }\n }\n /**\n * @param {external:jQuery} ui\n * @returns {void}\n */\n function updateMapVisuals (ui) {\n switch (settings.color.mode) {\n case 'h':\n setBG.call(that, colorMapDiv, new Color({ h: ui.val('h') || 0, s: 100, v: 100 }).val('hex'))\n break\n case 's':\n case 'a': {\n const s = ui.val('s')\n setAlpha.call(that, colorMapL2, 100 - (!isNullish(s) ? s : 100))\n break\n } case 'v': {\n const v = ui.val('v')\n setAlpha.call(that, colorMapL1, !isNullish(v) ? v : 100)\n break\n } case 'r':\n setAlpha.call(that, colorMapL2, toFixedNumeric((ui.val('r') || 0) / 255 * 100, 4))\n break\n case 'g':\n setAlpha.call(that, colorMapL2, toFixedNumeric((ui.val('g') || 0) / 255 * 100, 4))\n break\n case 'b':\n setAlpha.call(that, colorMapL2, toFixedNumeric((ui.val('b') || 0) / 255 * 100))\n break\n }\n const a = ui.val('a')\n setAlpha.call(that, colorMapL3, toFixedNumeric(((255 - (a || 0)) * 100) / 255, 4))\n }\n /**\n * @param {external:jQuery} ui\n * @returns {void}\n */\n function updateBarVisuals (ui) {\n switch (settings.color.mode) {\n case 'h': {\n const a = ui.val('a')\n setAlpha.call(that, colorBarL5, toFixedNumeric(((255 - (a || 0)) * 100) / 255, 4))\n break\n } case 's': {\n const hva = ui.val('hva')\n const saturatedColor = new Color({ h: (hva && hva.h) || 0, s: 100, v: !isNullish(hva) ? hva.v : 100 })\n setBG.call(that, colorBarDiv, saturatedColor.val('hex'))\n setAlpha.call(that, colorBarL2, 100 - (!isNullish(hva) ? hva.v : 100))\n setAlpha.call(that, colorBarL5, toFixedNumeric(((255 - ((hva && hva.a) || 0)) * 100) / 255, 4))\n break\n } case 'v': {\n const hsa = ui.val('hsa')\n const valueColor = new Color({ h: (hsa && hsa.h) || 0, s: !isNullish(hsa) ? hsa.s : 100, v: 100 })\n setBG.call(that, colorBarDiv, valueColor.val('hex'))\n setAlpha.call(that, colorBarL5, toFixedNumeric(((255 - ((hsa && hsa.a) || 0)) * 100) / 255, 4))\n break\n } case 'r':\n case 'g':\n case 'b': {\n const rgba = ui.val('rgba')\n let hValue = 0; let vValue = 0\n if (settings.color.mode === 'r') {\n hValue = (rgba && rgba.b) || 0\n vValue = (rgba && rgba.g) || 0\n } else if (settings.color.mode === 'g') {\n hValue = (rgba && rgba.b) || 0\n vValue = (rgba && rgba.r) || 0\n } else if (settings.color.mode === 'b') {\n hValue = (rgba && rgba.r) || 0\n vValue = (rgba && rgba.g) || 0\n }\n const middle = vValue > hValue ? hValue : vValue\n setAlpha.call(that, colorBarL2, hValue > vValue ? toFixedNumeric(((hValue - vValue) / (255 - vValue)) * 100, 4) : 0)\n setAlpha.call(that, colorBarL3, vValue > hValue ? toFixedNumeric(((vValue - hValue) / (255 - hValue)) * 100, 4) : 0)\n setAlpha.call(that, colorBarL4, toFixedNumeric((middle / 255) * 100, 4))\n setAlpha.call(that, colorBarL5, toFixedNumeric(((255 - ((rgba && rgba.a) || 0)) * 100) / 255, 4))\n break\n } case 'a': {\n const a = ui.val('a')\n setBG.call(that, colorBarDiv, ui.val('hex') || '000000')\n setAlpha.call(that, colorBarL5, !isNullish(a) ? 0 : 100)\n setAlpha.call(that, colorBarL6, !isNullish(a) ? 100 : 0)\n break\n }\n }\n }\n /**\n * @param {external:jQuery} el\n * @param {string} [c=\"transparent\"]\n * @returns {void}\n */\n function setBG (el, c) {\n el.style.backgroundColor = (c && c.length === 6 && '#' + c) || 'transparent'\n }\n\n /**\n * @param {external:jQuery} img\n * @param {string} src The image source\n * @returns {void}\n */\n function setImg (img, src) {\n if (isLessThanIE7 && (src.includes('AlphaBar.png') || src.includes('Bars.png') || src.includes('Maps.png'))) {\n img.setAttribute('pngSrc', src)\n img.style.backgroundImage = 'none'\n img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\\'' + src + '\\', sizingMethod=\\'scale\\')'\n } else img.style.backgroundImage = 'url(\\'' + src + '\\')'\n }\n /**\n * @param {external:jQuery} img\n * @param {Float} y\n * @returns {void}\n */\n function setImgLoc (img, y) {\n img.style.top = y + 'px'\n }\n /**\n * @param {external:jQuery} obj\n * @param {Float} alpha\n * @returns {void}\n */\n function setAlpha (obj, alpha) {\n obj.style.visibility = (alpha > 0) ? 'visible' : 'hidden'\n if (alpha > 0 && alpha < 100) {\n if (isLessThanIE7) {\n const src = obj.getAttribute('pngSrc')\n if (!isNullish(src) && (\n src.includes('AlphaBar.png') || src.includes('Bars.png') || src.includes('Maps.png')\n )) {\n obj.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\\'' + src +\n '\\', sizingMethod=\\'scale\\') progid:DXImageTransform.Microsoft.Alpha(opacity=' + alpha + ')'\n } else obj.style.opacity = toFixedNumeric(alpha / 100, 4)\n } else obj.style.opacity = toFixedNumeric(alpha / 100, 4)\n } else if (alpha === 0 || alpha === 100) {\n if (isLessThanIE7) {\n const src = obj.getAttribute('pngSrc')\n if (!isNullish(src) && (\n src.includes('AlphaBar.png') || src.includes('Bars.png') || src.includes('Maps.png')\n )) {\n obj.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\\'' + src +\n '\\', sizingMethod=\\'scale\\')'\n } else obj.style.opacity = ''\n } else obj.style.opacity = ''\n }\n }\n\n /**\n * Revert color to original color when opened.\n * @returns {void}\n */\n function revertColor () {\n color.active.val('ahex', color.current.val('ahex'))\n }\n /**\n * Commit the color changes.\n * @returns {void}\n */\n function commitColor () {\n color.current.val('ahex', color.active.val('ahex'))\n }\n /**\n * @param {Event} e\n * @returns {void}\n */\n function radioClicked (e) {\n const rChecks = that.querySelectorAll('input[type=\"radio\"]:checked')\n for (const rCheck of rChecks) {\n if (rCheck.value !== e.target.value) {\n rCheck.checked = false\n }\n }\n setColorMode.call(that, e.target.value)\n }\n /**\n *\n * @returns {void}\n */\n function currentClicked () {\n revertColor.call(that)\n }\n /**\n *\n * @returns {void}\n */\n function cancelClicked () {\n revertColor.call(that)\n settings.window.expandable && hide.call(that)\n typeof cancelCallback === 'function' && cancelCallback.call(that, color.active, cancelButton)\n }\n /**\n *\n * @returns {void}\n */\n function okClicked () {\n commitColor.call(that)\n settings.window.expandable && hide.call(that)\n typeof commitCallback === 'function' && commitCallback.call(that, color.active, okButton)\n }\n /**\n *\n * @returns {void}\n */\n function iconImageClicked () {\n show.call(that)\n }\n /**\n * @param {external:jQuery} ui\n * @returns {void}\n */\n function currentColorChanged (ui) {\n const hex = ui.val('hex')\n currentPreview.style.backgroundColor = (hex && '#' + hex) || 'transparent'\n setAlpha.call(that, currentPreview, toFixedNumeric(((ui.val('a') || 0) * 100) / 255, 4))\n }\n /**\n * @param {external:jQuery} ui\n * @returns {void}\n */\n function expandableColorChanged (ui) {\n const hex = ui.val('hex')\n const va = ui.val('va')\n iconColor.style.backgroundColor = (hex && '#' + hex) || 'transparent'\n setAlpha.call(that, iconAlpha, toFixedNumeric(((255 - ((va && va.a) || 0)) * 100) / 255, 4))\n if (settings.window.bindToInput && settings.window.updateInputColor) {\n settings.window.input.style.backgroundColor = (hex && '#' + hex) || 'transparent'\n settings.window.input.style.color = isNullish(va) || va.v > 75 ? '#000000' : '#ffffff'\n }\n }\n /**\n * @param {Event} e\n * @returns {void}\n */\n function moveBarMouseDown (e) {\n elementStartX = Number.parseInt(container.style.left)\n elementStartY = Number.parseInt(container.style.top)\n pageStartX = e.pageX\n pageStartY = e.pageY\n // bind events to document to move window - we will unbind these on mouseup\n document.addEventListener('mousemove', documentMouseMove)\n document.addEventListener('mouseup', documentMouseUp)\n e.preventDefault() // prevent attempted dragging of the column\n }\n /**\n * @param {Event} e\n * @returns {false}\n */\n function documentMouseMove (e) {\n container.style.left = elementStartX - (pageStartX - e.pageX) + 'px'\n container.style.top = elementStartY - (pageStartY - e.pageY) + 'px'\n if (settings.window.expandable) {\n const prev = container.previousElementSibling\n prev.style.left = container.style.left\n prev.style.top = container.style.top\n }\n e.stopPropagation()\n e.preventDefault()\n return false\n }\n /**\n * @param {Event} e\n * @returns {false}\n */\n function documentMouseUp (e) {\n document.removeEventListener('mousemove', documentMouseMove)\n document.removeEventListener('mouseup', documentMouseUp)\n e.stopPropagation()\n e.preventDefault()\n return false\n }\n /**\n * @param {Event} e\n * @returns {false}\n */\n function quickPickClicked (e) {\n e.preventDefault()\n e.stopPropagation()\n color.active.val('ahex', e.target.getAttribute('title') || null, e.target)\n return false\n }\n /**\n *\n * @returns {void}\n */\n function show () {\n color.current.val('ahex', color.active.val('ahex'))\n /**\n *\n * @returns {void}\n */\n function attachIFrame () {\n if (!settings.window.expandable) return\n const table = container.querySelector('#jPicker-table')\n container.insertAdjacentElement('beforebegin', document.createElement('iframe'))\n const pELem = container.previousElementSibling\n pELem.style.width = parseFloat(getComputedStyle(table, null).width.replace('px', ''))\n pELem.style.height = parseFloat(getComputedStyle(container, null).height.replace('px', ''))\n pELem.style.opacity = 0\n pELem.style.position = 'absolute'\n pELem.style.left = getComputedStyle(container, null).getPropertyValue('left')\n pELem.style.top = getComputedStyle(container, null).getPropertyValue('top')\n }\n if (settings.window.expandable) {\n container.style.zIndex = 20\n }\n container.style.display = 'block'\n attachIFrame()\n /* switch (settings.window.effects.type) {\n case 'fade':\n container.fadeIn(settings.window.effects.speed.show, attachIFrame);\n break;\n case 'slide':\n container.slideDown(settings.window.effects.speed.show, attachIFrame);\n break;\n case 'show':\n default:\n container.show(settings.window.effects.speed.show, attachIFrame);\n break;\n } */\n }\n /**\n *\n * @returns {void}\n */\n function hide () {\n /**\n *\n * @returns {void}\n */\n function removeIFrame () {\n if (settings.window.expandable) container.style.zIndex = 10\n if (!settings.window.expandable) return\n container.prev().remove()\n }\n container.style.display = 'none'\n removeIFrame()\n /* switch (settings.window.effects.type) {\n case 'fade':\n container.fadeOut(settings.window.effects.speed.hide, removeIFrame);\n break;\n case 'slide':\n container.slideUp(settings.window.effects.speed.hide, removeIFrame);\n break;\n case 'show':\n default:\n container.hide(settings.window.effects.speed.hide, removeIFrame);\n break;\n } */\n }\n /**\n *\n * @returns {void}\n */\n function initialize () {\n const nexts = that.nextElementSibling\n const win = settings.window\n const popup = win.expandable ? nexts.querySelector('#Container') : null\n container = win.expandable ? document.createElement('div') : that\n container.classList.add('jPicker')\n container.classList.add('Container')\n if (win.expandable) container.style.display = 'none'\n container.onselectstart = function (e) {\n if (e.target.nodeName.toLowerCase() !== 'input') return false\n return true\n }\n // inject html source code - we are using a single table for this control - I know tables are considered bad, but it takes care of equal height columns and\n // this control really is tabular data, so I believe it is the right move\n const all = color.active.val('all')\n if (win.alphaPrecision < 0) win.alphaPrecision = 0\n else if (win.alphaPrecision > 2) win.alphaPrecision = 2\n const controlHtml = `<table class=\"jPicker\" id=\"jPicker-table\" cellpadding=\"0\" cellspacing=\"0\">\n <tbody>\n ${win.expandable ? '<tr><td class=\"Move\" colspan=\"5\">&nbsp;</td></tr>' : ''}\n <tr>\n <td rowspan=\"9\"><h2 class=\"Title\">${win.title || 'config.jpicker_title'}</h2><div class=\"Map\" id=\"Map\"><span class=\"Map1\" id=\"MMap1\">&nbsp;</span><span class=\"Map2\" id=\"MMap2\">&nbsp;</span><span class=\"Map3\" id=\"MMap3\">&nbsp;</span><img src=\"${images.clientPath + images.colorMap.arrow.file}\" class=\"Arrow\"/></div></td>\n <td rowspan=\"9\"><div class=\"Bar\" id=\"Bar\"><span class=\"Map1\" id=\"Map1\">&nbsp;</span><span class=\"Map2\" id=\"Map2\">&nbsp;</span><span class=\"Map3\" id=\"Map3\">&nbsp;</span><span class=\"Map4\" id=\"Map4\">&nbsp;</span><span class=\"Map5\" id=\"Map5\">&nbsp;</span><span class=\"Map6\" id=\"Map6\">&nbsp;</span><img src=\"${images.clientPath + images.colorBar.arrow.file}\" class=\"Arrow\"/></div></td>\n <td colspan=\"2\" class=\"Preview\" id=\"Preview\">${i18next.t('config.jpicker_new_color')}<div id=\"preview-div\"><span class=\"Active\" id=\"Active\" title=\"${i18next.t('config.jpicker_tooltip_colors_new_color')}\">&nbsp;</span><span class=\"Current\" id=\"Current\" title=\"${i18next.t('config.jpicker_tooltip_colors_current_color')}\">&nbsp;</span></div>${i18next.t('config.jpicker_current_color')}</td>\n <td rowspan=\"9\" class=\"Button\" id=\"Button\"><input type=\"button\" class=\"Ok\" id=\"Ok\" value=\"${i18next.t('common.ok')}\" title=\"${i18next.t('config.jpicker_tooltip_buttons_ok')}\"/><input type=\"button\" class=\"Cancel\" id=\"Cancel\" value=\"${i18next.t('common.cancel')}\" title=\"${i18next.t('config.jpicker_tooltip_buttons_cancel')}\"/><hr/><div class=\"Grid\" id=\"Grid\"></div></td>\n </tr>\n <tr class=\"Hue\">\n <td class=\"Radio\"><label title=\"${i18next.t('config.jpicker_tooltip_hue_radio')}\"><input type=\"radio\" value=\"h\"${settings.color.mode === 'h' ? ' checked=\"checked\"' : ''}/>H:</label></td>\n <td class=\"Text\"><input type=\"text\" maxlength=\"3\" value=\"${all ? all.h : ''}\" title=\"${i18next.t('config.jpicker_tooltip_hue_textbox')}\"/>&nbsp;&deg;</td>\n </tr>\n <tr class=\"Saturation\">\n <td class=\"Radio\"><label title=\"${i18next.t('config.jpicker_tooltip_saturation_radio')}\"><input type=\"radio\" value=\"s\"${settings.color.mode === 's' ? ' checked=\"checked\"' : ''}/>S:</label></td>\n <td class=\"Text\"><input type=\"text\" maxlength=\"3\" value=\"${all ? all.s : ''}\" title=\"${i18next.t('config.jpicker_tooltip_saturation_textbox')}\"/>&nbsp;%</td>\n </tr>\n <tr class=\"Value\">\n <td class=\"Radio\"><label title=\"${i18next.t('config.jpicker_tooltip_value_radio')}\"><input type=\"radio\" value=\"v\"${settings.color.mode === 'v' ? ' checked=\"checked\"' : ''}/>V:</label><br/><br/></td>\n <td class=\"Text\"><input type=\"text\" maxlength=\"3\" value=\"${all ? all.v : ''}\" title=\"${i18next.t('config.jpicker_tooltip_value_textbox')}\"/>&nbsp;%<br/><br/></td>\n </tr>\n <tr class=\"Red\">\n <td class=\"Radio\"><label title=\"${i18next.t('config.jpicker_tooltip_red_radio')}\"><input type=\"radio\" value=\"r\"${settings.color.mode === 'r' ? ' checked=\"checked\"' : ''}/>R:</label></td>\n <td class=\"Text\"><input type=\"text\" maxlength=\"3\" value=\"${all ? all.r : ''}\" title=\"${i18next.t('config.jpicker_tooltip_red_textbox')}\"/></td>\n </tr>\n <tr class=\"Green\">\n <td class=\"Radio\"><label title=\"${i18next.t('config.jpicker_tooltip_green_radio')}\"><input type=\"radio\" value=\"g\"${settings.color.mode === 'g' ? ' checked=\"checked\"' : ''}/>G:</label></td>\n <td class=\"Text\"><input type=\"text\" maxlength=\"3\" value=\"${all ? all.g : ''}\" title=\"${i18next.t('config.jpicker_tooltip_green_textbox')}\"/></td>\n </tr>\n <tr class=\"Blue\">\n <td class=\"Radio\"><label title=\"${i18next.t('config.jpicker_tooltip_blue_radio')}\"><input type=\"radio\" value=\"b\"${settings.color.mode === 'b' ? ' checked=\"checked\"' : ''}/>B:</label></td>\n <td class=\"Text\"><input type=\"text\" maxlength=\"3\" value=\"${all ? all.b : ''}\" title=\"${i18next.t('config.jpicker_tooltip_blue_textbox')}\"/></td>\n </tr>\n <tr class=\"Alpha\">\n <td class=\"Radio\">${win.alphaSupport ? `<label title=\"${i18next.t('config.jpicker_tooltip_alpha_radio')}\"><input type=\"radio\" value=\"a\"${settings.color.mode === 'a' ? ' checked=\"checked\"' : ''}/>A:</label>` : '&nbsp;'}</td>\n <td class=\"Text\">${win.alphaSupport ? `<input type=\"text\" maxlength=\"${3 + win.alphaPrecision}\" value=\"${all ? toFixedNumeric((all.a * 100) / 255, win.alphaPrecision) : ''}\" title=\"${i18next.t('config.jpicker_tooltip_alpha_textbox')}\"/>&nbsp;%` : '&nbsp;'}</td>\n </tr>\n <tr class=\"Hex\">\n <td colspan=\"2\" class=\"Text\"><label title=\"${i18next.t('config.jpicker_tooltip_hex_textbox')}\">#:<input type=\"text\" maxlength=\"6\" class=\"Hex\" value=\"${all ? all.hex : ''}\"/></label>${win.alphaSupport ? `<input type=\"text\" maxlength=\"2\" class=\"AHex\" value=\"${all ? all.ahex.substring(6) : ''}\" title=\"${i18next.t('config.jpicker_tooltip_hex_alpha')}\"/></td>` : '&nbsp;'}\n </tr>\n </tbody></table>`\n if (win.expandable) {\n container.innerHTML = controlHtml\n if (!that.querySelectorAll('div.jPicker.Container').length) {\n document.body.insertBefore(container, document.body.firstChild)\n } else {\n that.querySelector('div.jPicker.Container:last').insertAdjacentElement('afterend', container)\n }\n container.addEventListener('mousedown', function () {\n container.style.zIndex = 20\n })\n const poslt = findPos(popup)\n container.style.position = 'absolute'\n container.style.left =\n win.position.x === 'left'\n ? (poslt.left - 530 - (win.position.y === 'center' ? 25 : 0)) + 'px'\n : win.position.x === 'center'\n ? (poslt.left - 260) + 'px'\n : win.position.x === 'right'\n ? (poslt.left - 10 + (win.position.y === 'center' ? 25 : 0)) + 'px'\n : win.position.x === 'screenCenter'\n ? ((document.width >> 1) - 260) + 'px'\n : (poslt.left + Number.parseInt(win.position.x)) + 'px'\n container.style.top =\n win.position.y === 'top'\n ? (poslt.top - 312) + 'px'\n : win.position.y === 'center'\n ? (poslt.top - 156) + 'px'\n : win.position.y === 'bottom'\n ? (poslt.top + 25) + 'px'\n : (poslt.top + Number.parseInt(win.position.y)) + 'px'\n } else {\n container = that\n const newDiv = document.createElement('div')\n newDiv.innerHTML = controlHtml\n while (newDiv.children.length > 0) {\n container.appendChild(newDiv.children[0])\n }\n }\n // initialize the objects to the source code just injected\n const tbody = container.querySelector('tbody')\n colorMapDiv = tbody.querySelector('#Map')\n colorBarDiv = tbody.querySelector('#Bar')\n colorMapL1 = colorMapDiv.querySelector('#MMap1')\n colorMapL2 = colorMapDiv.querySelector('#MMap2')\n colorMapL3 = colorMapDiv.querySelector('#MMap3')\n colorBarL1 = colorBarDiv.querySelector('#Map1')\n colorBarL2 = colorBarDiv.querySelector('#Map2')\n colorBarL3 = colorBarDiv.querySelector('#Map3')\n colorBarL4 = colorBarDiv.querySelector('#Map4')\n colorBarL5 = colorBarDiv.querySelector('#Map5')\n colorBarL6 = colorBarDiv.querySelector('#Map6')\n // create color pickers and maps\n colorMap = new Slider(\n colorMapDiv,\n {\n map: {\n width: images.colorMap.width,\n height: images.colorMap.height\n },\n arrow: {\n image: images.clientPath + images.colorMap.arrow.file,\n width: images.colorMap.arrow.width,\n height: images.colorMap.arrow.height\n }\n }\n )\n colorMap.bind(mapValueChanged)\n colorBar = new Slider(\n colorBarDiv,\n {\n map: {\n width: images.colorBar.width,\n height: images.colorBar.height\n },\n arrow: {\n image: images.clientPath + images.colorBar.arrow.file,\n width: images.colorBar.arrow.width,\n height: images.colorBar.arrow.height\n }\n }\n )\n colorBar.bind(colorBarValueChanged)\n colorPicker = new ColorValuePicker(\n tbody,\n color.active,\n win.expandable && win.bindToInput ? win.input : null,\n win.alphaPrecision\n )\n const hex = all ? all.hex : null\n const preview = tbody.querySelector('#Preview')\n const button = tbody.querySelector('#Button')\n activePreview = preview.querySelector('#Active')\n activePreview.style.backgroundColor = (hex) ? '#' + hex : 'transparent'\n currentPreview = preview.querySelector('#Current')\n currentPreview.style.backgroundColor = (hex) ? '#' + hex : 'transparent'\n svgEditor.$click(currentPreview, currentClicked)\n setAlpha.call(that, currentPreview, toFixedNumeric((color.current.val('a') * 100) / 255, 4))\n okButton = button.querySelector('#Ok')\n svgEditor.$click(okButton, okClicked)\n cancelButton = button.querySelector('#Cancel')\n svgEditor.$click(cancelButton, cancelClicked)\n grid = button.querySelector('#Grid')\n setTimeout(function () {\n setImg.call(that, colorMapL1, images.clientPath + 'Maps.png')\n setImg.call(that, colorMapL2, images.clientPath + 'Maps.png')\n setImg.call(that, colorMapL3, images.clientPath + 'map-opacity.png')\n setImg.call(that, colorBarL1, images.clientPath + 'Bars.png')\n setImg.call(that, colorBarL2, images.clientPath + 'Bars.png')\n setImg.call(that, colorBarL3, images.clientPath + 'Bars.png')\n setImg.call(that, colorBarL4, images.clientPath + 'Bars.png')\n setImg.call(that, colorBarL5, images.clientPath + 'bar-opacity.png')\n setImg.call(that, colorBarL6, images.clientPath + 'AlphaBar.png')\n setImg.call(that, preview.querySelector('#preview-div'), images.clientPath + 'preview-opacity.png')\n }, 0)\n const radioInputs = tbody.querySelectorAll('td.Radio input')\n for (const radioInput of radioInputs) {\n svgEditor.$click(radioInput, radioClicked)\n }\n // initialize quick list\n if (color.quickList && color.quickList.length > 0) {\n let html = ''\n for (let i = 0; i < color.quickList.length; i++) {\n /* if default colors are hex strings, change them to color objects */\n if ((typeof (color.quickList[i])).toString().toLowerCase() === 'string') {\n color.quickList[i] = new Color({ hex: color.quickList[i] })\n }\n const alpha = color.quickList[i].val('a')\n let ahex = color.quickList[i].val('ahex')\n if (!win.alphaSupport && ahex) ahex = ahex.substring(0, 6) + 'ff'\n const quickHex = color.quickList[i].val('hex')\n if (!ahex) ahex = '00000000'\n html += '<span class=\"QuickColor\"' + (' title=\"#' + ahex + '\"') + ' style=\"background-color:' + ((quickHex && '#' + quickHex) || '') + ';' + (quickHex ? '' : 'background-image:url(' + images.clientPath + 'NoColor.png)') + (win.alphaSupport && alpha && alpha < 255 ? ';opacity:' + toFixedNumeric(alpha / 255, 4) + ';filter:Alpha(opacity=' + toFixedNumeric(alpha / 2.55, 4) + ')' : '') + '\">&nbsp;</span>'\n }\n setImg.call(that, grid, images.clientPath + 'bar-opacity.png')\n const div = document.createElement('div')\n div.innerHTML = html\n while (div.children.length > 0) {\n grid.appendChild(div.children[0])\n }\n // grid.html(html);\n const QuickColorSels = grid.querySelectorAll('.QuickColor')\n for (const QuickColorSel of QuickColorSels) {\n svgEditor.$click(QuickColorSel, quickPickClicked)\n }\n }\n setColorMode.call(that, settings.color.mode)\n color.active.bind(activeColorChanged)\n typeof liveCallback === 'function' && color.active.bind(liveCallback)\n color.current.bind(currentColorChanged)\n // bind to input\n if (win.expandable) {\n that.icon = popup.parentNode\n iconColor = that.icon.querySelector('.Color')\n iconColor.style.backgroundColor = (hex && '#' + hex) || 'transparent'\n iconAlpha = that.icon.querySelector('.Alpha')\n setImg.call(that, iconAlpha, images.clientPath + 'bar-opacity.png')\n setAlpha.call(that, iconAlpha, toFixedNumeric(((255 - (all ? all.a : 0)) * 100) / 255, 4))\n iconImage = that.icon.querySelector('.Image')\n iconImage.style.backgroundImage = 'url(\\'' + images.clientPath + images.picker.file + '\\')'\n svgEditor.$click(iconImage, iconImageClicked)\n if (win.bindToInput && win.updateInputColor) {\n win.input.style.backgroundColor = (hex && '#' + hex) || 'transparent'\n win.input.style.color = isNullish(all) || all.v > 75 ? '#000000' : '#ffffff'\n }\n moveBar = tbody.querySelector('.Move')\n moveBar.addEventListener('mousedown', moveBarMouseDown)\n color.active.bind(expandableColorChanged)\n } else {\n show.call(that)\n }\n }\n /**\n *\n * @returns {void}\n */\n function destroy () {\n const radioInputs = container.querySelectorAll('td.Radio input')\n for (const radioInput of radioInputs) {\n radioInput.removeEventListener('click', radioClicked)\n }\n currentPreview.removeEventListener('click', currentClicked)\n cancelButton.removeEventListener('click', cancelClicked)\n okButton.removeEventListener('click', okClicked)\n if (settings.window.expandable) {\n iconImage.removeEventListener('click', iconImageClicked)\n moveBar.removeEventListener('mousedown', moveBarMouseDown)\n that.icon = null\n }\n const jqQuickColors = container.querySelectorAll('.QuickColor')\n for (const jqQuickColor of jqQuickColors) {\n jqQuickColor.removeEventListener('click', quickPickClicked)\n }\n colorMapDiv = null\n colorBarDiv = null\n colorMapL1 = null\n colorMapL2 = null\n colorMapL3 = null\n colorBarL1 = null\n colorBarL2 = null\n colorBarL3 = null\n colorBarL4 = null\n colorBarL5 = null\n colorBarL6 = null\n colorMap.destroy()\n colorMap = null\n colorBar.destroy()\n colorBar = null\n colorPicker.destroy()\n colorPicker = null\n activePreview = null\n currentPreview = null\n okButton = null\n cancelButton = null\n grid = null\n commitCallback = null\n cancelCallback = null\n liveCallback = null\n container.html('')\n for (let i = 0; i < List.length; i++) {\n if (List[i] === that) {\n List.splice(i, 1)\n i-- // Decrement to ensure we don't miss next item (lgtm warning)\n }\n }\n }\n const { images } = settings // local copies for YUI compressor\n const color = {\n active: (typeof settings.color.active).toString().toLowerCase() === 'string'\n ? new Color({\n ahex: !settings.window.alphaSupport && settings.color.active\n ? settings.color.active.substring(0, 6) + 'ff'\n : settings.color.active\n })\n : new Color({\n ahex: !settings.window.alphaSupport &&\n settings.color.active.val('ahex')\n ? settings.color.active.val('ahex').substring(0, 6) + 'ff'\n : settings.color.active.val('ahex')\n }),\n current: (typeof settings.color.active).toString().toLowerCase() === 'string'\n ? new Color({\n ahex: !settings.window.alphaSupport && settings.color.active\n ? settings.color.active.substring(0, 6) + 'ff'\n : settings.color.active\n })\n : new Color({\n ahex: !settings.window.alphaSupport &&\n settings.color.active.val('ahex')\n ? settings.color.active.val('ahex').substring(0, 6) + 'ff'\n : settings.color.active.val('ahex')\n }),\n quickList: settings.color.quickList\n }\n\n if (typeof commitCallback !== 'function') {\n commitCallback = null\n }\n if (typeof liveCallback !== 'function') {\n liveCallback = null\n }\n if (typeof cancelCallback !== 'function') {\n cancelCallback = null\n }\n\n let elementStartX = null // Used to record the starting css positions for dragging the control\n let elementStartY = null\n let pageStartX = null // Used to record the mousedown coordinates for dragging the control\n let pageStartY = null\n let container = null\n let colorMapDiv = null\n let colorBarDiv = null\n let colorMapL1 = null // different layers of colorMap and colorBar\n let colorMapL2 = null\n let colorMapL3 = null\n let colorBarL1 = null\n let colorBarL2 = null\n let colorBarL3 = null\n let colorBarL4 = null\n let colorBarL5 = null\n let colorBarL6 = null\n let colorMap = null // color maps\n let colorBar = null\n let colorPicker = null\n let activePreview = null // color boxes above the radio buttons\n let currentPreview = null\n let okButton = null\n let cancelButton = null\n let grid = null // preset colors grid\n let iconColor = null // iconColor for popup icon\n let iconAlpha = null // iconAlpha for popup icon\n let iconImage = null // iconImage popup icon\n let moveBar = null // drag bar\n Object.assign(that, {\n // public properties, methods, and callbacks\n commitCallback, // commitCallback function can be overridden to return the selected color to a method you specify when the user clicks \"OK\"\n liveCallback, // liveCallback function can be overridden to return the selected color to a method you specify in live mode (continuous update)\n cancelCallback, // cancelCallback function can be overridden to a method you specify when the user clicks \"Cancel\"\n color,\n show,\n hide,\n destroy // destroys this control entirely, removing all events and objects, and removing itself from the List\n })\n List.push(that)\n setTimeout(function () {\n initialize.call(that)\n }, 0)\n}\n/**\n* @typedef {PlainObject} external:jQuery.fn.jPickerOptionsIconInfo\n* @property {string} file Color Map/Color Bar/Color Picker arrow icon\n* @property {Float} width\n* @property {Float} height\n*/\n/**\n* @typedef {PlainObject} external:jQuery.fn.jPickerOptionsImagesDimensionsArrow\n* @property {Float} width\n* @property {Float} height\n* @property {external:jQuery.fn.jPickerOptionsIconInfo} arrow\n*/\n/**\n* @typedef {PlainObject} external:jQuery.fn.jPickerOptionsRadioTextboxLocale\n* @property {string} radio\n* @property {string} textbox\n*/\n/**\n* @typedef {PlainObject} external:jQuery.fn.jPickerOptions\n* @property {PlainObject} window\n* @property {string|null} window.title Any title for the jPicker window itself - displays\n* \"Drag Markers To Pick A Color\" if left null\n* @property {PlainObject} window.effects\n* @property {\"slide\"|\"show\"|\"fade\"} window.effects.type Effect used to show/hide an expandable picker\n* @property {PlainObject} window.effects.speed\n* @property {\"fast\"|\"slow\"|Float} window.effects.speed.show Duration of \"show\" effect. Time in milliseconds.\n* @property {\"fast\"|\"slow\"|Float} window.effects.speed.hide Duration of \"hide\" effect. Time in milliseconds\n* @property {PlainObject} window.position\n* @property {\"left\"|\"center\"|\"right\"|\"screenCenter\"|Float} window.position.x Relative px value\n* @property {\"top\"|\"bottom\"|\"center\"|Float} window.position.y Relative px value\n* @property {boolean} window.expandable Defaults to large static picker - set to `true` to make an expandable\n* picker (small icon with popup) - set automatically when binded to input element; added by `$.fn.jPicker`\n* @property {boolean} window.liveUpdate Set `false` if you want the user to have to click \"OK\" before the\n* binded input box updates values (always `true` for expandable picker)\n* @property {boolean} window.alphaSupport Set to `true` to enable alpha picking\n* @property {Float} window.alphaPrecision Set decimal precision for alpha percentage display - hex codes do\n* not map directly to percentage integers - range 0-2\n* @property {boolean} window.updateInputColor Set to `false` to prevent binded input colors from changing\n* @property {boolean} [window.bindToInput] Added by `$.fn.jPicker`\n* @property {external:jQuery} [window.input] Added by `$.fn.jPicker`\n* @property {PlainObject} color\n* @property {\"h\"|\"s\"|\"v\"|\"r\"|\"g\"|\"b\"|\"a\"} color.mode Symbols stand for \"h\" (hue), \"s\" (saturation), \"v\" (value), \"r\" (red), \"g\" (green), \"b\" (blue), \"a\" (alpha)\n* @property {Color|string} color.active Strings are HEX values (e.g. #ffc000) WITH OR WITHOUT the \"#\" prefix\n* @property {Color[]|string[]} color.quickList The quick pick color list\n* Strings are HEX values (e.g. #ffc000) WITH OR WITHOUT the \"#\" prefix\n* @property {PlainObject} images\n* @property {string} images.clientPath Path to image files\n* @property {external:jQuery.fn.jPickerOptionsImagesDimensionsArrow} images.colorMap\n* @property {external:jQuery.fn.jPickerOptionsImagesDimensionsArrow} images.colorBar\n* @property {external:jQuery.fn.jPickerOptionsIconInfo} images.picker\n* @property {PlainObject} localization alter these to change the text presented by the picker (e.g. different language)\n* @property {PlainObject} localization.text\n* @property {string} localization.text.title\n* @property {string} localization.text.newColor\n* @property {string} localization.text.currentColor\n* @property {string} localization.text.ok\n* @property {string} localization.text.cancel\n* @property {PlainObject} localization.tooltips\n* @property {PlainObject} localization.tooltips.colors\n* @property {string} localization.tooltips.colors.newColor\n* @property {string} localization.tooltips.colors.currentColor\n* @property {PlainObject} localization.tooltips.buttons\n* @property {string} localization.tooltips.buttons.ok\n* @property {string} localization.tooltips.buttons.cancel\n* @property {external:jQuery.fn.jPickerOptionsRadioTextboxLocale} localization.tooltips.hue\n* @property {external:jQuery.fn.jPickerOptionsRadioTextboxLocale} localization.tooltips.saturation\n* @property {external:jQuery.fn.jPickerOptionsRadioTextboxLocale} localization.tooltips.value\n* @property {external:jQuery.fn.jPickerOptionsRadioTextboxLocale} localization.tooltips.red\n* @property {external:jQuery.fn.jPickerOptionsRadioTextboxLocale} localization.tooltips.green\n* @property {external:jQuery.fn.jPickerOptionsRadioTextboxLocale} localization.tooltips.blue\n* @property {external:jQuery.fn.jPickerOptionsRadioTextboxLocale} localization.tooltips.alpha\n* @property {PlainObject} localization.tooltips.hex\n* @property {string} localization.tooltips.hex.textbox\n* @property {string} localization.tooltips.hex.alpha\n*/\n/**\n* The jPicker defaults - you can change anything in this section (such as the\n* clientPath to your images) without fear of breaking the program.\n* @namespace {external:jQuery.fn.jPickerOptions} defaults\n* @memberof external:jQuery.fn.$.fn.jPicker\n* @borrows external:jQuery.fn.jPickerOptions as external:jQuery.fn.jPicker.defaults\n* @see Source for all of the values\n*/\nexport const jPickerDefaults = {\n window: {\n title: null,\n effects: {\n type: 'slide',\n speed: {\n show: 'slow',\n hide: 'fast'\n }\n },\n position: {\n x: 'screenCenter',\n y: 'top'\n },\n expandable: false,\n liveUpdate: true,\n alphaSupport: false,\n alphaPrecision: 0,\n updateInputColor: true\n },\n color: {\n mode: 'h',\n active: new Color({ ahex: '#ffcc00ff' }),\n quickList: [\n new Color({ h: 360, s: 33, v: 100 }),\n new Color({ h: 360, s: 66, v: 100 }),\n new Color({ h: 360, s: 100, v: 100 }),\n new Color({ h: 360, s: 100, v: 75 }),\n new Color({ h: 360, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 100 }),\n new Color({ h: 30, s: 33, v: 100 }),\n new Color({ h: 30, s: 66, v: 100 }),\n new Color({ h: 30, s: 100, v: 100 }),\n new Color({ h: 30, s: 100, v: 75 }),\n new Color({ h: 30, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 90 }),\n new Color({ h: 60, s: 33, v: 100 }),\n new Color({ h: 60, s: 66, v: 100 }),\n new Color({ h: 60, s: 100, v: 100 }),\n new Color({ h: 60, s: 100, v: 75 }),\n new Color({ h: 60, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 80 }),\n new Color({ h: 90, s: 33, v: 100 }),\n new Color({ h: 90, s: 66, v: 100 }),\n new Color({ h: 90, s: 100, v: 100 }),\n new Color({ h: 90, s: 100, v: 75 }),\n new Color({ h: 90, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 70 }),\n new Color({ h: 120, s: 33, v: 100 }),\n new Color({ h: 120, s: 66, v: 100 }),\n new Color({ h: 120, s: 100, v: 100 }),\n new Color({ h: 120, s: 100, v: 75 }),\n new Color({ h: 120, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 60 }),\n new Color({ h: 150, s: 33, v: 100 }),\n new Color({ h: 150, s: 66, v: 100 }),\n new Color({ h: 150, s: 100, v: 100 }),\n new Color({ h: 150, s: 100, v: 75 }),\n new Color({ h: 150, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 50 }),\n new Color({ h: 180, s: 33, v: 100 }),\n new Color({ h: 180, s: 66, v: 100 }),\n new Color({ h: 180, s: 100, v: 100 }),\n new Color({ h: 180, s: 100, v: 75 }),\n new Color({ h: 180, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 40 }),\n new Color({ h: 210, s: 33, v: 100 }),\n new Color({ h: 210, s: 66, v: 100 }),\n new Color({ h: 210, s: 100, v: 100 }),\n new Color({ h: 210, s: 100, v: 75 }),\n new Color({ h: 210, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 30 }),\n new Color({ h: 240, s: 33, v: 100 }),\n new Color({ h: 240, s: 66, v: 100 }),\n new Color({ h: 240, s: 100, v: 100 }),\n new Color({ h: 240, s: 100, v: 75 }),\n new Color({ h: 240, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 20 }),\n new Color({ h: 270, s: 33, v: 100 }),\n new Color({ h: 270, s: 66, v: 100 }),\n new Color({ h: 270, s: 100, v: 100 }),\n new Color({ h: 270, s: 100, v: 75 }),\n new Color({ h: 270, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 10 }),\n new Color({ h: 300, s: 33, v: 100 }),\n new Color({ h: 300, s: 66, v: 100 }),\n new Color({ h: 300, s: 100, v: 100 }),\n new Color({ h: 300, s: 100, v: 75 }),\n new Color({ h: 300, s: 100, v: 50 }),\n new Color({ h: 180, s: 0, v: 0 }),\n new Color({ h: 330, s: 33, v: 100 }),\n new Color({ h: 330, s: 66, v: 100 }),\n new Color({ h: 330, s: 100, v: 100 }),\n new Color({ h: 330, s: 100, v: 75 }),\n new Color({ h: 330, s: 100, v: 50 }),\n new Color()\n ]\n },\n images: {\n clientPath: '/jPicker/images/',\n colorMap: {\n width: 256,\n height: 256,\n arrow: {\n file: 'mappoint.gif',\n width: 15,\n height: 15\n }\n },\n colorBar: {\n width: 20,\n height: 256,\n arrow: {\n file: 'rangearrows.gif',\n width: 20,\n height: 7\n }\n },\n picker: {\n file: 'picker.gif',\n width: 25,\n height: 24\n }\n }\n}\n","/* globals svgEditor */\n\n/**\n * @file jGraduate 0.4\n *\n * jQuery Plugin for a gradient picker\n *\n * @module jGraduate\n * @copyright 2010 Jeff Schiller {@link http://blog.codedread.com/}, 2010 Alexis Deveria {@link http://a.deveria.com/}\n *\n * @license Apache-2.0\n * @example\n * // The Paint object is described below.\n * $.jGraduate.Paint(); // constructs a 'none' color\n * @example $.jGraduate.Paint({copy: o}); // creates a copy of the paint o\n * @example $.jGraduate.Paint({hex: '#rrggbb'}); // creates a solid color paint with hex = \"#rrggbb\"\n * @example $.jGraduate.Paint({linearGradient: o, a: 50}); // creates a linear gradient paint with opacity=0.5\n * @example $.jGraduate.Paint({radialGradient: o, a: 7}); // creates a radial gradient paint with opacity=0.07\n * @example $.jGraduate.Paint({hex: '#rrggbb', linearGradient: o}); // throws an exception?\n*/\nimport SvgCanvas from '@svgedit/svgcanvas'\nimport { jPickerDefaults, jPickerMethod } from './jQuery.jPicker.js'\nimport { findPos } from '../../../common/util.js'\n\n/**\n * @todo JFH: This jQuery plugin was adapted to work within a Web Component.\n * We have to rewrite it as a pure webcomponent.\n*/\n\n/**\n * The jQuery namespace.\n * @external jQuery\n*/\n/**\n * The jQuery plugin namespace.\n * @namespace {PlainObject} fn\n * @memberof external:jQuery\n * @see {@link http://learn.jquery.com/plugins/|jQuery Plugins}\n */\n\nconst ns = {\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink'\n}\n\nif (!window.console) {\n window.console = {\n log () { /* empty fn */ },\n dir () { /* empty fn */ }\n }\n}\n\n/**\n* Adds {@link external:jQuery.jGraduate.Paint},\n* {@link external:jQuery.fn.jGraduateDefaults},\n* {@link external:jQuery.fn.jGraduate}.\n* @function module:jGraduate.jGraduate\n* @param {external:jQuery} $ The jQuery instance to wrap\n* @returns {external:jQuery}\n*/\n// export default function jQueryPluginJGraduate ($) {\n/**\n* @namespace {PlainObject} jGraduate\n* @memberof external:jQuery\n*/\nexport const jGraduate = /** @lends external:jQuery.jGraduate */ {\n /**\n * @class external:jQuery.jGraduate.Paint\n * @see module:jGraduate~Paint\n */\n Paint: SvgCanvas.Paint\n}\n\n// JSDoc doesn't show this as belonging to our `module:jGraduate.Options` type,\n// so we use `@see`\n/**\n* @namespace {module:jGraduate.Options} jGraduateDefaults\n* @memberof external:jQuery.fn\n*/\nexport const jGraduateDefaults = /** @lends external:jQuery.fn.jGraduateDefaults */ {\n /**\n * Creates an object with a 'none' color.\n * @type {external:jQuery.jGraduate.Paint}\n * @see module:jGraduate.Options\n */\n paint: new jGraduate.Paint(),\n /**\n * @namespace\n */\n window: {\n /**\n * @type {string}\n * @see module:jGraduate.Options\n */\n pickerTitle: 'Drag markers to pick a paint'\n },\n /**\n * @namespace\n */\n images: {\n /**\n * @type {string}\n * @see module:jGraduate.Options\n */\n clientPath: 'images/'\n },\n /**\n * @type {string}\n * @see module:jGraduate.Options\n */\n newstop: 'inverse' // same, inverse, black, white\n}\n\nconst isGecko = navigator.userAgent.includes('Gecko/')\n\n/**\n* @typedef {PlainObject<string, string>} module:jGraduate.Attrs\n*/\n/**\n* @param {SVGElement} elem\n* @param {module:jGraduate.Attrs} attrs\n* @returns {void}\n*/\nfunction setAttrs (elem, attrs) {\n if (isGecko) {\n Object.entries(attrs).forEach(([aname, val]) => {\n elem.setAttribute(aname, val)\n })\n } else {\n Object.entries(attrs).forEach(([aname, val]) => {\n const prop = elem[aname]\n if (prop?.constructor === 'SVGLength') {\n prop.baseVal.value = val\n } else {\n elem.setAttribute(aname, val)\n }\n })\n }\n}\n\n/**\n* @param {string} name\n* @param {module:jGraduate.Attrs} attrs\n* @param {Element} newparent\n* @returns {SVGElement}\n*/\nfunction mkElem (name, attrs, newparent) {\n const elem = document.createElementNS(ns.svg, name)\n setAttrs(elem, attrs)\n if (newparent) {\n newparent.append(elem)\n }\n return elem\n}\n\n/**\n* @typedef {PlainObject} module:jGraduate.ColorOpac Object may have one or both values\n* @property {string} [color] #Hex color\n* @property {Float} [opac] 0-1\n*/\n/**\n* @typedef {PlainObject} module:jGraduate.Options\n* @property {module:jGraduate~Paint} [paint] A Paint object object describing the paint to display initially; defaults to a new instance without options (defaults to opaque white)\n* @property {external:Window} [window]\n* @property {string} [window.pickerTitle=\"Drag markers to pick a paint\"]\n* @property {PlainObject} [images]\n* @property {string} [images.clientPath=\"images/\"]\n* @property {\"same\"|\"inverse\"|\"black\"|\"white\"|module:jGraduate.ColorOpac} [newstop=\"inverse\"]\n*/\n\n/**\n* @callback external:jQuery.fn.jGraduate.OkCallback\n* @param {external:jQuery.jGraduate.Paint} paint\n* @returns {void}\n*/\n/**\n* @callback external:jQuery.fn.jGraduate.CancelCallback\n* @returns {void}\n*/\n\n/**\n* @function external:jQuery.fn.jGraduate\n* @param {module:jGraduate.Options} [options]\n* @param {external:jQuery.fn.jGraduate.OkCallback} [okCallback] Called with a Paint object when Ok is pressed\n* @param {external:jQuery.fn.jGraduate.CancelCallback} [cancelCallback] Called with no arguments when Cancel is pressed\n* @returns {external:jQuery}\n*/\nexport function jGraduateMethod (elem, options, okCallback, cancelCallback, i18next) {\n const $this = elem\n const $settings = Object.assign({}, jGraduateDefaults, options || {})\n const id = $this.getAttribute('id')\n const idref = '#' + $this.getAttribute('id') + ' '\n\n if (!idref) {\n alert('Container element must have an id attribute to maintain unique id strings for sub-elements.')\n return\n }\n\n const okClicked = function () {\n switch ($this.paint.type) {\n case 'radialGradient':\n $this.paint.linearGradient = null\n break\n case 'linearGradient':\n $this.paint.radialGradient = null\n break\n case 'solidColor':\n $this.paint.radialGradient = $this.paint.linearGradient = null\n break\n }\n typeof $this.okCallback === 'function' && $this.okCallback($this.paint)\n $this.style.display = 'none'\n }\n const cancelClicked = function () {\n typeof $this.cancelCallback === 'function' && $this.cancelCallback()\n $this.style.display = 'none'\n }\n Object.assign($this, {\n // make a copy of the incoming paint\n paint: new jGraduate.Paint({ copy: $settings.paint }),\n okCallback: typeof okCallback === 'function' ? okCallback : null,\n cancelCallback: typeof cancelCallback === 'function' ? cancelCallback : null\n })\n\n let // pos = $this.position(),\n color = null\n const $win = window\n\n if ($this.paint.type === 'none') {\n $this.paint = new jGraduate.Paint({ solidColor: 'ffffff' })\n }\n $this.classList.add('jGraduate_Picker')\n $this.innerHTML = `<ul class=\"jGraduate_tabs\">\n <li class=\"jGraduate_tab_color jGraduate_tab_current\" id=\"jGraduate_tab_color\" data-type=\"col\">${i18next.t('config.jgraduate_solid_color')}</li>\n <li class=\"jGraduate_tab_lingrad\" id=\"jGraduate_tab_lingrad\" data-type=\"lg\">${i18next.t('config.jgraduate_linear_gradient')}</li>\n <li class=\"jGraduate_tab_radgrad\" id=\"jGraduate_tab_radgrad\" data-type=\"rg\">${i18next.t('config.jgraduate_radial_gradient')}</li>\n </ul>\n <div class=\"jGraduate_colPick\" id=\"jGraduate_colPick\"></div>\n <div class=\"jGraduate_gradPick\" id=\"jGraduate_gradPick\"></div>\n <div class=\"jGraduate_LightBox\" id=\"jGraduate_LightBox\"></div>\n <div id=\"${id}_jGraduate_stopPicker\" class=\"jGraduate_stopPicker\"></div>`\n const colPicker = $this.querySelector('#jGraduate_colPick')\n const gradPicker = $this.querySelector('#jGraduate_gradPick')\n const html = `<div id=\"${id}_jGraduate_Swatch\" class=\"jGraduate_Swatch\">\n <h2 class=\"jGraduate_Title\">${$settings.window.pickerTitle}</h2>\n <div id=\"${id}_jGraduate_GradContainer\" class=\"jGraduate_GradContainer\"></div>\n <div id=\"${id}_jGraduate_StopSlider\" class=\"jGraduate_StopSlider\"></div>\n </div>\n <div class=\"jGraduate_Form jGraduate_Points jGraduate_lg_field\">\n <div class=\"jGraduate_StopSection\">\n <label class=\"jGraduate_Form_Heading\">${i18next.t('config.jgraduate_begin_point')}</label>\n <div class=\"jGraduate_Form_Section\">\n <label>x:</label>\n <input type=\"text\" id=\"${id}_jGraduate_x1\" size=\"3\" title=\"${i18next.t('config.jgraduate_enter_starting_x')}\"/>\n <label>y:</label>\n <input type=\"text\" id=\"${id}_jGraduate_y1\" size=\"3\" title=\"${i18next.t('config.jgraduate_enter_starting_y')}\"/>\n </div>\n </div>\n <div class=\"jGraduate_StopSection\">\n <label class=\"jGraduate_Form_Heading\">${i18next.t('config.jgraduate_end_point')}</label>\n <div class=\"jGraduate_Form_Section\">\n <label>x:</label>\n <input type=\"text\" id=\"${id}_jGraduate_x2\" size=\"3\" title=\"${i18next.t('config.jgraduate_enter_ending_x')}\"/>\n <label>y:</label>\n <input type=\"text\" id=\"${id}_jGraduate_y2\" size=\"3\" title=\"${i18next.t('config.jgraduate_enter_ending_y')}\"/>\n </div>\n </div>\n </div>\n <div class=\"jGraduate_Form jGraduate_Points jGraduate_rg_field\">\n <div class=\"jGraduate_StopSection\">\n <label class=\"jGraduate_Form_Heading\">${i18next.t('config.jgraduate_center_point')}</label>\n <div class=\"jGraduate_Form_Section\">\n <label>x:</label>\n <input type=\"text\" id=\"${id}_jGraduate_cx\" size=\"3\" title=\"${i18next.t('config.jgraduate_enter_value_x')}\"/>\n <label>y:</label>\n <input type=\"text\" id=\"${id}_jGraduate_cy\" size=\"3\" title=\"${i18next.t('config.jgraduate_enter_value_y')}\"/>\n </div>\n </div>\n <div class=\"jGraduate_StopSection\">\n <label class=\"jGraduate_Form_Heading\">${i18next.t('config.jgraduate_focal_point')}</label>\n <div class=\"jGraduate_Form_Section\">\n <label>${i18next.t('config.jgraduate_match_center')} <input type=\"checkbox\" checked=\"checked\" id=\"${id}_jGraduate_match_ctr\"/></label><br/>\n <label>x:</label>\n <input type=\"text\" id=\"${id}_jGraduate_fx\" size=\"3\" title=\"${i18next.t('config.jgraduate_enter_focal_x')}\"/>\n <label>y:</label>\n <input type=\"text\" id=\"${id}_jGraduate_fy\" size=\"3\" title=\"${i18next.t('config.jgraduate_enter_focal_y')}\"/>\n </div>\n </div>\n </div>\n <div class=\"jGraduate_StopSection jGraduate_SpreadMethod\">\n <label class=\"jGraduate_Form_Heading\">${i18next.t('config.jgraduate_spread_method')}</label>\n <div class=\"jGraduate_Form_Section\">\n <select class=\"jGraduate_spreadMethod\" id=\"jGraduate_spreadMethod\">\n <option value=pad selected>${i18next.t('properties.jgraduate_pad')}</option>\n <option value=reflect>${i18next.t('properties.jgraduate_reflect')}</option>\n <option value=repeat>${i18next.t('properties.jgraduate_repeat')}</option>\n </select>\n </div>\n </div>\n <div class=\"jGraduate_Form\">\n <div class=\"jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field\">\n <label class=\"prelabel\">${i18next.t('config.jgraduate_radius')}</label>\n <div id=\"${id}_jGraduate_Radius\" class=\"jGraduate_SliderBar jGraduate_Radius\" title=\"${i18next.t('config.jgraduate_set_radius')}\">\n <img id=\"${id}_jGraduate_RadiusArrows\" class=\"jGraduate_RadiusArrows\" src=\"${$settings.images.clientPath}rangearrows2.gif\">\n </div>\n <label><input type=\"text\" id=\"${id}_jGraduate_RadiusInput\" size=\"3\" value=\"100\"/>%</label>\n </div>\n <div class=\"jGraduate_Slider jGraduate_EllipField jGraduate_rg_field\">\n <label class=\"prelabel\">${i18next.t('config.jgraduate_ellip')}</label>\n <div id=\"${id}_jGraduate_Ellip\" class=\"jGraduate_SliderBar jGraduate_Ellip\" title=\"${i18next.t('config.jgraduate_set_ellip')}\">\n <img id=\"${id}_jGraduate_EllipArrows\" class=\"jGraduate_EllipArrows\" src=\"${$settings.images.clientPath}rangearrows2.gif\">\n </div>\n <label><input type=\"text\" id=\"${id}_jGraduate_EllipInput\" size=\"3\" value=\"0\"/>%</label>\n </div>\n <div class=\"jGraduate_Slider jGraduate_AngleField jGraduate_rg_field\">\n <label class=\"prelabel\">${i18next.t('config.jgraduate_angle')}</label>\n <div id=\"${id}_jGraduate_Angle\" class=\"jGraduate_SliderBar jGraduate_Angle\" title=\"${i18next.t('config.jgraduate_set_angle')}\">\n <img id=\"${id}_jGraduate_AngleArrows\" class=\"jGraduate_AngleArrows\" src=\"${$settings.images.clientPath}rangearrows2.gif\">\n </div>\n <label><input type=\"text\" id=\"${id}_jGraduate_AngleInput\" size=\"3\" value=\"0\"/>${i18next.t('config.jgraduate_deg')}</label>\n </div>\n <div class=\"jGraduate_Slider jGraduate_OpacField\">\n <label class=\"prelabel\">${i18next.t('config.jgraduate_opac')}</label>\n <div id=\"${id}_jGraduate_Opac\" class=\"jGraduate_SliderBar jGraduate_Opac\" title=\"${i18next.t('config.jgraduate_set_opac')}\">\n <img id=\"${id}_jGraduate_OpacArrows\" class=\"jGraduate_OpacArrows\" src=\"${$settings.images.clientPath}rangearrows2.gif\">\n </div>\n <label><input type=\"text\" id=\"${id}_jGraduate_OpacInput\" size=\"3\" value=\"100\"/>%</label>\n </div>\n </div>\n <div class=\"jGraduate_OkCancel\">\n <input type=\"button\" id=\"${id}_jGraduate_Ok\" class=\"jGraduate_Ok\" value=\"${i18next.t('common.ok')}\"/>\n <input type=\"button\" id=\"${id}_jGraduate_Cancel\" class=\"jGraduate_Cancel\" value=\"${i18next.t('common.cancel')}\"/>\n </div>`\n const div = document.createElement('div')\n div.innerHTML = html\n while (div.children.length > 0) {\n gradPicker.appendChild(div.children[0])\n }\n /* eslint-enable max-len */\n // --------------\n // Set up all the SVG elements (the gradient, stops and rectangle)\n const MAX = 256\n const MARGINX = 0\n const MARGINY = 0\n // STOP_RADIUS = 15 / 2,\n const SIZEX = MAX - 2 * MARGINX\n const SIZEY = MAX - 2 * MARGINY\n\n const attrInput = {}\n\n const SLIDERW = 145\n const JQSliderBars = $this.querySelectorAll('.jGraduate_SliderBar')\n for (const JQSliderBar of JQSliderBars) {\n JQSliderBar.style.width = SLIDERW + 'px'\n }\n // JFH !!!!!!\n const container = $this.querySelector('#' + id + '_jGraduate_GradContainer')\n\n const svg = mkElem('svg', {\n id: id + '_jgraduate_svg',\n width: MAX,\n height: MAX,\n xmlns: ns.svg\n }, container)\n\n // This wasn't working as designed\n // let curType;\n // curType = curType || $this.paint.type;\n\n // if we are sent a gradient, import it\n let curType = $this.paint.type\n\n let grad = $this.paint[curType]\n let curGradient = grad\n\n const gradalpha = $this.paint.alpha\n\n const isSolid = curType === 'solidColor'\n\n // Make any missing gradients\n switch (curType) {\n case 'solidColor':\n // fall through\n case 'linearGradient':\n if (!isSolid) {\n curGradient.id = id + '_lg_jgraduate_grad'\n grad = curGradient = svg.appendChild(curGradient)\n }\n mkElem('radialGradient', {\n id: id + '_rg_jgraduate_grad'\n }, svg)\n if (curType === 'linearGradient') { break }\n // fall through\n case 'radialGradient':\n if (!isSolid) {\n curGradient.id = id + '_rg_jgraduate_grad'\n grad = curGradient = svg.appendChild(curGradient)\n }\n mkElem('linearGradient', {\n id: id + '_lg_jgraduate_grad'\n }, svg)\n }\n\n let stopGroup // eslint-disable-line prefer-const\n if (isSolid) {\n // JFH !!!!!!!!\n grad = curGradient = $this.querySelector('#' + id + '_lg_jgraduate_grad')\n color = $this.paint[curType]\n mkStop(0, '#' + color, 1)\n\n const type = typeof $settings.newstop\n\n if (type === 'string') {\n switch ($settings.newstop) {\n case 'same':\n mkStop(1, '#' + color, 1)\n break\n\n case 'inverse': {\n // Invert current color for second stop\n let inverted = ''\n for (let i = 0; i < 6; i += 2) {\n // const ch = color.substr(i, 2);\n let inv = (255 - Number.parseInt(color.substr(i, 2), 16)).toString(16)\n if (inv.length < 2) inv = 0 + inv\n inverted += inv\n }\n mkStop(1, '#' + inverted, 1)\n break\n } case 'white':\n mkStop(1, '#ffffff', 1)\n break\n\n case 'black':\n mkStop(1, '#000000', 1)\n break\n }\n } else if (type === 'object') {\n const opac = ('opac' in $settings.newstop) ? $settings.newstop.opac : 1\n mkStop(1, ($settings.newstop.color || '#' + color), opac)\n }\n }\n\n const x1 = Number.parseFloat(grad.getAttribute('x1') || 0.0)\n const y1 = Number.parseFloat(grad.getAttribute('y1') || 0.0)\n const x2 = Number.parseFloat(grad.getAttribute('x2') || 1.0)\n const y2 = Number.parseFloat(grad.getAttribute('y2') || 0.0)\n\n const cx = Number.parseFloat(grad.getAttribute('cx') || 0.5)\n const cy = Number.parseFloat(grad.getAttribute('cy') || 0.5)\n const fx = Number.parseFloat(grad.getAttribute('fx') || cx)\n const fy = Number.parseFloat(grad.getAttribute('fy') || cy)\n\n const previewRect = mkElem('rect', {\n id: id + '_jgraduate_rect',\n x: MARGINX,\n y: MARGINY,\n width: SIZEX,\n height: SIZEY,\n fill: 'url(#' + id + '_jgraduate_grad)',\n 'fill-opacity': gradalpha / 100\n }, svg)\n\n // stop visuals created here\n const beginCoord = document.createElement('div')\n beginCoord.setAttribute('class', 'grad_coord jGraduate_lg_field')\n beginCoord.setAttribute('title', 'Begin Stop')\n beginCoord.textContent = 1\n beginCoord.style.top = y1 * MAX\n beginCoord.style.left = x1 * MAX\n beginCoord.dataset.coord = 'start'\n container.appendChild(beginCoord)\n\n const endCoord = document.createElement('div')\n endCoord.setAttribute('class', 'grad_coord jGraduate_lg_field')\n endCoord.setAttribute('title', 'End stop')\n endCoord.textContent = 2\n endCoord.style.top = y2 * MAX\n endCoord.style.left = x2 * MAX\n endCoord.dataset.coord = 'end'\n container.appendChild(endCoord)\n\n const centerCoord = document.createElement('div')\n centerCoord.setAttribute('class', 'grad_coord jGraduate_rg_field')\n centerCoord.setAttribute('title', 'Center stop')\n centerCoord.textContent = 'C'\n centerCoord.style.top = cy * MAX\n centerCoord.style.left = cx * MAX\n centerCoord.dataset.coord = 'center'\n container.appendChild(centerCoord)\n\n const focusCoord = document.createElement('div')\n focusCoord.setAttribute('class', 'grad_coord jGraduate_rg_field')\n focusCoord.setAttribute('title', 'Focus point')\n focusCoord.textContent = 'F'\n focusCoord.style.top = fy * MAX\n focusCoord.style.left = fx * MAX\n focusCoord.style.display = 'none'\n focusCoord.dataset.coord = 'focus'\n focusCoord.setAttribute('id', id + '_jGraduate_focusCoord')\n container.appendChild(focusCoord)\n\n let showFocus\n const onAttrChangeHandler = (e, attr, isRadial) => {\n // TODO: Support values < 0 and > 1 (zoomable preview?)\n if (isNaN(Number.parseFloat(e.target.value)) || e.target.value < 0) {\n e.target.value = 0.0\n } else if (e.target.value > 1) {\n e.target.value = 1.0\n }\n\n if (!(attr[0] === 'f' &&\n !showFocus) &&\n ((isRadial && curType === 'radialGradient') || (!isRadial && curType === 'linearGradient'))) {\n curGradient.setAttribute(attr, e.target.value)\n }\n\n const $elem = isRadial\n ? attr[0] === 'c' ? centerCoord : focusCoord\n : attr[1] === '1' ? beginCoord : endCoord\n\n if (attr.includes('x') === 'left') {\n $elem.style.left = e.target.value * MAX\n } else if (attr.includes('x') === 'top') {\n $elem.style.top = e.target.value * MAX\n }\n }\n for (const [, attr] of ['x1', 'y1', 'x2', 'y2', 'cx', 'cy', 'fx', 'fy'].entries()) {\n const isRadial = isNaN(attr[1])\n\n let attrval = curGradient.getAttribute(attr)\n if (!attrval) {\n // Set defaults\n if (isRadial) {\n // For radial points\n attrval = '0.5'\n } else {\n // Only x2 is 1\n attrval = attr === 'x2' ? '1.0' : '0.0'\n }\n }\n\n attrInput[attr] = $this.querySelector('#' + id + '_jGraduate_' + attr)\n attrInput[attr].value = attrval\n attrInput[attr].addEventListener('change', (evt) => onAttrChangeHandler(evt, attr, isRadial))\n attrInput[attr].dispatchEvent(new Event('change'))\n }\n\n /**\n *\n * @param {Float} n\n * @param {Float|string} colr\n * @param {Float} opac\n * @param {boolean} [sel]\n * @param {SVGStopElement} [stopElem]\n * @returns {SVGStopElement}\n */\n function mkStop (n, colr, opac, sel, stopElem) {\n const stop = stopElem || mkElem('stop', {\n id: 'jq_stop_' + Math.floor((Math.random() * 10000) + 1),\n 'stop-color': colr,\n 'stop-opacity': opac,\n offset: n\n }, curGradient)\n if (stopElem) {\n colr = stopElem.getAttribute('stop-color')\n opac = stopElem.getAttribute('stop-opacity')\n n = stopElem.getAttribute('offset')\n } else {\n curGradient.appendChild(stop)\n }\n if (opac === null) opac = 1\n\n const pickerD = 'M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,' +\n '3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,' +\n '2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z'\n\n const pathbg = mkElem('path', {\n id: 'jq_pathbg_' + Math.floor((Math.random() * 10000) + 1),\n d: pickerD,\n fill: 'url(#jGraduate_trans)',\n transform: 'translate(' + (10 + n * MAX) + ', 26)'\n }, stopGroup)\n\n const path = mkElem('path', {\n d: pickerD,\n fill: colr,\n 'fill-opacity': opac,\n transform: 'translate(' + (10 + n * MAX) + ', 26)',\n stroke: '#000',\n 'stroke-width': 1.5\n }, stopGroup)\n\n path.addEventListener('mousedown', function (e) {\n selectStop(this)\n drag = curStop\n $win.addEventListener('mousemove', dragColor)\n $win.addEventListener('mouseup', remDrags)\n stopOffset = findPos(stopMakerDiv)\n e.preventDefault()\n return false\n })\n path.dataset.stop = stop.getAttribute('id')\n path.dataset.bg = pathbg.getAttribute('id')\n path.addEventListener('dblclick', function () {\n $this.querySelector('#jGraduate_LightBox').style.display = 'block'\n const colorhandle = this\n let stopOpacity = Number(stop.getAttribute('stop-opacity')) || 1\n let stopColor = stop.getAttribute('stop-color') || 1\n let thisAlpha = (Number.parseFloat(stopOpacity) * 255).toString(16)\n while (thisAlpha.length < 2) { thisAlpha = '0' + thisAlpha }\n colr = stopColor.substr(1) + thisAlpha\n const jqPickerElem = $this.querySelector('#' + id + '_jGraduate_stopPicker')\n jqPickerElem.style.left = '100px'\n jqPickerElem.style.bottom = '15px'\n jPickerMethod(jqPickerElem, {\n window: { title: 'Pick the start color and opacity for the gradient' },\n images: { clientPath: $settings.images.clientPath },\n color: { active: colr, alphaSupport: true }\n }, function (clr) {\n stopColor = clr.val('hex') ? ('#' + clr.val('hex')) : 'none'\n stopOpacity = clr.val('a') !== null ? clr.val('a') / 256 : 1\n colorhandle.setAttribute('fill', stopColor)\n colorhandle.setAttribute('fill-opacity', stopOpacity)\n stop.setAttribute('stop-color', stopColor)\n stop.setAttribute('stop-opacity', stopOpacity)\n $this.querySelector('#jGraduate_LightBox').style.display = 'none'\n $this.querySelector('#' + id + '_jGraduate_stopPicker').style.display = 'none'\n }, null, function () {\n $this.querySelector('#jGraduate_LightBox').style.display = 'none'\n $this.querySelector('#' + id + '_jGraduate_stopPicker').style.display = 'none'\n },\n i18next\n )\n })\n const jqStopEls = curGradient.querySelectorAll('stop')\n for (const jqStopEl of jqStopEls) {\n const curS = jqStopEl\n if (Number(jqStopEl.getAttribute('offset')) > n) {\n if (!colr) {\n const newcolor = jqStopEl.getAttribute('stop-color')\n const newopac = jqStopEl.getAttribute('stop-opacity')\n stop.setAttribute('stop-color', newcolor)\n path.setAttribute('fill', newcolor)\n stop.setAttribute('stop-opacity', newopac === null ? 1 : newopac)\n path.setAttribute('fill-opacity', newopac === null ? 1 : newopac)\n }\n curS.insertAdjacentElement('beforebegin', stop)\n // curS.before(stop);\n // return false;\n }\n // return true;\n }\n if (sel) selectStop(path)\n return stop\n }\n\n /**\n *\n * @returns {void}\n */\n function remStop () {\n delStop.setAttribute('display', 'none')\n const path = curStop\n delete path.dataset.stop\n delete path.dataset.bg\n curStop.parentNode.removeChild(curStop)\n }\n\n const stopMakerDiv = $this.querySelector('#' + id + '_jGraduate_StopSlider')\n\n let stops; let curStop; let drag\n\n const delStop = mkElem('path', {\n d: 'm9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5',\n fill: 'none',\n stroke: '#D00',\n 'stroke-width': 5,\n display: 'none'\n }, undefined) // stopMakerSVG);\n\n /**\n * @param {Element} item\n * @returns {void}\n */\n function selectStop (item) {\n if (curStop) curStop.setAttribute('stroke', '#000')\n item.setAttribute('stroke', 'blue')\n curStop = item\n }\n\n let stopOffset\n\n /**\n *\n * @returns {void}\n */\n function remDrags () {\n $win.removeEventListener('mousemove', dragColor)\n if (delStop.getAttribute('display') !== 'none') {\n remStop()\n }\n drag = null\n }\n\n let scaleX = 1; let scaleY = 1; let angle = 0\n\n let cX = cx\n let cY = cy\n /**\n *\n * @returns {void}\n */\n function xform () {\n const rot = angle ? 'rotate(' + angle + ',' + cX + ',' + cY + ') ' : ''\n if (scaleX === 1 && scaleY === 1) {\n curGradient.removeAttribute('gradientTransform')\n } else {\n const x = -cX * (scaleX - 1)\n const y = -cY * (scaleY - 1)\n curGradient.setAttribute(\n 'gradientTransform',\n rot + 'translate(' + x + ',' + y + ') scale(' +\n scaleX + ',' + scaleY + ')'\n )\n }\n }\n\n /**\n * @param {Event} evt\n * @returns {void}\n */\n function dragColor (evt) {\n let x = evt.pageX - stopOffset.left\n const y = evt.pageY - stopOffset.top\n x = x < 10\n ? 10\n : x > MAX + 10\n ? MAX + 10\n : x\n\n const xfStr = 'translate(' + x + ', 26)'\n if (y < -60 || y > 130) {\n delStop.setAttribute('display', 'block')\n delStop.setAttribute('transform', xfStr)\n } else {\n delStop.setAttribute('display', 'none')\n }\n\n drag.setAttribute('transform', xfStr)\n const jqpgpath = $this.querySelector('#' + drag.dataset.bg)\n jqpgpath.setAttribute('transform', xfStr)\n const stop = $this.querySelector('#' + drag.dataset.stop)\n const sX = (x - 10) / MAX\n\n stop.setAttribute('offset', sX)\n\n let last = 0\n const jqStopElems = curGradient.querySelectorAll('stop');\n [].forEach.call(jqStopElems, function (jqStopElem) {\n const cur = jqStopElem.getAttribute('offset')\n const t = jqStopElem\n if (cur < last) {\n t.previousElementSibling.insertAdjacentElement('beforebegin', t)\n stops = curGradient.querySelectorAll('stop')\n }\n last = cur\n })\n }\n\n const stopMakerSVG = mkElem('svg', {\n width: '100%',\n height: 45\n }, stopMakerDiv)\n\n const transPattern = mkElem('pattern', {\n width: 16,\n height: 16,\n patternUnits: 'userSpaceOnUse',\n id: 'jGraduate_trans'\n }, stopMakerSVG)\n\n const transImg = mkElem('image', {\n width: 16,\n height: 16\n }, transPattern)\n\n const bgImage = $settings.images.clientPath + 'map-opacity.png'\n\n transImg.setAttributeNS(ns.xlink, 'xlink:href', bgImage)\n\n svgEditor.$click(stopMakerSVG, function (evt) {\n stopOffset = findPos(stopMakerDiv)\n const { target } = evt\n if (target.tagName === 'path') return\n let x = evt.pageX - stopOffset.left - 8\n x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10 : x\n mkStop(x / MAX, 0, 0, true)\n evt.stopPropagation()\n })\n\n stopMakerSVG.addEventListener('mouseover', function () {\n stopMakerSVG.append(delStop)\n })\n\n stopGroup = mkElem('g', {}, stopMakerSVG)\n\n mkElem('line', {\n x1: 10,\n y1: 15,\n x2: MAX + 10,\n y2: 15,\n 'stroke-width': 2,\n stroke: '#000'\n }, stopMakerSVG)\n const spreadMethodOpt = gradPicker.querySelector('#jGraduate_spreadMethod')\n spreadMethodOpt.addEventListener('change', function () {\n curGradient.setAttribute('spreadMethod', this.value)\n })\n\n // handle dragging the stop around the swatch\n let draggingCoord = null\n\n const onCoordDrag = function (evt) {\n let x = evt.pageX - offset.left\n let y = evt.pageY - offset.top\n\n // clamp stop to the swatch\n x = x < 0 ? 0 : x > MAX ? MAX : x\n y = y < 0 ? 0 : y > MAX ? MAX : y\n\n draggingCoord.style.left = x + 'px'\n draggingCoord.style.top = y + 'px'\n\n // calculate stop offset\n const fracx = x / SIZEX\n const fracy = y / SIZEY\n\n const type = draggingCoord.dataset.coord\n const grd = curGradient\n\n switch (type) {\n case 'start':\n attrInput.x1.value = fracx\n attrInput.y1.value = fracy\n grd.setAttribute('x1', fracx)\n grd.setAttribute('y1', fracy)\n break\n case 'end':\n attrInput.x2.value = fracx\n attrInput.y2.value = fracy\n grd.setAttribute('x2', fracx)\n grd.setAttribute('y2', fracy)\n break\n case 'center':\n attrInput.cx.value = fracx\n attrInput.cy.value = fracy\n grd.setAttribute('cx', fracx)\n grd.setAttribute('cy', fracy)\n cX = fracx\n cY = fracy\n xform()\n break\n case 'focus':\n attrInput.fx.value = fracx\n attrInput.fy.value = fracy\n grd.setAttribute('fx', fracx)\n grd.setAttribute('fy', fracy)\n xform()\n }\n\n evt.preventDefault()\n }\n\n const onCoordUp = function () {\n draggingCoord = null\n $win.removeEventListener('mousemove', onCoordDrag)\n $win.removeEventListener('mouseup', onCoordUp)\n }\n\n // Linear gradient\n // (function () {\n\n stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop')\n\n let numstops = stops.length\n // if there are not at least two stops, then\n if (numstops < 2) {\n while (numstops < 2) {\n curGradient.append(document.createElementNS(ns.svg, 'stop'))\n ++numstops\n }\n stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop')\n }\n\n for (let i = 0; i < numstops; i++) {\n mkStop(0, 0, 0, 0, stops[i])\n }\n\n spreadMethodOpt.setAttribute('value', curGradient.getAttribute('spreadMethod') || 'pad')\n\n let offset\n\n // No match, so show focus point\n showFocus = false\n\n previewRect.setAttribute('fill-opacity', gradalpha / 100)\n\n const JQGradCoords = $this.querySelectorAll('#' + id + ' div.grad_coord')\n const onMouseDownGradCoords = (e) => {\n e.preventDefault()\n draggingCoord = e.target\n offset = findPos(draggingCoord.parentNode)\n $win.addEventListener('mousemove', onCoordDrag)\n $win.addEventListener('mouseup', onCoordUp)\n }\n for (const JQGradCoord of JQGradCoords) {\n JQGradCoord.addEventListener('mousedown', onMouseDownGradCoords)\n }\n\n // bind GUI elements\n svgEditor.$click($this.querySelector('#' + id + '_jGraduate_Ok'), function () {\n $this.paint.type = curType\n $this.paint[curType] = curGradient.cloneNode(true)\n $this.paint.solidColor = null\n okClicked()\n })\n svgEditor.$click($this.querySelector('#' + id + '_jGraduate_Cancel'), cancelClicked)\n\n if (curType === 'radialGradient') {\n if (showFocus) {\n focusCoord.style.display = 'block'\n } else {\n focusCoord.style.display = 'none'\n attrInput.fx.value = ''\n attrInput.fy.value = ''\n }\n }\n\n $this.querySelector('#' + id + '_jGraduate_match_ctr').checked = !showFocus\n\n let lastfx; let lastfy\n const onMatchCtrHandler = (e) => {\n showFocus = !e.target.checked\n if (showFocus) {\n focusCoord.style.display = 'block'\n } else {\n focusCoord.style.display = 'none'\n }\n attrInput.fx.value = ''\n attrInput.fy.value = ''\n const grd = curGradient\n if (!showFocus) {\n lastfx = grd.getAttribute('fx')\n lastfy = grd.getAttribute('fy')\n grd.removeAttribute('fx')\n grd.removeAttribute('fy')\n } else {\n const fX = lastfx || 0.5\n const fY = lastfy || 0.5\n grd.setAttribute('fx', fX)\n grd.setAttribute('fy', fY)\n attrInput.fx.value = fX\n attrInput.fy.value = fY\n }\n }\n $this.querySelector('#' + id + '_jGraduate_match_ctr').addEventListener('change', onMatchCtrHandler)\n stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop')\n numstops = stops.length\n // if there are not at least two stops, then\n if (numstops < 2) {\n while (numstops < 2) {\n curGradient.append(document.createElementNS(ns.svg, 'stop'))\n ++numstops\n }\n stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop')\n }\n\n let slider\n\n const setSlider = function (e) {\n const { offset: { left } } = slider\n const divi = slider.parent\n let x = (e.pageX - left - Number.parseInt(getComputedStyle(divi, null).getPropertyValue('border-left-width')))\n if (x > SLIDERW) x = SLIDERW\n if (x <= 0) x = 0\n const posx = x - 5\n x /= SLIDERW\n\n switch (slider.type) {\n case 'radius':\n x = (x * 2) ** 2.5\n if (x > 0.98 && x < 1.02) x = 1\n if (x <= 0.01) x = 0.01\n curGradient.setAttribute('r', x)\n break\n case 'opacity':\n $this.paint.alpha = Number.parseInt(x * 100)\n previewRect.setAttribute('fill-opacity', x)\n break\n case 'ellip':\n scaleX = 1\n scaleY = 1\n if (x < 0.5) {\n x /= 0.5 // 0.001\n scaleX = x <= 0 ? 0.01 : x\n } else if (x > 0.5) {\n x /= 0.5 // 2\n x = 2 - x\n scaleY = x <= 0 ? 0.01 : x\n }\n xform()\n x -= 1\n if (scaleY === x + 1) {\n x = Math.abs(x)\n }\n break\n case 'angle':\n x -= 0.5\n angle = x *= 180\n xform()\n x /= 100\n break\n }\n slider.elem.style.marginLeft = posx + 'px'\n x = Math.round(x * 100)\n slider.input.value = x\n }\n\n let ellipVal = 0; let angleVal = 0\n\n if (curType === 'radialGradient') {\n const tlist = curGradient.gradientTransform.baseVal\n if (tlist.numberOfItems === 2) {\n const t = tlist.getItem(0)\n const s = tlist.getItem(1)\n if (t.type === 2 && s.type === 3) {\n const m = s.matrix\n if (m.a !== 1) {\n ellipVal = Math.round(-(1 - m.a) * 100)\n } else if (m.d !== 1) {\n ellipVal = Math.round((1 - m.d) * 100)\n }\n }\n } else if (tlist.numberOfItems === 3) {\n // Assume [R][T][S]\n const r = tlist.getItem(0)\n const t = tlist.getItem(1)\n const s = tlist.getItem(2)\n\n if (r.type === 4 &&\n t.type === 2 &&\n s.type === 3\n ) {\n angleVal = Math.round(r.angle)\n const m = s.matrix\n if (m.a !== 1) {\n ellipVal = Math.round(-(1 - m.a) * 100)\n } else if (m.d !== 1) {\n ellipVal = Math.round((1 - m.d) * 100)\n }\n }\n }\n }\n const sliders = {\n radius: {\n handle: '#' + id + '_jGraduate_RadiusArrows',\n input: '#' + id + '_jGraduate_RadiusInput',\n val: (curGradient.getAttribute('r') || 0.5) * 100\n },\n opacity: {\n handle: '#' + id + '_jGraduate_OpacArrows',\n input: '#' + id + '_jGraduate_OpacInput',\n val: $this.paint.alpha || 100\n },\n ellip: {\n handle: '#' + id + '_jGraduate_EllipArrows',\n input: '#' + id + '_jGraduate_EllipInput',\n val: ellipVal\n },\n angle: {\n handle: '#' + id + '_jGraduate_AngleArrows',\n input: '#' + id + '_jGraduate_AngleInput',\n val: angleVal\n }\n }\n for (const [, [type, data]] of Object.entries(Object.entries(sliders))) {\n const handle = $this.querySelector(data.handle)\n const sInput = $this.querySelector(data.input)\n handle.addEventListener('mousedown', function (evt) {\n const parent = handle.parentNode\n slider = {\n type,\n elem: handle,\n input: sInput,\n parent,\n offset: findPos(parent)\n }\n $win.addEventListener('mousemove', dragSlider)\n $win.addEventListener('mouseup', stopSlider)\n evt.preventDefault()\n })\n sInput.value = data.val\n sInput.addEventListener('change', function () {\n const isRad = curType === 'radialGradient'\n let val = Number(this.value)\n let xpos = 0\n switch (type) {\n case 'radius':\n if (isRad) curGradient.setAttribute('r', val / 100)\n xpos = (((val / 100) ** (1 / 2.5)) / 2) * SLIDERW\n break\n\n case 'opacity':\n $this.paint.alpha = val\n previewRect.setAttribute('fill-opacity', val / 100)\n xpos = val * (SLIDERW / 100)\n break\n\n case 'ellip':\n scaleX = scaleY = 1\n if (val === 0) {\n xpos = SLIDERW * 0.5\n break\n }\n if (val > 99.5) val = 99.5\n if (val > 0) {\n scaleY = 1 - (val / 100)\n } else {\n scaleX = -(val / 100) - 1\n }\n\n xpos = SLIDERW * ((val + 100) / 2) / 100\n if (isRad) xform()\n break\n\n case 'angle':\n angle = val\n xpos = angle / 180\n xpos += 0.5\n xpos *= SLIDERW\n if (isRad) xform()\n }\n if (xpos > SLIDERW) {\n xpos = SLIDERW\n } else if (xpos < 0) {\n xpos = 0\n }\n handle.style.marginLeft = (xpos - 5) + 'px'\n })\n sInput.dispatchEvent(new Event('change'))\n }\n\n const dragSlider = function (evt) {\n setSlider(evt)\n evt.preventDefault()\n }\n\n const stopSlider = function () {\n $win.removeEventListener('mousemove', dragSlider)\n $win.removeEventListener('mouseup', stopSlider)\n slider = null\n }\n\n // --------------\n let thisAlpha = ($this.paint.alpha * 255 / 100).toString(16)\n while (thisAlpha.length < 2) { thisAlpha = '0' + thisAlpha }\n thisAlpha = thisAlpha.split('.')[0]\n color = $this.paint.solidColor === 'none' ? '' : $this.paint.solidColor + thisAlpha\n\n if (!isSolid) {\n color = stops[0].getAttribute('stop-color')\n }\n // This should be done somewhere else, probably\n Object.assign(jPickerDefaults.window, {\n alphaSupport: true, effects: { type: 'show', speed: 0 }\n })\n\n jPickerMethod(\n colPicker,\n {\n window: { title: $settings.window.pickerTitle },\n images: { clientPath: $settings.images.clientPath },\n color: { active: color, alphaSupport: true }\n },\n function (clr) {\n $this.paint.type = 'solidColor'\n $this.paint.alpha = clr.val('ahex') ? Math.round((clr.val('a') / 255) * 100) : 100\n $this.paint.solidColor = clr.val('hex') ? clr.val('hex') : 'none'\n $this.paint.radialGradient = null\n okClicked()\n },\n null,\n function () { cancelClicked() },\n i18next\n )\n\n // JFH !!!!\n const tabs = $this.querySelectorAll('.jGraduate_tabs li')\n const onTabsClickHandler = (e) => {\n for (const tab of tabs) {\n tab.classList.remove('jGraduate_tab_current')\n }\n e.target.classList.add('jGraduate_tab_current')\n const innerDivs = $this.querySelectorAll(idref + ' > div');\n [].forEach.call(innerDivs, function (innerDiv) {\n innerDiv.style.display = 'none'\n })\n const type = e.target.dataset.type\n gradPicker.style.display = 'block'\n if (type === 'rg' || type === 'lg') {\n const tFileds = $this.querySelectorAll('.jGraduate_' + type + '_field');\n [].forEach.call(tFileds, function (tFiled) {\n tFiled.style.display = 'block'\n })\n const t1Fileds = $this.querySelectorAll('.jGraduate_' + (type === 'lg' ? 'rg' : 'lg') + '_field');\n [].forEach.call(t1Fileds, function (tFiled) {\n tFiled.style.display = 'none'\n })\n $this.querySelectorAll('#' + id + '_jgraduate_rect')[0]\n .setAttribute('fill', 'url(#' + id + '_' + type + '_jgraduate_grad)')\n curType = type === 'lg' ? 'linearGradient' : 'radialGradient'\n const jOpacInput = $this.querySelector('#' + id + '_jGraduate_OpacInput')\n jOpacInput.value = $this.paint.alpha\n jOpacInput.dispatchEvent(new Event('change'))\n const newGrad = $this.querySelectorAll('#' + id + '_' + type + '_jgraduate_grad')[0]\n if (curGradient !== newGrad) {\n const curStops = curGradient.querySelectorAll('stop')\n while (newGrad.firstChild) {\n newGrad.removeChild(newGrad.firstChild)\n }\n [].forEach.call(curStops, function (curS) {\n newGrad.appendChild(curS)\n })\n curGradient = newGrad\n const sm = spreadMethodOpt.getAttribute('value')\n curGradient.setAttribute('spreadMethod', sm)\n }\n showFocus = type === 'rg' && curGradient.getAttribute('fx') !== null && !(cx === fx && cy === fy)\n const jQfocusCoord = $this.querySelectorAll('#' + id + '_jGraduate_focusCoord')\n if (jQfocusCoord[0].style.display === 'none') {\n jQfocusCoord[0].style.display = 'block'\n } else {\n jQfocusCoord[0].style.display = 'none'\n }\n if (showFocus) {\n $this.querySelectorAll('#' + id + '_jGraduate_match_ctr')[0].checked = false\n }\n } else {\n gradPicker.style.display = 'none'\n colPicker.style.display = 'block'\n }\n }\n for (const tab of tabs) {\n svgEditor.$click(tab, onTabsClickHandler)\n }\n const innerDivs = $this.querySelectorAll(idref + ' > div');\n [].forEach.call(innerDivs, function (innerDiv) {\n innerDiv.style.display = 'none'\n })\n for (const tab of tabs) {\n tab.classList.remove('jGraduate_tab_current')\n }\n let tab\n switch ($this.paint.type) {\n case 'linearGradient':\n tab = $this.querySelector(idref + ' .jGraduate_tab_lingrad')\n break\n case 'radialGradient':\n tab = $this.querySelector(idref + ' .jGraduate_tab_radgrad')\n break\n default:\n tab = $this.querySelector(idref + ' .jGraduate_tab_color')\n break\n }\n $this.style.display = 'block'\n\n // jPicker will try to show after a 0ms timeout, so need to fire this after that\n setTimeout(() => {\n tab.classList.add('jGraduate_tab_current')\n tab.dispatchEvent(new Event('click'))\n }, 10)\n}\n","import { jGraduate } from './jgraduate/jQuery.jGraduate.js'\n/**\n *\n */\nclass PaintBox {\n /**\n * @param {string|Element|external:jQuery} container\n * @param {\"fill\"} type\n */\n constructor (container, type) {\n // set up gradients to be used for the buttons\n const svgdocbox = new DOMParser().parseFromString(\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\">\n <rect\n fill=\"#000000\" opacity=\"1\" width=\"14\" height=\"14\"/>\n <defs><linearGradient id=\"gradbox_${PaintBox.ctr++}\"/></defs>\n </svg>`,\n 'text/xml'\n )\n\n let docElem = svgdocbox.documentElement\n docElem = document.importNode(docElem, true)\n container.appendChild(docElem)\n\n this.rect = docElem.firstElementChild\n this.defs = docElem.getElementsByTagName('defs')[0]\n this.grad = this.defs.firstElementChild\n // this.paint = new $.jGraduate.Paint({solidColor: color});\n this.type = type\n }\n\n /**\n * @param {module:jGraduate~Paint} paint\n * @returns {void}\n */\n setPaint (paint) {\n this.paint = paint\n\n const ptype = paint.type\n const opac = paint.alpha / 100\n\n let fillAttr = 'none'\n switch (ptype) {\n case 'solidColor':\n fillAttr = (paint[ptype] !== 'none') ? '#' + paint[ptype] : paint[ptype]\n break\n case 'linearGradient':\n case 'radialGradient': {\n this.grad.remove()\n this.grad = paint[ptype]\n this.defs.appendChild(this.grad)\n const id = this.grad.id = 'gradbox_' + this.type\n fillAttr = 'url(#' + id + ')'\n break\n }\n }\n\n this.rect.setAttribute('fill', fillAttr)\n this.rect.setAttribute('opacity', opac)\n }\n\n /**\n * @param {PlainObject} svgCanvas\n * @param {string} color\n * @param {Float} opac\n * @param {string} type\n * @returns {module:jGraduate~Paint}\n */\n static getPaint (svgCanvas, color, opac, type) {\n // update the editor's fill paint\n const opts = { alpha: opac }\n if (color.startsWith('url(#')) {\n let refElem = svgCanvas.getRefElem(color)\n refElem = (refElem) ? refElem.cloneNode(true) : document.querySelectorAll('#' + type + '_color defs *')[0]\n if (!refElem) {\n console.error(`the color ${color} is referenced by an url that can't be identified - using 'none'`)\n opts.solidColor = 'none'\n } else {\n opts[refElem.tagName] = refElem\n }\n } else if (color.startsWith('#')) {\n opts.solidColor = color.substr(1)\n }\n return new jGraduate.Paint(opts)\n }\n\n /**\n * @param {PlainObject} svgcanvas\n * @param {PlainObject} selectedElement\n * @returns {any}\n */\n update (svgcanvas, selectedElement) {\n if (!selectedElement) { return null }\n\n const { type } = this\n switch (selectedElement.tagName) {\n case 'use':\n case 'image':\n case 'foreignObject':\n // These elements don't have fill or stroke, so don't change\n // the current value\n return null\n case 'g':\n case 'a': {\n const childs = selectedElement.getElementsByTagName('*')\n\n let gPaint = null\n for (let i = 0, len = childs.length; i < len; i++) {\n const elem = childs[i]\n const p = elem.getAttribute(type)\n if (i === 0) {\n gPaint = p\n } else if (gPaint !== p) {\n gPaint = null\n break\n }\n }\n\n if (gPaint === null) {\n // No common color, don't update anything\n this._paintColor = null\n return null\n }\n this._paintColor = gPaint\n this._paintOpacity = 1\n break\n } default: {\n this._paintOpacity = Number.parseFloat(selectedElement.getAttribute(type + '-opacity'))\n if (Number.isNaN(this._paintOpacity)) {\n this._paintOpacity = 1.0\n }\n\n const defColor = type === 'fill' ? 'black' : 'none'\n this._paintColor = selectedElement.getAttribute(type) || defColor\n }\n }\n\n this._paintOpacity *= 100\n\n const paint = PaintBox.getPaint(svgcanvas, this._paintColor, this._paintOpacity, type)\n // update the rect inside #fill_color/#stroke_color\n this.setPaint(paint)\n return (paint)\n }\n}\nPaintBox.ctr = 0\n\nexport default PaintBox\n","/* globals svgEditor */\nimport { jGraduate, jGraduateMethod } from './jgraduate/jQuery.jGraduate.js'\nimport PaintBox from './PaintBox.js'\nimport { t } from '../locale.js'\n\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n .jPicker .Icon {\n display: inline-block;\n height: 24px;\n position: relative;\n text-align: left;\n width: 25px\n}\n\n.jPicker .Icon span.Color, .jPicker .Icon span.Alpha {\n background-position: 2px 2px;\n display: block;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%\n}\n\n.jPicker .Icon span.Image {\n background-repeat: no-repeat;\n cursor: pointer;\n display: block;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%\n}\n\n.jPicker.Container {\n z-index: 10\n}\n\ntable.jPicker {\n background-color: #efefef;\n border: 1px outset #666;\n font-family: Arial, Helvetica, Sans-Serif;\n font-size: 12px!important;\n margin: 0;\n padding: 5px;\n width: 545px;\n z-index: 20\n}\n\n.jPicker .Move {\n background-color: #ddd;\n border-color: #fff #666 #666 #fff;\n border-style: solid;\n border-width: 1px;\n cursor: move;\n height: 12px;\n padding: 0\n}\n\n.jPicker .Title {\n font-size: 11px!important;\n font-weight: bold;\n margin: -2px 0 0 0;\n padding: 0;\n text-align: center;\n width: 100%\n}\n\n.jPicker div.Map {\n border-bottom: 2px solid #fff;\n border-left: 2px solid #9a9a9a;\n border-right: 2px solid #fff;\n border-top: 2px solid #9a9a9a;\n cursor: crosshair;\n height: 260px;\n margin: 0 5px 0 5px;\n overflow: hidden;\n padding: 0;\n position: relative;\n width: 260px\n}\n\n.jPicker div[class=\"Map\"] {\n height: 256px;\n width: 256px\n}\n\n.jPicker div.Bar {\n border-bottom: 2px solid #fff;\n border-left: 2px solid #9a9a9a;\n border-right: 2px solid #fff;\n border-top: 2px solid #9a9a9a;\n cursor: n-resize;\n height: 260px;\n margin: 12px 10px 0 5px;\n overflow: hidden;\n padding: 0;\n position: relative;\n width: 24px\n}\n\n.jPicker div[class=\"Bar\"] {\n height: 256px;\n width: 20px\n}\n\n.jPicker .Map .Map1, .jPicker .Map .Map2, .jPicker .Map .Map3, .jPicker .Bar .Map1, .jPicker .Bar .Map2, .jPicker .Bar .Map3, .jPicker .Bar .Map4, .jPicker .Bar .Map5, .jPicker .Bar .Map6 {\n background-color: transparent;\n background-image: none;\n display: block;\n left: 0;\n position: absolute;\n top: 0\n}\n\n.jPicker .Map .Map1, .jPicker .Map .Map2, .jPicker .Map .Map3 {\n height: 2596px;\n width: 256px\n}\n\n.jPicker .Bar .Map1, .jPicker .Bar .Map2, .jPicker .Bar .Map3, .jPicker .Bar .Map4 {\n height: 3896px;\n width: 20px\n}\n\n.jPicker .Bar .Map5, .jPicker .Bar .Map6 {\n height: 256px;\n width: 20px\n}\n\n.jPicker .Map .Map1, .jPicker .Map .Map2, .jPicker .Bar .Map6 {\n background-repeat: no-repeat\n}\n\n.jPicker .Map .Map3, .jPicker .Bar .Map5 {\n background-repeat: repeat\n}\n\n.jPicker .Bar .Map1, .jPicker .Bar .Map2, .jPicker .Bar .Map3, .jPicker .Bar .Map4 {\n background-repeat: repeat-x\n}\n\n.jPicker .Map .Arrow {\n display: block;\n position: absolute\n}\n\n.jPicker .Bar .Arrow {\n display: block;\n left: 0;\n position: absolute\n}\n\n.jPicker .Preview {\n font-size: 9px;\n text-align: center\n}\n\n.jPicker .Preview div {\n border: 2px inset #eee;\n height: 62px;\n margin: 0 auto;\n padding: 0;\n width: 62px\n}\n\n.jPicker .Preview div span {\n border: 1px solid #000;\n display: block;\n height: 30px;\n margin: 0 auto;\n padding: 0;\n width: 60px\n}\n\n.jPicker .Preview .Active {\n border-bottom-width: 0\n}\n\n.jPicker .Preview .Current {\n border-top-width: 0;\n cursor: pointer\n}\n\n.jPicker .Button {\n text-align: center;\n width: 115px\n}\n\n.jPicker .Button input {\n width: 100px\n}\n\n.jPicker .Button .Ok {\n margin: 12px 0 5px 0\n}\n\n.jPicker td.Radio {\n margin: 0;\n padding: 0;\n width: 31px\n}\n\n.jPicker td.Radio input {\n margin: 0 5px 0 0;\n padding: 0\n}\n\n.jPicker td.Text {\n font-size: 12px!important;\n height: 22px;\n margin: 0;\n padding: 0;\n text-align: left;\n width: 70px\n}\n\n.jPicker tr.Hex td.Text {\n width: 100px\n}\n\n.jPicker td.Text input {\n background-color: #fff;\n border: 1px inset #aaa;\n height: 19px;\n margin: 0 0 0 5px;\n text-align: left;\n width: 30px\n}\n\n.jPicker td[class=\"Text\"] input {\n height: 15px\n}\n\n.jPicker tr.Hex td.Text input.Hex {\n width: 50px\n}\n\n.jPicker tr.Hex td.Text input.AHex {\n width: 20px\n}\n\n.jPicker .Grid {\n text-align: center;\n width: 114px\n}\n\n.jPicker .Grid span.QuickColor {\n border: 1px inset #aaa;\n cursor: pointer;\n display: inline-block;\n height: 15px;\n line-height: 15px;\n margin: 0;\n padding: 0;\n width: 19px\n}\n\n.jPicker .Grid span[class=\"QuickColor\"] {\n width: 17px\n}\n /*\n * jGraduate Default CSS\n *\n * Copyright (c) 2010 Jeff Schiller\n * http://blog.codedread.com/\n *\n * Copyright (c) 2010 Alexis Deveria\n * http://a.deveria.com/\n *\n * Licensed under the MIT License\n */\n\nh2.jGraduate_Title {\n font-family: Arial, Helvetica, Sans-Serif;\n font-size: 11px !important;\n font-weight: bold;\n margin: -13px 0px 0px 0px;\n padding: 0px;\n text-align: center;\n}\n\n.jGraduate_Picker {\n font-family: Arial, Helvetica, Sans-Serif;\n font-size: 12px;\n border-style: solid;\n border-color: lightgrey black black lightgrey;\n border-width: 1px;\n background-color: #EFEFEF;\n position: absolute;\n padding: 10px;\n}\n\n.jGraduate_tabs li {\n background-color: #ccc;\n display: inline;\n border: solid 1px grey;\n padding: 3px;\n margin: 2px;\n cursor: pointer;\n}\n\nli.jGraduate_tab_current {\n background-color: #EFEFEF;\n display: inline;\n padding: 3px;\n margin: 2px;\n border: solid 1px black;\n cursor: pointer;\n}\n\n.jGraduate_colPick {\n display: none;\n}\n\n.jGraduate_gradPick {\n display: none;\n border: outset 1px #666;\n padding: 10px 7px 5px 5px;\n overflow: auto;\n}\n\n.jGraduate_gradPick {\n display: none;\n border: outset 1px #666;\n padding: 10px 7px 5px 5px;\n overflow: auto;\n/* position: relative;*/\n}\n\n.jGraduate_tabs {\n position: relative;\n background-color: #EFEFEF;\n padding: 0px;\n margin: 0px;\n margin-bottom: 5px;\n}\n\ndiv.jGraduate_Swatch {\n float: left;\n margin: 8px;\n}\ndiv.jGraduate_GradContainer {\n border: 2px inset #EEE;\n background-image: url(./components/jgraduate/images/map-opacity.png);\n background-position: 0px 0px;\n height: 256px;\n width: 256px;\n position: relative;\n}\n\ndiv.jGraduate_GradContainer div.grad_coord {\n background: #000;\n border: 1px solid #fff;\n border-radius: 5px;\n -moz-border-radius: 5px;\n width: 10px;\n height: 10px;\n position: absolute;\n margin: -5px -5px;\n top: 0;\n left: 0;\n text-align: center;\n font-size: xx-small;\n line-height: 10px;\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n -moz-user-select: none;\n -webkit-user-select: none;\n}\n\n.jGraduate_AlphaArrows {\n position: absolute;\n margin-top: -10px;\n margin-left: 250.5px;\n}\n\ndiv.jGraduate_Opacity {\n border: 2px inset #eee;\n margin-top: 14px;\n background-color: black;\n background-image: url(../images/Maps.png);\n background-position: 0px -2816px;\n height: 20px;\n cursor: ew-resize;\n}\n\ndiv.jGraduate_StopSlider {\n/* border: 2px inset #eee;*/\n margin: 0 0 0 -10px;\n width: 276px;\n overflow: visible;\n background: #efefef;\n height: 45px;\n cursor: pointer;\n}\n\ndiv.jGraduate_StopSection {\n width: 120px;\n text-align: center;\n}\n\ninput.jGraduate_Ok, input.jGraduate_Cancel {\n display: block;\n width: 100px;\n margin-left: -4px;\n margin-right: -4px;\n}\ninput.jGraduate_Ok {\n margin: 9px -4px 5px -4px;\n}\n\n.colorBox {\n float: left;\n height: 16px;\n width: 16px;\n border: 1px solid var(--border-color);\n cursor: pointer;\n margin: 4px 4px 4px 30px;\n}\n\n.colorBox + label {\n float: left;\n margin-top: 7px;\n}\n\nlabel.jGraduate_Form_Heading {\n position: relative;\n top: 10px;\n background-color: #EFEFEF;\n padding: 2px;\n font-weight: bold;\n font-size: 13px;\n}\n\ndiv.jGraduate_Form_Section {\n border-style: solid;\n border-width: 1px;\n border-color: grey;\n -moz-border-radius: 5px;\n -webkit-border-radius: 5px;\n padding: 15px 5px 5px 5px;\n margin: 5px 2px;\n width: 110px;\n text-align: center;\n overflow: auto;\n}\n\ndiv.jGraduate_Form_Section label {\n padding: 0 2px;\n}\n\ndiv.jGraduate_StopSection input[type=text],\ndiv.jGraduate_Slider input[type=text] {\n width: 33px;\n}\n\ndiv.jGraduate_LightBox {\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n background-color: #000;\n opacity: 0.5;\n display: none;\n}\n\ndiv.jGraduate_stopPicker {\n position: absolute;\n display: none;\n background: #E8E8E8;\n}\n\n\n.jGraduate_gradPick {\n width: 535px;\n}\n\n.jGraduate_gradPick div.jGraduate_OpacField {\n\n position: absolute;\n left: 0;\n bottom: 5px;\n/*\n width: 270px;\n\n left: 284px;\n width: 266px;\n height: 200px;\n top: 167px;\n margin: -3px 3px 0px 4px;\n*/\n}\n\n.jGraduate_gradPick .jGraduate_Form {\n float: left;\n width: 270px;\n position: absolute;\n left: 284px;\n width: 266px;\n height: 200px;\n top: 167px;\n margin: -3px 3px 0px 10px;\n}\n\n.jGraduate_gradPick .jGraduate_Points {\n position: static;\n width: 150px;\n margin-left: 0;\n}\n\n.jGraduate_SpreadMethod {\n position: absolute;\n right: 8px;\n top: 100px;\n}\n\n.jGraduate_Colorblocks {\n display: table;\n border-spacing: 0 5px;\n}\n\n.jGraduate_colorblock {\n display: table-row;\n}\n\n.jGraduate_Colorblocks .jGraduate_colorblock > * {\n display: table-cell;\n vertical-align: middle;\n margin: 0;\n float: none;\n}\n\n.jGraduate_gradPick div.jGraduate_StopSection {\n float: left;\n width: 133px;\n margin-top: -8px;\n}\n\n\n.jGraduate_gradPick .jGraduate_Form_Section {\n padding-top: 9px;\n}\n\n\n.jGraduate_Slider {\n text-align: center;\n float: left;\n width: 100%;\n}\n\n.jGraduate_Slider .jGraduate_Form_Section {\n border: none;\n width: 250px;\n padding: 0 2px;\n overflow: visible;\n}\n\n.jGraduate_Slider label {\n display: inline-block;\n float: left;\n line-height: 50px;\n padding: 0;\n}\n\n.jGraduate_Slider label.prelabel {\n width: 40px;\n text-align: left;\n}\n\n.jGraduate_SliderBar {\n width: 140px;\n float: left;\n margin-right: 5px;\n border:1px solid #BBB;\n height:20px;\n margin-top:14px;\n margin-left:5px;\n position: relative;\n}\n\ndiv.jGraduate_Slider input {\n margin-top: 5px;\n}\n\ndiv.jGraduate_Slider img {\n top: 0;\n left: 0;\n position: absolute;\n margin-top: -10px;\n cursor:ew-resize;\n}\n\n\n.jGraduate_gradPick .jGraduate_OkCancel {\n position: absolute;\n top: 39px;\n right: 10px;\n width: 113px;\n\n}\n\n.jGraduate_OpacField {\n position: absolute;\n right: -10px;\n bottom: 0;\n}\n #logo {\n height: 18px;\n width: 18px;\n }\n #block {\n height: 17px;\n width: 14px;\n float: right;\n background-color: darkgrey;\n }\n #picker {\n background: var(--input-color);\n height: 23px;\n line-height: 23px;\n border-radius: 3px;\n width: 52px;\n display: flex;\n align-items: center;\n margin-right: 4px;\n margin-top: 1px;\n justify-content: space-evenly;\n }\n #color_picker {\n z-index: 1000;\n top: 60%;\n }\n </style>\n <div id=\"picker\">\n <img src=\"logo.svg\" alt=\"icon\" id=\"logo\">\n <label for=\"color\" title=\"\" id=\"label\"></label>\n <div id=\"block\">\n </div>\n </div>\n <!-- hidden div -->\n <div id=\"color_picker\"></div>\n`\n/**\n * @class SeColorPicker\n */\nexport class SeColorPicker extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$logo = this._shadowRoot.getElementById('logo')\n this.$label = this._shadowRoot.getElementById('label')\n this.$block = this._shadowRoot.getElementById('block')\n this.paintBox = null\n this.i18next = null\n this.$picker = this._shadowRoot.getElementById('picker')\n this.$color_picker = this._shadowRoot.getElementById('color_picker')\n this.imgPath = svgEditor.configObj.curConfig.imgPath\n }\n\n /**\n * @function init\n * @param {any} name\n * @returns {void}\n */\n init (i18next) {\n this.i18next = i18next\n this.setAttribute('config-change_xxx_color', t('config.change_xxx_color'))\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['label', 'src', 'type', 'config-change_xxx_color']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'src':\n this.$logo.setAttribute('src', this.imgPath + '/' + newValue)\n break\n case 'label':\n this.setAttribute('title', t(newValue))\n break\n case 'type':\n this.$label.setAttribute('title', 'config.pick_paint_opavity')\n break\n case 'config-change_xxx_color':\n this.$label.setAttribute('title', newValue)\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get label () {\n return this.$label.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set label (value) {\n this.setAttribute('label', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get type () {\n return this.getAttribute('type')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set type (value) {\n this.setAttribute('type', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get src () {\n return this.getAttribute('src')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set src (value) {\n this.setAttribute('src', value)\n }\n\n /**\n * @param {PlainObject} svgCanvas\n * @param {PlainObject} selectedElement\n * @param {bool} apply\n * @returns {void}\n */\n update (svgCanvas, selectedElement, apply) {\n const paint = this.paintBox.update(svgCanvas, selectedElement)\n if (paint && apply) {\n const changeEvent = new CustomEvent('change', {\n detail: {\n paint\n }\n })\n this.dispatchEvent(changeEvent)\n }\n }\n\n /**\n * @param {PlainObject} paint\n * @returns {void}\n */\n setPaint (paint) {\n this.paintBox.setPaint(paint)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n this.paintBox = new PaintBox(this.$block, this.type)\n svgEditor.$click(this.$picker, () => {\n let { paint } = this.paintBox\n jGraduateMethod(\n this.$color_picker,\n {\n images: { clientPath: './components/jgraduate/images/' },\n paint,\n window: { pickerTitle: this.label },\n newstop: 'inverse'\n },\n (p) => {\n paint = new jGraduate.Paint(p)\n this.setPaint(paint)\n const changeEvent = new CustomEvent('change', {\n detail: {\n paint\n }\n })\n this.dispatchEvent(changeEvent)\n this.$color_picker.style.display = 'none'\n },\n () => {\n this.$color_picker.style.display = 'none'\n },\n this.i18next\n )\n })\n }\n}\n\n// Register\ncustomElements.define('se-colorpicker', SeColorPicker)\n","import { t } from '../locale.js'\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n<style>\nselect {\n margin-top: 8px;\n background-color: var(--input-color);\n appearance: none;\n outline: none;\n padding: 3px;\n}\nlabel {\n margin-left: 2px;\n}\n::slotted(*) {\n padding:0;\n width:100%;\n}\n</style>\n <label></label>\n <select>\n </select>\n\n`\n/**\n * @class SeList\n */\nexport class SeSelect extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$select = this._shadowRoot.querySelector('select')\n this.$label = this._shadowRoot.querySelector('label')\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['label', 'width', 'height', 'options', 'values', 'title', 'disabled']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n let options\n if (oldValue === newValue) return\n switch (name) {\n case 'label':\n this.$label.textContent = t(newValue)\n break\n case 'title':\n this.$select.setAttribute('title', t(newValue))\n break\n case 'disabled':\n if (newValue === null) {\n this.$select.removeAttribute('disabled')\n } else {\n this.$select.setAttribute('disabled', newValue)\n }\n break\n case 'height':\n this.$select.style.height = newValue\n break\n case 'width':\n this.$select.style.width = newValue\n break\n case 'options':\n if (newValue === '') {\n while (this.$select.firstChild) { this.$select.removeChild(this.$select.firstChild) }\n } else {\n options = newValue.split(',')\n options.forEach((option) => {\n const optionNode = document.createElement('OPTION')\n const text = document.createTextNode(t(option))\n optionNode.appendChild(text)\n this.$select.appendChild(optionNode)\n })\n }\n break\n case 'values':\n if (newValue === '') {\n while (this.$select.firstChild) { this.$select.removeChild(this.$select.firstChild) }\n } else {\n options = newValue.split('::')\n options.forEach((option, index) => {\n this.$select.children[index].setAttribute('value', option)\n })\n }\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get label () {\n return this.getAttribute('label')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set label (value) {\n this.setAttribute('label', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get width () {\n return this.getAttribute('width')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set width (value) {\n this.setAttribute('width', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get height () {\n return this.getAttribute('height')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set height (value) {\n this.setAttribute('height', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get value () {\n return this.$select.value\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set value (value) {\n this.$select.value = value\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get disabled () {\n return this.$select.getAttribute('disabled')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set disabled (value) {\n this.$select.setAttribute('disabled', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n const currentObj = this\n this.$select.addEventListener('change', () => {\n const value = this.$select.value\n const closeEvent = new CustomEvent('change', { detail: { value } })\n currentObj.dispatchEvent(closeEvent)\n currentObj.value = value\n })\n }\n}\n\n// Register\ncustomElements.define('se-select', SeSelect)\n","import { t } from '../locale.js'\nconst template = document.createElement('template')\ntemplate.innerHTML = `\n <style>\n #layersLabel {\n font-size: 13px;\n line-height: normal;\n font-weight: 700;\n }\n </style>\n <div></div>\n`\n/**\n * @class SeText\n */\nexport class SeText extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n // locate the component\n this.$div = this._shadowRoot.querySelector('div')\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['text', 'value', 'style', 'title', 'id']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'text':\n this.$div.textContent = t(newValue)\n break\n case 'title':\n this.$div.setAttribute('title', t(newValue))\n break\n case 'style':\n this.$div.style = newValue\n break\n case 'id':\n this.$div.id = newValue\n break\n case 'value':\n this.$div.value = newValue\n // this.$div.setAttribute(\"value\", newValue);\n break\n default:\n console.error(`unknown attribute: ${name}`)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get text () {\n return this.$div.textContent\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set text (value) {\n this.$div.setAttribute('title', t(value))\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get value () {\n return this.value\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set value (value) {\n this.value = value\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n // capture shortcuts\n }\n}\n\n// Register\ncustomElements.define('se-text', SeText)\n","import ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport {\n defaultState,\n keydown,\n render,\n rendering,\n setState,\n state,\n} from \"./internal.js\";\n\n// Symbols for private data members.\n/** @type {any} */\nconst previousBodyOverflowKey = Symbol(\"previousBodyStyleOverflow\");\n/** @type {any} */\nconst previousDocumentMarginRightKey = Symbol(\"previousDocumentMarginRight\");\n\n/**\n * Gives an overlay modal behavior.\n *\n * This blocks various user interactions to make an overlay behave like a modal\n * dialog:\n *\n * * Disables scrolling on the background document. **This is a global\n * side-effect of opening the component.**\n * * A default ARIA role of `dialog`.\n * * Closes the element if user presses the Esc key.\n *\n * For modeless overlays, see `PopupModalityMixin` instead.\n *\n * @module DialogModalityMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function DialogModalityMixin(Base) {\n return class DialogModality extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n role: \"dialog\",\n });\n }\n\n [keydown](/** @type {KeyboardEvent} */ event) {\n let handled = false;\n\n switch (event.key) {\n case \"Escape\":\n // Close on Esc key.\n this.close({\n canceled: \"Escape\",\n });\n handled = true;\n break;\n }\n\n // Prefer mixin result if it's defined, otherwise use base result.\n return handled || (super[keydown] && super[keydown](event)) || false;\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n if (changed.opened) {\n if (this[state].opened && document.documentElement) {\n // Disable body scrolling to absorb space bar keypresses and other\n // means of scrolling the top-level document.\n const documentWidth = document.documentElement.clientWidth;\n const scrollBarWidth = window.innerWidth - documentWidth;\n this[previousBodyOverflowKey] = document.body.style.overflow;\n this[previousDocumentMarginRightKey] =\n scrollBarWidth > 0\n ? document.documentElement.style.marginRight\n : null;\n document.body.style.overflow = \"hidden\";\n if (scrollBarWidth > 0) {\n document.documentElement.style.marginRight = `${scrollBarWidth}px`;\n }\n } else {\n // Reenable body scrolling.\n if (this[previousBodyOverflowKey] != null) {\n document.body.style.overflow = this[previousBodyOverflowKey];\n this[previousBodyOverflowKey] = null;\n }\n if (this[previousDocumentMarginRightKey] != null) {\n document.documentElement.style.marginRight = this[\n previousDocumentMarginRightKey\n ];\n this[previousDocumentMarginRightKey] = null;\n }\n }\n }\n if (changed.role) {\n // Apply top-level role.\n const { role } = this[state];\n this.setAttribute(\"role\", role);\n }\n }\n\n // Setting the standard role attribute will invoke this property setter,\n // which will allow us to update our state.\n get role() {\n return super.role;\n }\n set role(role) {\n super.role = role;\n if (!this[rendering]) {\n this[setState]({ role });\n }\n }\n };\n}\n","import { deepContains, firstFocusableElement } from \"../core/dom.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport { firstRender, ids, keydown, render, shadowRoot } from \"./internal.js\";\n\n// Symbols for private data members on an element.\nconst wrap = Symbol(\"wrap\");\n/** @type {any} */\nconst wrappingFocusKey = Symbol(\"wrappingFocus\");\n\n/**\n * Allows Tab and Shift+Tab operations to cycle the focus within the component.\n *\n * This mixin expects the component to provide:\n *\n * * A template-stamping mechanism compatible with `ShadowTemplateMixin`.\n *\n * The mixin provides these features to the component:\n *\n * * Template elements and event handlers that will cause the keyboard focus to wrap.\n *\n * This mixin [contributes to a component's template](mixins#mixins-that-contribute-to-a-component-s-template).\n * See that discussion for details on how to use such a mixin.\n *\n * @module FocusCaptureMixin\n * @param {Constructor<ReactiveElement>} Base\n */\nfunction FocusCaptureMixin(Base) {\n class FocusCapture extends Base {\n [keydown](/** @type {KeyboardEvent} */ event) {\n const firstElement = firstFocusableElement(this[shadowRoot]);\n // We need to check both the document active element (to handle case where\n // the user is tabbing through light DOM nodes assigned to a slot) and the\n // shadow active element (to handle case where the user is tabbing through\n // shadow nodes).\n if (firstElement) {\n const firstElementIsDocumentActive =\n document.activeElement &&\n (document.activeElement === firstElement ||\n document.activeElement.contains(firstElement));\n const shadowActiveElement = this[shadowRoot].activeElement;\n const firstElementIsShadowActive =\n shadowActiveElement &&\n (shadowActiveElement === firstElement ||\n deepContains(shadowActiveElement, firstElement));\n const firstElementIsActive =\n firstElementIsDocumentActive || firstElementIsShadowActive;\n if (firstElementIsActive && event.key === \"Tab\" && event.shiftKey) {\n // Set focus to focus catcher.\n // The Shift+Tab keydown event should continue bubbling, and the default\n // behavior should cause it to end up on the last focusable element.\n this[wrappingFocusKey] = true;\n this[ids].focusCatcher.focus();\n this[wrappingFocusKey] = false;\n // Don't mark the event as handled, since we want it to keep bubbling up.\n }\n }\n\n // Prefer mixin result if it's defined, otherwise use base result.\n return (super[keydown] && super[keydown](event)) || false;\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n if (super[render]) {\n super[render](changed);\n }\n if (this[firstRender]) {\n this[ids].focusCatcher.addEventListener(\"focus\", () => {\n if (!this[wrappingFocusKey]) {\n // Wrap focus back to the first focusable element.\n const focusElement = firstFocusableElement(this[shadowRoot]);\n if (focusElement) {\n focusElement.focus();\n }\n }\n });\n }\n }\n\n /**\n * Destructively wrap a node with elements necessary to capture focus.\n *\n * Call this method in a components `internal.template` property.\n * Invoke this method as `this[FocusCaptureMixin.wrap](element)`.\n *\n * @param {Element} target - the element within which focus should wrap\n */\n [wrap](target) {\n const focusCapture = fragmentFrom.html`\n <style>\n #focusCapture {\n display: flex;\n height: 100%;\n overflow: hidden;\n width: 100%;\n }\n\n #focusCaptureContainer {\n align-items: center;\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: center;\n position: relative;\n }\n </style>\n <div id=\"focusCapture\">\n <div id=\"focusCaptureContainer\"></div>\n <div id=\"focusCatcher\" tabindex=\"0\"></div>\n </div>\n `;\n\n // Wrap the target with the focus capture elements.\n const container = focusCapture.getElementById(\"focusCaptureContainer\");\n if (container) {\n target.replaceWith(focusCapture);\n container.append(target);\n }\n }\n }\n\n return FocusCapture;\n}\n\nFocusCaptureMixin.wrap = wrap;\n\nexport default FocusCaptureMixin;\n","import Backdrop from \"./Backdrop.js\";\n\n/**\n * Semi-transparent backdrop for a modal overlay\n *\n * This type of backdrop is used by [Dialog](Dialog) and [Drawer](Drawer). The\n * backdrop slightly obscures the background elements, focusing the user's\n * attention on the overlay.\n *\n * @inherits Backdrop\n */\nclass ModalBackdrop extends Backdrop {\n constructor() {\n super();\n\n // As of Sep 2018, Mobile Safari allows the user to drag on the backdrop to\n // scroll the page behind it, which violates the modality. To correct this,\n // we prevent touchmove events with one touch from performing the default\n // page scrolling.\n //\n // Android Chrome already correctly prevents drags from reaching the page,\n // so we only engage this workaround if we don't see support for pointer\n // events -- in which case we assume we're in Safari.\n if (!(\"PointerEvent\" in window)) {\n this.addEventListener(\"touchmove\", (event) => {\n if (event.touches.length === 1) {\n event.preventDefault();\n }\n });\n }\n }\n}\n\nexport default ModalBackdrop;\n","import { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport DialogModalityMixin from \"./DialogModalityMixin.js\";\nimport FocusCaptureMixin from \"./FocusCaptureMixin.js\";\nimport { defaultState, template } from \"./internal.js\";\nimport KeyboardMixin from \"./KeyboardMixin.js\";\nimport ModalBackdrop from \"./ModalBackdrop.js\";\nimport Overlay from \"./Overlay.js\";\n\nconst Base = DialogModalityMixin(FocusCaptureMixin(KeyboardMixin(Overlay)));\n\n/**\n * Basic modal overlay that the user typically dismisses with an explicit action.\n *\n * This component presents its children as a basic modal dialog which appears on\n * top of the main page content and which the user must interact with before\n * they can return to the page.\n *\n * @inherits Overlay\n * @mixes DialogModalityMixin\n * @mixes FocusCaptureMixin\n * @mixes KeyboardMixin\n * @part {ModalBackdrop} backdrop\n */\nclass Dialog extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n backdropPartType: ModalBackdrop,\n tabIndex: -1,\n });\n }\n\n get [template]() {\n const result = super[template];\n\n const frame = result.content.querySelector(\"#frame\");\n /** @type {any} */ const cast = this;\n cast[FocusCaptureMixin.wrap](frame);\n\n // We'd prefer to use inline-grid instead of inline-flex, but for grid\n // styling we'd want the row to be 1fr tall. Unfortunately, as of\n // 2021-02-11, Safari doesn't seem to handle that basic need correctly.\n // May be caused by https://bugs.webkit.org/show_bug.cgi?id=202051.\n result.content.append(\n fragmentFrom.html`\n <style>\n :host {\n display: inline-flex;\n flex-direction: column;\n height: 100%;\n left: 0;\n pointer-events: initial;\n top: 0;\n width: 100%;\n }\n </style>\n `\n );\n\n return result;\n }\n}\n\nexport default Dialog;\n","import { template } from \"../base/internal.js\";\nimport ModalBackdrop from \"../base/ModalBackdrop.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\n\n/**\n * ModalBackdrop component in the Plain reference design system\n *\n * @inherits ModalBackdrop\n */\nclass PlainModalBackdrop extends ModalBackdrop {\n get [template]() {\n const result = super[template];\n result.content.append(\n fragmentFrom.html`\n <style>\n :host {\n background: rgba(0, 0, 0, 0.2);\n }\n </style>\n `\n );\n return result;\n }\n}\n\nexport default PlainModalBackdrop;\n","import { defaultState } from \"../base/internal.js\";\nimport ReactiveElement from \"../core/ReactiveElement.js\"; // eslint-disable-line no-unused-vars\nimport PlainModalBackdrop from \"./PlainModalBackdrop.js\";\nimport PlainOverlayFrame from \"./PlainOverlayFrame.js\";\n\n/**\n * Modal overlay styles for the Plain reference design system\n *\n * @module PlainModalOverlayMixin\n * @part {PlainModalBackdrop} backdrop\n * @part {PlainOverlayFrame} frame\n * @param {Constructor<ReactiveElement>} Base\n */\nexport default function PlainModalOverlayMixin(Base) {\n return class PlainModalOverlay extends Base {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState] || {}, {\n backdropPartType: PlainModalBackdrop,\n framePartType: PlainOverlayFrame,\n });\n }\n };\n}\n","import Dialog from \"../base/Dialog.js\";\nimport PlainModalOverlayMixin from \"./PlainModalOverlayMixin.js\";\n\n/**\n * Dialog component in the Plain reference design system\n *\n * @inherits Dialog\n * @mixes PlainModalOverlayMixin\n */\nclass PlainDialog extends PlainModalOverlayMixin(Dialog) {}\n\nexport default PlainDialog;\n","import PlainDialog from \"../src/plain/PlainDialog.js\";\nexport default class ElixDialog extends PlainDialog {}\ncustomElements.define(\"elix-dialog\", ElixDialog);\n","\nimport SvgCanvas from '@svgedit/svgcanvas'\n/* globals svgEditor */\nimport imagePropertiesDialogHTML from './imagePropertiesDialog.html'\n\nconst { isValidUnit } = SvgCanvas\n\nconst template = document.createElement('template')\ntemplate.innerHTML = imagePropertiesDialogHTML\n/**\n * @class SeImgPropDialog\n */\nexport class SeImgPropDialog extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this.eventlisten = false\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$saveBtn = this._shadowRoot.querySelector('#tool_docprops_save')\n this.$cancelBtn = this._shadowRoot.querySelector('#tool_docprops_cancel')\n this.$resolution = this._shadowRoot.querySelector('#resolution')\n this.$canvasTitle = this._shadowRoot.querySelector('#canvas_title')\n this.$canvasWidth = this._shadowRoot.querySelector('#canvas_width')\n this.$canvasHeight = this._shadowRoot.querySelector('#canvas_height')\n this.$imageOptEmbed = this._shadowRoot.querySelector('#image_embed')\n this.$imageOptRef = this._shadowRoot.querySelector('#image_ref')\n this.$dialog = this._shadowRoot.querySelector('#svg_docprops')\n }\n\n /**\n * @function init\n * @param {any} name\n * @returns {void}\n */\n init (i18next) {\n this.setAttribute('common-ok', i18next.t('common.ok'))\n this.setAttribute('common-cancel', i18next.t('common.cancel'))\n this.setAttribute('config-image_props', i18next.t('config.image_props'))\n this.setAttribute('config-doc_title', i18next.t('config.doc_title'))\n this.setAttribute('config-doc_dims', i18next.t('config.doc_dims'))\n this.setAttribute('common-width', i18next.t('common.width'))\n this.setAttribute('common-height', i18next.t('common.height'))\n this.setAttribute('config-select_predefined', i18next.t('config.select_predefined'))\n this.setAttribute('tools-fit-to-content', i18next.t('tools.fitToContent'))\n this.setAttribute('config-included_images', i18next.t('config.included_images'))\n this.setAttribute('config-image_opt_embed', i18next.t('config.image_opt_embed'))\n this.setAttribute('config-image_opt_ref', i18next.t('config.image_opt_ref'))\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['title', 'width', 'height', 'save', 'dialog', 'embed', 'common-ok',\n 'common-cancel', 'config-image_props', 'config-doc_title', 'config-doc_dims',\n 'common-width', 'common-height', 'config-select_predefined',\n 'tools-fit-to-content', 'config-included_images', 'config-image_opt_embed',\n 'config-image_opt_ref']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n let node\n switch (name) {\n case 'title':\n this.$canvasTitle.value = newValue\n break\n case 'width':\n if (newValue === 'fit') {\n this.$canvasWidth.removeAttribute('disabled')\n this.$canvasWidth.value = 100\n this.$canvasHeight.removeAttribute('disabled')\n this.$canvasHeight.value = 100\n } else {\n this.$canvasWidth.value = newValue\n }\n break\n case 'height':\n if (newValue === 'fit') {\n this.$canvasWidth.removeAttribute('disabled')\n this.$canvasWidth.value = 100\n this.$canvasHeight.removeAttribute('disabled')\n this.$canvasHeight.value = 100\n } else {\n this.$canvasHeight.value = newValue\n }\n break\n case 'dialog':\n if (this.eventlisten) {\n if (newValue === 'open') {\n this.$dialog.open()\n } else {\n this.$dialog.close()\n }\n }\n break\n case 'save':\n if (newValue === 'ref') {\n this.$imageOptEmbed.setAttribute('checked', false)\n this.$imageOptRef.setAttribute('checked', true)\n } else {\n this.$imageOptEmbed.setAttribute('checked', true)\n this.$imageOptRef.setAttribute('checked', false)\n }\n break\n case 'embed':\n if (newValue.includes('one')) {\n const data = newValue.split('|')\n if (data.length > 1) {\n this._shadowRoot.querySelector('#image_opt_embed').setAttribute('title', data[1])\n this._shadowRoot.querySelector('#image_opt_embed').setAttribute('disabled', 'disabled')\n this._shadowRoot.querySelector('#image_opt_embed').style.color = '#666'\n }\n }\n break\n case 'common-ok':\n this.$saveBtn.textContent = newValue\n break\n case 'common-cancel':\n this.$cancelBtn.textContent = newValue\n break\n case 'config-image_props':\n node = this._shadowRoot.querySelector('#svginfo_image_props')\n node.textContent = newValue\n break\n case 'config-doc_title':\n node = this._shadowRoot.querySelector('#svginfo_title')\n node.textContent = newValue\n break\n case 'config-doc_dims':\n node = this._shadowRoot.querySelector('#svginfo_dim')\n node.textContent = newValue\n break\n case 'common-width':\n node = this._shadowRoot.querySelector('#svginfo_width')\n node.textContent = newValue\n break\n case 'common-height':\n node = this._shadowRoot.querySelector('#svginfo_height')\n node.textContent = newValue\n break\n case 'config-select_predefined':\n node = this._shadowRoot.querySelector('#selectedPredefined')\n node.textContent = newValue\n break\n case 'tools-fit-to-content':\n node = this._shadowRoot.querySelector('#fitToContent')\n node.textContent = newValue\n break\n case 'config-included_images':\n node = this._shadowRoot.querySelector('#includedImages')\n node.textContent = newValue\n break\n case 'config-image_opt_embed':\n node = this._shadowRoot.querySelector('#image_opt_embed')\n node.textContent = newValue\n break\n case 'config-image_opt_ref':\n node = this._shadowRoot.querySelector('#image_opt_ref')\n node.textContent = newValue\n break\n default:\n super.attributeChangedCallback(name, oldValue, newValue)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get width () {\n return this.getAttribute('width')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set width (value) {\n this.setAttribute('width', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get height () {\n return this.getAttribute('height')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set height (value) {\n this.setAttribute('height', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get save () {\n return this.getAttribute('save')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set save (value) {\n this.setAttribute('save', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get dialog () {\n return this.getAttribute('dialog')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set dialog (value) {\n this.setAttribute('dialog', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get embed () {\n return this.getAttribute('embed')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set embed (value) {\n this.setAttribute('embed', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n const onChangeHandler = (ev) => {\n if (!ev.target.selectedIndex) {\n if (this.$canvasWidth.getAttribute('value') === 'fit') {\n this.$canvasWidth.removeAttribute('disabled')\n this.$canvasWidth.value = 100\n this.$canvasHeight.removeAttribute('disabled')\n this.$canvasHeight.value = 100\n }\n } else if (ev.target.value === 'content') {\n this.$canvasWidth.setAttribute('disabled', 'disabled')\n this.$canvasWidth.value = 'fit'\n this.$canvasHeight.setAttribute('disabled', 'disabled')\n this.$canvasHeight.value = 'fit'\n } else {\n const dims = ev.target.value.split('x')\n this.$canvasWidth.value = dims[0]\n this.$canvasWidth.removeAttribute('disabled')\n this.$canvasHeight.value = dims[1]\n this.$canvasHeight.removeAttribute('disabled')\n }\n }\n const onSaveHandler = () => {\n let saveOpt = ''\n const w = this.$canvasWidth.value\n const h = this.$canvasHeight.value\n if (w !== 'fit' && !isValidUnit('width', w)) {\n this.$canvasWidth.parentElement.classList.add('error')\n } else {\n this.$canvasWidth.parentElement.classList.remove('error')\n }\n if (h !== 'fit' && !isValidUnit('height', w)) {\n this.$canvasHeight.parentElement.classList.add('error')\n } else {\n this.$canvasHeight.parentElement.classList.remove('error')\n }\n if (this.$imageOptEmbed.getAttribute('checked') === 'true') {\n saveOpt = 'embed'\n }\n if (this.$imageOptRef.getAttribute('checked') === 'true') {\n saveOpt = 'ref'\n }\n const closeEvent = new CustomEvent('change', {\n detail: {\n title: this.$canvasTitle.value,\n w: this.$canvasWidth.value,\n h: this.$canvasHeight.value,\n save: saveOpt,\n dialog: 'close'\n }\n })\n this.$canvasWidth.removeAttribute('disabled')\n this.$canvasHeight.removeAttribute('disabled')\n this.$resolution.selectedIndex = 0\n this.dispatchEvent(closeEvent)\n }\n const onCancelHandler = () => {\n const closeEvent = new CustomEvent('change', {\n detail: {\n dialog: 'closed'\n }\n })\n this.$canvasWidth.removeAttribute('disabled')\n this.$canvasHeight.removeAttribute('disabled')\n this.$resolution.selectedIndex = 0\n this.dispatchEvent(closeEvent)\n }\n this.$resolution.addEventListener('change', onChangeHandler)\n svgEditor.$click(this.$saveBtn, onSaveHandler)\n svgEditor.$click(this.$cancelBtn, onCancelHandler)\n this.$dialog.addEventListener('close', onCancelHandler)\n this.eventlisten = true\n }\n}\n\n// Register\ncustomElements.define('se-img-prop-dialog', SeImgPropDialog)\n","/* globals svgEditor */\nimport editorPreferencesDialog from './editorPreferencesDialog.html'\nconst template = document.createElement('template')\ntemplate.innerHTML = editorPreferencesDialog\n/**\n * @class SeEditPrefsDialog\n */\nexport class SeEditPrefsDialog extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this.colorBlocks = ['#FFF', '#888', '#000', 'chessboard']\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$dialog = this._shadowRoot.querySelector('#svg_prefs')\n this.$saveBtn = this._shadowRoot.querySelector('#tool_prefs_save')\n this.$cancelBtn = this._shadowRoot.querySelector('#tool_prefs_cancel')\n this.$langSelect = this._shadowRoot.querySelector('#lang_select')\n this.$bgBlocks = this._shadowRoot.querySelector('#bg_blocks')\n this.$bgURL = this._shadowRoot.querySelector('#canvas_bg_url')\n this.$gridSnappingOn = this._shadowRoot.querySelector('#grid_snapping_on')\n this.$gridSnappingStep = this._shadowRoot.querySelector('#grid_snapping_step')\n this.$gridColor = this._shadowRoot.querySelector('#grid_color')\n this.$showRulers = this._shadowRoot.querySelector('#show_rulers')\n this.$baseUnit = this._shadowRoot.querySelector('#base_unit')\n }\n\n /**\n * @function init\n * @param {any} name\n * @returns {void}\n */\n init (i18next) {\n this.setAttribute('common-ok', i18next.t('common.ok'))\n this.setAttribute('common-cancel', i18next.t('common.cancel'))\n this.setAttribute('config-editor_prefs', i18next.t('config.editor_prefs'))\n this.setAttribute('config-language', i18next.t('config.language'))\n this.setAttribute('config-background', i18next.t('config.background'))\n this.setAttribute('common-url', i18next.t('common.url'))\n this.setAttribute('config-editor_bg_note', i18next.t('config.editor_bg_note'))\n this.setAttribute('config-grid', i18next.t('config.grid'))\n this.setAttribute('config-snapping_onoff', i18next.t('config.snapping_onoff'))\n this.setAttribute('config-snapping_stepsize', i18next.t('config.snapping_stepsize'))\n this.setAttribute('config-grid_color', i18next.t('config.grid_color'))\n this.setAttribute('config-units_and_rulers', i18next.t('config.units_and_rulers'))\n this.setAttribute('config-show_rulers', i18next.t('config.show_rulers'))\n this.setAttribute('config-base_unit', i18next.t('config.base_unit'))\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n // eslint-disable-next-line max-len\n return ['dialog', 'lang', 'canvasbg', 'bgurl', 'gridsnappingon', 'gridsnappingstep', 'gridcolor', 'showrulers', 'baseunit', 'common-ok', 'common-cancel', 'config-editor_prefs', 'config-language', 'config-background', 'common-url', 'config-editor_bg_note', 'config-grid', 'config-snapping_onoff', 'config-snapping_stepsize', 'config-grid_color', 'config-units_and_rulers', 'config-show_rulers', 'config-base_unit']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n const blocks = this.$bgBlocks.querySelectorAll('div')\n const curBg = 'cur_background'\n let node\n switch (name) {\n case 'dialog':\n if (newValue === 'open') {\n this.$dialog.open()\n } else {\n this.$dialog.close()\n }\n break\n case 'lang':\n this.$langSelect.value = newValue\n break\n case 'canvasbg':\n if (!newValue) {\n if (blocks.length > 0) {\n blocks[0].classList.add(curBg)\n }\n } else {\n blocks.forEach(function (blk) {\n const isBg = blk.dataset.bgColor === newValue\n if (isBg) {\n blk.classList.add(curBg)\n } else {\n blk.classList.remove(curBg)\n }\n })\n }\n break\n case 'bgurl':\n this.$bgURL.value = newValue\n break\n case 'gridsnappingon':\n if (newValue === 'true') {\n this.$gridSnappingOn.checked = true\n } else if (newValue === 'false') {\n this.$gridSnappingOn.checked = false\n }\n break\n case 'gridsnappingstep':\n this.$gridSnappingStep.value = newValue\n break\n case 'gridcolor':\n this.$gridColor.value = newValue\n break\n case 'showrulers':\n if (newValue === 'true') {\n this.$showRulers.checked = true\n } else if (newValue === 'false') {\n this.$showRulers.checked = false\n }\n break\n case 'baseunit':\n this.$baseUnit.value = newValue\n break\n case 'common-ok':\n this.$saveBtn.textContent = newValue\n break\n case 'common-cancel':\n this.$cancelBtn.textContent = newValue\n break\n case 'config-editor_prefs':\n node = this._shadowRoot.querySelector('#svginfo_editor_prefs')\n node.textContent = newValue\n break\n case 'config-language':\n node = this._shadowRoot.querySelector('#svginfo_lang')\n node.textContent = newValue\n break\n case 'config-background':\n node = this._shadowRoot.querySelector('#svginfo_change_background')\n node.textContent = newValue\n break\n case 'common-url':\n node = this._shadowRoot.querySelector('#svginfo_bg_url')\n node.textContent = newValue\n break\n case 'config-editor_bg_note':\n node = this._shadowRoot.querySelector('#svginfo_bg_note')\n node.textContent = newValue\n break\n case 'config-grid':\n node = this._shadowRoot.querySelector('#svginfo_grid_settings')\n node.textContent = newValue\n break\n case 'config-snapping_onoff':\n node = this._shadowRoot.querySelector('#svginfo_snap_onoff')\n node.textContent = newValue\n break\n case 'config-snapping_stepsize':\n node = this._shadowRoot.querySelector('#svginfo_snap_step')\n node.textContent = newValue\n break\n case 'config-grid_color':\n node = this._shadowRoot.querySelector('#svginfo_grid_color')\n node.textContent = newValue\n break\n case 'config-units_and_rulers':\n node = this._shadowRoot.querySelector('#svginfo_units_rulers')\n node.textContent = newValue\n break\n case 'config-show_rulers':\n node = this._shadowRoot.querySelector('#svginfo_rulers_onoff')\n node.textContent = newValue\n break\n case 'config-base_unit':\n node = this._shadowRoot.querySelector('#svginfo_unit')\n node.textContent = newValue\n break\n default:\n super.attributeChangedCallback(name, oldValue, newValue)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get lang () {\n return this.getAttribute('lang')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set lang (value) {\n this.setAttribute('lang', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get canvasbg () {\n return this.getAttribute('canvasbg')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set canvasbg (value) {\n this.setAttribute('canvasbg', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get bgurl () {\n return this.getAttribute('bgurl')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set bgurl (value) {\n this.setAttribute('bgurl', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get dialog () {\n return this.getAttribute('dialog')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set dialog (value) {\n this.setAttribute('dialog', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get gridsnappingon () {\n return this.getAttribute('gridsnappingon')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set gridsnappingon (value) {\n this.setAttribute('gridsnappingon', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get gridsnappingstep () {\n return this.getAttribute('gridsnappingstep')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set gridsnappingstep (value) {\n this.setAttribute('gridsnappingstep', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get gridcolor () {\n return this.getAttribute('gridcolor')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set gridcolor (value) {\n this.setAttribute('gridcolor', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get showrulers () {\n return this.getAttribute('showrulers')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set showrulers (value) {\n this.setAttribute('showrulers', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get baseunit () {\n return this.getAttribute('baseunit')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set baseunit (value) {\n this.setAttribute('baseunit', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n const onCancelHandler = () => {\n const closeEvent = new CustomEvent('change', {\n detail: {\n dialog: 'closed'\n }\n })\n this.dispatchEvent(closeEvent)\n }\n const onSaveHandler = () => {\n const color = this.$bgBlocks.querySelector('.cur_background').dataset.bgColor || '#FFF'\n const closeEvent = new CustomEvent('change', {\n detail: {\n lang: this.$langSelect.value,\n dialog: 'close',\n bgcolor: color,\n bgurl: this.$bgURL.value,\n gridsnappingon: this.$gridSnappingOn.checked,\n gridsnappingstep: this.$gridSnappingStep.value,\n showrulers: this.$showRulers.checked,\n baseunit: this.$baseUnit.value\n }\n })\n this.dispatchEvent(closeEvent)\n }\n // Set up editor background functionality\n const currentObj = this\n this.colorBlocks.forEach(function (e) {\n const newdiv = document.createElement('div')\n if (e === 'chessboard') {\n newdiv.dataset.bgColor = e\n newdiv.style.backgroundImage = 'url(data:image/gif;base64,R0lGODlhEAAQAIAAAP///9bW1iH5BAAAAAAALAAAAAAQABAAAAIfjG+gq4jM3IFLJgpswNly/XkcBpIiVaInlLJr9FZWAQA7)'\n newdiv.classList.add('color_block')\n } else {\n newdiv.dataset.bgColor = e // setAttribute('data-bgcolor', e);\n newdiv.style.backgroundColor = e\n newdiv.classList.add('color_block')\n }\n currentObj.$bgBlocks.append(newdiv)\n })\n const blocks = this.$bgBlocks.querySelectorAll('div')\n const curBg = 'cur_background'\n blocks.forEach(function (blk) {\n svgEditor.$click(blk, function () {\n blocks.forEach((el) => el.classList.remove(curBg))\n blk.classList.add(curBg)\n })\n })\n svgEditor.$click(this.$saveBtn, onSaveHandler)\n svgEditor.$click(this.$cancelBtn, onCancelHandler)\n this.$dialog.addEventListener('close', onCancelHandler)\n }\n}\n\n// Register\ncustomElements.define('se-edit-prefs-dialog', SeEditPrefsDialog)\n","/* globals svgEditor */\nimport svgSourceDialogHTML from './svgSourceDialog.html'\n\nconst template = document.createElement('template')\ntemplate.innerHTML = svgSourceDialogHTML\n/**\n * @class SeSvgSourceEditorDialog\n */\nexport class SeSvgSourceEditorDialog extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$dialog = this._shadowRoot.querySelector('#svg_source_editor')\n this.$copyBtn = this._shadowRoot.querySelector('#copy_save_done')\n this.$saveBtn = this._shadowRoot.querySelector('#tool_source_save')\n this.$cancelBtn = this._shadowRoot.querySelector('#tool_source_cancel')\n this.$sourceTxt = this._shadowRoot.querySelector('#svg_source_textarea')\n this.$copySec = this._shadowRoot.querySelector('#save_output_btns')\n this.$applySec = this._shadowRoot.querySelector('#tool_source_back')\n this.$toggleDynamic = this._shadowRoot.querySelector('#tool_source_dynamic')\n this.$toggleDynamic.checked = svgEditor.configObj.curConfig.dynamicOutput\n }\n\n /**\n * @function init\n * @param {any} name\n * @returns {void}\n */\n init (i18next) {\n this.setAttribute('tools-source_save', i18next.t('tools.source_save'))\n this.setAttribute('common-cancel', i18next.t('common.cancel'))\n this.setAttribute('notification-source_dialog_note', i18next.t('notification.source_dialog_note'))\n this.setAttribute('config-done', i18next.t('config.done'))\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['dialog', 'value', 'applysec', 'copysec', 'tools-source_save', 'common-cancel', 'notification-source_dialog_note', 'config-done']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n let node\n switch (name) {\n case 'dialog':\n if (newValue === 'open') {\n this.$sourceTxt.focus()\n this.$dialog.open()\n } else {\n this.$dialog.close()\n this.$sourceTxt.blur()\n }\n break\n case 'applysec':\n if (newValue === 'false') {\n this.$applySec.style.display = 'none'\n } else {\n this.$applySec.style.display = 'block'\n }\n break\n case 'copysec':\n if (newValue === 'false') {\n this.$copySec.style.display = 'none'\n } else {\n this.$copySec.style.display = 'block'\n }\n break\n case 'value':\n this.$sourceTxt.value = newValue\n break\n case 'tools-source_save':\n this.$saveBtn.textContent = newValue\n break\n case 'common-cancel':\n this.$cancelBtn.textContent = newValue\n break\n case 'notification-source_dialog_note':\n node = this._shadowRoot.querySelector('#copy_save_note')\n node.textContent = newValue\n break\n case 'config-done':\n this.$copyBtn.textContent = newValue\n break\n default:\n super.attributeChangedCallback(name, oldValue, newValue)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get dialog () {\n return this.getAttribute('dialog')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set dialog (value) {\n this.setAttribute('dialog', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get value () {\n return this.getAttribute('value')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set value (value) {\n this.setAttribute('value', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get applysec () {\n return this.getAttribute('applysec')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set applysec (value) {\n this.setAttribute('applysec', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get copysec () {\n return this.getAttribute('copysec')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set copysec (value) {\n this.setAttribute('copysec', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n const onCancelHandler = () => {\n const closeEvent = new CustomEvent('change', {\n detail: {\n dialog: 'closed'\n }\n })\n this.dispatchEvent(closeEvent)\n }\n const onCopyHandler = () => {\n const closeEvent = new CustomEvent('change', {\n detail: {\n copy: 'click',\n value: this.$sourceTxt.value\n }\n })\n this.dispatchEvent(closeEvent)\n }\n const onSaveHandler = () => {\n const closeEvent = new CustomEvent('change', {\n detail: {\n value: this.$sourceTxt.value,\n dialog: 'close'\n }\n })\n this.dispatchEvent(closeEvent)\n }\n const onToggleDynamicHandler = () => {\n const closeEvent = new CustomEvent('change', {\n detail: {\n dynamic: this.$toggleDynamic.checked,\n dialog: 'dynamic'\n }\n })\n this.dispatchEvent(closeEvent)\n }\n svgEditor.$click(this.$copyBtn, onCopyHandler)\n svgEditor.$click(this.$saveBtn, onSaveHandler)\n svgEditor.$click(this.$cancelBtn, onCancelHandler)\n svgEditor.$click(this.$toggleDynamic, onToggleDynamicHandler)\n this.$dialog.addEventListener('close', onCancelHandler)\n }\n}\n\n// Register\ncustomElements.define('se-svg-source-editor-dialog', SeSvgSourceEditorDialog)\n","/* globals svgEditor */\nimport cMenuDialogHTML from './cmenuDialog.html'\nconst template = document.createElement('template')\ntemplate.innerHTML = cMenuDialogHTML\n/**\n * @class SeCMenuDialog\n */\nexport class SeCMenuDialog extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this._workarea = document.getElementById('workarea')\n this.$dialog = this._shadowRoot.querySelector('#cmenu_canvas')\n this.$copyLink = this._shadowRoot.querySelector('#se-copy')\n this.$cutLink = this._shadowRoot.querySelector('#se-cut')\n this.$pasteLink = this._shadowRoot.querySelector('#se-paste')\n this.$pasteInPlaceLink = this._shadowRoot.querySelector('#se-paste-in-place')\n this.$deleteLink = this._shadowRoot.querySelector('#se-delete')\n this.$groupLink = this._shadowRoot.querySelector('#se-group')\n this.$ungroupLink = this._shadowRoot.querySelector('#se-ungroup')\n this.$moveFrontLink = this._shadowRoot.querySelector('#se-move-front')\n this.$moveUpLink = this._shadowRoot.querySelector('#se-move-up')\n this.$moveDownLink = this._shadowRoot.querySelector('#se-move-down')\n this.$moveBackLink = this._shadowRoot.querySelector('#se-move-back')\n }\n\n /**\n * @function init\n * @param {any} name\n * @returns {void}\n */\n init (i18next) {\n this.setAttribute('tools-cut', i18next.t('tools.cut'))\n this.setAttribute('tools-copy', i18next.t('tools.copy'))\n this.setAttribute('tools-paste', i18next.t('tools.paste'))\n this.setAttribute('tools-paste_in_place', i18next.t('tools.paste_in_place'))\n this.setAttribute('tools-delete', i18next.t('tools.delete'))\n this.setAttribute('tools-group', i18next.t('tools.group'))\n this.setAttribute('tools-ungroup', i18next.t('tools.ungroup'))\n this.setAttribute('tools-move_front', i18next.t('tools.move_front'))\n this.setAttribute('tools-move_up', i18next.t('tools.move_up'))\n this.setAttribute('tools-move_down', i18next.t('tools.move_down'))\n this.setAttribute('tools-move_back', i18next.t('tools.move_back'))\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['disableallmenu', 'enablemenuitems', 'disablemenuitems', 'tools-cut',\n 'tools-copy', 'tools-paste', 'tools-paste_in_place', 'tools-delete', 'tools-group',\n 'tools-ungroup', 'tools-move_front', 'tools-move_up', 'tools-move_down',\n 'tools-move_back']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n let eles = []\n let textnode\n const sdowRoot = this._shadowRoot\n switch (name) {\n case 'disableallmenu':\n if (newValue === 'true') {\n const elesli = sdowRoot.querySelectorAll('li')\n elesli.forEach(function (eleli) {\n eleli.classList.add('disabled')\n })\n }\n break\n case 'enablemenuitems':\n eles = newValue.split(',')\n eles.forEach(function (ele) {\n const selEle = sdowRoot.querySelector('a[href*=\"' + ele + '\"]')\n selEle.parentElement.classList.remove('disabled')\n })\n break\n case 'disablemenuitems':\n eles = newValue.split(',')\n eles.forEach(function (ele) {\n const selEle = sdowRoot.querySelector('a[href*=\"' + ele + '\"]')\n selEle.parentElement.classList.add('disabled')\n })\n break\n case 'tools-cut':\n textnode = document.createTextNode(newValue)\n this.$cutLink.prepend(textnode)\n break\n case 'tools-copy':\n textnode = document.createTextNode(newValue)\n this.$copyLink.prepend(textnode)\n break\n case 'tools-paste':\n this.$pasteLink.textContent = newValue\n break\n case 'tools-paste_in_place':\n this.$pasteInPlaceLink.textContent = newValue\n break\n case 'tools-delete':\n textnode = document.createTextNode(newValue)\n this.$deleteLink.prepend(textnode)\n break\n case 'tools-group':\n textnode = document.createTextNode(newValue)\n this.$groupLink.prepend(textnode)\n break\n case 'tools-ungroup':\n textnode = document.createTextNode(newValue)\n this.$ungroupLink.prepend(textnode)\n break\n case 'tools-move_front':\n textnode = document.createTextNode(newValue)\n this.$moveFrontLink.prepend(textnode)\n break\n case 'tools-move_up':\n textnode = document.createTextNode(newValue)\n this.$moveUpLink.prepend(textnode)\n break\n case 'tools-move_down':\n textnode = document.createTextNode(newValue)\n this.$moveDownLink.prepend(textnode)\n break\n case 'tools-move_back':\n textnode = document.createTextNode(newValue)\n this.$moveBackLink.prepend(textnode)\n break\n default:\n // super.attributeChangedCallback(name, oldValue, newValue);\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get disableallmenu () {\n return this.getAttribute('disableallmenu')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set disableallmenu (value) {\n this.setAttribute('disableallmenu', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get enablemenuitems () {\n return this.getAttribute('enablemenuitems')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set enablemenuitems (value) {\n this.setAttribute('enablemenuitems', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get disablemenuitems () {\n return this.getAttribute('disablemenuitems')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set disablemenuitems (value) {\n this.setAttribute('disablemenuitems', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n const current = this\n const onMenuOpenHandler = (e) => {\n e.preventDefault()\n // Detect mouse position\n let x = e.pageX\n let y = e.pageY\n\n const xOff = screen.width - 250 // menu width\n const yOff = screen.height - (276 + 150) // menu height + bottom panel height and scroll bar\n\n if (x > xOff) {\n x = xOff\n }\n if (y > yOff) {\n y = yOff\n }\n current.$dialog.style.top = y + 'px'\n current.$dialog.style.left = x + 'px'\n current.$dialog.style.display = 'block'\n }\n const onMenuCloseHandler = (e) => {\n if (e.button !== 2) {\n current.$dialog.style.display = 'none'\n }\n }\n const onMenuClickHandler = (e, action) => {\n const triggerEvent = new CustomEvent('change', {\n detail: {\n trigger: action\n }\n })\n this.dispatchEvent(triggerEvent)\n }\n this._workarea.addEventListener('contextmenu', onMenuOpenHandler)\n this._workarea.addEventListener('mousedown', onMenuCloseHandler)\n svgEditor.$click(this.$cutLink, (evt) => onMenuClickHandler(evt, 'cut'))\n svgEditor.$click(this.$copyLink, (evt) => onMenuClickHandler(evt, 'copy'))\n svgEditor.$click(this.$pasteLink, (evt) => onMenuClickHandler(evt, 'paste'))\n svgEditor.$click(this.$pasteInPlaceLink, (evt) => onMenuClickHandler(evt, 'paste_in_place'))\n svgEditor.$click(this.$deleteLink, (evt) => onMenuClickHandler(evt, 'delete'))\n svgEditor.$click(this.$groupLink, (evt) => onMenuClickHandler(evt, 'group'))\n svgEditor.$click(this.$ungroupLink, (evt) => onMenuClickHandler(evt, 'ungroup'))\n svgEditor.$click(this.$moveFrontLink, (evt) => onMenuClickHandler(evt, 'move_front'))\n svgEditor.$click(this.$moveUpLink, (evt) => onMenuClickHandler(evt, 'move_up'))\n svgEditor.$click(this.$moveDownLink, (evt) => onMenuClickHandler(evt, 'move_down'))\n svgEditor.$click(this.$moveBackLink, (evt) => onMenuClickHandler(evt, 'move_back'))\n }\n}\n\n// Register\ncustomElements.define('se-cmenu_canvas-dialog', SeCMenuDialog)\n","/* globals svgEditor */\nimport cMenuLayersDialog from './cmenuLayersDialog.html'\n\nconst template = document.createElement('template')\ntemplate.innerHTML = cMenuLayersDialog\n/**\n * @class SeCMenuLayerDialog\n */\nexport class SeCMenuLayerDialog extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.source = ''\n this._workarea = undefined\n this.$sidePanels = document.getElementById('sidepanels')\n this.$dialog = this._shadowRoot.querySelector('#cmenu_layers')\n this.$duplicateLink = this._shadowRoot.querySelector('#se-dupe')\n this.$deleteLink = this._shadowRoot.querySelector('#se-layer-delete')\n this.$mergeDownLink = this._shadowRoot.querySelector('#se-merge-down')\n this.$mergeAllLink = this._shadowRoot.querySelector('#se-merge-all')\n }\n\n /**\n * @function init\n * @param {any} name\n * @returns {void}\n */\n init (i18next) {\n this.setAttribute('layers-dupe', i18next.t('layers.dupe'))\n this.setAttribute('layers-del', i18next.t('layers.del'))\n this.setAttribute('layers-merge_down', i18next.t('layers.merge_down'))\n this.setAttribute('layers-merge_all', i18next.t('layers.merge_all'))\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['value', 'leftclick', 'layers-dupe', 'layers-del', 'layers-merge_down', 'layers-merge_all']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n if (oldValue === newValue) return\n switch (name) {\n case 'value':\n this.source = newValue\n if (newValue !== '' && newValue !== undefined) {\n this._workarea = document.getElementById(this.source)\n }\n break\n case 'layers-dupe':\n this.$duplicateLink.textContent = newValue\n break\n case 'layers-del':\n this.$deleteLink.textContent = newValue\n break\n case 'layers-merge_down':\n this.$mergeDownLink.textContent = newValue\n break\n case 'layers-merge_all':\n this.$mergeAllLink.textContent = newValue\n break\n default:\n // super.attributeChangedCallback(name, oldValue, newValue);\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get value () {\n return this.getAttribute('value')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set value (value) {\n this.setAttribute('value', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get leftclick () {\n return this.getAttribute('leftclick')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set leftclick (value) {\n this.setAttribute('leftclick', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n const current = this\n const onMenuOpenHandler = (e) => {\n e.preventDefault()\n current.$dialog.style.top = e.pageY + 'px'\n current.$dialog.style.left = e.pageX - 126 + 'px'\n current.$dialog.style.display = 'block'\n }\n const onMenuCloseHandler = (e) => {\n if (e.button !== 2) {\n current.$dialog.style.display = 'none'\n }\n }\n const onMenuClickHandler = (e, action, id) => {\n const triggerEvent = new CustomEvent('change', {\n detail: {\n trigger: action,\n source: id\n }\n })\n this.dispatchEvent(triggerEvent)\n current.$dialog.style.display = 'none'\n }\n if (this._workarea !== undefined) {\n this._workarea.addEventListener('contextmenu', onMenuOpenHandler)\n if (this.getAttribute('leftclick') === 'true') {\n svgEditor.$click(this._workarea, onMenuOpenHandler)\n }\n this._workarea.addEventListener('mousedown', onMenuCloseHandler)\n this.$sidePanels.addEventListener('mousedown', onMenuCloseHandler)\n }\n svgEditor.$click(this.$duplicateLink, (evt) => onMenuClickHandler(evt, 'dupe', this.source))\n svgEditor.$click(this.$deleteLink, (evt) => onMenuClickHandler(evt, 'delete', this.source))\n svgEditor.$click(this.$mergeDownLink, (evt) => onMenuClickHandler(evt, 'merge_down', this.source))\n svgEditor.$click(this.$mergeAllLink, (evt) => onMenuClickHandler(evt, 'merge_all', this.source))\n }\n}\n\n// Register\ncustomElements.define('se-cmenu-layers', SeCMenuLayerDialog)\n","import { updateChildNodes } from \"../core/dom.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport { createElement } from \"../core/template.js\";\nimport Dialog from \"./Dialog.js\";\nimport {\n defaultState,\n firstRender,\n ids,\n keydown,\n raiseChangeEvents,\n render,\n setState,\n state,\n stateEffects,\n template,\n} from \"./internal.js\";\n\n/**\n * Asks a single question the user can answer with choice buttons\n *\n * @inherits Dialog\n * @part {button} choice-button - a button representing a choice\n * @part {div} choice-button-container - the container for the choice buttons\n */\nclass AlertDialog extends Dialog {\n /**\n * The buttons created by the component to represent the choices in the\n * [choices](#choices) property.\n *\n * @type {HTMLElement[]}\n */\n get choiceButtons() {\n return this[state].choiceButtons;\n }\n\n /**\n * The class or tag used to create the `choice-button` parts —\n * the set of choices shown to the user.\n *\n * @type {PartDescriptor}\n * @default 'button'\n */\n get choiceButtonPartType() {\n return this[state].choiceButtonPartType;\n }\n set choiceButtonPartType(choiceButtonPartType) {\n this[setState]({ choiceButtonPartType });\n }\n\n /**\n * An array of strings indicating the choices the `AlertDialog` will present\n * to the user as responses to the alert. For each string in the array, the\n * `AlertDialog` displays a button labeled with that string.\n *\n * By default, this is an array with a single choice, \"OK\".\n *\n * @type {string[]}\n */\n get choices() {\n return this[state].choices;\n }\n set choices(choices) {\n this[setState]({ choices });\n }\n\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n choiceButtonPartType: \"button\",\n choiceButtons: [],\n choices: [\"OK\"],\n });\n }\n\n // Let the user select a choice by pressing its initial letter.\n [keydown](/** @type {KeyboardEvent} */ event) {\n let handled = false;\n\n const key = event.key.length === 1 && event.key.toLowerCase();\n if (key) {\n // See if one of the choices starts with the key.\n const choice = this.choices.find(\n (choice) => choice[0].toLowerCase() === key\n );\n if (choice) {\n this.close({\n choice,\n });\n handled = true;\n }\n }\n\n // Prefer mixin result if it's defined, otherwise use base result.\n return handled || (super[keydown] && super[keydown](event)) || false;\n }\n\n [render](/** @type {ChangedFlags} */ changed) {\n super[render](changed);\n\n if (this[firstRender]) {\n this[ids].choiceButtonContainer.addEventListener(\n \"click\",\n async (event) => {\n // TODO: Ignore clicks on choiceButtonContainer background.\n const button = event.target;\n if (button instanceof HTMLElement) {\n const choice = button.textContent;\n this[raiseChangeEvents] = true;\n await this.close({ choice });\n this[raiseChangeEvents] = false;\n }\n }\n );\n }\n\n if (changed.choiceButtons) {\n updateChildNodes(\n this[ids].choiceButtonContainer,\n this[state].choiceButtons\n );\n }\n }\n\n [stateEffects](state, changed) {\n const effects = super[stateEffects](state, changed);\n\n // When choices or choice button part type changes, regenerate buttons.\n if (changed.choiceButtonPartType || changed.choices) {\n /** @type {string[]} */ const choices = state.choices;\n const choiceButtons = choices.map((choice) => {\n const button = createElement(state.choiceButtonPartType);\n if (\"part\" in button) {\n /** @type {any} */ (button).part = \"choice-button\";\n }\n button.textContent = choice;\n return button;\n });\n Object.freeze(choiceButtons);\n Object.assign(effects, {\n choiceButtons,\n });\n }\n\n return effects;\n }\n\n get [template]() {\n const result = super[template];\n // Replace the default slot with a new default slot and a button container.\n const defaultSlot = result.content.querySelector(\"slot:not([name])\");\n if (defaultSlot) {\n defaultSlot.replaceWith(fragmentFrom.html`\n <div id=\"alertDialogContent\">\n <slot></slot>\n <div id=\"choiceButtonContainer\" part=\"choice-button-container\"></div>\n </div>\n `);\n }\n return result;\n }\n}\n\nexport default AlertDialog;\n","import AlertDialog from \"../base/AlertDialog.js\";\nimport { defaultState, template } from \"../base/internal.js\";\nimport { fragmentFrom } from \"../core/htmlLiterals.js\";\nimport PlainBorderButton from \"./PlainBorderButton.js\";\nimport PlainModalOverlayMixin from \"./PlainModalOverlayMixin.js\";\n\n/**\n * AlertDialog component in the Plain reference design system\n *\n * @inherits AlertDialog\n * @mixes PlainModalOverlayMixin\n * @part {PlainBorderButton} choice-button\n */\nclass PlainAlertDialog extends PlainModalOverlayMixin(AlertDialog) {\n // @ts-ignore\n get [defaultState]() {\n return Object.assign(super[defaultState], {\n choiceButtonPartType: PlainBorderButton,\n });\n }\n\n get [template]() {\n const result = super[template];\n result.content.append(\n fragmentFrom.html`\n <style>\n [part~=\"frame\"] {\n padding: 1em;\n }\n\n [part~=\"choice-button-container\"] {\n margin-top: 1em;\n }\n\n [part~=\"choice-button\"]:not(:first-child) {\n margin-left: 0.5em;\n }\n </style>\n `\n );\n return result;\n }\n}\n\nexport default PlainAlertDialog;\n","import PlainAlertDialog from 'elix/src/plain/PlainAlertDialog.js'\nimport { template } from 'elix/src/base/internal.js'\nimport { fragmentFrom } from 'elix/src/core/htmlLiterals.js'\n\n/**\n * @class SePlainAlertDialog\n */\nexport default class SePlainAlertDialog extends PlainAlertDialog {\n /**\n * @function get\n * @returns {PlainObject}\n */\n get [template] () {\n const result = super[template]\n // Replace the default slot with a new default slot and a button container.\n const defaultSlot = result.content.querySelector('#frameContent')\n if (defaultSlot) {\n defaultSlot.replaceWith(fragmentFrom.html`\n <div id=\"alertDialogContent\">\n <div id=\"se-content-alert\">\n <slot></slot>\n </div>\n <div id=\"choiceButtonContainer\" part=\"choice-button-container\"></div>\n </div>\n `)\n }\n result.content.append(\n fragmentFrom.html`\n <style>\n [part~=\"frame\"] {\n padding: 1em;\n background: #CCC;\n width: 300px;\n border: 1px outset #777;\n font-size: 0.8em;\n font-family: Verdana,Helvetica,sans-serif;\n border-radius: 5px;\n -moz-border-radius: 5px;\n -webkit-border-radius: 5px;\n }\n\n [part~=\"choice-button-container\"] {\n margin-top: 1em;\n text-align: center;\n }\n\n [part~=\"choice-button\"]:not(:first-child) {\n margin-left: 0.5em;\n }\n #se-content-alert{\n height: 95px;\n background: #DDD;\n overflow: auto;\n text-align: left;\n border: 1px solid #5a6162;\n padding: 1em;\n border-radius: 5px;\n -moz-border-radius: 5px;\n -webkit-border-radius: 5px;\n }\n </style>\n `\n )\n return result\n }\n}\n\ncustomElements.define('se-elix-alert-dialog', SePlainAlertDialog)\n","import SePlainAlertDialog from './SePlainAlertDialog.js'\n\nconst seSelect = async (text, choices) => {\n const dialog = new SePlainAlertDialog()\n dialog.textContent = text\n dialog.choices = choices\n dialog.open()\n const response = await dialog.whenClosed()\n return response.choice\n}\n\nwindow.seSelect = seSelect\n","import SePlainAlertDialog from './SePlainAlertDialog.js'\n\nconst seConfirm = async (text, choices) => {\n const dialog = new SePlainAlertDialog()\n dialog.textContent = text\n dialog.choices = (choices === undefined) ? ['Ok', 'Cancel'] : choices\n dialog.open()\n const response = await dialog.whenClosed()\n return response.choice\n}\n\nwindow.seConfirm = seConfirm\n","import SePlainAlertDialog from './SePlainAlertDialog.js'\n/**\n * @class SePromptDialog\n */\nexport class SePromptDialog extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this.dialog = new SePlainAlertDialog()\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['title', 'close']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n switch (name) {\n case 'title':\n if (this.dialog.opened) {\n this.dialog.close()\n }\n this.dialog.textContent = newValue\n this.dialog.choices = ['Cancel']\n this.dialog.open()\n break\n case 'close':\n if (this.dialog.opened) {\n this.dialog.close()\n } else {\n this.dialog.open()\n }\n break\n default:\n console.error('unknown attr for:', name, 'newValue =', newValue)\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get title () {\n return this.getAttribute('title')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set title (value) {\n this.setAttribute('title', value)\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get close () {\n return this.getAttribute('close')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set close (value) {\n // boolean value => existence = true\n if (value) {\n this.setAttribute('close', 'true')\n } else {\n this.removeAttribute('close')\n }\n }\n}\n\n// Register\ncustomElements.define('se-prompt-dialog', SePromptDialog)\n","import SePlainAlertDialog from './SePlainAlertDialog.js'\n\nconst seAlert = (text) => {\n const dialog = new SePlainAlertDialog()\n dialog.textContent = text\n dialog.choices = ['Ok']\n dialog.open()\n}\n\nwindow.seAlert = seAlert\n","/* globals svgEditor */\nimport './se-elix/define/NumberSpinBox.js'\n\nimport exportDialogHTML from './exportDialog.html'\nconst template = document.createElement('template')\ntemplate.innerHTML = exportDialogHTML\n/**\n * @class SeExportDialog\n */\nexport class SeExportDialog extends HTMLElement {\n /**\n * @function constructor\n */\n constructor () {\n super()\n // create the shadowDom and insert the template\n this._shadowRoot = this.attachShadow({ mode: 'open' })\n this._shadowRoot.append(template.content.cloneNode(true))\n this.$dialog = this._shadowRoot.querySelector('#export_box')\n this.$okBtn = this._shadowRoot.querySelector('#export_ok')\n this.$cancelBtn = this._shadowRoot.querySelector('#export_cancel')\n this.$exportOption = this._shadowRoot.querySelector('#se-storage-pref')\n this.$qualityCont = this._shadowRoot.querySelector('#se-quality')\n this.$input = this._shadowRoot.querySelector('elix-number-spin-box')\n this.value = 1\n }\n\n /**\n * @function init\n * @param {any} name\n * @returns {void}\n */\n init (i18next) {\n this.setAttribute('common-ok', i18next.t('common.ok'))\n this.setAttribute('common-cancel', i18next.t('common.cancel'))\n this.setAttribute('ui-quality', i18next.t('ui.quality'))\n this.setAttribute('ui-export_type_label', i18next.t('ui.export_type_label'))\n }\n\n /**\n * @function observedAttributes\n * @returns {any} observed\n */\n static get observedAttributes () {\n return ['dialog', 'common-ok', 'common-cancel', 'ui-quality', 'ui-export_type_label']\n }\n\n /**\n * @function attributeChangedCallback\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n * @returns {void}\n */\n attributeChangedCallback (name, oldValue, newValue) {\n let node\n switch (name) {\n case 'dialog':\n if (newValue === 'open') {\n this.$dialog.open()\n } else {\n this.$dialog.close()\n }\n break\n case 'common-ok':\n this.$okBtn.textContent = newValue\n break\n case 'common-cancel':\n this.$cancelBtn.textContent = newValue\n break\n case 'ui-quality':\n node = this._shadowRoot.querySelector('#se-quality')\n node.prepend(newValue)\n break\n case 'ui-export_type_label':\n node = this._shadowRoot.querySelector('#export_select')\n node.textContent = newValue\n break\n default:\n // super.attributeChangedCallback(name, oldValue, newValue);\n break\n }\n }\n\n /**\n * @function get\n * @returns {any}\n */\n get dialog () {\n return this.getAttribute('dialog')\n }\n\n /**\n * @function set\n * @returns {void}\n */\n set dialog (value) {\n this.setAttribute('dialog', value)\n }\n\n /**\n * @function connectedCallback\n * @returns {void}\n */\n connectedCallback () {\n this.$input.addEventListener('change', (e) => {\n e.preventDefault()\n this.value = e.target.value\n })\n svgEditor.$click(this.$input, (e) => {\n e.preventDefault()\n this.value = e.target.value\n })\n const onSubmitHandler = (e, action) => {\n if (action === 'cancel') {\n document.getElementById('se-export-dialog').setAttribute('dialog', 'close')\n } else {\n const triggerEvent = new CustomEvent('change', {\n detail: {\n trigger: action,\n imgType: this.$exportOption.value,\n quality: this.value\n }\n })\n this.dispatchEvent(triggerEvent)\n document.getElementById('se-export-dialog').setAttribute('dialog', 'close')\n }\n }\n const onChangeHandler = (e) => {\n if (e.target.value === 'PDF') {\n this.$qualityCont.style.display = 'none'\n } else {\n this.$qualityCont.style.display = 'block'\n }\n }\n svgEditor.$click(this.$okBtn, (evt) => onSubmitHandler(evt, 'ok'))\n svgEditor.$click(this.$cancelBtn, (evt) => onSubmitHandler(evt, 'cancel'))\n this.$exportOption.addEventListener('change', (evt) => onChangeHandler(evt))\n }\n}\n\n// Register\ncustomElements.define('se-export-dialog', SeExportDialog)\n","/**\n * Browser detection.\n * @module browser\n * @license MIT\n *\n * @copyright 2010 Jeff Schiller, 2010 Alexis Deveria\n */\n\nconst NSSVG = 'http://www.w3.org/2000/svg'\n\nconst { userAgent } = navigator\n\n// Note: Browser sniffing should only be used if no other detection method is possible\nconst isWebkit_ = userAgent.includes('AppleWebKit')\nconst isGecko_ = userAgent.includes('Gecko/')\nconst isChrome_ = userAgent.includes('Chrome/')\nconst isMac_ = userAgent.includes('Macintosh')\n\n// text character positioning (for IE9 and now Chrome)\nconst supportsGoodTextCharPos_ = (function () {\n const svgroot = document.createElementNS(NSSVG, 'svg')\n const svgContent = document.createElementNS(NSSVG, 'svg')\n document.documentElement.append(svgroot)\n svgContent.setAttribute('x', 5)\n svgroot.append(svgContent)\n const text = document.createElementNS(NSSVG, 'text')\n text.textContent = 'a'\n svgContent.append(text)\n try { // Chrome now fails here\n const pos = text.getStartPositionOfChar(0).x\n return (pos === 0)\n } catch (err) {\n return false\n } finally {\n svgroot.remove()\n }\n}())\n\n// Public API\n\n/**\n * @function module:browser.isWebkit\n * @returns {boolean}\n*/\nexport const isWebkit = () => isWebkit_\n/**\n * @function module:browser.isGecko\n * @returns {boolean}\n*/\nexport const isGecko = () => isGecko_\n/**\n * @function module:browser.isChrome\n * @returns {boolean}\n*/\nexport const isChrome = () => isChrome_\n\n/**\n * @function module:browser.isMac\n * @returns {boolean}\n*/\nexport const isMac = () => isMac_\n\n/**\n * @function module:browser.supportsGoodTextCharPos\n * @returns {boolean}\n*/\nexport const supportsGoodTextCharPos = () => supportsGoodTextCharPos_\n","import { mergeDeep } from '../common/util.js'\n\n/**\n* Escapes special characters in a regular expression.\n* @function regexEscape\n* @param {string} str\n* @returns {string}\n*/\nexport const regexEscape = function (str) {\n // Originally from: http://phpjs.org/functions\n return String(str).replace(/[.\\\\+*?[^\\]$(){}=!<>|:-]/g, '\\\\$&')\n}\n/**\n * @class configObj\n */\nexport default class ConfigObj {\n /**\n * @param {PlainObject} editor\n */\n constructor (editor) {\n /**\n * Preferences.\n * @interface module:SVGEditor.Prefs\n * @property {string} [lang=\"en\"] Two-letter language code. The language must exist in the Editor Preferences language list. Defaults to \"en\" if `locale.js` detection does not detect another language.\n * @property {string} [bkgd_color=\"#FFF\"] Color hex for canvas background color. Defaults to white.\n * @property {string} [bkgd_url=\"\"] Background raster image URL. This image will fill the background of the document; useful for tracing purposes.\n * @property {\"embed\"|\"ref\"} [img_save=\"embed\"] Defines whether included raster images should be saved as Data URIs when possible, or as URL references. Settable in the Document Properties dialog.\n * @property {boolean} [save_notice_done=false] Used to track alert status\n * @property {boolean} [export_notice_done=false] Used to track alert status\n * @todo `save_notice_done` and `export_notice_done` should be changed to flags rather than preferences\n */\n this.defaultPrefs = {\n // EDITOR OPTIONS (DIALOG)\n /**\n * Default to \"en\" if locale.js detection does not detect another language.\n */\n lang: 'en',\n /**\n * Will default to 's' if the window height is smaller than the minimum\n * height and 'm' otherwise.\n */\n bkgd_color: '#FFF',\n bkgd_url: '',\n // DOCUMENT PROPERTIES (DIALOG)\n img_save: 'embed',\n // ALERT NOTICES\n // Only shows in UI as far as alert notices, but useful to remember, so keeping as pref\n save_notice_done: false,\n export_notice_done: false\n }\n /**\n * @tutorial ConfigOptions\n * @interface module:SVGEditor.Config\n * @property {string} [canvasName=\"default\"] Used to namespace storage provided via `ext-storage.js`; you can use this if you wish to have multiple independent instances of SVG Edit on the same domain\n * @property {boolean} [no_save_warning=false] If `true`, prevents the warning dialog box from appearing when closing/reloading the page. Mostly useful for testing.\n * @property {string} [imgPath=\"images/\"] The path where the SVG icons are located, with trailing slash. Note that as of version 2.7, this is not configurable by URL for security reasons.\n * @property {boolean} [preventAllURLConfig=false] Set to `true` to override the ability for URLs to set non-content configuration (including extension config).\n * Must be set early, i.e., in `svgedit-config-iife.js`; extension loading is too late!\n * @property {boolean} [preventURLContentLoading=false] Set to `true` to override the ability for URLs to set URL-based SVG content.\n * Must be set early, i.e., in `svgedit-config-iife.js`; extension loading is too late!\n * @property {boolean} [lockExtensions=false] Set to `true` to override the ability for URLs to set their own extensions; disallowed in URL setting. There is no need for this when `preventAllURLConfig` is used.\n * Must be set early, i.e., in `svgedit-config-iife.js`; extension loading is too late!\n * @property {boolean} [noDefaultExtensions=false] If set to `true`, prohibits automatic inclusion of default extensions (though \"extensions\" can still be used to add back any desired default extensions along with any other extensions).\n * This can only be meaningfully used in `svgedit-config-iife.js` or in the URL\n * @property {boolean} [noStorageOnLoad=false] Some interaction with `ext-storage.js`; prevent even the loading of previously saved local storage.\n * @property {boolean} [forceStorage=false] Some interaction with `ext-storage.js`; strongly discouraged from modification as it bypasses user privacy by preventing them\n * from choosing whether to keep local storage or not (and may be required by law in some regions)\n * @property {boolean} [emptyStorageOnDecline=false] Used by `ext-storage.js`; empty any prior storage if the user declines to store\n * @property {boolean} [avoidClientSide=false] DEPRECATED (use `avoidClientSideDownload` instead); Used by `ext-server_opensave.js`; set to `true` if you wish to always save to server and not only as fallback when client support is lacking\n * @property {boolean} [avoidClientSideDownload=false] Used by `ext-server_opensave.js`; set to `true` if you wish to always save to server and not only as fallback when client support is lacking\n * @property {boolean} [avoidClientSideOpen=false] Used by `ext-server_opensave.js`; set to `true` if you wish to always open from the server and not only as fallback when FileReader client support is lacking\n * @property {string[]} [extensions=[]] Extensions to load on startup. Use an array in `setConfig` and comma separated file names in the URL.Extension names must begin with \"ext-\".\n * Note that as of version 2.7, paths containing \"/\", \"\\\", or \":\", are disallowed for security reasons.\n * Although previous versions of this list would entirely override the default list, as of version 2.7, the defaults will always be added to this explicit list unless the configuration `noDefaultExtensions` is included.\n * See {@link module:SVGEditor~defaultExtensions}.\n * @property {string[]} [allowedOrigins=[]] Used by `ext-xdomain-messaging.js` to indicate which origins are permitted for cross-domain messaging (e.g., between the embedded editor and main editor code).\n * Besides explicit domains, one might add '*' to allow all domains (not recommended for privacy/data integrity of your user's content!),\n * `window.location.origin` for allowing the same origin (should be safe if you trust all apps on your domain), 'null' to allow `file:///` URL usage\n * @property {string} [paramurl] This was available via URL only. Allowed an un-encoded URL within the query string (use \"url\" or \"source\" with a data: URI instead)\n * @property {Float} [canvas_expansion=3] The minimum area visible outside the canvas, as a multiple of the image dimensions. The larger the number, the more one can scroll outside the canvas.\n * @property {PlainObject} [initFill] Init fill properties\n * @property {string} [initFill.color=\"FF0000\"] The initial fill color. Must be a hex code string. Defaults to solid red.\n * @property {Float} [initFill.opacity=1] The initial fill opacity. Must be a number between 0 and 1\n * @property {PlainObject} [initStroke] Init stroke properties\n * @property {Float} [initStroke.width=5] The initial stroke width. Must be a positive number.\n * @property {string} [initStroke.color=\"000000\"] The initial stroke color. Must be a hex code. Defaults to solid black.\n * @property {Float} [initStroke.opacity=1] The initial stroke opacity. Must be a number between 0 and 1.\n * @property {PlainObject} text Text style properties\n * @property {Float} [text.stroke_width=0] Text stroke width\n * @property {Float} [text.font_size=24] Text font size\n * @property {string} [text.font_family=\"serif\"] Text font family\n * @property {Float} [initOpacity=1] Initial opacity (multiplied by 100)\n * @property {module:SVGEditor.XYDimensions} [dimensions=[640, 480]] The default width/height of a new document. Use an array in `setConfig` (e.g., `[800, 600]`) and comma separated numbers in the URL.\n * @property {boolean} [gridSnapping=false] Enable snap to grid by default. Set in Editor Options.\n * @property {string} [gridColor=\"#000\"] Accepts hex, e.g., '#000'. Set in Editor Options. Defaults to black.\n * @property {string} [baseUnit=\"px\"] Set in Editor Options.\n * @property {Float} [snappingStep=10] Set the default grid snapping value. Set in Editor Options.\n * @property {boolean} [showRulers=true] Initial state of ruler display (v2.6). Set in Editor Options.\n * @property {string} [initTool=\"select\"] The initially selected tool. Must be either the ID of the button for the tool, or the ID without `tool_` prefix (e.g., \"select\").\n * @property {boolean} [wireframe=false] Start in wireframe mode\n * @property {boolean} [showlayers=false] Open the layers side-panel by default.\n * @property {\"new\"|\"same\"} [exportWindowType=\"new\"] Can be \"new\" or \"same\" to indicate whether new windows will be generated for each export;\n * the `window.name` of the export window is namespaced based on the `canvasName` (and incremented if \"new\" is selected as the type). Introduced 2.8.\n * @property {boolean} [showGrid=false] Set by `ext-grid.js`; determines whether or not to show the grid by default\n * @property {boolean} [show_outside_canvas=true] Defines whether or not elements outside the canvas should be visible. Set and used in `svgcanvas.js`.\n * @property {boolean} [selectNew=true] If true, will replace the selection with the current element and automatically select element objects (when not in \"path\" mode) after they are created, showing their grips (v2.6).\n * Set and used in `svgcanvas.js` (`mouseUp`).\n */\n this.defaultConfig = {\n canvasName: 'default',\n canvas_expansion: 3,\n initFill: {\n color: 'FF0000', // solid red\n opacity: 1\n },\n initStroke: {\n width: 5,\n color: '000000', // solid black\n opacity: 1\n },\n text: {\n stroke_width: 0,\n font_size: 24,\n font_family: 'Serif'\n },\n initOpacity: 1,\n initTool: 'select',\n exportWindowType: 'new', // 'same' (todo: also support 'download')\n wireframe: false,\n showlayers: false,\n no_save_warning: false,\n // PATH CONFIGURATION\n // The following path configuration items are disallowed in the URL (as should any future path configurations)\n imgPath: './images',\n extPath: './extensions',\n // DOCUMENT PROPERTIES\n // Change the following to a preference (already in the Document Properties dialog)?\n dimensions: [640, 480],\n // EDITOR OPTIONS\n // Change the following to preferences (already in the Editor Options dialog)?\n gridSnapping: false,\n gridColor: '#000',\n baseUnit: 'px',\n snappingStep: 10,\n showRulers: true,\n // SOURCE OUTPUT BEHAVIOR\n dynamicOutput: false,\n // URL BEHAVIOR CONFIGURATION\n preventAllURLConfig: false,\n preventURLContentLoading: false,\n // EXTENSION CONFIGURATION (see also preventAllURLConfig)\n lockExtensions: false, // Disallowed in URL setting\n noDefaultExtensions: false, // noDefaultExtensions can only be meaningfully used in `svgedit-config-iife.js` or in the URL\n // EXTENSION-RELATED (GRID)\n showGrid: false, // Set by ext-grid.js\n // EXTENSION-RELATED (STORAGE)\n noStorageOnLoad: false, // Some interaction with ext-storage.js; prevent even the loading of previously saved local storage\n forceStorage: false, // Some interaction with ext-storage.js; strongly discouraged from modification as it bypasses user privacy by preventing them from choosing whether to keep local storage or not\n emptyStorageOnDecline: false, // Used by ext-storage.js; empty any prior storage if the user declines to store\n // EXTENSION (CLIENT VS. SERVER SAVING/OPENING)\n avoidClientSide: false, // Deprecated in favor of `avoidClientSideDownload`\n avoidClientSideDownload: false,\n avoidClientSideOpen: false\n }\n\n this.curPrefs = {}\n // Note: The difference between Prefs and Config is that Prefs\n // can be changed in the UI and are stored in the browser,\n // while config cannot\n this.urldata = {}\n /**\n * @name module:SVGEditor~defaultExtensions\n * @type {string[]}\n */\n this.defaultExtensions = [\n // 'ext-connector',\n 'ext-eyedropper',\n 'ext-grid',\n // 'ext-imagelib',\n // 'ext-arrows',\n 'ext-markers',\n // 'ext-overview_window', disabled until we fix performance issue\n 'ext-panning',\n 'ext-shapes',\n 'ext-polystar',\n 'ext-storage',\n 'ext-opensave'\n ]\n this.curConfig = {\n // We do not put on defaultConfig to simplify object copying\n // procedures (we obtain instead from defaultExtensions)\n extensions: [],\n userExtensions: [],\n /**\n * Can use `location.origin` to indicate the current\n * origin. Can contain a '*' to allow all domains or 'null' (as\n * a string) to support all `file:///` URLs. Cannot be set by\n * URL for security reasons (not safe, at least for\n * privacy or data integrity of SVG content).\n * Might have been fairly safe to allow\n * `new URL(location.href).origin` by default but\n * avoiding it ensures some more security that even third\n * party apps on the same domain also cannot communicate\n * with this app by default.\n * For use with `ext-xdomain-messaging.js`\n * @todo We might instead make as a user-facing preference.\n */\n allowedOrigins: []\n }\n this.editor = editor\n }\n\n /**\n * @function setupCurPrefs\n * @returns {void}\n */\n setupCurPrefs () {\n const curPrefs = { ...this.defaultPrefs, ...this.curPrefs } // Now safe to merge with priority for curPrefs in the event any are already set\n // Export updated prefs\n this.curPrefs = curPrefs\n }\n\n /**\n * Sets up current config based on defaults.\n * @returns {void}\n */\n setupCurConfig () {\n const curConfig = { ...this.defaultConfig, ...this.curConfig } // Now safe to merge with priority for curConfig in the event any are already set\n\n // Now deal with extensions and other array config\n if (!curConfig.noDefaultExtensions) {\n curConfig.extensions = [...this.defaultExtensions]\n }\n // Export updated config\n this.curConfig = curConfig\n }\n\n /**\n * @function loadFromURL Load config/data from URL if given\n * @returns {void}\n */\n loadFromURL () {\n const self = this\n const { search, searchParams } = new URL(location)\n if (search) {\n this.urldata = {}\n const entries = searchParams.entries()\n for (const entry of entries) {\n this.urldata[entry[0]] = entry[1]\n }\n\n ['initStroke', 'initFill'].forEach((prop) => {\n if (searchParams.has(`${prop}[color]`)) {\n // Restore back to original non-deparamed value to avoid color\n // strings being converted to numbers\n if (this.urldata[prop] === undefined) { this.urldata[prop] = {} }\n this.urldata[prop].color = searchParams.get(`${prop}[color]`)\n }\n })\n\n if (searchParams.has('bkgd_color')) {\n this.urldata.bkgd_color = '#' + searchParams.get('bkgd_color')\n }\n\n if (this.urldata.dimensions) {\n this.urldata.dimensions = this.urldata.dimensions.split(',')\n }\n\n if (this.urldata.extensions) {\n // For security reasons, disallow cross-domain or cross-folder\n // extensions via URL\n this.urldata.extensions = (/[:/\\\\]/).test(this.urldata.extensions)\n ? ''\n : this.urldata.extensions.split(',')\n }\n\n // Disallowing extension paths via URL for\n // security reasons, even for same-domain\n // ones given potential to interact in undesirable\n // ways with other script resources\n ['userExtensions', 'imgPath']\n .forEach(function (pathConfig) {\n if (self.urldata[pathConfig]) {\n delete self.urldata[pathConfig]\n }\n })\n\n // Note: `source` and `url` (as with `storagePrompt` later) are not\n // set on config but are used below\n this.setConfig(this.urldata, { overwrite: false })\n this.setupCurConfig()\n\n if (!this.curConfig.preventURLContentLoading) {\n let { source } = this.urldata\n if (!source) { // urldata.source may have been null if it ended with '='\n const src = searchParams.get('source')\n if (src?.startsWith('data:')) {\n source = src\n }\n }\n if (source) {\n if (source.startsWith('data:')) {\n this.editor.loadFromDataURI(source)\n } else {\n this.editor.loadFromString(source)\n }\n return\n }\n if (this.urldata.url) {\n this.editor.loadFromURL(this.urldata.url)\n return\n }\n }\n if (!this.urldata.noStorageOnLoad || this.curConfig.forceStorage) {\n this.loadContentAndPrefs()\n }\n } else {\n this.setupCurConfig()\n this.loadContentAndPrefs()\n }\n }\n\n /**\n * Where permitted, sets canvas and/or `configObj.defaultPrefs` based on previous\n * storage. This will override URL settings (for security reasons) but\n * not `svgedit-config-iife.js` configuration (unless initial user\n * overriding is explicitly permitted there via `allowInitialUserOverride`).\n * @function module:SVGEditor.loadContentAndPrefs\n * @todo Split `allowInitialUserOverride` into `allowOverrideByURL` and\n * `allowOverrideByUserStorage` so `svgedit-config-iife.js` can disallow some\n * individual items for URL setting but allow for user storage AND/OR\n * change URL setting so that it always uses a different namespace,\n * so it won't affect pre-existing user storage (but then if users saves\n * that, it will then be subject to tampering\n * @returns {void}\n */\n loadContentAndPrefs () {\n if (!this.curConfig.forceStorage &&\n (this.curConfig.noStorageOnLoad ||\n !(/(?:^|;\\s*)svgeditstore=(?:prefsAndContent|prefsOnly)/).test(document.cookie)\n )\n ) {\n return\n }\n\n // LOAD PREFS\n Object.keys(this.defaultPrefs).forEach((key) => {\n const storeKey = 'svg-edit-' + key\n if (this.editor.storage) {\n const val = this.editor.storage.getItem(storeKey)\n if (val) {\n this.defaultPrefs[key] = String(val) // Convert to string for FF (.value fails in Webkit)\n }\n } else if (window.widget) {\n this.defaultPrefs[key] = window.widget.preferenceForKey(storeKey)\n } else {\n const result = document.cookie.match(\n new RegExp('(?:^|;\\\\s*)' + regexEscape(\n encodeURIComponent(storeKey)\n ) + '=([^;]+)')\n )\n this.defaultPrefs[key] = result ? decodeURIComponent(result[1]) : ''\n }\n })\n }\n\n /**\n * Allows setting of preferences or configuration (including extensions).\n * @function module:SVGEditor.setConfig\n * @param {module:SVGEditor.Config|module:SVGEditor.Prefs} opts The preferences or configuration (including extensions). See the tutorial on {@tutorial ConfigOptions} for info on config and preferences.\n * @param {PlainObject} [cfgCfg] Describes configuration which applies to the\n * particular batch of supplied options\n * @param {boolean} [cfgCfg.allowInitialUserOverride=false] Set to true if you wish\n * to allow initial overriding of settings by the user via the URL\n * (if permitted) or previously stored preferences (if permitted);\n * note that it will be too late if you make such calls in extension\n * code because the URL or preference storage settings will\n * have already taken place.\n * @param {boolean} [cfgCfg.overwrite=true] Set to false if you wish to\n * prevent the overwriting of prior-set preferences or configuration\n * (URL settings will always follow this requirement for security\n * reasons, so `svgedit-config-iife.js` settings cannot be overridden unless it\n * explicitly permits via `allowInitialUserOverride` but extension config\n * can be overridden as they will run after URL settings). Should\n * not be needed in `svgedit-config-iife.js`.\n * @returns {void}\n*/\n setConfig (opts, cfgCfg = {}) {\n /**\n *\n * @param {module:SVGEditor.Config|module:SVGEditor.Prefs} cfgObj\n * @param {string} key\n * @param {any} val See {@link module:SVGEditor.Config} or {@link module:SVGEditor.Prefs}\n * @returns {void}\n */\n const extendOrAdd = (cfgObj, key, val) => {\n if (cfgObj[key] && typeof cfgObj[key] === 'object' && !Array.isArray(cfgObj[key])) {\n cfgObj[key] = mergeDeep(cfgObj[key], val)\n } else {\n cfgObj[key] = val\n }\n }\n Object.entries(opts).forEach(([key, val]) => {\n // Only allow prefs defined in configObj.defaultPrefs or...\n if (this.defaultPrefs[key]) {\n if (cfgCfg.overwrite === false && (\n this.curConfig.preventAllURLConfig ||\n this.curPrefs[key])\n ) {\n return\n }\n if (cfgCfg.allowInitialUserOverride === true) {\n this.defaultPrefs[key] = val\n } else {\n this.pref(key, val)\n }\n } else if (['extensions', 'userExtensions', 'allowedOrigins'].includes(key)) {\n if (cfgCfg.overwrite === false &&\n (\n this.curConfig.preventAllURLConfig ||\n ['allowedOrigins'].includes(key) ||\n (key === 'extensions' && this.curConfig.lockExtensions)\n )\n ) {\n return\n }\n this.curConfig[key] = this.curConfig[key].concat(val) // We will handle any dupes later\n // Only allow other configObj.curConfig if defined in configObj.defaultConfig\n } else if ({}.hasOwnProperty.call(this.defaultConfig, key)) {\n if (cfgCfg.overwrite === false && (\n this.curConfig.preventAllURLConfig ||\n {}.hasOwnProperty.call(this.curConfig, key)\n )) {\n return\n }\n // Potentially overwriting of previously set config\n if ({}.hasOwnProperty.call(this.curConfig, key)) {\n if (cfgCfg.overwrite === false) {\n return\n }\n extendOrAdd(this.curConfig, key, val)\n } else if (cfgCfg.allowInitialUserOverride === true) {\n extendOrAdd(this.defaultConfig, key, val)\n } else if (this.defaultConfig[key] && typeof this.defaultConfig[key] === 'object') {\n this.curConfig[key] = Array.isArray(this.defaultConfig[key]) ? [] : {}\n this.curConfig[key] = mergeDeep(this.curConfig[key], val)\n } else {\n this.curConfig[key] = val\n }\n }\n })\n }\n\n /**\n * Store and retrieve preferences.\n * @function pref\n * @param {string} key The preference name to be retrieved or set\n * @param {string} [val] The value. If the value supplied is missing or falsey, no change to the preference will\n * be made unless `mayBeEmpty` is set.\n * @param {boolean} [mayBeEmpty] If value may be falsey.\n * @returns {string|void} If val is missing or falsey and `mayBeEmpty` is not set, the\n * value of the previously stored preference will be returned.\n * @todo Review whether any remaining existing direct references to\n * getting `curPrefs` can be changed to use `svgEditor.configObj.pref()` getting to ensure\n * `defaultPrefs` fallback (also for sake of `allowInitialUserOverride`);\n * specifically, `bkgd_color` could be changed so that the pref dialog has a\n * button to auto-calculate background, but otherwise uses `svgEditor.configObj.pref()` to\n * be able to get default prefs or overridable settings\n */\n pref (key, val, mayBeEmpty) {\n if (mayBeEmpty || val) {\n this.curPrefs[key] = val\n return undefined\n }\n return (key in this.curPrefs) ? this.curPrefs[key] : this.defaultPrefs[key]\n }\n\n /**\n * @function load load Config\n * @returns {void}\n */\n load () {\n this.loadFromURL(this.editor)\n this.setupCurPrefs(this.editor)\n }\n}\n","/**\n * Adds context menu functionality.\n * @module contextmenu\n * @license Apache-2.0\n * @author Adam Bender\n */\n\nlet contextMenuExtensions = {}\n\n/**\n * Signature depends on what the user adds; in the case of our uses with\n * SVGEditor, no parameters are passed nor anything expected for a return.\n * @callback module:contextmenu.MenuItemAction\n * @param {...args} args\n * @returns {any}\n*/\n\n/**\n* @typedef {PlainObject} module:contextmenu.MenuItem\n* @property {string} id\n* @property {string} label\n* @property {module:contextmenu.MenuItemAction} action\n*/\n\n/**\n* @param {module:contextmenu.MenuItem} menuItem\n* @returns {boolean}\n*/\nconst menuItemIsValid = function (menuItem) {\n return menuItem && menuItem.id && menuItem.label && menuItem.action && typeof menuItem.action === 'function'\n}\n\n/**\n* @function module:contextmenu.add\n* @param {module:contextmenu.MenuItem} menuItem\n* @throws {Error|TypeError}\n* @returns {void}\n*/\nexport const add = function (menuItem) {\n // menuItem: {id, label, shortcut, action}\n if (!menuItemIsValid(menuItem)) {\n throw new TypeError(\n 'Menu items must be defined and have at least properties: ' +\n 'id, label, action, where action must be a function'\n )\n }\n if (menuItem.id in contextMenuExtensions) {\n throw new Error('Cannot add extension \"' + menuItem.id + '\", an extension by that name already exists\"')\n }\n // Register menuItem action, see below for deferred menu dom injection\n contextMenuExtensions[menuItem.id] = menuItem\n // TODO: Need to consider how to handle custom enable/disable behavior\n}\n\n/**\n* @function module:contextmenu.hasCustomHandler\n* @param {string} handlerKey\n* @returns {boolean}\n*/\nexport const hasCustomHandler = function (handlerKey) {\n return Boolean(contextMenuExtensions[handlerKey])\n}\n\n/**\n* @function module:contextmenu.getCustomHandler\n* @param {string} handlerKey\n* @returns {module:contextmenu.MenuItemAction}\n*/\nexport const getCustomHandler = function (handlerKey) {\n return contextMenuExtensions[handlerKey].action\n}\n\n/**\n* @param {module:contextmenu.MenuItem} menuItem\n* @returns {void}\n*/\nconst injectExtendedContextMenuItemIntoDom = function (menuItem) {\n if (!Object.keys(contextMenuExtensions).length) {\n // all menuItems appear at the bottom of the menu in their own container.\n // if this is the first extension menu we need to add the separator.\n document.getElementById('cmenu_canvas').appendChild('<li class=\\'separator\\'>')\n }\n const shortcut = menuItem.shortcut || ''\n document.getElementById('cmenu_canvas').appendChild(`\n <li class='disabled'><a href='#${menuItem.id}'>${menuItem.label}<span class='shortcut'>${shortcut}</span></a></li>`)\n}\n\n/**\n* @function module:contextmenu.injectExtendedContextMenuItemsIntoDom\n* @returns {void}\n*/\nexport const injectExtendedContextMenuItemsIntoDom = function () {\n Object.values(contextMenuExtensions).forEach((menuItem) => {\n injectExtendedContextMenuItemIntoDom(menuItem)\n })\n}\n/**\n* @function module:contextmenu.resetCustomMenus\n* @returns {void}\n*/\nexport const resetCustomMenus = function () { contextMenuExtensions = {} }\n","import rulersTemplate from './templates/rulersTemplate.html'\nimport SvgCanvas from '@svgedit/svgcanvas'\n\nconst { $id, getTypeMap } = SvgCanvas\n\n/**\n *\n */\nclass Rulers {\n /**\n * @type {Module}\n */\n constructor (editor) {\n // Make [1,2,5] array\n this.rulerIntervals = []\n for (let i = 0.1; i < 1e5; i *= 10) {\n this.rulerIntervals.push(i)\n this.rulerIntervals.push(2 * i)\n this.rulerIntervals.push(5 * i)\n }\n this.svgCanvas = editor.svgCanvas\n this.editor = editor\n // add rulers component to the DOM\n const template = document.createElement('template')\n template.innerHTML = rulersTemplate\n this.editor.$svgEditor.append(template.content.cloneNode(true))\n const { $id } = SvgCanvas\n this.rulerX = $id('ruler_x')\n this.rulerY = $id('ruler_y')\n this.rulerCorner = $id('ruler_corner')\n }\n\n display (on) {\n if (on) {\n this.rulerX.style.removeProperty('display')\n this.rulerY.style.removeProperty('display')\n this.rulerCorner.style.removeProperty('display')\n } else {\n this.rulerX.style.display = 'none'\n this.rulerY.style.display = 'none'\n this.rulerCorner.style.display = 'none'\n }\n }\n\n /**\n * @type {Module}\n */\n manageScroll () {\n if (this.rulerX) this.rulerX.scrollLeft = this.editor.workarea.scrollLeft\n if (this.rulerY) this.rulerY.scrollTop = this.editor.workarea.scrollTop\n }\n\n /**\n *\n * @param {HTMLDivElement} [scanvas]\n * @param {Float} [zoom]\n * @returns {void}\n */\n updateRulers (scanvas, zoom) {\n if (!zoom) { zoom = this.svgCanvas.getZoom() }\n if (!scanvas) { scanvas = document.getElementById('svgcanvas') }\n\n let d; let i\n const limit = 30000\n const contentElem = this.svgCanvas.getSvgContent()\n const units = getTypeMap()\n const unit = units[this.editor.configObj.curConfig.baseUnit] // 1 = 1px\n\n // draw x ruler then y ruler\n for (d = 0; d < 2; d++) {\n const isX = (d === 0)\n const dim = isX ? 'x' : 'y'\n const lentype = isX ? 'width' : 'height'\n const contentDim = Number(contentElem.getAttribute(dim))\n const $hcanvOrig = $id('ruler_' + dim).querySelector('canvas')\n\n // Bit of a hack to fully clear the canvas in Safari & IE9\n const $hcanv = $hcanvOrig.cloneNode(true)\n $hcanvOrig.replaceWith($hcanv)\n\n const hcanv = $hcanv\n\n // Set the canvas size to the width of the container\n let rulerLen\n if (lentype === 'width') {\n rulerLen = parseFloat(getComputedStyle(scanvas, null).width.replace('px', ''))\n } else if (lentype === 'height') {\n rulerLen = parseFloat(getComputedStyle(scanvas, null).height.replace('px', ''))\n }\n const totalLen = rulerLen\n hcanv.parentNode.style[lentype] = totalLen + 'px'\n let ctx = hcanv.getContext('2d')\n let ctxArr; let num; let ctxArrNum\n\n ctx.fillStyle = 'rgb(200,0,0)'\n ctx.fillRect(0, 0, hcanv.width, hcanv.height)\n\n // Remove any existing canvasses\n const elements = Array.prototype.filter.call($hcanv.parentNode.children, function (child) {\n return child !== $hcanv\n })\n Array.from(elements).forEach(function (element) {\n element.remove()\n })\n\n // Create multiple canvases when necessary (due to browser limits)\n if (rulerLen >= limit) {\n ctxArrNum = Number.parseInt(rulerLen / limit) + 1\n ctxArr = []\n ctxArr[0] = ctx\n let copy\n for (i = 1; i < ctxArrNum; i++) {\n hcanv[lentype] = limit\n copy = hcanv.cloneNode(true)\n hcanv.parentNode.append(copy)\n ctxArr[i] = copy.getContext('2d')\n }\n\n copy[lentype] = rulerLen % limit\n\n // set copy width to last\n rulerLen = limit\n }\n\n hcanv[lentype] = rulerLen\n\n const uMulti = unit * zoom\n\n // Calculate the main number interval\n const rawM = 50 / uMulti\n let multi = 1\n for (i = 0; i < this.rulerIntervals.length; i++) {\n num = this.rulerIntervals[i]\n multi = num\n if (rawM <= num) {\n break\n }\n }\n\n const bigInt = multi * uMulti\n\n ctx.font = '9px sans-serif'\n\n let rulerD = ((contentDim / uMulti) % multi) * uMulti\n let labelPos = rulerD - bigInt\n // draw big intervals\n let ctxNum = 0\n while (rulerD < totalLen) {\n labelPos += bigInt\n // const realD = rulerD - contentDim; // Currently unused\n\n const curD = Math.round(rulerD) + 0.5\n if (isX) {\n ctx.moveTo(curD, 15)\n ctx.lineTo(curD, 0)\n } else {\n ctx.moveTo(15, curD)\n ctx.lineTo(0, curD)\n }\n\n num = (labelPos - contentDim) / uMulti\n let label\n if (multi >= 1) {\n label = Math.round(num)\n } else {\n const decs = String(multi).split('.')[1].length\n label = num.toFixed(decs)\n }\n\n // Change 1000s to Ks\n if (label !== 0 && label !== 1000 && label % 1000 === 0) {\n label = (label / 1000) + 'K'\n }\n\n if (isX) {\n ctx.fillText(label, rulerD + 2, 8)\n } else {\n // draw label vertically\n const str = String(label).split('')\n for (i = 0; i < str.length; i++) {\n ctx.fillText(str[i], 1, (rulerD + 9) + i * 9)\n }\n }\n\n const part = bigInt / 10\n // draw the small intervals\n for (i = 1; i < 10; i++) {\n let subD = Math.round(rulerD + part * i) + 0.5\n if (ctxArr && subD > rulerLen) {\n ctxNum++\n ctx.stroke()\n if (ctxNum >= ctxArrNum) {\n i = 10\n rulerD = totalLen\n continue\n }\n ctx = ctxArr[ctxNum]\n rulerD -= limit\n subD = Math.round(rulerD + part * i) + 0.5\n }\n\n // odd lines are slighly longer\n const lineNum = (i % 2) ? 12 : 10\n if (isX) {\n ctx.moveTo(subD, 15)\n ctx.lineTo(subD, lineNum)\n } else {\n ctx.moveTo(15, subD)\n ctx.lineTo(lineNum, subD)\n }\n }\n rulerD += bigInt\n }\n ctx.strokeStyle = '#000'\n ctx.stroke()\n }\n }\n}\n\nexport default Rulers\n","/* globals seConfirm seAlert */\nimport {\n putLocale\n} from './locale.js'\nimport {\n hasCustomHandler, getCustomHandler, injectExtendedContextMenuItemsIntoDom\n} from './contextmenu.js'\nimport editorTemplate from './templates/editorTemplate.html'\nimport SvgCanvas from '@svgedit/svgcanvas'\nimport Rulers from './Rulers.js'\n\n/**\n * @fires module:svgcanvas.SvgCanvas#event:svgEditorReady\n * @returns {void}\n */\nconst readySignal = () => {\n // let the opener know SVG Edit is ready (now that config is set up)\n const w = window.opener || window.parent\n if (w) {\n try {\n /**\n * Triggered on a containing `document` (of `window.opener`\n * or `window.parent`) when the editor is loaded.\n * @event module:SVGEditor#event:svgEditorReadyEvent\n * @type {Event}\n * @property {true} bubbles\n * @property {true} cancelable\n */\n /**\n * @name module:SVGthis.svgEditorReadyEvent\n * @type {module:SVGEditor#event:svgEditorReadyEvent}\n */\n const svgEditorReadyEvent = new w.CustomEvent('svgEditorReady', {\n bubbles: true,\n cancelable: true\n })\n w.document.documentElement.dispatchEvent(svgEditorReadyEvent)\n } catch (e) { /* empty fn */ }\n }\n}\n\nconst { $id, $qq, $click, convertUnit } = SvgCanvas\n\n/**\n *\n */\nclass EditorStartup {\n /**\n *\n */\n constructor (div) {\n this.extensionsAdded = false\n this.messageQueue = []\n this.$container = div ?? $id('svg_editor')\n }\n\n /**\n * Auto-run after a Promise microtask.\n * @function module:SVGthis.init\n * @returns {void}\n */\n async init () {\n if ('localStorage' in window) {\n this.storage = window.localStorage\n }\n this.configObj.load()\n const { i18next } = await putLocale(this.configObj.pref('lang'), this.goodLangs)\n this.i18next = i18next\n await import('./components/index.js')\n await import('./dialogs/index.js')\n try {\n // add editor components to the DOM\n const template = document.createElement('template')\n template.innerHTML = editorTemplate\n this.$container.append(template.content.cloneNode(true))\n this.$svgEditor = $qq('.svg_editor')\n // allow to prepare the dom without display\n this.$svgEditor.style.visibility = 'hidden'\n this.workarea = $id('workarea')\n // Image props dialog added to DOM\n const newSeImgPropDialog = document.createElement('se-img-prop-dialog')\n newSeImgPropDialog.setAttribute('id', 'se-img-prop')\n this.$container.append(newSeImgPropDialog)\n newSeImgPropDialog.init(this.i18next)\n // editor prefences dialoag added to DOM\n const newSeEditPrefsDialog = document.createElement('se-edit-prefs-dialog')\n newSeEditPrefsDialog.setAttribute('id', 'se-edit-prefs')\n this.$container.append(newSeEditPrefsDialog)\n newSeEditPrefsDialog.init(this.i18next)\n // canvas menu added to DOM\n const dialogBox = document.createElement('se-cmenu_canvas-dialog')\n dialogBox.setAttribute('id', 'se-cmenu_canvas')\n this.$container.append(dialogBox)\n dialogBox.init(this.i18next)\n // alertDialog added to DOM\n const alertBox = document.createElement('se-alert-dialog')\n alertBox.setAttribute('id', 'se-alert-dialog')\n this.$container.append(alertBox)\n // promptDialog added to DOM\n const promptBox = document.createElement('se-prompt-dialog')\n promptBox.setAttribute('id', 'se-prompt-dialog')\n this.$container.append(promptBox)\n // Export dialog added to DOM\n const exportDialog = document.createElement('se-export-dialog')\n exportDialog.setAttribute('id', 'se-export-dialog')\n this.$container.append(exportDialog)\n exportDialog.init(this.i18next)\n } catch (err) {\n console.error(err)\n }\n\n /**\n * @name module:SVGthis.canvas\n * @type {module:svgcanvas.SvgCanvas}\n */\n this.svgCanvas = new SvgCanvas(\n $id('svgcanvas'),\n this.configObj.curConfig\n )\n\n this.leftPanel.init()\n this.bottomPanel.init()\n this.topPanel.init()\n this.layersPanel.init()\n this.mainMenu.init()\n\n const { undoMgr } = this.svgCanvas\n this.canvMenu = $id('se-cmenu_canvas')\n this.exportWindow = null\n this.defaultImageURL = `${this.configObj.curConfig.imgPath}/logo.svg`\n const zoomInIcon = 'crosshair'\n const zoomOutIcon = 'crosshair'\n this.uiContext = 'toolbars'\n\n // For external openers\n readySignal()\n\n this.rulers = new Rulers(this)\n\n this.layersPanel.populateLayers()\n this.selectedElement = null\n this.multiselected = false\n\n const aLink = $id('cur_context_panel')\n\n $click(aLink, (evt) => {\n const link = evt.target\n if (link.hasAttribute('data-root')) {\n this.svgCanvas.leaveContext()\n } else {\n this.svgCanvas.setContext(link.textContent)\n }\n this.svgCanvas.clearSelection()\n return false\n })\n\n // bind the selected event to our function that handles updates to the UI\n this.svgCanvas.bind('selected', this.selectedChanged.bind(this))\n this.svgCanvas.bind('transition', this.elementTransition.bind(this))\n this.svgCanvas.bind('changed', this.elementChanged.bind(this))\n this.svgCanvas.bind('exported', this.exportHandler.bind(this))\n this.svgCanvas.bind('exportedPDF', function (win, data) {\n if (!data.output) { // Ignore Chrome\n return\n }\n const { exportWindowName } = data\n if (exportWindowName) {\n this.exportWindow = window.open('', this.exportWindowName) // A hack to get the window via JSON-able name without opening a new one\n }\n if (!this.exportWindow || this.exportWindow.closed) {\n seAlert(this.i18next.t('notification.popupWindowBlocked'))\n return\n }\n this.exportWindow.location.href = data.output\n }.bind(this))\n this.svgCanvas.bind('zoomed', this.zoomChanged.bind(this))\n this.svgCanvas.bind('zoomDone', this.zoomDone.bind(this))\n this.svgCanvas.bind(\n 'updateCanvas',\n /**\n * @param {external:Window} win\n * @param {PlainObject} centerInfo\n * @param {false} centerInfo.center\n * @param {module:math.XYObject} centerInfo.newCtr\n * @listens module:svgcanvas.SvgCanvas#event:updateCanvas\n * @returns {void}\n */\n function (win, { center, newCtr }) {\n this.updateCanvas(center, newCtr)\n }.bind(this)\n )\n this.svgCanvas.bind('contextset', this.contextChanged.bind(this))\n this.svgCanvas.bind('extension_added', this.extAdded.bind(this))\n this.svgCanvas.bind('elementRenamed', this.elementRenamed.bind(this))\n\n this.svgCanvas.bind('beforeClear', this.beforeClear.bind(this))\n this.svgCanvas.bind('afterClear', this.afterClear.bind(this))\n\n this.svgCanvas.textActions.setInputElem($id('text'))\n\n this.setBackground(this.configObj.pref('bkgd_color'), this.configObj.pref('bkgd_url'))\n\n // update resolution option with actual resolution\n const res = this.svgCanvas.getResolution()\n if (this.configObj.curConfig.baseUnit !== 'px') {\n res.w = convertUnit(res.w) + this.configObj.curConfig.baseUnit\n res.h = convertUnit(res.h) + this.configObj.curConfig.baseUnit\n }\n $id('se-img-prop').setAttribute('dialog', 'close')\n $id('se-img-prop').setAttribute('title', this.svgCanvas.getDocumentTitle())\n $id('se-img-prop').setAttribute('width', res.w)\n $id('se-img-prop').setAttribute('height', res.h)\n $id('se-img-prop').setAttribute('save', this.configObj.pref('img_save'))\n\n // Lose focus for select elements when changed (Allows keyboard shortcuts to work better)\n const selElements = document.querySelectorAll('select')\n Array.from(selElements).forEach(function (element) {\n element.addEventListener('change', function (evt) {\n evt.currentTarget.blur()\n })\n })\n\n // fired when user wants to move elements to another layer\n let promptMoveLayerOnce = false\n $id('selLayerNames').addEventListener('change', (evt) => {\n const destLayer = evt.detail.value\n const confirmStr = this.i18next.t('notification.QmoveElemsToLayer').replace('%s', destLayer)\n /**\n * @param {boolean} ok\n * @returns {void}\n */\n const moveToLayer = (ok) => {\n if (!ok) { return }\n promptMoveLayerOnce = true\n this.svgCanvas.moveSelectedToLayer(destLayer)\n this.svgCanvas.clearSelection()\n this.layersPanel.populateLayers()\n }\n if (destLayer) {\n if (promptMoveLayerOnce) {\n moveToLayer(true)\n } else {\n const ok = seConfirm(confirmStr)\n if (!ok) {\n return\n }\n moveToLayer(true)\n }\n }\n })\n $id('tool_font_family').addEventListener('change', (evt) => {\n this.svgCanvas.setFontFamily(evt.detail.value)\n })\n\n $id('seg_type').addEventListener('change', (evt) => {\n this.svgCanvas.setSegType(evt.detail.value)\n })\n\n const addListenerMulti = (element, eventNames, listener) => {\n eventNames.split(' ').forEach((eventName) => element.addEventListener(eventName, listener, false))\n }\n\n addListenerMulti($id('text'), 'keyup input', (evt) => {\n this.svgCanvas.setTextContent(evt.currentTarget.value)\n })\n\n $id('link_url').addEventListener('change', (evt) => {\n if (evt.currentTarget.value.length) {\n this.svgCanvas.setLinkURL(evt.currentTarget.value)\n } else {\n this.svgCanvas.removeHyperlink()\n }\n })\n\n $id('g_title').addEventListener('change', (evt) => {\n this.svgCanvas.setGroupTitle(evt.currentTarget.value)\n })\n\n let lastX = null; let lastY = null\n let panning = false; let keypan = false\n\n $id('svgcanvas').addEventListener('mouseup', (evt) => {\n if (panning === false) { return true }\n\n this.workarea.scrollLeft -= (evt.clientX - lastX)\n this.workarea.scrollTop -= (evt.clientY - lastY)\n\n lastX = evt.clientX\n lastY = evt.clientY\n\n if (evt.type === 'mouseup') { panning = false }\n return false\n })\n $id('svgcanvas').addEventListener('mousemove', (evt) => {\n if (panning === false) { return true }\n\n this.workarea.scrollLeft -= (evt.clientX - lastX)\n this.workarea.scrollTop -= (evt.clientY - lastY)\n\n lastX = evt.clientX\n lastY = evt.clientY\n\n if (evt.type === 'mouseup') { panning = false }\n return false\n })\n $id('svgcanvas').addEventListener('mousedown', (evt) => {\n if (evt.button === 1 || keypan === true) {\n panning = true\n lastX = evt.clientX\n lastY = evt.clientY\n return false\n }\n return true\n })\n\n window.addEventListener('mouseup', () => {\n panning = false\n })\n\n document.addEventListener('keydown', (e) => {\n if (e.target.nodeName !== 'BODY') return\n if (e.code.toLowerCase() === 'space') {\n this.svgCanvas.spaceKey = keypan = true\n e.preventDefault()\n } else if ((e.key.toLowerCase() === 'shift') && (this.svgCanvas.getMode() === 'zoom')) {\n this.workarea.style.cursor = zoomOutIcon\n e.preventDefault()\n }\n })\n\n document.addEventListener('keyup', (e) => {\n if (e.target.nodeName !== 'BODY') return\n if (e.code.toLowerCase() === 'space') {\n this.svgCanvas.spaceKey = keypan = false\n e.preventDefault()\n } else if ((e.key.toLowerCase() === 'shift') && (this.svgCanvas.getMode() === 'zoom')) {\n this.workarea.style.cursor = zoomInIcon\n e.preventDefault()\n }\n })\n\n /**\n * @function module:SVGthis.setPanning\n * @param {boolean} active\n * @returns {void}\n */\n this.setPanning = (active) => {\n this.svgCanvas.spaceKey = keypan = active\n }\n let inp\n /**\n *\n * @returns {void}\n */\n const unfocus = () => {\n inp.blur()\n }\n\n const liElems = this.$svgEditor.querySelectorAll('button, select, input:not(#text)')\n const self = this\n Array.prototype.forEach.call(liElems, function (el) {\n el.addEventListener('focus', (e) => {\n inp = e.currentTarget\n self.uiContext = 'toolbars'\n self.workarea.addEventListener('mousedown', unfocus)\n })\n el.addEventListener('blur', () => {\n self.uiContext = 'canvas'\n self.workarea.removeEventListener('mousedown', unfocus)\n // Go back to selecting text if in textedit mode\n if (self.svgCanvas.getMode() === 'textedit') {\n $id('text').focus()\n }\n })\n })\n // ref: https://stackoverflow.com/a/1038781\n function getWidth () {\n return Math.max(\n document.body.scrollWidth,\n document.documentElement.scrollWidth,\n document.body.offsetWidth,\n document.documentElement.offsetWidth,\n document.documentElement.clientWidth\n )\n }\n\n function getHeight () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.documentElement.clientHeight\n )\n }\n const winWh = {\n width: getWidth(),\n height: getHeight()\n }\n\n window.addEventListener('resize', () => {\n Object.entries(winWh).forEach(([type, val]) => {\n const curval = (type === 'width') ? window.innerWidth - 15 : window.innerHeight\n this.workarea['scroll' + (type === 'width' ? 'Left' : 'Top')] -= (curval - val) / 2\n winWh[type] = curval\n })\n })\n\n this.workarea.addEventListener('scroll', () => {\n this.rulers.manageScroll()\n })\n\n $id('stroke_width').value = this.configObj.curConfig.initStroke.width\n $id('opacity').value = this.configObj.curConfig.initOpacity * 100\n const elements = document.getElementsByClassName('push_button')\n Array.from(elements).forEach(function (element) {\n element.addEventListener('mousedown', function (event) {\n if (!event.currentTarget.classList.contains('disabled')) {\n event.currentTarget.classList.add('push_button_pressed')\n event.currentTarget.classList.remove('push_button')\n }\n })\n element.addEventListener('mouseout', function (event) {\n event.currentTarget.classList.add('push_button')\n event.currentTarget.classList.remove('push_button_pressed')\n })\n element.addEventListener('mouseup', function (event) {\n event.currentTarget.classList.add('push_button')\n event.currentTarget.classList.remove('push_button_pressed')\n })\n })\n\n this.layersPanel.populateLayers()\n\n const centerCanvas = () => {\n // this centers the canvas vertically in the this.workarea (horizontal handled in CSS)\n this.workarea.style.lineHeight = this.workarea.style.height\n }\n\n addListenerMulti(window, 'load resize', centerCanvas)\n\n // Prevent browser from erroneously repopulating fields\n const inputEles = document.querySelectorAll('input')\n Array.from(inputEles).forEach(function (inputEle) {\n inputEle.setAttribute('autocomplete', 'off')\n })\n const selectEles = document.querySelectorAll('select')\n Array.from(selectEles).forEach(function (inputEle) {\n inputEle.setAttribute('autocomplete', 'off')\n })\n\n $id('se-svg-editor-dialog').addEventListener('change', function (e) {\n if (e?.detail?.copy === 'click') {\n this.cancelOverlays(e)\n } else if (e?.detail?.dialog === 'dynamic') {\n this.toggleDynamicOutput(e)\n } else if (e?.detail?.dialog === 'closed') {\n this.hideSourceEditor()\n } else {\n this.saveSourceEditor(e)\n }\n }.bind(this))\n $id('se-cmenu_canvas').addEventListener('change', function (e) {\n const action = e?.detail?.trigger\n switch (action) {\n case 'delete':\n this.svgCanvas.deleteSelectedElements()\n break\n case 'cut':\n this.cutSelected()\n break\n case 'copy':\n this.copySelected()\n break\n case 'paste':\n this.svgCanvas.pasteElements()\n break\n case 'paste_in_place':\n this.svgCanvas.pasteElements('in_place')\n break\n case 'group':\n case 'group_elements':\n this.svgCanvas.groupSelectedElements()\n break\n case 'ungroup':\n this.svgCanvas.ungroupSelectedElement()\n break\n case 'move_front':\n this.svgCanvas.moveToTopSelectedElement()\n break\n case 'move_up':\n this.moveUpDownSelected('Up')\n break\n case 'move_down':\n this.moveUpDownSelected('Down')\n break\n case 'move_back':\n this.svgCanvas.moveToBottomSelectedElement()\n break\n default:\n if (hasCustomHandler(action)) {\n getCustomHandler(action).call()\n }\n break\n }\n }.bind(this))\n\n // Select given tool\n this.ready(function () {\n const preTool = $id(`tool_${this.configObj.curConfig.initTool}`)\n const regTool = $id(this.configObj.curConfig.initTool)\n const selectTool = $id('tool_select')\n const $editDialog = $id('se-edit-prefs')\n\n if (preTool) {\n preTool.click()\n } else if (regTool) {\n regTool.click()\n } else {\n selectTool.click()\n }\n\n if (this.configObj.curConfig.wireframe) {\n $id('tool_wireframe').click()\n }\n\n if (this.configObj.curConfig.showRulers) {\n this.rulers.display(true)\n } else {\n this.rulers.display(false)\n }\n\n if (this.configObj.curConfig.showRulers) {\n $editDialog.setAttribute('showrulers', true)\n }\n\n if (this.configObj.curConfig.baseUnit) {\n $editDialog.setAttribute('baseunit', this.configObj.curConfig.baseUnit)\n }\n\n if (this.configObj.curConfig.gridSnapping) {\n $editDialog.setAttribute('gridsnappingon', true)\n }\n\n if (this.configObj.curConfig.snappingStep) {\n $editDialog.setAttribute('gridsnappingstep', this.configObj.curConfig.snappingStep)\n }\n\n if (this.configObj.curConfig.gridColor) {\n $editDialog.setAttribute('gridcolor', this.configObj.curConfig.gridColor)\n }\n\n if (this.configObj.curConfig.dynamicOutput) {\n $editDialog.setAttribute('dynamicoutput', true)\n }\n }.bind(this))\n\n // zoom\n $id('zoom').value = (this.svgCanvas.getZoom() * 100).toFixed(1)\n this.canvMenu.setAttribute('disableallmenu', true)\n this.canvMenu.setAttribute('enablemenuitems', '#delete,#cut,#copy')\n\n this.enableOrDisableClipboard()\n\n window.addEventListener('storage', function (e) {\n if (e.key !== 'svgedit_clipboard') { return }\n\n this.enableOrDisableClipboard()\n }.bind(this))\n\n window.addEventListener('beforeunload', function (e) {\n // Suppress warning if page is empty\n if (undoMgr.getUndoStackSize() === 0) {\n this.showSaveWarning = false\n }\n\n // showSaveWarning is set to 'false' when the page is saved.\n if (!this.configObj.curConfig.no_save_warning && this.showSaveWarning) {\n // Browser already asks question about closing the page\n e.returnValue = this.i18next.t('notification.unsavedChanges') // Firefox needs this when beforeunload set by addEventListener (even though message is not used)\n return this.i18next.t('notification.unsavedChanges')\n }\n return true\n }.bind(this))\n\n // Use HTML5 File API: http://www.w3.org/TR/FileAPI/\n // if browser has HTML5 File API support, then we will show the open menu item\n // and provide a file input to click. When that change event fires, it will\n // get the text contents of the file and send it to the canvas\n\n this.workarea.addEventListener('dragenter', this.onDragEnter)\n this.workarea.addEventListener('dragover', this.onDragOver)\n this.workarea.addEventListener('dragleave', this.onDragLeave)\n\n this.updateCanvas(true)\n // Load extensions\n this.extAndLocaleFunc()\n // Defer injection to wait out initial menu processing. This probably goes\n // away once all context menu behavior is brought to context menu.\n this.ready(() => {\n injectExtendedContextMenuItemsIntoDom()\n })\n // run callbacks stored by this.ready\n await this.runCallbacks()\n }\n\n /**\n * @fires module:svgcanvas.SvgCanvas#event:ext_addLangData\n * @fires module:svgcanvas.SvgCanvas#event:ext_langReady\n * @fires module:svgcanvas.SvgCanvas#event:ext_langChanged\n * @fires module:svgcanvas.SvgCanvas#event:extensions_added\n * @returns {Promise<module:locale.LangAndData>} Resolves to result of {@link module:locale.readLang}\n */\n async extAndLocaleFunc () {\n this.$svgEditor.style.visibility = 'visible'\n try {\n // load standard extensions\n await Promise.all(\n this.configObj.curConfig.extensions.map(async (extname) => {\n /**\n * @tutorial ExtensionDocs\n * @typedef {PlainObject} module:SVGthis.ExtensionObject\n * @property {string} [name] Name of the extension. Used internally; no need for i18n. Defaults to extension name without beginning \"ext-\" or ending \".js\".\n * @property {module:svgcanvas.ExtensionInitCallback} [init]\n */\n try {\n /**\n * @type {module:SVGthis.ExtensionObject}\n */\n const extPath = this.configObj.curConfig.extPath\n const imported = await import(`${extPath}/${encodeURIComponent(extname)}/${encodeURIComponent(extname)}.js`)\n const { name = extname, init: initfn } = imported.default\n return this.addExtension(name, (initfn && initfn.bind(this)), { langParam: 'en' }) /** @todo change to current lng */\n } catch (err) {\n // Todo: Add config to alert any errors\n console.error('Extension failed to load: ' + extname + '; ', err)\n return undefined\n }\n })\n )\n // load user extensions (given as pathNames)\n await Promise.all(\n this.configObj.curConfig.userExtensions.map(async ({ pathName, config }) => {\n /**\n * @tutorial ExtensionDocs\n * @typedef {PlainObject} module:SVGthis.ExtensionObject\n * @property {string} [name] Name of the extension. Used internally; no need for i18n. Defaults to extension name without beginning \"ext-\" or ending \".js\".\n * @property {module:svgcanvas.ExtensionInitCallback} [init]\n */\n try {\n /**\n * @type {module:SVGthis.ExtensionObject}\n */\n const imported = await import(encodeURI(pathName))\n const { name, init: initfn } = imported.default\n return this.addExtension(name, (initfn && initfn.bind(this, config)), {})\n } catch (err) {\n // Todo: Add config to alert any errors\n console.error('Extension failed to load: ' + pathName + '; ', err)\n return undefined\n }\n })\n )\n this.svgCanvas.bind(\n 'extensions_added',\n /**\n * @param {external:Window} _win\n * @param {module:svgcanvas.SvgCanvas#event:extensions_added} _data\n * @listens module:SvgCanvas#event:extensions_added\n * @returns {void}\n */\n (_win, _data) => {\n this.extensionsAdded = true\n this.setAll()\n\n if (this.storagePromptState === 'ignore') {\n this.updateCanvas(true)\n }\n\n this.messageQueue.forEach(\n /**\n * @param {module:svgcanvas.SvgCanvas#event:message} messageObj\n * @fires module:svgcanvas.SvgCanvas#event:message\n * @returns {void}\n */\n (messageObj) => {\n this.svgCanvas.call('message', messageObj)\n }\n )\n }\n )\n this.svgCanvas.call('extensions_added')\n } catch (err) {\n // Todo: Report errors through the UI\n console.error(err)\n }\n }\n}\n\nexport default EditorStartup\n","import SvgCanvas from '@svgedit/svgcanvas'\nimport leftPanelHTML from './LeftPanel.html'\n\nconst { $id, $qa, $click } = SvgCanvas\n\n/*\n * register actions for left panel\n */\n/**\n * @type {module}\n */\nclass LeftPanel {\n /**\n * @param {PlainObject} editor svgedit handler\n */\n constructor (editor) {\n this.editor = editor\n }\n\n /**\n * This is a common function used when a tool has been clicked (chosen).\n * It does several common things:\n * - Removes the pressed button from whatever tool currently has it.\n * - Adds the the pressed button to the button passed in.\n * @function this.updateLeftPanel\n * @param {string|Element} button The DOM element or string selector representing the toolbar button\n * @returns {boolean} Whether the button was disabled or not\n */\n updateLeftPanel (button) {\n if (button.disabled) return false\n // remove the pressed state on other(s) button(s)\n $qa('#tools_left *[pressed]').forEach((b) => {\n b.pressed = false\n })\n // pressed state for the clicked button\n $id(button).pressed = true\n return true\n }\n\n /**\n * Unless the select toolbar button is disabled, sets the button\n * and sets the select mode and cursor styles.\n * @function module:SVGEditor.clickSelect\n * @returns {void}\n */\n clickSelect () {\n if (this.updateLeftPanel('tool_select')) {\n this.editor.workarea.style.cursor = 'auto'\n this.editor.svgCanvas.setMode('select')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickFHPath () {\n if (this.updateLeftPanel('tool_fhpath')) {\n this.editor.svgCanvas.setMode('fhpath')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickLine () {\n if (this.updateLeftPanel('tool_line')) {\n this.editor.svgCanvas.setMode('line')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickSquare () {\n if (this.updateLeftPanel('tool_square')) {\n this.editor.svgCanvas.setMode('square')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickRect () {\n if (this.updateLeftPanel('tool_rect')) {\n this.editor.svgCanvas.setMode('rect')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickFHRect () {\n if (this.updateLeftPanel('tool_fhrect')) {\n this.editor.svgCanvas.setMode('fhrect')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickCircle () {\n if (this.updateLeftPanel('tool_circle')) {\n this.editor.svgCanvas.setMode('circle')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickEllipse () {\n if (this.updateLeftPanel('tool_ellipse')) {\n this.editor.svgCanvas.setMode('ellipse')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickFHEllipse () {\n if (this.updateLeftPanel('tool_fhellipse')) {\n this.editor.svgCanvas.setMode('fhellipse')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickImage () {\n if (this.updateLeftPanel('tool_image')) {\n this.editor.svgCanvas.setMode('image')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickZoom () {\n if (this.updateLeftPanel('tool_zoom')) {\n this.editor.svgCanvas.setMode('zoom')\n this.editor.workarea.style.cursor = this.editor.zoomInIcon\n }\n }\n\n /**\n *\n * @returns {void}\n */\n dblclickZoom () {\n if (this.updateLeftPanel('tool_zoom')) {\n this.editor.zoomImage()\n this.clickSelect()\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickText () {\n if (this.updateLeftPanel('tool_text')) {\n this.editor.svgCanvas.setMode('text')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickPath () {\n if (this.updateLeftPanel('tool_path')) {\n this.editor.svgCanvas.setMode('path')\n }\n }\n\n /**\n * @type {module}\n */\n add (id, handler) {\n $click($id(id), () => {\n if (this.updateLeftPanel(id)) {\n handler()\n }\n })\n }\n\n /**\n * @type {module}\n */\n init () {\n // add Left panel\n const template = document.createElement('template')\n template.innerHTML = leftPanelHTML\n this.editor.$svgEditor.append(template.content.cloneNode(true))\n // register actions for left panel\n $click($id('tool_select'), this.clickSelect.bind(this))\n $click($id('tool_fhpath'), this.clickFHPath.bind(this))\n $click($id('tool_text'), this.clickText.bind(this))\n $click($id('tool_image'), this.clickImage.bind(this))\n $click($id('tool_zoom'), this.clickZoom.bind(this))\n $id('tool_zoom').addEventListener('dblclick', this.dblclickZoom.bind(this))\n $click($id('tool_path'), this.clickPath.bind(this))\n $click($id('tool_line'), this.clickLine.bind(this))\n\n // flyout\n $click($id('tool_rect'), this.clickRect.bind(this))\n $click($id('tool_square'), this.clickSquare.bind(this))\n $click($id('tool_fhrect'), this.clickFHRect.bind(this))\n $click($id('tool_ellipse'), this.clickEllipse.bind(this))\n $click($id('tool_circle'), this.clickCircle.bind(this))\n $click($id('tool_fhellipse'), this.clickFHEllipse.bind(this))\n }\n}\n\nexport default LeftPanel\n","/* eslint-disable max-len */\n/* globals seAlert */\n\nimport SvgCanvas from '@svgedit/svgcanvas'\nimport topPanelHTML from './TopPanel.html'\n\nconst { $qa, $id, $click, isValidUnit, getTypeMap, convertUnit } = SvgCanvas\n\n/*\n * register actions for left panel\n */\n/**\n *\n */\nclass TopPanel {\n /**\n * @param {PlainObject} editor svgedit handler\n */\n constructor (editor) {\n this.editor = editor\n }\n\n /**\n * @type {module}\n */\n displayTool (className) {\n // default display is 'none' so removing the property will make the panel visible\n $qa(`.${className}`).map(el => el.style.removeProperty('display'))\n }\n\n /**\n * @type {module}\n */\n hideTool (className) {\n $qa(`.${className}`).forEach(el => {\n el.style.display = 'none'\n })\n }\n\n /**\n * @type {module}\n */\n get selectedElement () {\n return this.editor.selectedElement\n }\n\n /**\n * @type {module}\n */\n get multiselected () {\n return this.editor.multiselected\n }\n\n /**\n * @type {module}\n */\n get path () {\n return this.editor.svgCanvas.pathActions\n }\n\n /**\n *\n * @param {Element} opt\n * @param {boolean} changeElem\n * @returns {void}\n */\n setStrokeOpt (opt, changeElem) {\n const { id } = opt\n const bits = id.split('_')\n const [pre, val] = bits\n\n if (changeElem) {\n this.svgCanvas.setStrokeAttr('stroke-' + pre, val)\n }\n opt.classList.add('current')\n const elements = Array.prototype.filter.call(\n opt.parentNode.children,\n function (child) {\n return child !== opt\n }\n )\n Array.from(elements).forEach(function (element) {\n element.classList.remove('current')\n })\n }\n\n /**\n * Updates the toolbar (colors, opacity, etc) based on the selected element.\n * This function also updates the opacity and id elements that are in the\n * context panel.\n * @returns {void}\n */\n update () {\n let i\n let len\n // set title\n $qa('#title_panel > p')[0].textContent = this.editor.title\n if (this.selectedElement) {\n switch (this.selectedElement.tagName) {\n case 'use':\n case 'image':\n case 'foreignObject':\n break\n case 'g':\n case 'a': {\n // Look for common styles\n const childs = this.selectedElement.getElementsByTagName('*')\n let gWidth = null\n for (i = 0, len = childs.length; i < len; i++) {\n const swidth = childs[i].getAttribute('stroke-width')\n\n if (i === 0) {\n gWidth = swidth\n } else if (gWidth !== swidth) {\n gWidth = null\n }\n }\n\n $id('stroke_width').value = gWidth === null ? '' : gWidth\n this.editor.bottomPanel.updateColorpickers(false)\n break\n }\n default: {\n this.editor.bottomPanel.updateColorpickers(false)\n\n $id('stroke_width').value =\n this.selectedElement.getAttribute('stroke-width') || 1\n $id('stroke_style').value =\n this.selectedElement.getAttribute('stroke-dasharray') || 'none'\n $id('stroke_style').setAttribute('value', $id('stroke_style').value)\n\n let attr =\n this.selectedElement.getAttribute('stroke-linejoin') || 'miter'\n\n if ($id('linejoin_' + attr)) {\n this.setStrokeOpt($id('linejoin_' + attr))\n $id('stroke_linejoin').setAttribute('value', attr)\n }\n\n attr = this.selectedElement.getAttribute('stroke-linecap') || 'butt'\n if ($id('linecap_' + attr)) {\n this.setStrokeOpt($id('linecap_' + attr))\n $id('stroke_linecap').setAttribute('value', attr)\n }\n }\n }\n }\n\n // All elements including image and group have opacity\n if (this.selectedElement) {\n const opacPerc =\n (this.selectedElement.getAttribute('opacity') || 1.0) * 100\n $id('opacity').value = opacPerc\n $id('elem_id').value = this.selectedElement.id\n $id('elem_class').value = this.selectedElement.getAttribute('class') ?? ''\n }\n\n this.editor.bottomPanel.updateToolButtonState()\n }\n\n /**\n * @param {PlainObject} [opts={}]\n * @param {boolean} [opts.cancelDeletes=false]\n * @returns {void} Resolves to `undefined`\n */\n promptImgURL ({ cancelDeletes = false } = {}) {\n let curhref = this.editor.svgCanvas.getHref(this.editor.selectedElement)\n curhref = curhref.startsWith('data:') ? '' : curhref\n const url = prompt(\n this.editor.i18next.t('notification.enterNewImgURL'),\n curhref\n )\n if (url) {\n this.setImageURL(url)\n } else if (cancelDeletes) {\n this.editor.svgCanvas.deleteSelectedElements()\n }\n }\n\n /**\n * Updates the context panel tools based on the selected element.\n * @returns {void}\n */\n updateContextPanel () {\n let elem = this.editor.selectedElement\n // If element has just been deleted, consider it null\n if (!elem?.parentNode) {\n elem = null\n }\n const currentLayerName = this.editor.svgCanvas\n .getCurrentDrawing()\n .getCurrentLayerName()\n const currentMode = this.editor.svgCanvas.getMode()\n const unit =\n this.editor.configObj.curConfig.baseUnit !== 'px'\n ? this.editor.configObj.curConfig.baseUnit\n : null\n\n const isNode = currentMode === 'pathedit'\n const menuItems = document.getElementById('se-cmenu_canvas')\n this.hideTool('selected_panel')\n this.hideTool('multiselected_panel')\n this.hideTool('g_panel')\n this.hideTool('rect_panel')\n this.hideTool('circle_panel')\n this.hideTool('ellipse_panel')\n this.hideTool('line_panel')\n this.hideTool('text_panel')\n this.hideTool('image_panel')\n this.hideTool('container_panel')\n this.hideTool('use_panel')\n this.hideTool('a_panel')\n this.hideTool('xy_panel')\n if (elem) {\n const elname = elem.nodeName\n\n const angle = this.editor.svgCanvas.getRotationAngle(elem)\n $id('angle').value = angle\n\n const blurval = this.editor.svgCanvas.getBlur(elem) * 10\n $id('blur').value = blurval\n\n if (\n this.editor.svgCanvas.addedNew &&\n elname === 'image' &&\n this.editor.svgCanvas.getMode() === 'image' &&\n !this.editor.svgCanvas.getHref(elem).startsWith('data:')\n ) {\n /* await */ this.promptImgURL({ cancelDeletes: true })\n }\n\n if (!isNode && currentMode !== 'pathedit') {\n this.displayTool('selected_panel')\n // Elements in this array already have coord fields\n if (['line', 'circle', 'ellipse'].includes(elname)) {\n this.hideTool('xy_panel')\n } else {\n let x\n let y\n\n // Get BBox vals for g, polyline and path\n if (['g', 'polyline', 'path'].includes(elname)) {\n const bb = this.editor.svgCanvas.getStrokedBBox([elem])\n if (bb) {\n ;({ x, y } = bb)\n }\n } else {\n x = elem.getAttribute('x')\n y = elem.getAttribute('y')\n }\n\n if (unit) {\n x = convertUnit(x)\n y = convertUnit(y)\n }\n\n $id('selected_x').value = x || 0\n $id('selected_y').value = y || 0\n this.displayTool('xy_panel')\n }\n\n // Elements in this array cannot be converted to a path\n if (['image', 'text', 'path', 'g', 'use'].includes(elname)) {\n this.hideTool('tool_topath')\n } else {\n this.displayTool('tool_topath')\n }\n if (elname === 'path') {\n this.displayTool('tool_reorient')\n } else {\n this.hideTool('tool_reorient')\n }\n $id('tool_reorient').disabled = angle === 0\n } else {\n const point = this.path.getNodePoint()\n $id('tool_add_subpath').pressed = false\n !this.path.canDeleteNodes\n ? $id('tool_node_delete').classList.add('disabled')\n : $id('tool_node_delete').classList.remove('disabled')\n\n // Show open/close button based on selected point\n // setIcon('#tool_openclose_path', path.closed_subpath ? 'open_path' : 'close_path');\n\n if (point) {\n const segType = $id('seg_type')\n if (unit) {\n point.x = convertUnit(point.x)\n point.y = convertUnit(point.y)\n }\n $id('path_node_x').value = point.x\n $id('path_node_y').value = point.y\n if (point.type) {\n segType.value = point.type\n segType.removeAttribute('disabled')\n } else {\n segType.value = 4\n segType.setAttribute('disabled', 'disabled')\n }\n }\n return\n }\n\n // update contextual tools here\n const panels = {\n g: [],\n a: [],\n rect: ['rx', 'width', 'height'],\n image: ['width', 'height'],\n circle: ['cx', 'cy', 'r'],\n ellipse: ['cx', 'cy', 'rx', 'ry'],\n line: ['x1', 'y1', 'x2', 'y2'],\n text: [],\n use: []\n }\n\n const { tagName } = elem\n\n let linkHref = null\n if (tagName === 'a') {\n linkHref = this.editor.svgCanvas.getHref(elem)\n this.displayTool('g_panel')\n }\n // siblings\n if (elem.parentNode) {\n const selements = Array.prototype.filter.call(\n elem.parentNode.children,\n function (child) {\n return child !== elem\n }\n )\n if (elem.parentNode.tagName === 'a' && !selements.length) {\n this.displayTool('a_panel')\n linkHref = this.editor.svgCanvas.getHref(elem.parentNode)\n }\n }\n\n // Hide/show the make_link buttons\n if (linkHref) {\n this.displayTool('tool_make_link')\n this.displayTool('tool_make_link_multi')\n $id('link_url').value = linkHref\n } else {\n this.hideTool('tool_make_link')\n this.hideTool('tool_make_link_multi')\n }\n\n if (panels[tagName]) {\n const curPanel = panels[tagName]\n this.displayTool(tagName + '_panel')\n\n curPanel.forEach(item => {\n let attrVal = elem.getAttribute(item)\n if (this.editor.configObj.curConfig.baseUnit !== 'px' && elem[item]) {\n const bv = elem[item].baseVal.value\n attrVal = convertUnit(bv)\n }\n $id(`${tagName}_${item}`).value = attrVal || 0\n })\n\n if (tagName === 'text') {\n this.displayTool('text_panel')\n $id('tool_italic').pressed = this.editor.svgCanvas.getItalic()\n $id('tool_bold').pressed = this.editor.svgCanvas.getBold()\n $id(\n 'tool_text_decoration_underline'\n ).pressed = this.editor.svgCanvas.hasTextDecoration('underline')\n $id(\n 'tool_text_decoration_linethrough'\n ).pressed = this.editor.svgCanvas.hasTextDecoration('line-through')\n $id(\n 'tool_text_decoration_overline'\n ).pressed = this.editor.svgCanvas.hasTextDecoration('overline')\n $id('tool_font_family').setAttribute(\n 'value',\n elem.getAttribute('font-family')\n )\n $id('tool_text_anchor').setAttribute(\n 'value',\n elem.getAttribute('text-anchor')\n )\n $id('font_size').value = elem.getAttribute('font-size')\n $id('tool_letter_spacing').value =\n elem.getAttribute('letter-spacing') ?? 0\n $id('tool_word_spacing').value =\n elem.getAttribute('word-spacing') ?? 0\n $id('tool_text_length').value = elem.getAttribute('textLength') ?? 0\n $id('tool_length_adjust').value =\n elem.getAttribute('lengthAdjust') ?? 0\n $id('text').value = elem.textContent\n if (this.editor.svgCanvas.addedNew) {\n // Timeout needed for IE9\n setTimeout(() => {\n $id('text').focus()\n $id('text').select()\n }, 100)\n }\n // text\n } else if (\n tagName === 'image' &&\n this.editor.svgCanvas.getMode() === 'image'\n ) {\n this.editor.svgCanvas.setImageURL(this.editor.svgCanvas.getHref(elem))\n // image\n } else if (tagName === 'g' || tagName === 'use') {\n this.displayTool('container_panel')\n const title = this.editor.svgCanvas.getTitle()\n const label = $id('g_title')\n label.value = title\n $id('g_title').disabled = tagName === 'use'\n }\n }\n menuItems.setAttribute(\n (tagName === 'g' ? 'en' : 'dis') + 'ablemenuitems',\n '#ungroup'\n )\n menuItems.setAttribute(\n (tagName === 'g' || !this.multiselected ? 'dis' : 'en') +\n 'ablemenuitems',\n '#group'\n )\n\n // if (elem)\n } else if (this.multiselected) {\n // Check if all selected elements are 'text' nodes, if yes enable text panel\n const selElems = this.editor.svgCanvas.getSelectedElements()\n if (selElems.every((elem) => elem.tagName === 'text')) {\n this.displayTool('text_panel')\n }\n\n this.displayTool('multiselected_panel')\n menuItems.setAttribute('enablemenuitems', '#group')\n menuItems.setAttribute('disablemenuitems', '#ungroup')\n } else {\n menuItems.setAttribute(\n 'disablemenuitems',\n '#delete,#cut,#copy,#group,#ungroup,#move_front,#move_up,#move_down,#move_back'\n )\n }\n\n // update history buttons\n $id('tool_undo').disabled =\n this.editor.svgCanvas.undoMgr.getUndoStackSize() === 0\n $id('tool_redo').disabled =\n this.editor.svgCanvas.undoMgr.getRedoStackSize() === 0\n\n this.editor.svgCanvas.addedNew = false\n\n if ((elem && !isNode) || this.multiselected) {\n // update the selected elements' layer\n $id('selLayerNames').removeAttribute('disabled')\n $id('selLayerNames').value = currentLayerName\n $id('selLayerNames').setAttribute('value', currentLayerName)\n\n // Enable regular menu options\n const canCMenu = document.getElementById('se-cmenu_canvas')\n canCMenu.setAttribute(\n 'enablemenuitems',\n '#delete,#cut,#copy,#move_front,#move_up,#move_down,#move_back'\n )\n } else {\n $id('selLayerNames').setAttribute('disabled', 'disabled')\n }\n }\n\n /**\n * @param {Event} [e] Not used.\n * @param {boolean} forSaving\n * @returns {void}\n */\n showSourceEditor (e, forSaving) {\n const $editorDialog = document.getElementById('se-svg-editor-dialog')\n if ($editorDialog.getAttribute('dialog') === 'open') return\n const origSource = this.editor.svgCanvas.getSvgString()\n $editorDialog.setAttribute('dialog', 'open')\n $editorDialog.setAttribute('value', origSource)\n $editorDialog.setAttribute('copysec', Boolean(forSaving))\n $editorDialog.setAttribute('applysec', !forSaving)\n }\n\n /**\n *\n * @returns {void}\n */\n clickWireframe () {\n $id('tool_wireframe').pressed = !$id('tool_wireframe').pressed\n this.editor.workarea.classList.toggle('wireframe')\n\n const wfRules = $id('wireframe_rules')\n if (!wfRules) {\n const fcRules = document.createElement('style')\n fcRules.setAttribute('id', 'wireframe_rules')\n document.getElementsByTagName('head')[0].appendChild(fcRules)\n } else {\n while (wfRules.firstChild) {\n wfRules.removeChild(wfRules.firstChild)\n }\n }\n this.editor.updateWireFrame()\n }\n\n /**\n *\n * @returns {void}\n */\n clickUndo () {\n const { undoMgr, textActions } = this.editor.svgCanvas\n if (undoMgr.getUndoStackSize() > 0) {\n undoMgr.undo()\n this.editor.layersPanel.populateLayers()\n if (this.editor.svgCanvas.getMode() === 'textedit') {\n textActions.clear()\n }\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickRedo () {\n const { undoMgr } = this.editor.svgCanvas\n if (undoMgr.getRedoStackSize() > 0) {\n undoMgr.redo()\n this.editor.layersPanel.populateLayers()\n }\n }\n\n /**\n * @type {module}\n */\n changeRectRadius (e) {\n this.editor.svgCanvas.setRectRadius(e.target.value)\n }\n\n /**\n * @type {module}\n */\n changeFontSize (e) {\n this.editor.svgCanvas.setFontSize(e.target.value)\n }\n\n /**\n * @type {module}\n */\n changeRotationAngle (e) {\n this.editor.svgCanvas.setRotationAngle(e.target.value)\n if (Number.parseInt(e.target.value) === 0) {\n $id('tool_reorient').classList.add('disabled')\n } else {\n $id('tool_reorient').classList.remove('disabled')\n }\n }\n\n /**\n * @param {PlainObject} e\n * @returns {void}\n */\n changeBlur (e) {\n this.editor.svgCanvas.setBlur(e.target.value / 10, true)\n }\n\n /**\n *\n * @returns {void}\n */\n clickGroup () {\n // group\n if (this.editor.multiselected) {\n this.editor.svgCanvas.groupSelectedElements()\n // ungroup\n } else if (this.editor.selectedElement) {\n this.editor.svgCanvas.ungroupSelectedElement()\n }\n }\n\n /**\n *\n * @returns {void}\n */\n clickClone () {\n this.editor.svgCanvas.cloneSelectedElements(20, 20)\n }\n\n /**\n * @param {PlainObject} evt\n * @returns {void}\n */\n clickAlignEle (evt) {\n this.editor.svgCanvas.alignSelectedElements(evt.detail.value, 'page')\n }\n\n /**\n * @param {string} pos indicate the alignment relative to top, bottom, middle etc..\n * @returns {void}\n */\n clickAlign (pos) {\n let value = $id('tool_align_relative').value\n if (value === '') {\n value = 'selected'\n }\n this.editor.svgCanvas.alignSelectedElements(pos, value)\n }\n\n /**\n *\n * @type {module}\n */\n attrChanger (e) {\n const attr = e.target.getAttribute('data-attr')\n let val = e.target.value\n const valid = isValidUnit(attr, val, this.selectedElement)\n\n if (!valid) {\n e.target.value = this.selectedElement.getAttribute(attr)\n alert(this.editor.i18next.t('notification.invalidAttrValGiven'))\n return false\n }\n\n if (attr !== 'id' && attr !== 'class') {\n if (isNaN(val)) {\n val = this.editor.svgCanvas.convertToNum(attr, val)\n } else if (this.editor.configObj.curConfig.baseUnit !== 'px') {\n // Convert unitless value to one with given unit\n\n const unitData = getTypeMap()\n\n if (\n this.editor.selectedElement[attr] ||\n this.editor.svgCanvas.getMode() === 'pathedit' ||\n attr === 'x' ||\n attr === 'y'\n ) {\n val *= unitData[this.editor.configObj.curConfig.baseUnit]\n }\n }\n }\n\n this.editor.svgCanvas.changeSelectedAttribute(attr, val)\n return true\n }\n\n /**\n *\n * @returns {void}\n */\n convertToPath () {\n if (this.editor.selectedElement) {\n this.editor.svgCanvas.convertToPath()\n }\n }\n\n /**\n *\n * @returns {void}\n */\n reorientPath () {\n if (this.editor.selectedElement) {\n this.path.reorient()\n }\n }\n\n /**\n *\n * @returns {void} Resolves to `undefined`\n */\n makeHyperlink () {\n if (this.editor.selectedElement || this.multiselected) {\n const url = prompt(\n this.editor.i18next.t('notification.enterNewLinkURL'),\n 'http://'\n )\n if (url) {\n this.editor.svgCanvas.makeHyperlink(url)\n }\n }\n }\n\n /**\n *\n * @returns {void}\n */\n linkControlPoints () {\n $id('tool_node_link').pressed = !$id('tool_node_link').pressed\n const linked = !!$id('tool_node_link').pressed\n this.path.linkControlPoints(linked)\n }\n\n /**\n *\n * @returns {void}\n */\n clonePathNode () {\n if (this.path.getNodePoint()) {\n this.path.clonePathNode()\n }\n }\n\n /**\n *\n * @returns {void}\n */\n deletePathNode () {\n if (this.path.getNodePoint()) {\n this.path.deletePathNode()\n }\n }\n\n /**\n *\n * @returns {void}\n */\n addSubPath () {\n const button = $id('tool_add_subpath')\n const sp = !button.classList.contains('pressed')\n button.pressed = sp\n // button.toggleClass('push_button_pressed tool_button');\n this.path.addSubPath(sp)\n }\n\n /**\n *\n * @returns {void}\n */\n opencloseSubPath () {\n this.path.opencloseSubPath()\n }\n\n /**\n * Delete is a contextual tool that only appears in the ribbon if\n * an element has been selected.\n * @returns {void}\n */\n deleteSelected () {\n if (this.editor.selectedElement || this.editor.multiselected) {\n this.editor.svgCanvas.deleteSelectedElements()\n }\n }\n\n /**\n *\n * @returns {void}\n */\n moveToTopSelected () {\n if (this.editor.selectedElement) {\n this.editor.svgCanvas.moveToTopSelectedElement()\n }\n }\n\n /**\n *\n * @returns {void}\n */\n moveToBottomSelected () {\n if (this.editor.selectedElement) {\n this.editor.svgCanvas.moveToBottomSelectedElement()\n }\n }\n\n /**\n *\n * @returns {false}\n */\n clickBold () {\n this.editor.svgCanvas.setBold(!this.editor.svgCanvas.getBold())\n this.updateContextPanel()\n return false\n }\n\n /**\n *\n * @returns {false}\n */\n clickItalic () {\n this.editor.svgCanvas.setItalic(!this.editor.svgCanvas.getItalic())\n this.updateContextPanel()\n return false\n }\n\n /**\n * Handles the click on the text decoration buttons\n *\n * @param value The text decoration value\n * @returns {boolean} false\n */\n clickTextDecoration (value) {\n if (this.editor.svgCanvas.hasTextDecoration(value)) {\n this.editor.svgCanvas.removeTextDecoration(value)\n } else {\n this.editor.svgCanvas.addTextDecoration(value)\n }\n this.updateContextPanel()\n return false\n }\n\n /**\n * Sets the text anchor value\n *\n * @returns {false}\n */\n clickTextAnchor (evt) {\n this.editor.svgCanvas.setTextAnchor(evt.detail.value)\n return false\n }\n\n /**\n * @type {module}\n */\n changeLetterSpacing (e) {\n this.editor.svgCanvas.setLetterSpacing(e.target.value)\n }\n\n /**\n * @type {module}\n */\n changeWordSpacing (e) {\n this.editor.svgCanvas.setWordSpacing(e.target.value)\n }\n\n /**\n * @type {module}\n */\n changeTextLength (e) {\n this.editor.svgCanvas.setTextLength(e.target.value)\n }\n\n /**\n * @type {module}\n */\n changeLengthAdjust (evt) {\n this.editor.svgCanvas.setLengthAdjust(evt.detail.value)\n }\n\n /**\n * Set a selected image's URL.\n * @function module:SVGthis.setImageURL\n * @param {string} url\n * @returns {void}\n */\n setImageURL (url) {\n const { editor } = this\n if (!url) {\n url = editor.defaultImageURL\n }\n editor.svgCanvas.setImageURL(url)\n $id('image_url').value = url\n\n if (url.startsWith('data:')) {\n // data URI found\n this.hideTool('image_url')\n } else {\n // regular URL\n const promised = editor.svgCanvas.embedImage(url)\n // eslint-disable-next-line promise/catch-or-return\n promised\n // eslint-disable-next-line promise/always-return\n .then(\n () => {\n // switch into \"select\" mode if we've clicked on an element\n editor.svgCanvas.setMode('select')\n editor.svgCanvas.selectOnly(\n editor.svgCanvas.getSelectedElements(),\n true\n )\n },\n error => {\n console.error('error =', error)\n seAlert(editor.i18next.t('tools.no_embed'))\n editor.svgCanvas.deleteSelectedElements()\n }\n )\n this.displayTool('image_url')\n }\n }\n\n /**\n *\n */\n updateTitle (title) {\n if (title) this.editor.title = title\n const titleElement = $qa('#title_panel > p')[0]\n if (titleElement) titleElement.textContent = this.editor.title\n }\n\n /**\n * @param {boolean} editmode\n * @param {module:svgcanvas.SvgCanvas#event:selected} elems\n * @returns {void}\n */\n togglePathEditMode (editMode, elems) {\n if (editMode) {\n this.displayTool('path_node_panel')\n } else {\n this.hideTool('path_node_panel')\n }\n if (editMode) {\n // Change select icon\n $id('tool_path').pressed = false\n $id('tool_select').pressed = true\n $id('tool_select').setAttribute('src', 'select_node.svg')\n this.editor.multiselected = false\n if (elems.length) {\n this.editor.selectedElement = elems[0]\n }\n } else {\n setTimeout(() => {\n $id('tool_select').setAttribute('src', 'select.svg')\n }, 1000)\n }\n }\n\n /**\n * @type {module}\n */\n init () {\n // add Top panel\n const template = document.createElement('template')\n const { i18next } = this.editor\n template.innerHTML = topPanelHTML\n this.editor.$svgEditor.append(template.content.cloneNode(true))\n // svg editor source dialoag added to DOM\n const newSeEditorDialog = document.createElement(\n 'se-svg-source-editor-dialog'\n )\n newSeEditorDialog.setAttribute('id', 'se-svg-editor-dialog')\n this.editor.$container.append(newSeEditorDialog)\n this.updateTitle()\n newSeEditorDialog.init(i18next)\n $id('tool_link_url').setAttribute('title', i18next.t('tools.set_link_url'))\n // register action to top panel buttons\n $click($id('tool_source'), this.showSourceEditor.bind(this))\n $click($id('tool_wireframe'), this.clickWireframe.bind(this))\n $click($id('tool_undo'), this.clickUndo.bind(this))\n $click($id('tool_redo'), this.clickRedo.bind(this))\n $click($id('tool_clone'), this.clickClone.bind(this))\n $click($id('tool_clone_multi'), this.clickClone.bind(this))\n $click($id('tool_delete'), this.deleteSelected.bind(this))\n $click($id('tool_delete_multi'), this.deleteSelected.bind(this))\n $click($id('tool_move_top'), this.moveToTopSelected.bind(this))\n $click($id('tool_move_bottom'), this.moveToBottomSelected.bind(this))\n $click($id('tool_topath'), this.convertToPath.bind(this))\n $click($id('tool_make_link'), this.makeHyperlink.bind(this))\n $click($id('tool_make_link_multi'), this.makeHyperlink.bind(this))\n $click($id('tool_reorient'), this.reorientPath.bind(this))\n $click($id('tool_group_elements'), this.clickGroup.bind(this))\n $id('tool_position').addEventListener('change', (evt) => this.clickAlignEle.bind(this)(evt))\n $click($id('tool_align_left'), () => this.clickAlign.bind(this)('left'))\n $click($id('tool_align_right'), () => this.clickAlign.bind(this)('right'))\n $click($id('tool_align_center'), () => this.clickAlign.bind(this)('center'))\n $click($id('tool_align_top'), () => this.clickAlign.bind(this)('top'))\n $click($id('tool_align_bottom'), () => this.clickAlign.bind(this)('bottom'))\n $click($id('tool_align_middle'), () => this.clickAlign.bind(this)('middle'))\n $click($id('tool_align_distrib_horiz'), () => this.clickAlign.bind(this)('distrib_horiz'))\n $click($id('tool_align_distrib_verti'), () => this.clickAlign.bind(this)('distrib_verti'))\n $click($id('tool_node_clone'), this.clonePathNode.bind(this))\n $click($id('tool_node_delete'), this.deletePathNode.bind(this))\n $click($id('tool_openclose_path'), this.opencloseSubPath.bind(this))\n $click($id('tool_add_subpath'), this.addSubPath.bind(this))\n $click($id('tool_node_link'), this.linkControlPoints.bind(this))\n $id('angle').addEventListener('change', this.changeRotationAngle.bind(this))\n $id('blur').addEventListener('change', this.changeBlur.bind(this))\n $id('rect_rx').addEventListener('change', this.changeRectRadius.bind(this))\n $id('font_size').addEventListener('change', this.changeFontSize.bind(this))\n $click($id('tool_ungroup'), this.clickGroup.bind(this))\n $click($id('tool_bold'), this.clickBold.bind(this))\n $click($id('tool_italic'), this.clickItalic.bind(this))\n $click($id('tool_text_decoration_underline'), () => this.clickTextDecoration.bind(this)('underline'))\n $click($id('tool_text_decoration_linethrough'), () => this.clickTextDecoration.bind(this)('line-through'))\n $click($id('tool_text_decoration_overline'), () => this.clickTextDecoration.bind(this)('overline'))\n $id('tool_text_anchor').addEventListener('change', (evt) => this.clickTextAnchor.bind(this)(evt))\n $id('tool_letter_spacing').addEventListener('change', this.changeLetterSpacing.bind(this))\n $id('tool_word_spacing').addEventListener('change', this.changeWordSpacing.bind(this))\n $id('tool_text_length').addEventListener('change', this.changeTextLength.bind(this))\n $id('tool_length_adjust').addEventListener('change', (evt) => this.changeLengthAdjust.bind(this)(evt))\n $click($id('tool_unlink_use'), this.clickGroup.bind(this))\n $id('image_url').addEventListener('change', (evt) => { this.setImageURL(evt.currentTarget.value) });\n\n // all top panel attributes\n [\n 'elem_id',\n 'elem_class',\n 'circle_cx',\n 'circle_cy',\n 'circle_r',\n 'ellipse_cx',\n 'ellipse_cy',\n 'ellipse_rx',\n 'ellipse_ry',\n 'selected_x',\n 'selected_y',\n 'rect_width',\n 'rect_height',\n 'line_x1',\n 'line_x2',\n 'line_y1',\n 'line_y2',\n 'image_width',\n 'image_height',\n 'path_node_x',\n 'path_node_y'\n ].forEach(attrId =>\n $id(attrId).addEventListener('change', this.attrChanger.bind(this))\n )\n }\n}\n\nexport default TopPanel\n","import SvgCanvas from '@svgedit/svgcanvas'\nimport { jGraduate } from '../components/jgraduate/jQuery.jGraduate.js'\nimport BottomPanelHtml from './BottomPanel.html'\n\nconst { $id } = SvgCanvas\n\n/*\n * register actions for left panel\n */\n/**\n * @type {module}\n*/\nclass BottomPanel {\n /**\n * @param {PlainObject} editor svgedit handler\n */\n constructor (editor) {\n this.editor = editor\n }\n\n /**\n * @type {module}\n */\n get selectedElement () {\n return this.editor.selectedElement\n }\n\n /**\n * @type {module}\n */\n get multiselected () {\n return this.editor.multiselected\n }\n\n /**\n * @type {module}\n */\n changeStrokeWidth (e) {\n let val = e.target.value\n if (val === 0 && this.editor.selectedElement && ['line', 'polyline'].includes(this.editor.selectedElement.nodeName)) {\n val = 1\n }\n this.editor.svgCanvas.setStrokeWidth(val)\n }\n\n /**\n * @type {module}\n */\n changeZoom (value) {\n switch (value) {\n case 'canvas':\n case 'selection':\n case 'layer':\n case 'content':\n this.editor.zoomChanged(window, value)\n break\n default:\n {\n const zoomlevel = Number(value) > 0.1 ? Number(value) * 0.01 : 0.1\n const zoom = this.editor.svgCanvas.getZoom()\n const { workarea } = this.editor\n this.editor.zoomChanged(window, {\n width: 0,\n height: 0,\n // center pt of scroll position\n x: (workarea.scrollLeft + parseFloat(getComputedStyle(workarea, null).width.replace('px', '')) / 2) / zoom,\n y: (workarea.scrollTop + parseFloat(getComputedStyle(workarea, null).height.replace('px', '')) / 2) / zoom,\n zoom: zoomlevel\n }, true)\n }\n }\n }\n\n /**\n * @fires module:svgcanvas.SvgCanvas#event:ext_toolButtonStateUpdate\n * @returns {void}\n */\n updateToolButtonState () {\n const bNoFill = (this.editor.svgCanvas.getColor('fill') === 'none')\n const bNoStroke = (this.editor.svgCanvas.getColor('stroke') === 'none')\n const buttonsNeedingStroke = ['tool_fhpath', 'tool_line']\n const buttonsNeedingFillAndStroke = [\n 'tools_rect', 'tools_ellipse',\n 'tool_text', 'tool_path'\n ]\n\n if (bNoStroke) {\n buttonsNeedingStroke.forEach((btn) => {\n // if btn is pressed, change to select button\n if ($id(btn).pressed) {\n this.editor.leftPanel.clickSelect()\n }\n $id(btn).disabled = true\n })\n } else {\n buttonsNeedingStroke.forEach((btn) => {\n $id(btn).disabled = false\n })\n }\n if (bNoStroke && bNoFill) {\n buttonsNeedingFillAndStroke.forEach((btn) => {\n // if btn is pressed, change to select button\n if ($id(btn).pressed) {\n this.editor.leftPanel.clickSelect()\n }\n $id(btn).disabled = true\n })\n } else {\n buttonsNeedingFillAndStroke.forEach((btn) => {\n $id(btn).disabled = false\n })\n }\n this.editor.svgCanvas.runExtensions(\n 'toolButtonStateUpdate',\n /** @type {module:svgcanvas.SvgCanvas#event:ext_toolButtonStateUpdate} */ {\n nofill: bNoFill,\n nostroke: bNoStroke\n }\n )\n }\n\n /**\n * @type {module}\n */\n handleColorPicker (type, evt) {\n const { paint } = evt.detail\n this.editor.svgCanvas.setPaint(type, paint)\n this.updateToolButtonState()\n }\n\n /**\n * @type {module}\n */\n handleStrokeAttr (type, evt) {\n this.editor.svgCanvas.setStrokeAttr(type, evt.detail.value)\n }\n\n /**\n * @type {module}\n */\n handleOpacity (evt) {\n const val = Number.parseInt(evt.currentTarget.value.split('%')[0])\n this.editor.svgCanvas.setOpacity(val / 100)\n }\n\n /**\n * @type {module}\n */\n handlePalette (e) {\n e.preventDefault()\n // shift key or right click for stroke\n const { picker, color } = e.detail\n // Webkit-based browsers returned 'initial' here for no stroke\n const paint = color === 'none' ? new jGraduate.Paint() : new jGraduate.Paint({ alpha: 100, solidColor: color.substr(1) })\n if (picker === 'fill') {\n $id('fill_color').setPaint(paint)\n } else {\n $id('stroke_color').setPaint(paint)\n }\n this.editor.svgCanvas.setColor(picker, color)\n if (color !== 'none' && this.editor.svgCanvas.getPaintOpacity(picker) !== 1) {\n this.editor.svgCanvas.setPaintOpacity(picker, 1.0)\n }\n this.updateToolButtonState()\n }\n\n /**\n * @type {module}\n */\n init () {\n // register actions for Bottom panel\n const template = document.createElement('template')\n const { i18next } = this.editor\n\n template.innerHTML = BottomPanelHtml\n this.editor.$svgEditor.append(template.content.cloneNode(true))\n $id('palette').addEventListener('change', this.handlePalette.bind(this))\n $id('palette').init(i18next)\n const { curConfig } = this.editor.configObj\n $id('fill_color').setPaint(new jGraduate.Paint({ alpha: 100, solidColor: curConfig.initFill.color }))\n $id('stroke_color').setPaint(new jGraduate.Paint({ alpha: 100, solidColor: curConfig.initStroke.color }))\n $id('zoom').addEventListener('change', (e) => this.changeZoom.bind(this)(e.detail.value))\n $id('stroke_color').addEventListener('change', (evt) => this.handleColorPicker.bind(this)('stroke', evt))\n $id('fill_color').addEventListener('change', (evt) => this.handleColorPicker.bind(this)('fill', evt))\n $id('stroke_width').addEventListener('change', this.changeStrokeWidth.bind(this))\n $id('stroke_style').addEventListener('change', (evt) => this.handleStrokeAttr.bind(this)('stroke-dasharray', evt))\n $id('stroke_linejoin').addEventListener('change', (evt) => this.handleStrokeAttr.bind(this)('stroke-linejoin', evt))\n $id('stroke_linecap').addEventListener('change', (evt) => this.handleStrokeAttr.bind(this)('stroke-linecap', evt))\n $id('opacity').addEventListener('change', this.handleOpacity.bind(this))\n $id('fill_color').init(i18next)\n $id('stroke_color').init(i18next)\n }\n\n /**\n * @type {module}\n */\n updateColorpickers (apply) {\n $id('fill_color').update(this.editor.svgCanvas, this.editor.selectedElement, apply)\n $id('stroke_color').update(this.editor.svgCanvas, this.editor.selectedElement, apply)\n }\n}\n\nexport default BottomPanel\n","import SvgCanvas from '@svgedit/svgcanvas'\nimport LayersPanelHtml from './LayersPanel.html'\n\nconst { $id, $click } = SvgCanvas\n\n/**\n *\n */\nclass LayersPanel {\n /**\n * @param {PlainObject} editor\n */\n constructor (editor) {\n this.updateContextPanel = editor.topPanel.updateContextPanel.bind(editor.topPanel)\n this.editor = editor\n }\n\n /**\n * @param {PlainObject} e event\n * @returns {void}\n */\n lmenuFunc (e) {\n const action = e?.detail?.trigger\n switch (action) {\n case 'dupe':\n this.cloneLayer()\n break\n case 'delete':\n this.deleteLayer()\n break\n case 'merge_down':\n this.mergeLayer()\n break\n case 'merge_all':\n this.editor.svgCanvas.mergeAllLayers()\n this.updateContextPanel()\n this.populateLayers()\n break\n }\n }\n\n /**\n * @returns {void}\n */\n init () {\n const template = document.createElement('template')\n const { i18next } = this.editor\n\n template.innerHTML = LayersPanelHtml\n this.editor.$svgEditor.append(template.content.cloneNode(true))\n // layer menu added to DOM\n const menuMore = document.createElement('se-cmenu-layers')\n menuMore.setAttribute('id', 'se-cmenu-layers-more')\n menuMore.value = 'layer_moreopts'\n menuMore.setAttribute('leftclick', true)\n this.editor.$container.append(menuMore)\n menuMore.init(i18next)\n const menuLayerBox = document.createElement('se-cmenu-layers')\n menuLayerBox.setAttribute('id', 'se-cmenu-layers-list')\n menuLayerBox.value = 'layerlist'\n menuLayerBox.setAttribute('leftclick', false)\n this.editor.$container.append(menuLayerBox)\n menuLayerBox.init(i18next)\n $click($id('layer_new'), this.newLayer.bind(this))\n $click($id('layer_delete'), this.deleteLayer.bind(this))\n $click($id('layer_up'), () => this.moveLayer.bind(this)(-1))\n $click($id('layer_down'), () => this.moveLayer.bind(this)(1))\n $click($id('layer_rename'), this.layerRename.bind(this))\n $id('se-cmenu-layers-more').addEventListener('change', this.lmenuFunc.bind(this))\n $id('se-cmenu-layers-list').addEventListener('change', (e) => { this.lmenuFunc(e) })\n $click($id('sidepanel_handle'), () => this.toggleSidePanel())\n this.toggleSidePanel(this.editor.configObj.curConfig.showlayers)\n }\n\n toggleSidePanel (displayFlag) {\n if (displayFlag === undefined) {\n this.editor.$svgEditor.classList.toggle('open')\n } else if (displayFlag) {\n this.editor.$svgEditor.classList.add('open')\n } else {\n this.editor.$svgEditor.classList.remove('open')\n }\n }\n\n /**\n * @returns {void}\n */\n newLayer () {\n let uniqName\n let i = this.editor.svgCanvas.getCurrentDrawing().getNumLayers()\n do {\n uniqName = this.editor.i18next.t('layers.layer') + ' ' + ++i\n } while (this.editor.svgCanvas.getCurrentDrawing().hasLayer(uniqName))\n\n const newName = prompt(\n this.editor.i18next.t('notification.enterUniqueLayerName'),\n uniqName\n )\n if (!newName) {\n return\n }\n if (this.editor.svgCanvas.getCurrentDrawing().hasLayer(newName)) {\n alert(this.editor.i18next.t('notification.dupeLayerName'))\n return\n }\n this.editor.svgCanvas.createLayer(newName)\n this.updateContextPanel()\n this.populateLayers()\n }\n\n /**\n *\n * @returns {void}\n */\n deleteLayer () {\n if (this.editor.svgCanvas.deleteCurrentLayer()) {\n this.updateContextPanel()\n this.populateLayers()\n // This matches what this.editor.svgCanvas does\n // TODO: make this behavior less brittle (svg-editor should get which\n // layer is selected from the canvas and then select that one in the UI)\n const elements = document.querySelectorAll('#layerlist tr.layer')\n Array.prototype.forEach.call(elements, function (el) {\n el.classList.remove('layersel')\n })\n document.querySelector('#layerlist tr.layer').classList.add('layersel')\n }\n }\n\n /**\n *\n * @returns {void}\n */\n cloneLayer () {\n const name =\n this.editor.svgCanvas.getCurrentDrawing().getCurrentLayerName() + ' copy'\n\n const newName = prompt(\n this.editor.i18next.t('notification.enterUniqueLayerName'),\n name\n )\n if (!newName) {\n return\n }\n if (this.editor.svgCanvas.getCurrentDrawing().hasLayer(newName)) {\n alert(this.editor.i18next.t('notification.dupeLayerName'))\n return\n }\n this.editor.svgCanvas.cloneLayer(newName)\n this.updateContextPanel()\n this.populateLayers()\n }\n\n index (el) {\n if (!el) return -1\n return Array.from(document.querySelector('#layerlist tbody').children).indexOf(el)\n }\n\n /**\n *\n * @returns {void}\n */\n mergeLayer () {\n if (\n (this.index(document.querySelector('#layerlist tr.layersel')) - 1) ===\n this.editor.svgCanvas.getCurrentDrawing().getNumLayers() - 1\n ) {\n return\n }\n this.editor.svgCanvas.mergeLayer()\n this.updateContextPanel()\n this.populateLayers()\n }\n\n /**\n * @param {Integer} pos\n * @returns {void}\n */\n moveLayer (pos) {\n const curPos = this.editor.svgCanvas.indexCurrentLayer()\n if (curPos !== -1) {\n this.editor.svgCanvas.setCurrentLayerPosition(curPos - pos)\n this.populateLayers()\n }\n }\n\n /**\n * @returns {void}\n */\n layerRename () {\n const ele = document.querySelector('#layerlist tr.layersel td.layername')\n const oldName = (ele) ? ele.textContent : ''\n const newName = prompt(this.editor.i18next.t('notification.enterNewLayerName'), '')\n if (!newName) {\n return\n }\n if (\n oldName === newName ||\n this.editor.svgCanvas.getCurrentDrawing().hasLayer(newName)\n ) {\n alert(this.editor.i18next.t('notification.layerHasThatName'))\n return\n }\n this.editor.svgCanvas.renameCurrentLayer(newName)\n this.populateLayers()\n }\n\n /**\n * This function highlights the layer passed in (by fading out the other layers).\n * If no layer is passed in, this function restores the other layers.\n * @param {string} [layerNameToHighlight]\n * @returns {void}\n */\n toggleHighlightLayer (layerNameToHighlight) {\n let i\n const curNames = []\n const numLayers = this.editor.svgCanvas.getCurrentDrawing().getNumLayers()\n for (i = 0; i < numLayers; i++) {\n curNames[i] = this.editor.svgCanvas.getCurrentDrawing().getLayerName(i)\n }\n\n if (layerNameToHighlight) {\n curNames.forEach((curName) => {\n if (curName !== layerNameToHighlight) {\n this.editor.svgCanvas\n .getCurrentDrawing()\n .setLayerOpacity(curName, 0.5)\n }\n })\n } else {\n curNames.forEach((curName) => {\n this.editor.svgCanvas.getCurrentDrawing().setLayerOpacity(curName, 1.0)\n })\n }\n }\n\n /**\n * @returns {void}\n */\n populateLayers () {\n this.editor.svgCanvas.clearSelection()\n const self = this\n const layerlist = $id('layerlist').querySelector('tbody')\n while (layerlist.firstChild) { layerlist.removeChild(layerlist.firstChild) }\n\n $id('selLayerNames').setAttribute('options', '')\n const drawing = this.editor.svgCanvas.getCurrentDrawing()\n const currentLayerName = drawing.getCurrentLayerName()\n let layer = this.editor.svgCanvas.getCurrentDrawing().getNumLayers()\n // we get the layers in the reverse z-order (the layer rendered on top is listed first)\n let values = ''\n let text = ''\n while (layer--) {\n const name = drawing.getLayerName(layer)\n const layerTr = document.createElement('tr')\n layerTr.className = (name === currentLayerName) ? 'layer layersel' : 'layer'\n const layerVis = document.createElement('td')\n layerVis.className = (!drawing.getLayerVisibility(name)) ? 'layerinvis layervis' : 'layervis'\n const layerName = document.createElement('td')\n layerName.className = 'layername'\n layerName.textContent = name\n layerTr.appendChild(layerVis)\n layerTr.appendChild(layerName)\n layerlist.appendChild(layerTr)\n values = (values) ? values + '::' + name : name\n text = (text) ? text + ',' + name : name\n }\n $id('selLayerNames').setAttribute('options', text)\n $id('selLayerNames').setAttribute('values', values)\n // handle selection of layer\n const nelements = $id('layerlist').querySelectorAll('td.layername')\n Array.from(nelements).forEach(function (element) {\n element.addEventListener('mouseup', function (evt) {\n const trElements = $id('layerlist').querySelectorAll('tr.layer')\n Array.from(trElements).forEach(function (element) {\n element.classList.remove('layersel')\n })\n evt.currentTarget.parentNode.classList.add('layersel')\n self.editor.svgCanvas.setCurrentLayer(evt.currentTarget.textContent)\n evt.preventDefault()\n })\n element.addEventListener('mouseup', (evt) => {\n self.toggleHighlightLayer(evt.currentTarget.textContent)\n })\n element.addEventListener('mouseout', (_evt) => {\n self.toggleHighlightLayer()\n })\n })\n const elements = $id('layerlist').querySelectorAll('td.layervis')\n Array.from(elements).forEach(function (element) {\n $click(element, function (evt) {\n const ele = evt.currentTarget.parentNode.querySelector('td.layername')\n const name = (ele) ? ele.textContent : ''\n const vis = evt.currentTarget.classList.contains('layerinvis')\n self.editor.svgCanvas.setLayerVisibility(name, vis)\n evt.currentTarget.classList.toggle('layerinvis')\n })\n })\n\n // if there were too few rows, let's add a few to make it not so lonely\n let num = 5 - $id('layerlist').querySelectorAll('tr.layer').length\n while (num-- > 0) {\n // TODO: there must a better way to do this\n const tlayer = document.createElement('tr')\n tlayer.innerHTML = '<td style=\"color:white\">_</td><td/>'\n layerlist.append(tlayer)\n }\n }\n}\n\nexport default LayersPanel\n","/* globals seAlert */\nimport SvgCanvas from '@svgedit/svgcanvas'\nimport { isChrome } from '../common/browser.js'\n\nconst { $id, $click, convertUnit, isValidUnit } = SvgCanvas\nconst homePage = 'https://github.com/SVG-Edit/svgedit'\n\n/**\n *\n */\nclass MainMenu {\n /**\n * @param {PlainObject} editor svgedit handler\n */\n constructor (editor) {\n this.editor = editor\n /**\n * @type {Integer}\n */\n this.exportWindowCt = 0\n }\n\n /**\n *\n * @returns {void}\n */\n hideDocProperties () {\n const $imgDialog = $id('se-img-prop')\n $imgDialog.setAttribute('dialog', 'close')\n $imgDialog.setAttribute('save', this.editor.configObj.pref('img_save'))\n this.editor.docprops = false\n }\n\n /**\n *\n * @returns {void}\n */\n hidePreferences () {\n const $editDialog = $id('se-edit-prefs')\n $editDialog.setAttribute('dialog', 'close')\n this.editor.configObj.preferences = false\n }\n\n /**\n * @param {Event} e\n * @returns {boolean} Whether there were problems saving the document properties\n */\n saveDocProperties (e) {\n // set title\n const { title, w, h, save } = e.detail\n // set document title\n this.editor.svgCanvas.setDocumentTitle(title)\n\n if (w !== 'fit' && !isValidUnit('width', w)) {\n seAlert(this.editor.i18next.t('notification.invalidAttrValGiven'))\n return false\n }\n if (h !== 'fit' && !isValidUnit('height', h)) {\n seAlert(this.editor.i18next.t('notification.invalidAttrValGiven'))\n return false\n }\n if (!this.editor.svgCanvas.setResolution(w, h)) {\n seAlert(this.editor.i18next.t('notification.noContentToFitTo'))\n return false\n }\n // Set image save option\n this.editor.configObj.pref('img_save', save)\n this.editor.updateCanvas()\n this.hideDocProperties()\n return true\n }\n\n /**\n * Save user preferences based on current values in the UI.\n * @param {Event} e\n * @function module:SVGthis.savePreferences\n * @returns {Promise<void>}\n */\n async savePreferences (e) {\n const {\n lang,\n bgcolor,\n bgurl,\n gridsnappingon,\n gridsnappingstep,\n gridcolor,\n showrulers,\n baseunit\n } = e.detail\n // Set background\n this.editor.setBackground(bgcolor, bgurl)\n\n // set language\n if (lang && lang !== this.editor.configObj.pref('lang')) {\n this.editor.configObj.pref('lang', lang)\n seAlert('Changing the language needs reload')\n }\n\n // set grid setting\n this.editor.configObj.curConfig.gridSnapping = gridsnappingon\n this.editor.configObj.curConfig.snappingStep = gridsnappingstep\n this.editor.configObj.curConfig.gridColor = gridcolor\n this.editor.configObj.curConfig.showRulers = showrulers\n if (this.editor.configObj.curConfig.showRulers) {\n this.editor.rulers.updateRulers()\n }\n this.editor.configObj.curConfig.baseUnit = baseunit\n this.editor.svgCanvas.setConfig(this.editor.configObj.curConfig)\n this.editor.updateCanvas()\n this.hidePreferences()\n }\n\n /**\n *\n * @param e\n * @returns {Promise<void>} Resolves to `undefined`\n */\n async clickExport (e) {\n if (e?.detail?.trigger !== 'ok' || e?.detail?.imgType === undefined) {\n return\n }\n const imgType = e?.detail?.imgType\n const quality = e?.detail?.quality ? e?.detail?.quality / 100 : 1\n // Open placeholder window (prevents popup)\n let exportWindowName\n\n /**\n *\n * @returns {void}\n */\n const openExportWindow = () => {\n const loadingImage = this.editor.i18next.t('notification.loadingImage')\n if (this.editor.configObj.curConfig.exportWindowType === 'new') {\n this.editor.exportWindowCt++\n }\n this.editor.exportWindowName =\n this.editor.configObj.curConfig.canvasName + this.editor.exportWindowCt\n let popHTML; let popURL\n if (this.editor.loadingURL) {\n popURL = this.editor.loadingURL\n } else {\n popHTML = `<!DOCTYPE html><html>\n <head>\n <meta charset=\"utf-8\">\n <title>${loadingImage}</title>\n </head>\n <body><h1>${loadingImage}</h1></body>\n <html>`\n if (URL?.createObjectURL) {\n const blob = new Blob([popHTML], { type: 'text/html' })\n popURL = URL.createObjectURL(blob)\n } else {\n popURL = 'data:text/html;base64;charset=utf-8,' + popHTML\n }\n this.editor.loadingURL = popURL\n }\n this.editor.exportWindow = window.open(\n popURL,\n this.editor.exportWindowName\n )\n }\n const chrome = isChrome()\n if (imgType === 'PDF') {\n if (!this.editor.customExportPDF && !chrome) {\n openExportWindow()\n }\n this.editor.svgCanvas.exportPDF(exportWindowName)\n } else {\n if (!this.editor.customExportImage) {\n openExportWindow()\n }\n /* const results = */ await this.editor.svgCanvas.rasterExport(\n imgType,\n quality,\n this.editor.exportWindowName\n )\n }\n }\n\n /**\n *\n * @returns {void}\n */\n showDocProperties () {\n if (this.editor.docprops) {\n return\n }\n this.editor.docprops = true\n const $imgDialog = $id('se-img-prop')\n\n // update resolution option with actual resolution\n const resolution = this.editor.svgCanvas.getResolution()\n if (this.editor.configObj.curConfig.baseUnit !== 'px') {\n resolution.w =\n convertUnit(resolution.w) + this.editor.configObj.curConfig.baseUnit\n resolution.h =\n convertUnit(resolution.h) + this.editor.configObj.curConfig.baseUnit\n }\n $imgDialog.setAttribute('save', this.editor.configObj.pref('img_save'))\n $imgDialog.setAttribute('width', resolution.w)\n $imgDialog.setAttribute('height', resolution.h)\n $imgDialog.setAttribute('title', this.editor.svgCanvas.getDocumentTitle())\n $imgDialog.setAttribute('dialog', 'open')\n }\n\n /**\n *\n * @returns {void}\n */\n showPreferences () {\n if (this.editor.configObj.preferences) {\n return\n }\n this.editor.configObj.preferences = true\n const $editDialog = $id('se-edit-prefs')\n // Update background color with current one\n const canvasBg = this.editor.configObj.curPrefs.bkgd_color\n const url = this.editor.configObj.pref('bkgd_url')\n if (url) {\n $editDialog.setAttribute('bgurl', url)\n }\n $editDialog.setAttribute(\n 'gridsnappingon',\n this.editor.configObj.curConfig.gridSnapping\n )\n $editDialog.setAttribute(\n 'gridsnappingstep',\n this.editor.configObj.curConfig.snappingStep\n )\n $editDialog.setAttribute(\n 'gridcolor',\n this.editor.configObj.curConfig.gridColor\n )\n $editDialog.setAttribute('canvasbg', canvasBg)\n $editDialog.setAttribute('dialog', 'open')\n }\n\n /**\n *\n * @returns {void}\n */\n openHomePage () {\n window.open(homePage, '_blank')\n }\n\n /**\n * @type {module}\n */\n init () {\n // add Top panel\n const template = document.createElement('template')\n template.innerHTML = `\n <se-menu id=\"main_button\" label=\"SVG-Edit\" src=\"logo.svg\" alt=\"logo\">\n <se-menu-item id=\"tool_export\" label=\"tools.export_img\" src=\"export.svg\"></se-menu-item>\n <se-menu-item id=\"tool_docprops\" label=\"tools.docprops\" shortcut=\"D\" src=\"docprop.svg\"></se-menu-item>\n <se-menu-item id=\"tool_editor_prefs\" label=\"config.editor_prefs\" src=\"editPref.svg\"></se-menu-item>\n <se-menu-item id=\"tool_editor_homepage\" label=\"tools.editor_homepage\" src=\"logo.svg\"></se-menu-item>\n </se-menu>`\n this.editor.$svgEditor.append(template.content.cloneNode(true))\n\n // register action to main menu entries\n /**\n * Associate all button actions as well as non-button keyboard shortcuts.\n */\n $click($id('tool_export'), function () {\n document\n .getElementById('se-export-dialog')\n .setAttribute('dialog', 'open')\n })\n $id('se-export-dialog').addEventListener(\n 'change',\n this.clickExport.bind(this)\n )\n $id('tool_docprops').addEventListener(\n 'click',\n this.showDocProperties.bind(this)\n )\n $id('tool_editor_prefs').addEventListener(\n 'click',\n this.showPreferences.bind(this)\n )\n $id('tool_editor_homepage').addEventListener(\n 'click',\n this.openHomePage.bind(this)\n )\n $id('se-img-prop').addEventListener(\n 'change',\n function (e) {\n if (e.detail.dialog === 'closed') {\n this.hideDocProperties()\n } else {\n this.saveDocProperties(e)\n }\n }.bind(this)\n )\n $id('se-edit-prefs').addEventListener(\n 'change',\n function (e) {\n if (e.detail.dialog === 'closed') {\n this.hidePreferences()\n } else {\n this.savePreferences(e)\n }\n }.bind(this)\n )\n }\n}\n\nexport default MainMenu\n","/* globals seConfirm seAlert */\n/**\n * The main module for the visual SVG this.\n *\n * @license MIT\n *\n * @copyright 2010 Alexis Deveria\n * 2010 Pavol Rusnak\n * 2010 Jeff Schiller\n * 2010 Narendra Sisodiya\n * 2014 Brett Zamir\n * 2020 OptimistikSAS\n * @module SVGEditor\n */\n\nimport './components/index.js'\nimport './dialogs/index.js'\n\nimport { isMac } from '../common/browser.js'\n\nimport SvgCanvas from '@svgedit/svgcanvas'\nimport ConfigObj from './ConfigObj.js'\nimport EditorStartup from './EditorStartup.js'\nimport LeftPanel from './panels/LeftPanel.js'\nimport TopPanel from './panels/TopPanel.js'\nimport BottomPanel from './panels/BottomPanel.js'\nimport LayersPanel from './panels/LayersPanel.js'\nimport MainMenu from './MainMenu.js'\nimport { getParentsUntil } from '../common/util.js'\n\nconst { $id, $click, decode64, blankPageObjectURL } = SvgCanvas\n\n/**\n *\n */\nclass Editor extends EditorStartup {\n /**\n *\n */\n constructor (div = null) {\n super(div)\n /**\n * @type {boolean}\n */\n this.langChanged = false\n /**\n * @type {boolean}\n */\n this.showSaveWarning = false\n /**\n * Will be set to a boolean by `ext-storage.js`\n * @type {\"ignore\"|\"waiting\"|\"closed\"}\n */\n this.storagePromptState = 'ignore'\n /**\n * document title\n */\n this.title = 'untitled.svg'\n\n this.svgCanvas = null\n this.$click = $click\n this.isReady = false\n this.customExportImage = false\n this.customExportPDF = false\n this.configObj = new ConfigObj(this)\n this.configObj.pref = this.configObj.pref.bind(this.configObj)\n this.setConfig = this.configObj.setConfig.bind(this.configObj)\n this.callbacks = []\n this.curContext = null\n this.exportWindowName = null\n this.docprops = false\n this.configObj.preferences = false\n this.canvMenu = null\n this.goodLangs = ['ar', 'cs', 'de', 'en', 'es', 'fa', 'fr', 'fy', 'hi', 'it', 'ja', 'nl', 'pl', 'pt-BR', 'ro', 'ru', 'sk', 'sl', 'tr', 'zh-CN', 'zh-TW']\n const modKey = (isMac() ? 'meta+' : 'ctrl+')\n this.shortcuts = [\n // Shortcuts not associated with buttons\n { key: 'ctrl+arrowleft', fn: () => { this.rotateSelected(0, 1) } },\n { key: 'ctrl+arrowright', fn: () => { this.rotateSelected(1, 1) } },\n { key: 'ctrl+shift+arrowleft', fn: () => { this.rotateSelected(0, 5) } },\n { key: 'ctrl+shift+arrowright', fn: () => { this.rotateSelected(1, 5) } },\n { key: 'shift+o', fn: () => { this.svgCanvas.cycleElement(0) } },\n { key: 'shift+p', fn: () => { this.svgCanvas.cycleElement(1) } },\n { key: 'tab', fn: () => { this.svgCanvas.cycleElement(0) } },\n { key: 'shift+tab', fn: () => { this.svgCanvas.cycleElement(1) } },\n { key: [modKey + 'arrowup', true], fn: () => { this.zoomImage(2) } },\n { key: [modKey + 'arrowdown', true], fn: () => { this.zoomImage(0.5) } },\n { key: [modKey + ']', true], fn: () => { this.moveUpDownSelected('Up') } },\n { key: [modKey + '[', true], fn: () => { this.moveUpDownSelected('Down') } },\n { key: ['arrowup', true], fn: () => { this.moveSelected(0, -1) } },\n { key: ['arrowdown', true], fn: () => { this.moveSelected(0, 1) } },\n { key: ['arrowleft', true], fn: () => { this.moveSelected(-1, 0) } },\n { key: ['arrowright', true], fn: () => { this.moveSelected(1, 0) } },\n { key: 'shift+arrowup', fn: () => { this.moveSelected(0, -10) } },\n { key: 'shift+arrowdown', fn: () => { this.moveSelected(0, 10) } },\n { key: 'shift+arrowleft', fn: () => { this.moveSelected(-10, 0) } },\n { key: 'shift+arrowright', fn: () => { this.moveSelected(10, 0) } },\n { key: ['alt+arrowup', true], fn: () => { this.svgCanvas.cloneSelectedElements(0, -1) } },\n { key: ['alt+arrowdown', true], fn: () => { this.svgCanvas.cloneSelectedElements(0, 1) } },\n { key: ['alt+arrowleft', true], fn: () => { this.svgCanvas.cloneSelectedElements(-1, 0) } },\n { key: ['alt+arrowright', true], fn: () => { this.svgCanvas.cloneSelectedElements(1, 0) } },\n { key: ['alt+shift+arrowup', true], fn: () => { this.svgCanvas.cloneSelectedElements(0, -10) } },\n { key: ['alt+shift+arrowdown', true], fn: () => { this.svgCanvas.cloneSelectedElements(0, 10) } },\n { key: ['alt+shift+arrowleft', true], fn: () => { this.svgCanvas.cloneSelectedElements(-10, 0) } },\n { key: ['alt+shift+arrowright', true], fn: () => { this.svgCanvas.cloneSelectedElements(10, 0) } },\n {\n key: ['delete/backspace', true],\n fn: () => {\n if (this.selectedElement || this.multiselected) { this.svgCanvas.deleteSelectedElements() }\n }\n },\n { key: 'a', fn: () => { this.svgCanvas.selectAllInCurrentLayer() } },\n { key: modKey + 'a', fn: () => { this.svgCanvas.selectAllInCurrentLayer() } },\n { key: modKey + 'x', fn: () => { this.cutSelected() } },\n { key: modKey + 'c', fn: () => { this.copySelected() } },\n { key: modKey + 'v', fn: () => { this.pasteInCenter() } }\n ]\n this.leftPanel = new LeftPanel(this)\n this.bottomPanel = new BottomPanel(this)\n this.topPanel = new TopPanel(this)\n this.layersPanel = new LayersPanel(this)\n this.mainMenu = new MainMenu(this)\n // makes svgEditor accessible as a global variable\n window.svgEditor = this\n } // end Constructor\n\n /**\n *\n * @param {string} str SVG string\n * @param {PlainObject} [opts={}]\n * @param {boolean} [opts.noAlert]\n * @throws {Error} Upon failure to load SVG\n * @returns {void}\n */\n loadSvgString (str, { noAlert } = {}) {\n const success = this.svgCanvas.setSvgString(str) !== false\n if (success) {\n this.updateCanvas()\n return\n }\n if (!noAlert) seAlert(this.i18next.t('notification.errorLoadingSVG'))\n throw new Error('Error loading SVG')\n }\n\n /**\n * All methods are optional.\n * @interface module:SVGthis.CustomHandler\n * @type {PlainObject}\n */\n /**\n * Its responsibilities are:\n * - invoke a file chooser dialog in 'open' mode\n * - let user pick a SVG file\n * - calls [svgCanvas.setSvgString()]{@link module:svgcanvas.SvgCanvas#setSvgString} with the string contents of that file.\n * Not passed any parameters.\n * @function module:SVGthis.CustomHandler#open\n * @returns {void}\n */\n /**\n * Its responsibilities are:\n * - accept the string contents of the current document\n * - invoke a file chooser dialog in 'save' mode\n * - save the file to location chosen by the user.\n * @function module:SVGthis.CustomHandler#save\n * @param {external:Window} win\n * @param {module:svgcanvas.SvgCanvas#event:saved} svgStr A string of the SVG\n * @listens module:svgcanvas.SvgCanvas#event:saved\n * @returns {void}\n */\n /**\n * Its responsibilities (with regard to the object it is supplied in its 2nd argument) are:\n * - inform user of any issues supplied via the \"issues\" property\n * - convert the \"svg\" property SVG string into an image for export;\n * utilize the properties \"type\" (currently 'PNG', 'JPEG', 'BMP',\n * 'WEBP', 'PDF'), \"mimeType\", and \"quality\" (for 'JPEG' and 'WEBP'\n * types) to determine the proper output.\n * @function module:SVGthis.CustomHandler#exportImage\n * @param {external:Window} win\n * @param {module:svgcanvas.SvgCanvas#event:exported} data\n * @listens module:svgcanvas.SvgCanvas#event:exported\n * @returns {void}\n */\n /**\n * @function module:SVGthis.CustomHandler#exportPDF\n * @param {external:Window} win\n * @param {module:svgcanvas.SvgCanvas#event:exportedPDF} data\n * @listens module:svgcanvas.SvgCanvas#event:exportedPDF\n * @returns {void}\n */\n\n /**\n * @function module:SVGthis.randomizeIds\n * @param {boolean} arg\n * @returns {void}\n */\n randomizeIds (arg) {\n this.svgCanvas.randomizeIds(arg)\n }\n\n /** @lends module:SVGEditor~Actions */\n /**\n * @returns {void}\n */\n setAll () {\n const keyHandler = {} // will contain the action for each pressed key\n\n this.shortcuts.forEach(shortcut => {\n // Bind function to shortcut key\n if (shortcut.key) {\n // Set shortcut based on options\n let keyval = shortcut.key\n let pd = false\n if (Array.isArray(shortcut.key)) {\n keyval = shortcut.key[0]\n if (shortcut.key.length > 1) {\n pd = shortcut.key[1]\n }\n }\n keyval = String(keyval)\n const { fn } = shortcut\n keyval.split('/').forEach(key => {\n keyHandler[key] = { fn, pd }\n })\n }\n return true\n })\n // register the keydown event\n document.addEventListener('keydown', e => {\n // only track keyboard shortcuts for the body containing the SVG-Editor\n if (e.target.nodeName !== 'BODY') return\n // normalize key\n const key = `${e.altKey ? 'alt+' : ''}${e.shiftKey ? 'shift+' : ''}${\n e.metaKey ? 'meta+' : ''\n }${e.ctrlKey ? 'ctrl+' : ''}${e.key.toLowerCase()}`\n // return if no shortcut defined for this key\n if (!keyHandler[key]) return\n // launch associated handler and preventDefault if necessary\n keyHandler[key].fn()\n if (keyHandler[key].pd) {\n e.preventDefault()\n }\n })\n\n // Misc additional actions\n\n // Make 'return' keypress trigger the change event\n const elements = document.getElementsByClassName('attr_changer')\n Array.from(elements).forEach(function (element) {\n element.addEventListener('keydown', function (evt) {\n evt.currentTarget.dispatchEvent(new Event('change'))\n evt.preventDefault()\n })\n })\n $id('image_url').addEventListener('keydown', function (evt) {\n evt.currentTarget.dispatchEvent(new Event('change'))\n evt.preventDefault()\n })\n }\n\n // parents() https://stackoverflow.com/a/12981248\n getParents (el, parentSelector /* optional */) {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document\n }\n\n const parents = []\n let p = el.parentNode\n\n while (p !== parentSelector) {\n const o = p\n parents.push(o)\n p = o.parentNode\n }\n parents.push(parentSelector) // Push that parentSelector you wanted to stop at\n\n return parents\n }\n\n /**\n * @param {string} sel Selector to match\n * @returns {module:SVGthis.ToolButton}\n */\n getButtonData (sel) {\n return Object.values(this.shortcuts).find(btn => {\n return btn.sel === sel\n })\n }\n\n /**\n * @param {external:Window} win\n * @param {module:svgcanvas.SvgCanvas#event:exported} data\n * @listens module:svgcanvas.SvgCanvas#event:exported\n * @returns {void}\n */\n exportHandler (win, data) {\n const { issues, exportWindowName } = data\n\n this.exportWindow = window.open(blankPageObjectURL || '', exportWindowName) // A hack to get the window via JSON-able name without opening a new one\n\n if (!this.exportWindow || this.exportWindow.closed) {\n seAlert(this.i18next.t('notification.popupWindowBlocked'))\n return\n }\n\n this.exportWindow.location.href = data.bloburl || data.datauri\n const done = this.configObj.pref('export_notice_done')\n if (done !== 'all') {\n let note = this.i18next.t('notification.saveFromBrowser', {\n type: data.type\n })\n\n // Check if there are issues\n if (issues.length) {\n const pre = '\\n \\u2022 '\n note +=\n '\\n\\n' +\n this.i18next.t('notification..noteTheseIssues') +\n pre +\n issues.join(pre)\n }\n\n // Note that this will also prevent the notice even though new issues may appear later.\n // May want to find a way to deal with that without annoying the user\n this.configObj.pref('export_notice_done', 'all')\n seAlert(note)\n }\n }\n\n /**\n *\n * @param {string} color\n * @param {string} url\n * @returns {void}\n */\n setBackground (color, url) {\n // if (color == this.configObj.pref('bkgd_color') && url == this.configObj.pref('bkgd_url')) { return; }\n this.configObj.pref('bkgd_color', color)\n this.configObj.pref('bkgd_url', url, true)\n\n // This should be done in this.svgCanvas.js for the borderRect fill\n this.svgCanvas.setBackground(color, url)\n }\n\n /**\n * @function module:SVGthis.updateCanvas\n * @param {boolean} center\n * @param {module:math.XYObject} newCtr\n * @returns {void}\n */\n updateCanvas (center, newCtr) {\n const zoom = this.svgCanvas.getZoom()\n const { workarea } = this\n const cnvs = $id('svgcanvas')\n\n let w = parseFloat(getComputedStyle(workarea, null).width.replace('px', ''))\n let h = parseFloat(\n getComputedStyle(workarea, null).height.replace('px', '')\n )\n const wOrig = w\n const hOrig = h\n const oldCtr = {\n x: workarea.scrollLeft + wOrig / 2,\n y: workarea.scrollTop + hOrig / 2\n }\n const multi = this.configObj.curConfig.canvas_expansion\n w = Math.max(wOrig, this.svgCanvas.contentW * zoom * multi)\n h = Math.max(hOrig, this.svgCanvas.contentH * zoom * multi)\n\n if (w === wOrig && h === hOrig) {\n workarea.style.overflow = 'hidden'\n } else {\n workarea.style.overflow = 'scroll'\n }\n\n const oldCanY =\n parseFloat(getComputedStyle(cnvs, null).height.replace('px', '')) / 2\n const oldCanX =\n parseFloat(getComputedStyle(cnvs, null).width.replace('px', '')) / 2\n\n cnvs.style.width = w + 'px'\n cnvs.style.height = h + 'px'\n const newCanY = h / 2\n const newCanX = w / 2\n const offset = this.svgCanvas.updateCanvas(w, h)\n\n const ratio = newCanX / oldCanX\n\n const scrollX = w / 2 - wOrig / 2\n const scrollY = h / 2 - hOrig / 2\n\n if (!newCtr) {\n const oldDistX = oldCtr.x - oldCanX\n const newX = newCanX + oldDistX * ratio\n\n const oldDistY = oldCtr.y - oldCanY\n const newY = newCanY + oldDistY * ratio\n\n newCtr = {\n x: newX,\n y: newY\n }\n } else {\n newCtr.x += offset.x\n newCtr.y += offset.y\n }\n\n if (center) {\n // Go to top-left for larger documents\n if (\n this.svgCanvas.contentW >\n parseFloat(getComputedStyle(workarea, null).width.replace('px', ''))\n ) {\n // Top-left\n workarea.scrollLeft = offset.x - 10\n workarea.scrollTop = offset.y - 10\n } else {\n // Center\n workarea.scrollLeft = scrollX\n workarea.scrollTop = scrollY\n }\n } else {\n workarea.scrollLeft = newCtr.x - wOrig / 2\n workarea.scrollTop = newCtr.y - hOrig / 2\n }\n if (this.configObj.curConfig.showRulers) {\n this.rulers.updateRulers(cnvs, zoom)\n workarea.scroll()\n }\n\n if (\n this.configObj.urldata.storagePrompt !== true &&\n this.storagePromptState === 'ignore'\n ) {\n if ($id('dialog_box') != null) $id('dialog_box').style.display = 'none'\n }\n }\n\n /**\n *\n * @returns {void}\n */\n updateWireFrame () {\n const rule = `\n #workarea.wireframe #svgcontent * {\n stroke-width: ${1 / this.svgCanvas.getZoom()}px;\n }\n `\n if (document.querySelectorAll('#wireframe_rules').length > 0) {\n document.querySelector(\n '#wireframe_rules'\n ).textContent = this.workarea.classList.contains('wireframe') ? rule : ''\n }\n }\n\n // called when we've selected a different element\n /**\n *\n * @param {external:Window} win\n * @param {module:svgcanvas.SvgCanvas#event:selected} elems Array of elements that were selected\n * @listens module:svgcanvas.SvgCanvas#event:selected\n * @fires module:svgcanvas.SvgCanvas#event:ext_selectedChanged\n * @returns {void}\n */\n selectedChanged (win, elems) {\n const mode = this.svgCanvas.getMode()\n if (mode === 'select') {\n this.leftPanel.clickSelect()\n }\n const isNode = mode === 'pathedit'\n // if this.elems[1] is present, then we have more than one element\n this.selectedElement = elems.length === 1 || !elems[1] ? elems[0] : null\n this.multiselected = elems.length >= 2 && elems[1]\n if (this.selectedElement && !isNode) {\n this.topPanel.update()\n } // if (elem)\n\n // Deal with pathedit mode\n this.topPanel.togglePathEditMode(isNode, elems)\n this.topPanel.updateContextPanel()\n this.svgCanvas.runExtensions(\n 'selectedChanged',\n /** @type {module:svgcanvas.SvgCanvas#event:ext_selectedChanged} */ {\n elems,\n selectedElement: this.selectedElement,\n multiselected: this.multiselected\n }\n )\n }\n\n // Call when part of element is in process of changing, generally\n // on mousemove actions like rotate, move, etc.\n /**\n * @param {external:Window} win\n * @param {module:svgcanvas.SvgCanvas#event:transition} elems\n * @listens module:svgcanvas.SvgCanvas#event:transition\n * @fires module:svgcanvas.SvgCanvas#event:ext_elementTransition\n * @returns {void}\n */\n elementTransition (win, elems) {\n const mode = this.svgCanvas.getMode()\n const elem = elems[0]\n\n if (!elem) {\n return\n }\n\n this.multiselected = elems.length >= 2 && elems[1]\n // Only updating fields for single elements for now\n if (!this.multiselected) {\n switch (mode) {\n case 'rotate': {\n const ang = this.svgCanvas.getRotationAngle(elem)\n $id('angle').value = ang\n ang === 0\n ? $id('tool_reorient').classList.add('disabled')\n : $id('tool_reorient').classList.remove('disabled')\n break\n }\n }\n }\n this.svgCanvas.runExtensions(\n 'elementTransition',\n /** @type {module:svgcanvas.SvgCanvas#event:ext_elementTransition} */ {\n elems\n }\n )\n }\n\n // called when any element has changed\n /**\n * @param {external:Window} win\n * @param {Array<PlainObject>} elems\n * @listens module:svgcanvas.SvgCanvas#event:changed\n * @fires module:svgcanvas.SvgCanvas#event:ext_elementChanged\n * @returns {void}\n */\n elementChanged (win, elems) {\n const mode = this.svgCanvas.getMode()\n if (mode === 'select') {\n this.leftPanel.clickSelect()\n }\n\n elems.forEach(elem => {\n const isSvgElem = elem?.tagName === 'svg'\n if (isSvgElem || this.svgCanvas.isLayer(elem)) {\n this.layersPanel.populateLayers()\n // if the element changed was the svg, then it could be a resolution change\n if (isSvgElem) {\n this.updateCanvas()\n }\n // Update selectedElement if element is no longer part of the image.\n // This occurs for the text elements in Firefox\n } else if (elem && !this.selectedElement?.parentNode) {\n this.selectedElement = elem\n }\n })\n\n this.showSaveWarning = true\n\n // we update the contextual panel with potentially new\n // positional/sizing information (we DON'T want to update the\n // toolbar here as that creates an infinite loop)\n // also this updates the history buttons\n\n // we tell it to skip focusing the text control if the\n // text element was previously in focus\n this.topPanel.updateContextPanel()\n\n // In the event a gradient was flipped:\n if (this.selectedElement && mode === 'select') {\n this.bottomPanel.updateColorpickers()\n }\n\n this.svgCanvas.runExtensions(\n 'elementChanged',\n /** @type {module:svgcanvas.SvgCanvas#event:ext_elementChanged} */ {\n elems\n }\n )\n }\n\n /**\n * @returns {void}\n */\n elementRenamed (win, renameObj) {\n this.svgCanvas.runExtensions(\n 'elementRenamed',\n /** @type {module:svgcanvas.SvgCanvas#event:ext_elementRenamed} */ {\n renameObj\n }\n )\n }\n\n /**\n * @returns {void}\n */\n afterClear (win) {\n this.svgCanvas.runExtensions(\n 'afterClear'\n )\n }\n\n /**\n * @returns {void}\n */\n beforeClear (win) {\n this.svgCanvas.runExtensions(\n 'beforeClear'\n )\n }\n\n /**\n * @returns {void}\n */\n zoomDone () {\n for (const el of this.svgCanvas.selectedElements) {\n this.svgCanvas.selectorManager.requestSelector(el).resize()\n }\n this.updateWireFrame()\n }\n\n /**\n * @typedef {PlainObject} module:SVGthis.BBoxObjectWithFactor (like `DOMRect`)\n * @property {Float} x\n * @property {Float} y\n * @property {Float} width\n * @property {Float} height\n * @property {Float} [factor] Needed if width or height are 0\n * @property {Float} [zoom]\n * @see module:svgcanvas.SvgCanvas#event:zoomed\n */\n\n /**\n * @function module:svgcanvas.SvgCanvas#zoomChanged\n * @param {external:Window} win\n * @param {module:svgcanvas.SvgCanvas#event:zoomed} bbox\n * @param {boolean} autoCenter\n * @listens module:svgcanvas.SvgCanvas#event:zoomed\n * @returns {void}\n */\n zoomChanged (win, bbox, autoCenter) {\n const scrbar = 15\n const zInfo = this.svgCanvas.setBBoxZoom(\n bbox,\n parseFloat(\n getComputedStyle(this.workarea, null).width.replace('px', '')\n ) - scrbar,\n parseFloat(\n getComputedStyle(this.workarea, null).height.replace('px', '')\n ) - scrbar\n )\n if (!zInfo) {\n return\n }\n const zoomlevel = zInfo.zoom\n const bb = zInfo.bbox\n\n if (zoomlevel < 0.001) {\n this.changeZoom(0.1)\n return\n }\n\n $id('zoom').value = (this.svgCanvas.getZoom() * 100).toFixed(1)\n\n if (autoCenter) {\n this.updateCanvas()\n } else {\n this.updateCanvas(false, {\n x: bb.x * zoomlevel + (bb.width * zoomlevel) / 2,\n y: bb.y * zoomlevel + (bb.height * zoomlevel) / 2\n })\n }\n\n if (this.svgCanvas.getMode() === 'zoom' && bb.width) {\n // Go to select if a zoom box was drawn\n this.leftPanel.clickSelect()\n }\n\n this.zoomDone()\n }\n\n /**\n * @param {external:Window} win\n * @param {module:svgcanvas.SvgCanvas#event:contextset} context\n * @listens module:svgcanvas.SvgCanvas#event:contextset\n * @returns {void}\n */\n contextChanged (win, context) {\n let linkStr = ''\n if (context) {\n let str = ''\n linkStr =\n '<a href=\"#\" data-root=\"y\">' +\n this.svgCanvas.getCurrentDrawing().getCurrentLayerName() +\n '</a>'\n const parentsUntil = getParentsUntil(context, '#svgcontent')\n parentsUntil.forEach(function (parent) {\n if (parent.id) {\n str += ' > ' + parent.id\n linkStr +=\n parent !== context\n ? ` > <a href=\"#\">${parent.id}</a>`\n : ` > ${parent.id}`\n }\n })\n\n this.curContext = str\n } else {\n this.curContext = null\n }\n $id('cur_context_panel').style.display = context ? 'block' : 'none'\n $id('cur_context_panel').innerHTML = linkStr\n }\n\n /**\n * @function module:SVGEditor.setIcon\n * @param {string|Element|external:jQuery} elem\n * @param {string|external:jQuery} iconId\n * @returns {void}\n */\n setIcon (elem, iconId) {\n const img = document.createElement('img')\n img.src = this.configObj.curConfig.imgPath + iconId\n const icon = typeof iconId === 'string' ? img : iconId.cloneNode(true)\n if (!icon) {\n // Todo: Investigate why this still occurs in some cases\n console.warn('NOTE: Icon image missing: ' + iconId)\n return\n }\n // empty()\n while ($id(elem).firstChild) {\n $id(elem).removeChild($id(elem).firstChild)\n }\n $id(elem).appendChild(icon)\n }\n\n /**\n * @param {external:Window} win\n * @param {module:svgcanvas.SvgCanvas#event:extension_added} ext\n * @listens module:svgcanvas.SvgCanvas#event:extension_added\n * @returns {Promise<void>|void} Resolves to `undefined`\n */\n async extAdded (win, ext) {\n if (!ext) {\n return undefined\n }\n let cbCalled = false\n\n /**\n *\n * @returns {void}\n */\n const runCallback = () => {\n if (ext.callback && !cbCalled) {\n cbCalled = true\n ext.callback.call(this)\n }\n }\n\n if (ext.events) {\n this.leftPanel.add(ext.events.id, ext.events.click)\n }\n return runCallback()\n }\n\n /**\n * @param {Float} multiplier\n * @returns {void}\n */\n zoomImage (multiplier) {\n const resolution = this.svgCanvas.getResolution()\n multiplier = multiplier ? resolution.zoom * multiplier : 1\n // setResolution(res.w * multiplier, res.h * multiplier, true);\n $id('zoom').value = (multiplier * 100).toFixed(1)\n this.svgCanvas.setCurrentZoom(multiplier)\n this.zoomDone()\n this.updateCanvas(true)\n }\n\n /**\n *\n * @returns {void}\n */\n cutSelected () {\n if (this.selectedElement || this.multiselected) {\n this.svgCanvas.cutSelectedElements()\n }\n }\n\n /**\n * @function copySelected\n * @returns {void}\n */\n copySelected () {\n if (this.selectedElement || this.multiselected) {\n this.svgCanvas.copySelectedElements()\n }\n }\n\n /**\n *\n * @returns {void}\n */\n pasteInCenter () {\n const { workarea } = this\n const zoom = this.svgCanvas.getZoom()\n const x =\n (workarea.scrollLeft +\n parseFloat(getComputedStyle(workarea, null).width.replace('px', '')) /\n 2) /\n zoom -\n this.svgCanvas.contentW\n const y =\n (workarea.scrollTop +\n parseFloat(getComputedStyle(workarea, null).height.replace('px', '')) /\n 2) /\n zoom -\n this.svgCanvas.contentH\n this.svgCanvas.pasteElements('point', x, y)\n }\n\n /**\n * @param {\"Up\"|\"Down\"} dir\n * @returns {void}\n */\n moveUpDownSelected (dir) {\n if (this.selectedElement) {\n this.svgCanvas.moveUpDownSelected(dir)\n }\n }\n\n /**\n * @param {Float} dx\n * @param {Float} dy\n * @returns {void}\n */\n moveSelected (dx, dy) {\n if (this.selectedElement || this.multiselected) {\n if (this.configObj.curConfig.gridSnapping) {\n // Use grid snap value regardless of zoom level\n const multi =\n this.svgCanvas.getZoom() * this.configObj.curConfig.snappingStep\n dx *= multi\n dy *= multi\n }\n this.svgCanvas.moveSelectedElements(dx, dy)\n }\n }\n\n /**\n *\n * @returns {void}\n */\n selectNext () {\n this.svgCanvas.cycleElement(1)\n }\n\n /**\n *\n * @returns {void}\n */\n selectPrev () {\n this.svgCanvas.cycleElement(0)\n }\n\n /**\n * @param {0|1} cw\n * @param {Integer} step\n * @returns {void}\n */\n rotateSelected (cw, step) {\n if (!this.selectedElement || this.multiselected) {\n return\n }\n if (!cw) {\n step *= -1\n }\n const angle = Number.parseFloat($id('angle').value) + step\n this.svgCanvas.setRotationAngle(angle)\n this.topPanel.updateContextPanel()\n }\n\n /**\n *\n * @returns {void}\n */\n hideSourceEditor () {\n const $editorDialog = $id('se-svg-editor-dialog')\n $editorDialog.setAttribute('dialog', 'closed')\n }\n\n /**\n * @param {Event} e\n * @returns {void} Resolves to `undefined`\n */\n async saveSourceEditor (e) {\n const $editorDialog = $id('se-svg-editor-dialog')\n if ($editorDialog.getAttribute('dialog') !== 'open') return\n const saveChanges = () => {\n this.svgCanvas.clearSelection()\n this.hideSourceEditor()\n this.zoomImage()\n this.layersPanel.populateLayers()\n }\n\n if (!this.svgCanvas.setSvgString(e.detail.value)) {\n const ok = await seConfirm(\n this.i18next.t('notification.QerrorsRevertToSource')\n )\n if (ok === false || ok === 'Cancel') {\n return\n }\n saveChanges()\n return\n }\n saveChanges()\n this.leftPanel.clickSelect()\n }\n\n /**\n * @param {Event} e\n * @returns {void} Resolves to `undefined`\n */\n cancelOverlays (e) {\n if ($id('dialog_box') != null) $id('dialog_box').style.display = 'none'\n const $editorDialog = $id('se-svg-editor-dialog')\n const editingsource = $editorDialog.getAttribute('dialog') === 'open'\n if (!editingsource && !this.docprops && !this.configObj.preferences) {\n if (this.curContext) {\n this.svgCanvas.leaveContext()\n }\n return\n }\n\n if (editingsource) {\n const origSource = this.svgCanvas.getSvgString()\n if (origSource !== e.detail.value) {\n const ok = seConfirm(\n this.i18next.t('notification.QignoreSourceChanges')\n )\n if (ok) {\n this.hideSourceEditor()\n }\n } else {\n this.hideSourceEditor()\n }\n }\n }\n\n /**\n * @returns {void}\n */\n toggleDynamicOutput (e) {\n this.configObj.curConfig.dynamicOutput = e.detail.dynamic\n this.svgCanvas.setConfig(this.configObj.curConfig)\n const $editorDialog = document.getElementById('se-svg-editor-dialog')\n const origSource = this.svgCanvas.getSvgString()\n $editorDialog.setAttribute('dialog', 'open')\n $editorDialog.setAttribute('value', origSource)\n }\n\n /**\n * @returns {void}\n */\n enableOrDisableClipboard () {\n let svgeditClipboard\n try {\n svgeditClipboard = this.localStorage.getItem('svgedit_clipboard')\n } catch (err) {\n /* empty fn */\n }\n this.canvMenu.setAttribute(\n (svgeditClipboard ? 'en' : 'dis') + 'ablemenuitems',\n '#paste,#paste_in_place'\n )\n }\n\n /**\n * @function module:SVGthis.openPrep\n * @returns {boolean|Promise<boolean>} Resolves to boolean indicating `true` if there were no changes\n * and `false` after the user confirms.\n */\n async openPrep () {\n if (this.svgCanvas.undoMgr.getUndoStackSize() === 0) {\n return true\n }\n return await seConfirm(this.i18next.t('notification.QwantToOpen'))\n }\n\n /**\n *\n * @param {Event} e\n * @returns {void}\n */\n onDragEnter (e) {\n e.stopPropagation()\n e.preventDefault()\n // and indicator should be displayed here, such as \"drop files here\"\n }\n\n /**\n *\n * @param {Event} e\n * @returns {void}\n */\n onDragOver (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n /**\n *\n * @param {Event} e\n * @returns {void}\n */\n onDragLeave (e) {\n e.stopPropagation()\n e.preventDefault()\n // hypothetical indicator should be removed here\n }\n\n /**\n * @function module:SVGthis.setLang\n * @param {string} lang The language code\n * @param {module:locale.LocaleStrings} allStrings See {@tutorial LocaleDocs}\n * @fires module:svgcanvas.SvgCanvas#event:ext_langReady\n * @fires module:svgcanvas.SvgCanvas#event:ext_langChanged\n * @returns {void} A Promise which resolves to `undefined`\n */\n setLang (lang) {\n this.langChanged = true\n this.configObj.pref('lang', lang)\n const $editDialog = $id('se-edit-prefs')\n $editDialog.setAttribute('lang', lang)\n const oldLayerName = $id('#layerlist')\n ? $id('#layerlist').querySelector('tr.layersel td.layername').textContent\n : ''\n const renameLayer =\n oldLayerName === this.i18next.t('notification.common.layer') + ' 1'\n\n this.setTitles()\n\n if (renameLayer) {\n this.svgCanvas.renameCurrentLayer(\n this.i18next.t('notification.common.layer') + ' 1'\n )\n this.layersPanel.populateLayers()\n }\n\n this.svgCanvas.runExtensions(\n 'langChanged',\n /** @type {module:svgcanvas.SvgCanvas#event:ext_langChanged} */ lang\n )\n }\n\n /**\n * @callback module:SVGthis.ReadyCallback\n * @returns {Promise<void>|void}\n */\n /**\n * Queues a callback to be invoked when the editor is ready (or\n * to be invoked immediately if it is already ready--i.e.,\n * if `runCallbacks` has been run).\n * @function module:SVGthis.ready\n * @param {module:SVGthis.ReadyCallback} cb Callback to be queued to invoke\n * @returns {Promise<ArbitraryCallbackResult>} Resolves when all callbacks, including the supplied have resolved\n */\n ready (cb) {\n return new Promise((resolve, reject) => {\n if (this.isReady) {\n resolve(cb())\n return\n }\n this.callbacks.push([cb, resolve, reject])\n })\n }\n\n /**\n * Invokes the callbacks previous set by `svgthis.ready`\n * @function module:SVGthis.runCallbacks\n * @returns {Promise<void>} Resolves to `undefined` if all callbacks succeeded and rejects otherwise\n */\n async runCallbacks () {\n try {\n await Promise.all(\n this.callbacks.map(([cb]) => {\n return cb()\n })\n )\n } catch (err) {\n this.callbacks.forEach(([, , reject]) => {\n reject()\n })\n throw err\n }\n this.callbacks.forEach(([, resolve]) => {\n resolve()\n })\n this.isReady = true\n }\n\n /**\n * @function module:SVGthis.loadFromString\n * @param {string} str The SVG string to load\n * @param {PlainObject} [opts={}]\n * @param {boolean} [opts.noAlert=false] Option to avoid alert to user and instead get rejected promise\n * @returns {Promise<void>}\n */\n loadFromString (str, { noAlert } = {}) {\n return this.ready(async () => {\n try {\n await this.loadSvgString(str, { noAlert })\n } catch (err) {\n if (noAlert) {\n throw err\n }\n }\n })\n }\n\n /**\n * @callback module:SVGthis.URLLoadCallback\n * @param {boolean} success\n * @returns {void}\n */\n /**\n * @function module:SVGthis.loadFromURL\n * @param {string} url URL from which to load an SVG string via Ajax\n * @param {PlainObject} [opts={}] May contain properties: `cache`, `callback`\n * @param {boolean} [opts.cache]\n * @param {boolean} [opts.noAlert]\n * @returns {Promise<void>} Resolves to `undefined` or rejects upon bad loading of\n * the SVG (or upon failure to parse the loaded string) when `noAlert` is\n * enabled\n */\n loadFromURL (url, { cache, noAlert } = {}) {\n return this.ready(() => {\n return new Promise((resolve, reject) => {\n fetch(url, { cache: cache ? 'force-cache' : 'no-cache' })\n .then(response => {\n if (!response.ok) {\n if (noAlert) {\n reject(new Error('URLLoadFail'))\n return\n }\n seAlert(this.i18next.t('notification.URLLoadFail'))\n resolve()\n }\n return response.text()\n })\n .then(str => {\n this.loadSvgString(str, { noAlert })\n return str\n })\n .catch(error => {\n if (noAlert) {\n reject(new Error('URLLoadFail'))\n return\n }\n seAlert(this.i18next.t('notification.URLLoadFail') + ': \\n' + error)\n resolve()\n })\n })\n })\n }\n\n /**\n * @function module:SVGthis.loadFromDataURI\n * @param {string} str The Data URI to base64-decode (if relevant) and load\n * @param {PlainObject} [opts={}]\n * @param {boolean} [opts.noAlert]\n * @returns {Promise<void>} Resolves to `undefined` and rejects if loading SVG string fails and `noAlert` is enabled\n */\n loadFromDataURI (str, { noAlert } = {}) {\n return this.ready(() => {\n let base64 = false\n let pre = str.match(/^data:image\\/svg\\+xml;base64,/)\n if (pre) {\n base64 = true\n } else {\n pre = str.match(/^data:image\\/svg\\+xml(?:;|;utf8)?,/)\n }\n if (pre) {\n pre = pre[0]\n }\n const src = str.slice(pre.length)\n return this.loadSvgString(\n base64 ? decode64(src) : decodeURIComponent(src),\n { noAlert }\n )\n })\n }\n\n /**\n * @function module:SVGthis.addExtension\n * @param {string} name Used internally; no need for i18n.\n * @param {module:svgcanvas.ExtensionInitCallback} initfn Config to be invoked on this module\n * @param {module:svgcanvas.ExtensionInitArgs} initArgs\n * @throws {Error} If called too early\n * @returns {Promise<void>} Resolves to `undefined`\n */\n addExtension (name, initfn, initArgs) {\n // Note that we don't want this on this.ready since some extensions\n // may want to run before then (like server_opensave).\n if (!this.svgCanvas) {\n throw new Error('Extension added too early')\n }\n return this.svgCanvas.addExtension(name, initfn, initArgs)\n }\n}\n\nexport default Editor\n","export default {\n lang: 'af',\n dir: 'ltr',\n common: {\n ok: 'Spaar',\n cancel: 'Annuleer',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Klik om te verander vul kleur, verskuiwing klik om &#39;n beroerte kleur verander',\n zoom_level: 'Change zoom vlak',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Verandering vul kleur',\n stroke_color: 'Verandering beroerte kleur',\n stroke_style: 'Verandering beroerte dash styl',\n stroke_width: 'Verandering beroerte breedte',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Verandering rotasie-hoek',\n blur: 'Change gaussian blur value',\n opacity: 'Verander geselekteerde item opaciteit',\n circle_cx: 'Verandering sirkel se cx koördineer',\n circle_cy: 'Verandering sirkel se cy koördineer',\n circle_r: 'Verandering sirkel se radius',\n ellipse_cx: 'Verandering ellips se cx koördineer',\n ellipse_cy: 'Verander ellips se cy koördineer',\n ellipse_rx: 'Verandering ellips se x radius',\n ellipse_ry: 'Verander ellips se j radius',\n line_x1: 'Verandering lyn se vertrek x koördinaat',\n line_x2: 'Verandering lyn se eindig x koördinaat',\n line_y1: 'Verandering lyn se vertrek y koördinaat',\n line_y2: 'Verandering lyn se eindig y koördinaat',\n rect_height: 'Verandering reghoek hoogte',\n rect_width: 'Verandering reghoek breedte',\n corner_radius: 'Verandering Rechthoek Corner Radius',\n image_width: 'Verander prent breedte',\n image_height: 'Verandering prent hoogte',\n image_url: 'URL verander',\n node_x: 'Change node\\'s x coordinate',\n node_y: 'Change node\\'s y coordinate',\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Verander teks inhoud',\n font_family_label: 'Font:',\n font_family: 'Lettertipe verander Familie',\n font_size: 'Verandering Lettertipe Grootte',\n bold: 'Vetgedrukte teks',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Verander agtergrondkleur / opaciteit',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Pas na inhoud',\n fit_to_all: 'Passing tot al inhoud',\n fit_to_canvas: 'Passing tot doek',\n fit_to_layer_content: 'Passing tot laag inhoud',\n fit_to_sel: 'Passing tot seleksie',\n align_relative_to: 'Align in verhouding tot ...',\n relativeTo: 'relatief tot:',\n page: 'bladsy',\n largest_object: 'grootste voorwerp',\n selected_objects: 'verkose voorwerpe',\n smallest_object: 'kleinste voorwerp',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Rig Middel',\n align_left: 'Links Regterkant',\n align_middle: 'Align Midde',\n align_right: 'Lijn regs uit',\n align_top: 'Align Top',\n mode_select: 'Select Gereedschap',\n mode_fhpath: 'Potlood tool',\n mode_line: 'Lyn Gereedskap',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-hand Rectangle',\n mode_ellipse: 'Ellips',\n mode_circle: 'Sirkel',\n mode_fhellipse: 'Gratis-Hand Ellips',\n mode_path: 'Poli Gereedskap',\n mode_text: 'Text Gereedskap',\n mode_image: 'Image Gereedskap',\n mode_zoom: 'Klik op die Gereedskap',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Boontoe',\n redo: 'Oordoen',\n tool_source: 'Wysig Bron',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Groep Elemente',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elemente',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Skuif na Bottom',\n move_top: 'Skuif na bo',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Spaar',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Verwyder Laag',\n move_down: 'Beweeg afbreek Down',\n new: 'Nuwe Layer',\n rename: 'Rename Layer',\n move_up: 'Beweeg afbreek Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Doek Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Kies gedefinieerde:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'ar',\n dir: 'rtl',\n common: {\n ok: 'حفظ',\n cancel: 'إلغاء',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'انقر لتغيير لون التعبئة ، تحولا مزدوجا فوق لتغيير لون السكتة الدماغية',\n zoom_level: 'تغيير مستوى التكبير',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'تغير لون التعبئة',\n stroke_color: 'تغير لون السكتة الدماغية',\n stroke_style: 'تغيير نمط السكتة الدماغية اندفاعة',\n stroke_width: 'تغيير عرض السكتة الدماغية',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'تغيير زاوية الدوران',\n blur: 'Change gaussian blur value',\n opacity: 'تغيير مختارة غموض البند',\n circle_cx: 'دائرة التغيير لتنسيق cx',\n circle_cy: \"Change circle's cy coordinate\",\n circle_r: 'التغيير في دائرة نصف قطرها',\n ellipse_cx: 'تغيير شكل البيضاوي cx تنسيق',\n ellipse_cy: 'تغيير شكل البيضاوي قبرصي تنسيق',\n ellipse_rx: 'تغيير شكل البيضاوي خ نصف قطرها',\n ellipse_ry: 'تغيير القطع الناقص في دائرة نصف قطرها ذ',\n line_x1: 'تغيير الخط لبدء تنسيق خ',\n line_x2: 'تغيير الخط لانهاء خ تنسيق',\n line_y1: 'تغيير الخط لبدء تنسيق ذ',\n line_y2: 'تغيير الخط لإنهاء تنسيق ذ',\n rect_height: 'تغيير المستطيل الارتفاع',\n rect_width: 'تغيير عرض المستطيل',\n corner_radius: 'تغيير مستطيل ركن الشعاع',\n image_width: 'تغيير صورة العرض',\n image_height: 'تغيير ارتفاع الصورة',\n image_url: 'تغيير العنوان',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'تغيير محتويات النص',\n font_family_label: 'Font:',\n font_family: 'تغيير الخط الأسرة',\n font_size: 'تغيير حجم الخط',\n bold: 'نص جريء',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'مائل نص',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'تغير لون الخلفية / غموض',\n connector_no_arrow: 'No arrow',\n fitToContent: 'لائقا للمحتوى',\n fit_to_all: 'يصلح لجميع المحتويات',\n fit_to_canvas: 'يصلح لوحة زيتية على قماش',\n fit_to_layer_content: 'يصلح لطبقة المحتوى',\n fit_to_sel: 'يصلح لاختيار',\n align_relative_to: 'محاذاة النسبي ل ...',\n relativeTo: 'بالنسبة إلى:',\n page: 'الصفحة',\n largest_object: 'أكبر كائن',\n selected_objects: 'انتخب الأجسام',\n smallest_object: 'أصغر كائن',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'محاذاة القاع',\n align_center: 'مركز محاذاة',\n align_left: 'محاذاة إلى اليسار',\n align_middle: 'محاذاة الأوسط',\n align_right: 'محاذاة إلى اليمين',\n align_top: 'محاذاة الأعلى',\n mode_select: 'اختر أداة',\n mode_fhpath: 'أداة قلم رصاص',\n mode_line: 'خط أداة',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rectangle',\n mode_ellipse: 'القطع الناقص',\n mode_circle: 'دائرة',\n mode_fhellipse: 'اليد الحرة البيضوي',\n mode_path: 'بولي أداة',\n mode_text: 'النص أداة',\n mode_image: 'الصورة أداة',\n mode_zoom: 'أداة تكبير',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'التراجع',\n redo: 'إعادته',\n tool_source: 'عدل المصدر',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'مجموعة عناصر',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'فك تجميع عناصر',\n docprops: 'خصائص المستند',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'الانتقال إلى أسفل',\n move_top: 'الانتقال إلى أعلى',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'حفظ',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'حذف طبقة',\n move_down: 'تحرك لأسفل طبقة',\n new: 'طبقة جديدة',\n rename: 'تسمية الطبقة',\n move_up: 'تحرك لأعلى طبقة',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'حدد سلفا:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'az',\n dir: 'ltr',\n common: {\n ok: 'OK',\n cancel: 'Cancel',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Click to change fill color, shift-click to change stroke color',\n zoom_level: 'Change zoom level',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Change fill color',\n stroke_color: 'Change stroke color',\n stroke_style: 'Change stroke dash style',\n stroke_width: 'Change stroke width',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Change rotation angle',\n blur: 'Change gaussian blur value',\n opacity: 'Change selected item opacity',\n circle_cx: \"Change circle's cx coordinate\",\n circle_cy: \"Change circle's cy coordinate\",\n circle_r: \"Change circle's radius\",\n ellipse_cx: \"Change ellipse's cx coordinate\",\n ellipse_cy: \"Change ellipse's cy coordinate\",\n ellipse_rx: \"Change ellipse's x radius\",\n ellipse_ry: \"Change ellipse's y radius\",\n line_x1: \"Change line's starting x coordinate\",\n line_x2: \"Change line's ending x coordinate\",\n line_y1: \"Change line's starting y coordinate\",\n line_y2: \"Change line's ending y coordinate\",\n rect_height: 'Change rectangle height',\n rect_width: 'Change rectangle width',\n corner_radius: 'Change Rectangle Corner Radius',\n image_width: 'Change image width',\n image_height: 'Change image height',\n image_url: 'Change URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Change text contents',\n font_family_label: 'Font:',\n font_family: 'Change Font Family',\n font_size: 'Change Font Size',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Change background color/opacity',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Fit to all content',\n fit_to_canvas: 'Fit to canvas',\n fit_to_layer_content: 'Fit to layer content',\n fit_to_sel: 'Fit to selection',\n align_relative_to: 'Align relative to ...',\n relativeTo: 'relative to:',\n page: 'page',\n largest_object: 'largest object',\n selected_objects: 'selected objects',\n smallest_object: 'smallest object',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Align Center',\n align_left: 'Align Left',\n align_middle: 'Align Middle',\n align_right: 'Align Right',\n align_top: 'Align Top',\n mode_select: 'Select Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rectangle',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Text Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Undo',\n redo: 'Redo',\n tool_source: 'Edit Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Group Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Apply Changes',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Delete Layer',\n move_down: 'Move Layer Down',\n new: 'New Layer',\n rename: 'Rename Layer',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Select predefined:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'be',\n dir: 'ltr',\n common: {\n ok: 'Захаваць',\n cancel: 'Адмена',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Націсніце для змены колеру залівання, Shift-Click змяніць обводка',\n zoom_level: 'Змяненне маштабу',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Змяненне колеру залівання',\n stroke_color: 'Змяненне колеру інсульт',\n stroke_style: 'Змяненне стылю інсульт працяжнік',\n stroke_width: 'Змены шырыня штрых',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Змены вугла павароту',\n blur: 'Change gaussian blur value',\n opacity: 'Старонка абранага пункта непразрыстасці',\n circle_cx: 'CX змене круга каардынаты',\n circle_cy: 'Змены гуртка CY каардынаты',\n circle_r: 'Старонка круга&#39;s радыус',\n ellipse_cx: 'Змены эліпса CX каардынаты',\n ellipse_cy: 'Змены эліпса CY каардынаты',\n ellipse_rx: 'Х змяненні эліпса радыюсам',\n ellipse_ry: 'Змены у эліпса радыюсам',\n line_x1: 'Змены лінія пачынае каардынаты х',\n line_x2: 'Змяненне за перыяд, скончыўся лінія каардынаты х',\n line_y1: 'Змены лінія пачынае Y каардынаты',\n line_y2: 'Змяненне за перыяд, скончыўся лінія Y каардынаты',\n rect_height: 'Змены прастакутнік вышынёй',\n rect_width: 'Змяненне шырыні прамавугольніка',\n corner_radius: 'Змены прастакутнік Corner Radius',\n image_width: 'Змены шырыня выявы',\n image_height: 'Змена вышыні выявы',\n image_url: 'Змяніць URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Змяненне зместу тэксту',\n font_family_label: 'Font:',\n font_family: 'Змены Сямейства шрыфтоў',\n font_size: 'Змяніць памер шрыфта',\n bold: 'Тоўсты тэкст',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Нахілены тэкст',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Змяненне колеру фону / непразрыстасць',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Па памеры ўтрымання',\n fit_to_all: 'Па памеру ўсе змесціва',\n fit_to_canvas: 'Памер палатна',\n fit_to_layer_content: 'По размеру слой ўтрымання',\n fit_to_sel: 'Выбар памеру',\n align_relative_to: 'Выраўнаваць па дачыненні да ...',\n relativeTo: 'па параўнанні з:',\n page: 'старонка',\n largest_object: 'найбуйнейшы аб&#39;ект',\n selected_objects: 'выбранымі аб&#39;ектамі',\n smallest_object: 'маленькі аб&#39;ект',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Лінаваць па ніжнім краю',\n align_center: 'Лінаваць па цэнтру',\n align_left: 'Па левым краю',\n align_middle: 'Выраўнаваць Блізкага',\n align_right: 'Па правым краю',\n align_top: 'Лінаваць па верхнім краю',\n mode_select: 'Выберыце інструмент',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Свабоднай рукі Прастакутнік',\n mode_ellipse: 'Эліпс',\n mode_circle: 'Круг',\n mode_fhellipse: 'Свабоднай рукі Эліпс',\n mode_path: 'Poly Tool',\n mode_text: 'Тэкст Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Адмяніць',\n redo: 'Паўтор',\n tool_source: 'Змяніць зыходны',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Група элементаў',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Элементы Разгруппировать',\n docprops: 'Уласцівасці дакумента',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Перамясціць уніз',\n move_top: 'Перамясціць угару',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Захаваць',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Выдаліць слой',\n move_down: 'Перамясціць слой на',\n new: 'Новы слой',\n rename: 'Перайменаваць Слой',\n move_up: 'Перамяшчэнне слоя да',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Выберыце прадвызначэньні:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'bg',\n dir: 'ltr',\n common: {\n ok: 'Спасявам',\n cancel: 'Отказ',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Кликнете, за да промени попълнете цвят, на смени, кликнете да променят цвета си удар',\n zoom_level: 'Промяна на ниво на мащабиране',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Промяна попълнете цвят',\n stroke_color: 'Промяна на инсулт цвят',\n stroke_style: 'Промяна на стила удар тире',\n stroke_width: 'Промяна на ширината инсулт',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Промяна ъгъл на завъртане',\n blur: 'Change gaussian blur value',\n opacity: 'Промяна на избрания елемент непрозрачност',\n circle_cx: 'CX Промяна кръг на координатната',\n circle_cy: 'Промяна кръг&#39;s CY координира',\n circle_r: 'Промяна кръг радиус',\n ellipse_cx: 'Промяна на елипса&#39;s CX координира',\n ellipse_cy: 'Промяна на елипса&#39;s CY координира',\n ellipse_rx: 'Промяна на елипса&#39;s X радиус',\n ellipse_ry: 'Промяна на елипса&#39;s Y радиус',\n line_x1: 'Промяна на линия, започваща х координира',\n line_x2: 'Промяна на линията приключва х координира',\n line_y1: 'Промяна линия, започваща Y координира',\n line_y2: 'Промяна на линията приключва Y координира',\n rect_height: 'Промяна на правоъгълник височина',\n rect_width: 'Промяна на правоъгълник ширина',\n corner_radius: 'Промяна на правоъгълник Corner Radius',\n image_width: 'Промяна на изображението ширина',\n image_height: 'Промяна на изображението височина',\n image_url: 'Промяна на URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Промяна на текст съдържание',\n font_family_label: 'Font:',\n font_family: 'Промяна на шрифта Семейство',\n font_size: 'Промени размера на буквите',\n bold: 'Получер текст',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Курсив текст',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Промяна на цвета на фона / непрозрачност',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit към съдържание',\n fit_to_all: 'Побери цялото съдържание',\n fit_to_canvas: 'Fit на платно',\n fit_to_layer_content: 'Fit да слой съдържание',\n fit_to_sel: 'Fit за подбор',\n align_relative_to: 'Привеждане в сравнение с ...',\n relativeTo: 'в сравнение с:',\n page: 'страница',\n largest_object: 'най-големият обект',\n selected_objects: 'избраните обекти',\n smallest_object: 'най-малката обект',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Привеждане Отдолу',\n align_center: 'Подравняване в средата',\n align_left: 'Подравняване вляво',\n align_middle: 'Привеждане в Близкия',\n align_right: 'Подравняване надясно',\n align_top: 'Привеждане Топ',\n mode_select: 'Select Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Свободен Употребявани правоъгълник',\n mode_ellipse: 'Елипса',\n mode_circle: 'Кръгът',\n mode_fhellipse: 'Свободен Употребявани Елипса',\n mode_path: 'Поли Tool',\n mode_text: 'Текст Оръдие',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Отмени',\n redo: 'Възстановяване',\n tool_source: 'Редактиране Източник',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Група Елементи',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Разгрупирай Елементи',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Премести надолу',\n move_top: 'Премести в началото',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Спасявам',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Изтриване на слой',\n move_down: 'Move слой надолу',\n new: 'Нов слой',\n rename: 'Преименуване Layer',\n move_up: 'Move Up Layer',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Изберете предварително:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'ca',\n dir: 'ltr',\n common: {\n ok: 'Salvar',\n cancel: 'Cancel',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Feu clic per canviar el color de farciment, shift-clic per canviar el color del traç',\n zoom_level: 'Canviar el nivell de zoom',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Canviar el color de farciment',\n stroke_color: 'Canviar el color del traç',\n stroke_style: 'Canviar estil de traç guió',\n stroke_width: 'Canviar l&#39;amplada del traç',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Canviar l&#39;angle de rotació',\n blur: 'Change gaussian blur value',\n opacity: 'Canviar la opacitat tema seleccionat',\n circle_cx: 'CX cercle Canvi de coordenades',\n circle_cy: 'Cercle Canvi CY coordinar',\n circle_r: 'Ràdio de cercle Canvi',\n ellipse_cx: 'Canviar lipse CX coordinar',\n ellipse_cy: 'Lipse Canvi CY coordinar',\n ellipse_rx: 'Ràdio x lipse Canvi',\n ellipse_ry: 'Ràdio i lipse Canvi',\n line_x1: 'Canviar la línia de partida de la coordenada x',\n line_x2: 'Canviar la línia d&#39;hores de coordenada x',\n line_y1: 'Canviar la línia de partida i de coordinar',\n line_y2: 'Canviar la línia d&#39;hores de coordenada',\n rect_height: 'Rectangle d&#39;alçada Canvi',\n rect_width: 'Ample rectangle Canvi',\n corner_radius: 'Canviar Rectangle Corner Radius',\n image_width: 'Amplada de la imatge Canvi',\n image_height: 'Canviar l&#39;altura de la imatge',\n image_url: 'Canviar URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Contingut del text',\n font_family_label: 'Font:',\n font_family: 'Canviar la font Família',\n font_size: 'Change Font Size',\n bold: 'Text en negreta',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Text en cursiva',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Color de fons / opacitat',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Ajustar al contingut',\n fit_to_all: 'Ajustar a tot el contingut',\n fit_to_canvas: 'Ajustar a la lona',\n fit_to_layer_content: 'Ajustar al contingut de la capa d&#39;',\n fit_to_sel: 'Ajustar a la selecció',\n align_relative_to: 'Alinear pel que fa a ...',\n relativeTo: 'en relació amb:',\n page: 'Pàgina',\n largest_object: 'objecte més gran',\n selected_objects: 'objectes escollits',\n smallest_object: 'objecte més petit',\n new_doc: 'Nova imatge',\n open_doc: 'Obrir imatge',\n export_img: 'Export',\n save_doc: 'Guardar imatge',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Alinear baix',\n align_center: 'Alinear al centre',\n align_left: 'Alinear a l&#39;esquerra',\n align_middle: 'Alinear Medi',\n align_right: 'Alinear a la dreta',\n align_top: 'Alinear a dalt',\n mode_select: 'Eina de selecció',\n mode_fhpath: 'Eina Llapis',\n mode_line: 'L&#39;eina',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rectangle',\n mode_ellipse: 'Lipse',\n mode_circle: 'Cercle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Eina de text',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Desfés',\n redo: 'Refer',\n tool_source: 'Font Edita',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Elements de Grup de',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Desagrupar elements',\n docprops: 'Propietats del document',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Mou al final',\n move_top: 'Mou al principi',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Salvar',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Eliminar capa',\n move_down: 'Mou la capa de Down',\n new: 'Nova capa',\n rename: 'Canvieu el nom de la capa',\n move_up: 'Mou la capa Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Seleccioneu predefinides:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'cs',\n dir: 'ltr',\n common: {\n ok: 'Uložit',\n cancel: 'Storno',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'šipka dolů',\n key_up: 'šipka nahoru',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Běží na'\n },\n ui: {\n toggle_stroke_tools: 'Zobrazit/schovat více možností',\n palette_info: 'Kliknutím změníte barvu výplně, kliknutím současně s klávesou shift změníte barvu čáry',\n zoom_level: 'Změna přiblížení',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Změnit ID elementu',\n fill_color: 'Změnit barvu výplně',\n stroke_color: 'Změnit barvu čáry',\n stroke_style: 'Změnit styl čáry',\n stroke_width: 'Změnit šířku čáry',\n pos_x: 'Změnit souřadnici X',\n pos_y: 'Změnit souřadnici Y',\n linecap_butt: 'Konec úsečky: přesný',\n linecap_round: 'Konec úsečky: zaoblený',\n linecap_square: 'Konec úsečky: s čtvercovým přesahem',\n linejoin_bevel: 'Styl napojení úseček: zkosené',\n linejoin_miter: 'Styl napojení úseček: ostré',\n linejoin_round: 'Styl napojení úseček: oblé',\n angle: 'Změnit úhel natočení',\n blur: 'Změnit rozostření',\n opacity: 'Změnit průhlednost objektů',\n circle_cx: 'Změnit souřadnici X středu kružnice',\n circle_cy: 'Změnit souřadnici Y středu kružnice',\n circle_r: 'Změnit poloměr kružnice',\n ellipse_cx: 'Změnit souřadnici X středu elipsy',\n ellipse_cy: 'Změnit souřadnici Y středu elipsy',\n ellipse_rx: 'Změnit poloměr X elipsy',\n ellipse_ry: 'Změnit poloměr Y elipsy',\n line_x1: 'Změnit počáteční souřadnici X úsečky',\n line_x2: 'Změnit koncovou souřadnici X úsečky',\n line_y1: 'Změnit počáteční souřadnici Y úsečky',\n line_y2: 'Změnit koncovou souřadnici X úsečky',\n rect_height: 'Změnit výšku obdélníku',\n rect_width: 'Změnit šířku obdélníku',\n corner_radius: 'Změnit zaoblení obdélníku',\n image_width: 'Změnit šířku dokumentu',\n image_height: 'Změnit výšku dokumentu',\n image_url: 'Změnit adresu URL',\n node_x: 'Změnit souřadnici X uzlu',\n node_y: 'Změnit souřadnici Y uzlu',\n seg_type: 'Změnit typ segmentu',\n straight_segments: 'úsečka',\n curve_segments: 'křivka',\n text_contents: 'Změnit text',\n font_family_label: 'Font:',\n font_family: 'Změnit font',\n font_size: 'Změnit velikost písma',\n bold: 'Tučně',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Kurzíva',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Hlavní menu',\n bkgnd_color_opac: 'Změnit barvu a průhlednost pozadí',\n connector_no_arrow: 'Bez šipky',\n fitToContent: 'přizpůsobit obsahu',\n fit_to_all: 'Přizpůsobit veškerému obsahu',\n fit_to_canvas: 'Přizpůsobit stránce',\n fit_to_layer_content: 'Přizpůsobit obsahu vrstvy',\n fit_to_sel: 'Přizpůsobit výběru',\n align_relative_to: 'Zarovnat relativně',\n relativeTo: 'relatativně k:',\n page: 'stránce',\n largest_object: 'největšímu objektu',\n selected_objects: 'zvoleným objektům',\n smallest_object: 'nejmenšímu objektu',\n new_doc: 'Nový dokument',\n open_doc: 'Otevřít dokument',\n export_img: 'Export',\n save_doc: 'Uložit dokument',\n import_doc: 'Importovat SVG',\n align_to_page: 'Zarovnat element na stránku',\n align_bottom: 'Zarovnat dolů',\n align_center: 'Zarovnat nastřed',\n align_left: 'Zarovnat doleva',\n align_middle: 'Zarovnat nastřed',\n align_right: 'Zarovnat doprava',\n align_top: 'Zarovnat nahoru',\n mode_select: 'Výběr a transformace objektů',\n mode_fhpath: 'Kresba od ruky',\n mode_line: 'Úsečka',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Obdélník volnou rukou',\n mode_ellipse: 'Elipsa',\n mode_circle: 'Kružnice',\n mode_fhellipse: 'Elipsa volnou rukou',\n mode_path: 'Křivka',\n mode_text: 'Text',\n mode_image: 'Obrázek',\n mode_zoom: 'Přiblížení',\n no_embed: 'POZOR: Obrázek nelze uložit s dokumentem. Bude zobrazován z adresáře, kde se nyní nachází.',\n undo: 'Zpět',\n redo: 'Znovu',\n tool_source: 'Upravovat SVG kód',\n wireframe_mode: 'Zobrazit jen kostru',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Seskupit objekty',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Objekt na křivku',\n reorient_path: 'Změna orientace křivky',\n ungroup: 'Zrušit seskupení',\n docprops: 'Vlastnosti dokumentu',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Vrstvu úplně dospodu',\n move_top: 'Vrstvu úplně nahoru',\n node_clone: 'Vložit nový uzel',\n node_delete: 'Ostranit uzel',\n node_link: 'Provázat ovládací body uzlu',\n add_subpath: 'Přidat další součást křivky',\n openclose_path: 'Otevřít/zavřít součást křivky',\n source_save: 'Uložit',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Vrstva',\n layers: 'Layers',\n del: 'Odstranit vrstvu',\n move_down: 'Přesunout vrstvu níž',\n new: 'Přidat vrstvu',\n rename: 'Přejmenovat vrstvu',\n move_up: 'Přesunout vrstvu výš',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Přesunout objekty do:',\n move_selected: 'Přesunout objekty do jiné vrstvy'\n },\n config: {\n image_props: 'Vlastnosti dokumentu',\n doc_title: 'Název',\n doc_dims: 'Vlastní velikost',\n included_images: 'Vložené obrázky',\n image_opt_embed: 'Vkládat do dokumentu',\n image_opt_ref: 'Jen odkazem',\n editor_prefs: 'Nastavení editoru',\n language: 'Jazyk',\n background: 'Obrázek v pozadí editoru',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Pozor: obrázek v pozadí nebude uložen jako součást dokumentu.',\n select_predefined: 'vybrat předdefinovaný:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Nevhodná hodnota',\n noContentToFitTo: 'Vyberte oblast pro přizpůsobení',\n dupeLayerName: 'Taková vrstva už bohužel existuje',\n enterUniqueLayerName: 'Zadejte prosím jedinečné jméno pro vrstvu',\n enterNewLayerName: 'Zadejte prosím jméno pro novou vrstvu',\n layerHasThatName: 'Vrstva už se tak jmenuje',\n QmoveElemsToLayer: \"Opravdu chcete přesunout vybrané objekty do vrstvy '%s'?\",\n QwantToClear: 'Opravdu chcete smazat současný dokument?\\nHistorie změn bude také smazána.',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'Chyba v parsování zdrojového kódu SVG.\\nChcete se vrátit k původnímu?',\n QignoreSourceChanges: 'Opravdu chcete stornovat změny provedené v SVG kódu?',\n featNotSupported: 'Tato vlastnost ještě není k dispozici',\n enterNewImgURL: 'Vložte adresu URL, na které se nachází vkládaný obrázek',\n defsFailOnSave: 'POZOR: Kvůli nedokonalosti Vašeho prohlížeče se mohou některé části dokumentu špatně vykreslovat (mohou chybět barevné přechody nebo některé objekty). Po uložení dokumentu by se ale vše mělo zobrazovat správně.',\n loadingImage: 'Nahrávám obrázek ...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Mohou se vyskytnout následující problémy: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'cy',\n dir: 'ltr',\n common: {\n ok: 'Cadw',\n cancel: 'Canslo',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Cliciwch yma i lenwi newid lliw, sifft-cliciwch i newid lliw strôc',\n zoom_level: 'Newid lefel chwyddo',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Newid lliw llenwi',\n stroke_color: 'Newid lliw strôc',\n stroke_style: 'Newid arddull strôc diferyn',\n stroke_width: 'Lled strôc Newid',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Ongl cylchdro Newid',\n blur: 'Change gaussian blur value',\n opacity: 'Newid dewis Didreiddiad eitem',\n circle_cx: 'CX Newid cylch yn cydlynu',\n circle_cy: 'Newid cylch&#39;s cy gydgysylltu',\n circle_r: 'Newid radiws cylch yn',\n ellipse_cx: 'Newid Ellipse yn CX gydgysylltu',\n ellipse_cy: 'Newid Ellipse yn cydlynu cy',\n ellipse_rx: 'Radiws Newid Ellipse&#39;s x',\n ellipse_ry: 'Radiws Newid Ellipse yn y',\n line_x1: 'Newid llinell yn cychwyn x gydgysylltu',\n line_x2: 'Newid llinell yn diweddu x gydgysylltu',\n line_y1: 'Newid llinell ar y cychwyn yn cydlynu',\n line_y2: 'Newid llinell yn dod i ben y gydgysylltu',\n rect_height: 'Uchder petryal Newid',\n rect_width: 'Lled petryal Newid',\n corner_radius: 'Newid Hirsgwâr Corner Radiws',\n image_width: 'Lled delwedd Newid',\n image_height: 'Uchder delwedd Newid',\n image_url: 'Newid URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Cynnwys testun Newid',\n font_family_label: 'Font:',\n font_family: 'Newid Font Teulu',\n font_size: 'Newid Maint Ffont',\n bold: 'Testun Bras',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italig Testun',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Newid lliw cefndir / Didreiddiad',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Ffit i Cynnwys',\n fit_to_all: 'Yn addas i bawb content',\n fit_to_canvas: 'Ffit i ofyn',\n fit_to_layer_content: 'Ffit cynnwys haen i',\n fit_to_sel: 'Yn addas at ddewis',\n align_relative_to: 'Alinio perthynas i ...',\n relativeTo: 'cymharol i:',\n page: 'tudalen',\n largest_object: 'gwrthrych mwyaf',\n selected_objects: 'gwrthrychau etholedig',\n smallest_object: 'lleiaf gwrthrych',\n new_doc: 'Newydd Delwedd',\n open_doc: 'Delwedd Agored',\n export_img: 'Export',\n save_doc: 'Cadw Delwedd',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Alinio Gwaelod',\n align_center: 'Alinio Center',\n align_left: 'Alinio Chwith',\n align_middle: 'Alinio Canol',\n align_right: 'Alinio Hawl',\n align_top: 'Alinio Top',\n mode_select: 'Dewiswch Offer',\n mode_fhpath: 'Teclyn pensil',\n mode_line: 'Llinell Offer',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Hand rhad ac am ddim Hirsgwâr',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Cylch',\n mode_fhellipse: 'Rhad ac am ddim Hand Ellipse',\n mode_path: 'Offer poly',\n mode_text: 'Testun Offer',\n mode_image: 'Offer Delwedd',\n mode_zoom: 'Offer Chwyddo',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Dadwneud',\n redo: 'Ail-wneud',\n tool_source: 'Golygu Ffynhonnell',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Elfennau Grŵp',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Elfennau Ungroup',\n docprops: 'Document Eiddo',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Symud i&#39;r Gwaelod',\n move_top: 'Symud i&#39;r Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Cadw',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Dileu Haen',\n move_down: 'Symud Haen i Lawr',\n new: 'Haen Newydd',\n rename: 'Ail-enwi Haen',\n move_up: 'Symud Haen Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Rhagosodol Dewis:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'da',\n dir: 'ltr',\n common: {\n ok: 'Gemme',\n cancel: 'Annuller',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Klik for at ændre fyldfarve, shift-klik for at ændre stregfarve',\n zoom_level: 'Skift zoomniveau',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Skift fyldfarve',\n stroke_color: 'Skift stregfarve',\n stroke_style: 'Skift slagtilfælde Dash stil',\n stroke_width: 'Skift slagtilfælde bredde',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Skift rotationsvinkel',\n blur: 'Change gaussian blur value',\n opacity: 'Skift valgte element opacitet',\n circle_cx: 'Skift cirklens cx koordinere',\n circle_cy: 'Skift cirklens cy koordinere',\n circle_r: 'Skift cirklens radius',\n ellipse_cx: 'Skift ellipse&#39;s cx koordinere',\n ellipse_cy: 'Skift ellipse&#39;s cy koordinere',\n ellipse_rx: 'Skift ellipse&#39;s x radius',\n ellipse_ry: 'Skift ellipse&#39;s y radius',\n line_x1: 'Skift linie&#39;s start x-koordinat',\n line_x2: 'Skift Line&#39;s slutter x-koordinat',\n line_y1: 'Skift linjens start y-koordinat',\n line_y2: 'Skift Line&#39;s slutter y-koordinat',\n rect_height: 'Skift rektangel højde',\n rect_width: 'Skift rektanglets bredde',\n corner_radius: 'Skift Rektangel Corner Radius',\n image_width: 'Skift billede bredde',\n image_height: 'Skift billede højde',\n image_url: 'Skift webadresse',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Skift tekst indhold',\n font_family: 'Skift Font Family',\n font_size: 'Skift skriftstørrelse',\n bold: 'Fed tekst',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Skift baggrundsfarve / uigennemsigtighed',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Tilpas til indhold',\n fit_to_all: 'Passer til alt indhold',\n fit_to_canvas: 'Tilpas til lærred',\n fit_to_layer_content: 'Tilpas til lag indhold',\n fit_to_sel: 'Tilpas til udvælgelse',\n align_relative_to: 'Juster i forhold til ...',\n relativeTo: 'i forhold til:',\n page: 'side',\n largest_object: 'største objekt',\n selected_objects: 'valgte objekter',\n smallest_object: 'mindste objekt',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Juster Bottom',\n align_center: 'Centrer',\n align_left: 'Venstrejusteret',\n align_middle: 'Juster Mellemøsten',\n align_right: 'Højrejusteret',\n align_top: 'Juster Top',\n mode_select: 'Select Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rektangel',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Cirkel',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Tekstværktøj',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Fortryd',\n redo: 'Redo',\n tool_source: 'Edit Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Gruppe Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Opdel Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Flyt til bund',\n move_top: 'Flyt til toppen',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Gemme',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Slet Layer',\n move_down: 'Flyt lag ned',\n new: 'New Layer',\n rename: 'Omdøb Layer',\n move_up: 'Flyt Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Vælg foruddefinerede:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'de',\n dir: 'ltr',\n common: {\n ok: 'OK',\n cancel: 'Abbrechen',\n key_backspace: 'Rücktaste',\n key_del: 'Löschen',\n key_down: 'nach unten',\n key_up: 'nach oben',\n more_opts: 'Mehr Optionen',\n url: 'URL',\n width: 'Breite',\n height: 'Höhe'\n },\n misc: {\n powered_by: 'powered by'\n },\n ui: {\n toggle_stroke_tools: 'Zeige/Verberge weitere Linien-Werkzeuge',\n palette_info: 'Klick zum Ändern der Füllfarbe, Shift-Klick zum Ändern der Linienfarbe',\n zoom_level: 'vergrößern',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Element identifizieren',\n fill_color: 'Füllfarbe ändern',\n stroke_color: 'Linienfarbe ändern',\n stroke_style: 'Linienstil ändern',\n stroke_width: 'Linienbreite ändern',\n pos_x: 'Ändere die X-Koordinate',\n pos_y: 'Ändere die Y-Koordinate',\n linecap_butt: 'Form der Linienendung: Stumpf',\n linecap_round: 'Form der Linienendung: Rund',\n linecap_square: 'Form der Linienendung: Rechteckig',\n linejoin_bevel: 'Zusammentreffen von zwei Linien: abgeschrägte Kante',\n linejoin_miter: 'Zusammentreffen von zwei Linien: Gehrung',\n linejoin_round: 'Zusammentreffen von zwei Linien: Rund',\n angle: 'Drehwinkel ändern',\n blur: 'Ändere Wert des Gaußschen Weichzeichners',\n opacity: 'Opazität des ausgewählten Objekts ändern',\n circle_cx: 'Kreiszentrum (cx) ändern',\n circle_cy: 'Kreiszentrum (cy) ändern',\n circle_r: 'Kreisradius (r) ändern',\n ellipse_cx: 'Ellipsenzentrum (cx) ändern',\n ellipse_cy: 'Ellipsenzentrum (cy) ändern',\n ellipse_rx: 'Ellipsenradius (x) ändern',\n ellipse_ry: 'Ellipsenradius (y) ändern',\n line_x1: 'X-Koordinate des Linienanfangs ändern',\n line_x2: 'X-Koordinate des Linienendes ändern',\n line_y1: 'Y-Koordinate des Linienanfangs ändern',\n line_y2: 'Y-Koordinate des Linienendes ändern',\n rect_height: 'Höhe des Rechtecks ändern',\n rect_width: 'Breite des Rechtecks ändern',\n corner_radius: 'Eckenradius des Rechtecks ändern',\n image_width: 'Bildbreite ändern',\n image_height: 'Bildhöhe ändern',\n image_url: 'URL ändern',\n node_x: 'Ändere die X-Koordinate des Knoten',\n node_y: 'Ändere die Y-Koordinate des Knoten',\n seg_type: 'Ändere den Typ des Segments',\n straight_segments: 'Gerade',\n curve_segments: 'Kurve',\n text_contents: 'Textinhalt erstellen und bearbeiten',\n font_family_label: 'Font:',\n font_family: 'Schriftart wählen',\n font_size: 'Schriftgröße einstellen',\n bold: 'Fetter Text',\n text_decoration_underline: 'Unterstrichen',\n text_decoration_linethrough: 'Durchgestrichen',\n text_decoration_overline: 'Überstrichen',\n italic: 'Kursiver Text',\n text_anchor_start: 'Den Text linksbündig ausrichten',\n text_anchor_middle: 'Den Text zentriert ausrichten',\n text_anchor_end: 'Den Text rechtsbündig ausrichten',\n text_letter_spacing: 'Den Abstand zwischen den Buchstaben anpassen',\n text_word_spacing: 'Den Abstand zwischen den Wörtern anpassen',\n text_length: 'Die Breite, in dem der Text gezeichnet wird',\n text_length_adjust: 'Länge anpassen',\n text_length_adjust_spacing: 'Leerzeichen',\n text_length_adjust_spacing_and_glyphs: 'Leerzeichen & Buchstaben',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Hauptmenü',\n bkgnd_color_opac: 'Hintergrundfarbe ändern / Opazität',\n connector_no_arrow: 'Kein Pfeil',\n fitToContent: 'An den Inhalt anpassen',\n fit_to_all: 'An gesamten Inhalt anpassen',\n fit_to_canvas: 'An die Zeichenfläche anpassen',\n fit_to_layer_content: 'An Inhalt der Ebene anpassen',\n fit_to_sel: 'An die Auswahl anpassen',\n align_relative_to: 'Relativ zu einem anderem Objekt ausrichten …',\n relativeTo: 'im Vergleich zu:',\n page: 'Seite',\n largest_object: 'größtes Objekt',\n selected_objects: 'gewählte Objekte',\n smallest_object: 'kleinstes Objekt',\n new_doc: 'Neues Bild',\n open_doc: 'Bild öffnen',\n export_img: 'Export',\n save_doc: 'Bild speichern',\n import_doc: 'Importiere SVG',\n align_to_page: 'Element an Seite ausrichten',\n align_bottom: 'Unten ausrichten',\n align_center: 'Zentriert ausrichten',\n align_left: 'Linksbündig ausrichten',\n align_middle: 'In der Mitte ausrichten',\n align_right: 'Rechtsbündig ausrichten',\n align_top: 'Oben ausrichten',\n mode_select: 'Objekte auswählen und verändern',\n mode_fhpath: 'Freihandlinien zeichnen',\n mode_line: 'Linien zeichnen',\n mode_rect: 'Rechteck-Werkzeug',\n mode_square: 'Quadrat-Werkzeug',\n mode_fhrect: 'Freihand-Rechteck',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Kreis',\n mode_fhellipse: 'Freihand-Ellipse',\n mode_path: 'Pfad zeichnen',\n mode_text: 'Text erstellen und bearbeiten',\n mode_image: 'Bild einfügen',\n mode_zoom: 'Zoomfaktor vergrößern oder verringern',\n no_embed: 'Hinweis: Dieses Bild kann nicht eingebettet werden. Eine Anzeige hängt von diesem Pfad ab.',\n undo: 'Rückgängig',\n redo: 'Wiederherstellen',\n tool_source: 'Quellcode bearbeiten',\n wireframe_mode: 'Drahtmodell-Modus',\n clone: 'Element(e) klonen',\n del: 'Element(e) löschen',\n group_elements: 'Element(e) gruppieren',\n make_link: 'Link erstellen',\n set_link_url: 'Link setzen (leer lassen zum Entfernen)',\n to_path: 'Gewähltes Objekt in einen Pfad konvertieren',\n reorient_path: 'Neuausrichtung des Pfades',\n ungroup: 'Gruppierung aufheben',\n docprops: 'Dokument-Eigenschaften',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Die gewählten Objekte nach ganz unten verschieben',\n move_top: 'Die gewählten Objekte nach ganz oben verschieben',\n node_clone: 'Klone den Knoten',\n node_delete: 'Lösche den Knoten',\n node_link: 'Gekoppelte oder separate Kontrollpunkte für die Bearbeitung des Pfades',\n add_subpath: 'Teilpfad hinzufügen',\n openclose_path: 'Öffne/Verbinde Unterpfad',\n source_save: 'Änderungen akzeptieren',\n cut: 'Ausschneiden',\n copy: 'Kopieren',\n paste: 'Einfügen',\n paste_in_place: 'Bei Originalposition einfügen',\n delete: 'Löschen',\n group: 'Gruppieren',\n move_front: 'Nach ganz oben verschieben',\n move_up: 'Hochschieben',\n move_down: 'Herunterschieben',\n move_back: 'Nach ganz unten verschieben',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Ebene',\n layers: 'Ebenen',\n del: 'Ebene löschen',\n move_down: 'Ebene nach unten verschieben',\n new: 'Neue Ebene',\n rename: 'Ebene umbenennen',\n move_up: 'Ebene nach oben verschieben',\n dupe: 'Ebene duplizieren',\n merge_down: 'Nach unten zusammenführen',\n merge_all: 'Alle zusammenführen',\n move_elems_to: 'Verschiebe ausgewählte Objekte:',\n move_selected: 'Verschiebe ausgewählte Objekte auf eine andere Ebene'\n },\n config: {\n image_props: 'Bildeigenschaften',\n doc_title: 'Titel',\n doc_dims: 'Dimension der Zeichenfläche',\n included_images: 'Eingefügte Bilder',\n image_opt_embed: 'Daten einbetten (lokale Dateien)',\n image_opt_ref: 'Benutze die Dateireferenz',\n editor_prefs: 'Editor-Einstellungen',\n language: 'Sprache',\n background: 'Editor-Hintergrund',\n editor_img_url: 'Bild-URL',\n editor_bg_note: 'Anmerkung: Der Hintergrund wird mit dem Bild nicht gespeichert.',\n select_predefined: 'Auswahl einer vordefinierten:',\n units_and_rulers: 'Einheiten und Lineale',\n show_rulers: 'Zeige Lineale',\n base_unit: 'Basiseinheit:',\n grid: 'Gitternetz',\n snapping_onoff: 'Einrasten an/aus',\n snapping_stepsize: 'Einrastabstand:',\n grid_color: 'Gitterfarbe',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Fehlerhafter Wert',\n noContentToFitTo: 'Kein Inhalt anzupassen',\n dupeLayerName: 'Eine Ebene hat bereits diesen Namen',\n enterUniqueLayerName: 'Verwenden Sie einen eindeutigen Namen für die Ebene',\n enterNewLayerName: 'Geben Sie bitte einen neuen Namen für die Ebene ein',\n layerHasThatName: 'Eine Ebene hat bereits diesen Namen',\n QmoveElemsToLayer: \"Verschiebe ausgewählte Objekte in die Ebene '%s'?\",\n QwantToClear: 'Möchten Sie die Zeichnung löschen?\\nDadurch wird auch die Rückgängig-Funktion zurückgesetzt!',\n QwantToOpen: 'Möchten Sie eine neue Datei öffnen?\\nDadurch wird auch die Rückgängig-Funktion zurückgesetzt!',\n QerrorsRevertToSource: 'Es gibt Parser-Fehler in der SVG-Quelle.\\nDie Original-SVG wiederherstellen?',\n QignoreSourceChanges: 'Sollen die Änderungen an der SVG-Quelle ignoriert werden?',\n featNotSupported: 'Diese Eigenschaft wird nicht unterstützt',\n enterNewImgURL: 'Geben Sie die URL für das neue Bild an',\n defsFailOnSave: 'Hinweis: Aufgrund eines Fehlers in Ihrem Browser kann dieses Bild falsch angezeigt werden (fehlende Gradienten oder Elemente). Es wird jedoch richtig angezeigt, sobald es gespeichert wird.',\n loadingImage: 'Bild wird geladen, bitte warten ...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Beachten Sie außerdem die folgenden Probleme: ',\n unsavedChanges: 'Es sind nicht-gespeicherte Änderungen vorhanden.',\n enterNewLinkURL: 'Geben Sie die neue URL ein',\n errorLoadingSVG: 'Fehler: Kann SVG-Daten nicht laden',\n URLLoadFail: 'Kann von dieser URL nicht laden',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'el',\n dir: 'ltr',\n common: {\n ok: 'Αποθηκεύω',\n cancel: 'Άκυρο',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Κάντε κλικ για να συμπληρώσετε την αλλαγή χρώματος, στροφή κλικ για να αλλάξετε το χρώμα εγκεφαλικό',\n zoom_level: 'Αλλαγή επίπεδο μεγέθυνσης',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Αλλαγή συμπληρώστε χρώμα',\n stroke_color: 'Αλλαγή χρώματος εγκεφαλικό',\n stroke_style: 'Αλλαγή στυλ παύλα εγκεφαλικό',\n stroke_width: 'Αλλαγή πλάτος γραμμής',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Αλλαγή γωνία περιστροφής',\n blur: 'Change gaussian blur value',\n opacity: 'Αλλαγή αδιαφάνεια επιλεγμένο σημείο',\n circle_cx: 'Cx Αλλαγή κύκλου συντονίζουν',\n circle_cy: 'Αλλαγή κύκλου cy συντονίζουν',\n circle_r: 'Αλλαγή ακτίνα κύκλου',\n ellipse_cx: 'Αλλαγή ellipse του CX συντονίζουν',\n ellipse_cy: 'Αλλαγή ellipse του cy συντονίζουν',\n ellipse_rx: 'X ακτίνα Αλλαγή ellipse του',\n ellipse_ry: 'Y ακτίνα Αλλαγή ellipse του',\n line_x1: 'Αλλαγή γραμμής εκκίνησης x συντονίζουν',\n line_x2: 'Αλλαγή γραμμής λήγει x συντονίζουν',\n line_y1: 'Αλλαγή γραμμής εκκίνησης y συντονίζουν',\n line_y2: 'Αλλαγή γραμμής λήγει y συντονίζουν',\n rect_height: 'Αλλαγή ύψος ορθογωνίου',\n rect_width: 'Αλλαγή πλάτους ορθογώνιο',\n corner_radius: 'Αλλαγή ορθογώνιο Corner Radius',\n image_width: 'Αλλαγή πλάτος εικόνας',\n image_height: 'Αλλαγή ύψος εικόνας',\n image_url: 'Αλλαγή URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Αλλαγή περιεχόμενο κειμένου',\n font_family_label: 'Font:',\n font_family: 'Αλλαγή γραμματοσειράς Οικογένεια',\n font_size: 'Αλλαγή μεγέθους γραμματοσειράς',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Πλάγιους',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Αλλαγή χρώματος φόντου / αδιαφάνεια',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Ταιριάζει σε όλο το περιεχόμενο',\n fit_to_canvas: 'Προσαρμογή στο μουσαμά',\n fit_to_layer_content: 'Προσαρμογή στο περιεχόμενο στρώμα',\n fit_to_sel: 'Fit to επιλογή',\n align_relative_to: 'Στοίχιση σε σχέση με ...',\n relativeTo: 'σε σχέση με:',\n page: 'σελίδα',\n largest_object: 'μεγαλύτερο αντικείμενο',\n selected_objects: 'εκλέγεται αντικείμενα',\n smallest_object: 'μικρότερο αντικείμενο',\n new_doc: 'Νέα εικόνα',\n open_doc: 'Άνοιγμα εικόνας',\n export_img: 'Export',\n save_doc: 'Αποθήκευση εικόνας',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Στοίχισηκάτω',\n align_center: 'Στοίχισηστοκέντρο',\n align_left: 'Στοίχισηαριστερά',\n align_middle: 'Ευθυγράμμιση Μέση',\n align_right: 'Στοίχισηδεξιά',\n align_top: 'Στοίχισηπάνω',\n mode_select: 'Select Tool',\n mode_fhpath: 'Εργαλείομολυβιού',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Δωρεάν-Hand ορθογώνιο',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Κύκλος',\n mode_fhellipse: 'Δωρεάν-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Κείμενο Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Αναίρεση',\n redo: 'Redo',\n tool_source: 'Επεξεργασία Πηγή',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Ομάδα Στοιχεία',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Κατάργηση ομαδοποίησης Στοιχεία',\n docprops: 'Ιδιότητες εγγράφου',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Μετακίνηση προς τα κάτω',\n move_top: 'Μετακίνηση στην αρχή',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Αποθηκεύω',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Διαγραφήστρώματος',\n move_down: 'Μετακίνηση Layer Down',\n new: 'Νέο Layer',\n rename: 'Μετονομασία Layer',\n move_up: 'Μετακίνηση Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Επιλογή προκαθορισμένων:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'en',\n dir: 'ltr',\n common: {\n ok: 'OK',\n cancel: 'Cancel',\n key_backspace: 'Backspace',\n key_del: 'Del',\n key_down: 'Down',\n key_up: 'Up',\n more_opts: 'More options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Click to change fill color, shift-click to change stroke color',\n zoom_level: 'Change zoom level',\n panel: 'Panel',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Change fill color',\n stroke_color: 'Change stroke color',\n stroke_style: 'Change stroke dash style',\n stroke_width: 'Change stroke width by 1, shift-click to change by 0.1',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Change rotation angle',\n blur: 'Change gaussian blur value',\n opacity: 'Change selected item opacity',\n circle_cx: \"Change circle's cx coordinate\",\n circle_cy: \"Change circle's cy coordinate\",\n circle_r: \"Change circle's radius\",\n ellipse_cx: \"Change ellipse's cx coordinate\",\n ellipse_cy: \"Change ellipse's cy coordinate\",\n ellipse_rx: \"Change ellipse's x radius\",\n ellipse_ry: \"Change ellipse's y radius\",\n line_x1: \"Change line's starting x coordinate\",\n line_x2: \"Change line's ending x coordinate\",\n line_y1: \"Change line's starting y coordinate\",\n line_y2: \"Change line's ending y coordinate\",\n rect_height: 'Change rectangle height',\n rect_width: 'Change rectangle width',\n corner_radius: 'Change Rectangle Corner Radius',\n image_width: 'Change image width',\n image_height: 'Change image height',\n image_url: 'Change URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Change text contents',\n font_family_label: 'Font:',\n font_family: 'Change Font Family',\n font_size: 'Change Font Size',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n r_label: 'r',\n x_label: 'x',\n y_label: 'y',\n x1_label: 'x1',\n y1_label: 'y1',\n x2_label: 'x2',\n y2_label: 'y2',\n rx_label: 'rx',\n ry_label: 'ry',\n cx_label: 'cx',\n cy_label: 'cy',\n w_label: 'w',\n h_label: 'h',\n id_label: 'id',\n class_label: 'class',\n label: 'label',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Change background color/opacity',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Fit to all content',\n fit_to_canvas: 'Fit to canvas',\n fit_to_layer_content: 'Fit to layer content',\n fit_to_sel: 'Fit to selection',\n align_relative_to: 'Align relative to ...',\n relativeTo: 'relative to:',\n page: 'page',\n largest_object: 'largest object',\n selected_objects: 'selected objects',\n smallest_object: 'smallest object',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Align Center',\n align_left: 'Align Left',\n align_middle: 'Align Middle',\n align_right: 'Align Right',\n align_top: 'Align Top',\n mode_select: 'Select Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rectangle',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Text Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Undo',\n redo: 'Redo',\n tool_source: 'Edit Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Duplicate Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Group Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Send to Back',\n move_top: 'Bring to Front',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Apply Changes',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Delete Layer',\n move_down: 'Move Layer Down',\n new: 'New Layer',\n rename: 'Rename Layer',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer...',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title:',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language:',\n background: 'Editor Background',\n editor_img_url: 'Image URL:',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Select predefined:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color:',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: 'Move selected elements to layer \\'%s\\'?',\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'es',\n dir: 'ltr',\n common: {\n ok: 'OK',\n cancel: 'Cancelar',\n key_backspace: 'retroceso',\n key_del: 'suprimir',\n key_down: 'abajo',\n key_up: 'arriba',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Mostrar/ocultar herramientas de trazo adicionales',\n palette_info: 'Haga clic para cambiar el color de relleno. Pulse Mayús y haga clic para cambiar el color del contorno.',\n zoom_level: 'Cambiar el nivel de zoom',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Cambiar el color de relleno',\n stroke_color: 'Cambiar el color del contorno',\n stroke_style: 'Cambiar el estilo del trazo del contorno',\n stroke_width: 'Cambiar el grosor del contorno',\n pos_x: 'Cambiar la posición horizontal X',\n pos_y: 'Cambiar la posición vertical Y',\n linecap_butt: 'Final de la línea: en el nodo',\n linecap_round: 'Final de la línea: redondeada',\n linecap_square: 'Final de la línea: cuadrada',\n linejoin_bevel: 'Unión: biselada',\n linejoin_miter: 'Unión: recta',\n linejoin_round: 'Unión: redondeada',\n angle: 'Cambiar ángulo de rotación',\n blur: 'Ajustar desenfoque gausiano',\n opacity: 'Cambiar la opacidad del objeto seleccionado',\n circle_cx: 'Cambiar la posición horizonral CX del círculo',\n circle_cy: 'Cambiar la posición vertical CY del círculo',\n circle_r: 'Cambiar el radio del círculo',\n ellipse_cx: 'Cambiar la posición horizontal CX de la elipse',\n ellipse_cy: 'Cambiar la posición vertical CY de la elipse',\n ellipse_rx: 'Cambiar el radio horizontal X de la elipse',\n ellipse_ry: 'Cambiar el radio vertical Y de la elipse',\n line_x1: 'Cambiar la posición horizontal X del comienzo de la línea',\n line_x2: 'Cambiar la posición horizontal X del final de la línea',\n line_y1: 'Cambiar la posición vertical Y del comienzo de la línea',\n line_y2: 'Cambiar la posición vertical Y del final de la línea',\n rect_height: 'Cambiar la altura del rectángulo',\n rect_width: 'Cambiar el ancho rectángulo',\n corner_radius: 'Cambiar el radio de las esquinas del rectángulo',\n image_width: 'Cambiar el ancho de la imagen',\n image_height: 'Cambiar la altura de la imagen',\n image_url: 'Modificar URL',\n node_x: 'Cambiar la posición horizontal X del nodo',\n node_y: 'Cambiar la posición vertical Y del nodo',\n seg_type: 'Cambiar el tipo de segmento',\n straight_segments: 'Recta',\n curve_segments: 'Curva',\n text_contents: 'Modificar el texto',\n font_family_label: 'Font:',\n font_family: 'Tipo de fuente',\n font_size: 'Tamaño de la fuente',\n bold: 'Texto en negrita',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Texto en cursiva',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Menú principal',\n bkgnd_color_opac: 'Cambiar color de fondo / opacidad',\n connector_no_arrow: 'Sin flecha',\n fitToContent: 'Ajustar al contenido',\n fit_to_all: 'Ajustar a todo el contenido',\n fit_to_canvas: 'Ajustar al lienzo',\n fit_to_layer_content: 'Ajustar al contenido de la capa',\n fit_to_sel: 'Ajustar a la selección',\n align_relative_to: 'Alinear con respecto a ...',\n relativeTo: 'en relación con:',\n page: 'Página',\n largest_object: 'El objeto más grande',\n selected_objects: 'Objetos seleccionados',\n smallest_object: 'El objeto más pequeño',\n new_doc: 'Nueva imagen',\n open_doc: 'Abrir imagen',\n export_img: 'Export',\n save_doc: 'Guardar imagen',\n import_doc: 'Importar un archivo SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Alinear parte inferior',\n align_center: 'Centrar verticalmente',\n align_left: 'Alinear lado izquierdo',\n align_middle: 'Centrar horizontalmente',\n align_right: 'Alinear lado derecho',\n align_top: 'Alinear parte superior',\n mode_select: 'Herramienta de selección',\n mode_fhpath: 'Herramienta de lápiz',\n mode_line: 'Trazado de líneas',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Rectángulo a mano alzada',\n mode_ellipse: 'Elipse',\n mode_circle: 'Círculo',\n mode_fhellipse: 'Elipse a mano alzada',\n mode_path: 'Herramienta de trazado',\n mode_text: 'Insertar texto',\n mode_image: 'Insertar imagen',\n mode_zoom: 'Zoom',\n no_embed: 'NOTA: La imagen no puede ser integrada. El contenido mostrado dependerá de la imagen ubicada en esta ruta. ',\n undo: 'Deshacer',\n redo: 'Rehacer',\n tool_source: 'Editar código fuente',\n wireframe_mode: 'Modo marco de alambre',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Agrupar objetos',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convertir a trazado',\n reorient_path: 'Reorientar el trazado',\n ungroup: 'Desagrupar objetos',\n docprops: 'Propiedades del documento',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Mover abajo',\n move_top: 'Mover arriba',\n node_clone: 'Clonar nodo',\n node_delete: 'Suprimir nodo',\n node_link: 'Enlazar puntos de control',\n add_subpath: 'Añadir subtrazado',\n openclose_path: 'Open/close sub-path',\n source_save: 'Aplicar cambios',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Capa',\n layers: 'Layers',\n del: 'Suprimir capa',\n move_down: 'Mover la capa hacia abajo',\n new: 'Nueva capa',\n rename: 'Renombrar capa',\n move_up: 'Mover la capa hacia arriba',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Desplazar objetos a:',\n move_selected: 'Mover los objetos seleccionados a otra capa'\n },\n config: {\n image_props: 'Propiedades de la Imagen',\n doc_title: 'Título',\n doc_dims: 'Tamaño del lienzo',\n included_images: 'Imágenes integradas',\n image_opt_embed: 'Integrar imágenes en forma de datos (archivos locales)',\n image_opt_ref: 'Usar la referencia del archivo',\n editor_prefs: 'Preferencias del Editor',\n language: 'Idioma',\n background: 'Fondo del editor',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Nota: El fondo no se guardará junto con la imagen.',\n select_predefined: 'Seleccionar predefinido:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Valor no válido',\n noContentToFitTo: 'No existe un contenido al que ajustarse.',\n dupeLayerName: '¡Ya existe una capa con este nombre!',\n enterUniqueLayerName: 'Introduzca otro nombre distinto para la capa.',\n enterNewLayerName: 'Introduzca el nuevo nombre de la capa.',\n layerHasThatName: 'El nombre introducido es el nombre actual de la capa.',\n QmoveElemsToLayer: \"¿Desplazar los elementos seleccionados a la capa '%s'?\",\n QwantToClear: '¿Desea borrar el dibujo?\\n¡El historial de acciones también se borrará!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'Existen errores sintácticos en su código fuente SVG.\\n¿Desea volver al código fuente SVG original?',\n QignoreSourceChanges: '¿Desea ignorar los cambios realizados sobre el código fuente SVG?',\n featNotSupported: 'Función no compatible.',\n enterNewImgURL: 'Introduzca la nueva URL de la imagen.',\n defsFailOnSave: 'NOTA: Debido a un fallo de su navegador, es posible que la imagen aparezca de forma incorrecta (ciertas gradaciones o elementos podría perderse). La imagen aparecerá en su forma correcta una vez guardada.',\n loadingImage: 'Cargando imagen. Espere, por favor.',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Existen además los problemas siguientes:',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'et',\n dir: 'ltr',\n common: {\n ok: 'Salvestama',\n cancel: 'Tühista',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Click muuta täitke värvi, Shift-nuppu, et muuta insult värvi',\n zoom_level: 'Muuda suumi taset',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Muuda täitke värvi',\n stroke_color: 'Muuda insult värvi',\n stroke_style: 'Muuda insult kriips stiil',\n stroke_width: 'Muuda insult laius',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Muuda Pöördenurk',\n blur: 'Change gaussian blur value',\n opacity: 'Muuda valitud elemendi läbipaistmatus',\n circle_cx: 'Muuda ringi&#39;s cx kooskõlastada',\n circle_cy: 'Muuda ringi&#39;s cy kooskõlastada',\n circle_r: 'Muuda ring on raadiusega',\n ellipse_cx: 'Muuda ellips&#39;s cx kooskõlastada',\n ellipse_cy: 'Muuda ellips&#39;s cy kooskõlastada',\n ellipse_rx: 'Muuda ellips&#39;s x raadius',\n ellipse_ry: 'Muuda ellips&#39;s y raadius',\n line_x1: 'Muuda rööbastee algab x-koordinaadi',\n line_x2: 'Muuda Line lõpeb x-koordinaadi',\n line_y1: 'Muuda rööbastee algab y-koordinaadi',\n line_y2: 'Muuda Line lõppenud y-koordinaadi',\n rect_height: 'Muuda ristküliku kõrgus',\n rect_width: 'Muuda ristküliku laius',\n corner_radius: 'Muuda ristkülik Nurgakabe Raadius',\n image_width: 'Muuda pilt laius',\n image_height: 'Muuda pilt kõrgus',\n image_url: 'Change URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Muuda teksti sisu',\n font_family_label: 'Font:',\n font_family: 'Muutke Kirjasinperhe',\n font_size: 'Change font size',\n bold: 'Rasvane kiri',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Kursiiv',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Muuda tausta värvi / läbipaistmatus',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Sobita kogu sisu',\n fit_to_canvas: 'Sobita lõuend',\n fit_to_layer_content: 'Sobita kiht sisu',\n fit_to_sel: 'Fit valiku',\n align_relative_to: 'Viia võrreldes ...',\n relativeTo: 'võrreldes:',\n page: 'lehekülg',\n largest_object: 'suurim objekt',\n selected_objects: 'valitud objektide',\n smallest_object: 'väikseim objekt',\n new_doc: 'Uus pilt',\n open_doc: 'Pildi avamine',\n export_img: 'Export',\n save_doc: 'Salvesta pilt',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Viia Bottom',\n align_center: 'Keskele joondamine',\n align_left: 'Vasakjoondus',\n align_middle: 'Viia Lähis -',\n align_right: 'Paremjoondus',\n align_top: 'Viia Üles',\n mode_select: 'Vali Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Online-Hand Ristkülik',\n mode_ellipse: 'Ellips',\n mode_circle: 'Circle',\n mode_fhellipse: 'Online-Hand Ellips',\n mode_path: 'Path Tool',\n mode_text: 'Tekst Tool',\n mode_image: 'Pilt Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Undo',\n redo: 'Redo',\n tool_source: 'Muuda Allikas',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Rühma elemendid',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Lõhu Elements',\n docprops: 'Dokumendi omadused',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Liiguta alla',\n move_top: 'Liiguta üles',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Salvestama',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Kustuta Kiht',\n move_down: 'Liiguta kiht alla',\n new: 'Uus kiht',\n rename: 'Nimeta kiht',\n move_up: 'Liiguta kiht üles',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Valige eelmääratletud:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'fa',\n dir: 'rtl',\n common: {\n ok: '‫تأیید‬',\n cancel: '‫لغو‬',\n key_backspace: '‫پس بر ',\n key_del: '‫حذف ',\n key_down: '‫پایین ',\n key_up: '‫بالا ',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: '‫برای تغییر رنگ، کلیک کنید. برای تغییر رنگ لبه، کلید تبدیل (shift) را فشرده و کلیک کنید‬',\n zoom_level: '‫تغییر بزرگ نمایی‬',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: '‫تغییر رنگ‬',\n stroke_color: '‫تغییر رنگ لبه‬',\n stroke_style: '‫تغییر نقطه چین لبه‬',\n stroke_width: '‫تغییر عرض لبه‬',\n pos_x: '‫تغییر مختصات X',\n pos_y: '‫تغییر مختصات Y',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: '‫تغییر زاویه چرخش‬',\n blur: 'Change gaussian blur value',\n opacity: '‫تغییر تاری عنصر انتخاب شده‬',\n circle_cx: '‫تغییر مختصات cx دایره‬',\n circle_cy: '‫تغییر مختصات cy دایره‬',\n circle_r: '‫تغییر شعاع دایره‬',\n ellipse_cx: '‫تغییر مختصات cx بیضی‬',\n ellipse_cy: '‫تغییر مختصات cy بیضی‬',\n ellipse_rx: '‫تغییر شعاع rx بیضی‬',\n ellipse_ry: '‫تغییر شعاع ry بیضی‬',\n line_x1: '‫تغییر مختصات x آغاز خط‬',\n line_x2: '‫تغییر مختصات x پایان خط‬',\n line_y1: '‫تغییر مختصات y آغاز خط‬',\n line_y2: '‫تغییر مختصات y پایان خط‬',\n rect_height: '‫تغییر ارتفاع مستطیل‬',\n rect_width: '‫تغییر عرض مستطیل‬',\n corner_radius: '‫شعاع گوشه:',\n image_width: '‫تغییر عرض تصویر‬',\n image_height: '‫تغییر ارتفاع تصویر‬',\n image_url: '‫تغییر نشانی وب (url)',\n node_x: '‫تغییر مختصات x نقطه‬',\n node_y: '‫تغییر مختصات y نقطه‬',\n seg_type: '‫تغییر نوع قطعه (segment)',\n straight_segments: '‫مستقیم‬',\n curve_segments: '‫منحنی‬',\n text_contents: '‫تغییر محتویات متن‬',\n font_family_label: 'Font:',\n font_family: '‫تغییر خانواده قلم‬',\n font_size: '‫تغییر اندازه قلم‬',\n bold: '‫متن توپر ',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: '‫متن کج ',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: '‫تغییر رنگ پس زمینه / تاری‬',\n connector_no_arrow: 'No arrow',\n fitToContent: '‫هم اندازه شدن با محتوا‬',\n fit_to_all: '‫هم اندازه شدن با همه محتویات‬',\n fit_to_canvas: '‫هم اندازه شدن با صفحه مجازی (بوم)',\n fit_to_layer_content: '‫هم اندازه شدن با محتوای لایه‬',\n fit_to_sel: '‫هم اندازه شدن با اشیاء انتخاب شده‬',\n align_relative_to: '‫تراز نسبت به ...',\n relativeTo: '‫نسبت به:',\n page: '‫صفحه‬',\n largest_object: '‫بزرگترین شئ‬',\n selected_objects: '‫اشیاء انتخاب شده‬',\n smallest_object: '‫کوچکترین شئ‬',\n new_doc: '‫تصویر جدید ',\n open_doc: '‫باز کردن تصویر ',\n export_img: 'Export',\n save_doc: '‫ذخیره تصویر ',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: '‫تراز پایین‬',\n align_center: '‫وسط چین‬',\n align_left: '‫چپ چین‬',\n align_middle: '‫تراز میانه‬',\n align_right: '‫راست چین‬',\n align_top: '‫تراز بالا‬',\n mode_select: '‫ابزار انتخاب ',\n mode_fhpath: '‫ابزار مداد ',\n mode_line: '‫ابزار خط ',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: '‫مستطیل با قابلیت تغییر پویا‬',\n mode_ellipse: '‫بیضی‬',\n mode_circle: '‫دایره‬',\n mode_fhellipse: '‫بیضی با قابلیت تغییر پویا‬',\n mode_path: '‫ابزار مسیر ',\n mode_text: '‫ابزار متن ',\n mode_image: '‫ابزار تصویر ',\n mode_zoom: '‫ابزار بزرگ نمایی ',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: '‫واگرد ',\n redo: '‫ازنو ',\n tool_source: '‫ویرایش منبع ',\n wireframe_mode: '‫حالت نمایش لبه ها ',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: '‫قرار دادن عناصر در گروه ',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: '‫تبدیل به مسیر‬',\n reorient_path: '‫جهت دهی مجدد مسیر‬',\n ungroup: '‫خارج کردن عناصر از گروه ',\n docprops: '‫مشخصات سند ',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: '‫انتقال به پایین ترین ',\n move_top: '‫انتقال به بالاترین ',\n node_clone: '‫ایجاد کپی از نقطه‬',\n node_delete: '‫حذف نقطه‬',\n node_link: '‫پیوند دادن نقاط کنترل‬',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: '‫اعمال تغییرات‬',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'حذف',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: '‫لایه‬',\n layers: 'Layers',\n del: '‫حذف لایه‬',\n move_down: '‫انتقال لایه به پایین‬',\n new: '‫لایه جدید‬',\n rename: '‫تغییر نام لایه‬',\n move_up: '‫انتقال لایه به بالا‬',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: '‫انتقال عناصر به:',\n move_selected: '‫انتقال عناصر انتخاب شده به یک لایه متفاوت‬'\n },\n config: {\n image_props: '‫مشخصات تصویر‬',\n doc_title: '‫عنوان‬',\n doc_dims: '‫ابعاد صفحه مجازی (بوم)',\n included_images: '‫تصاویر گنجانده شده‬',\n image_opt_embed: '‫داده های جای داده شده (پرونده های محلی)',\n image_opt_ref: '‫استفاده از ارجاع به پرونده‬',\n editor_prefs: '‫تنظیمات ویراستار‬',\n language: '‫زبان‬',\n background: '‫پس زمینه ویراستار‬',\n editor_img_url: 'Image URL',\n editor_bg_note: '‫توجه: پس زمینه همراه تصویر ذخیره نخواهد شد.',\n select_predefined: '‫از پیش تعریف شده را انتخاب کنید:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: '‫مقدار داده شده نامعتبر است‬',\n noContentToFitTo: '‫محتوایی برای هم اندازه شدن وجود ندارد‬',\n dupeLayerName: '‫لایه ای با آن نام وجود دارد!',\n enterUniqueLayerName: '‫لطفا یک نام لایه یکتا انتخاب کنید‬',\n enterNewLayerName: '‫لطفا نام لایه جدید را وارد کنید‬',\n layerHasThatName: '‫لایه از قبل آن نام را دارد‬',\n QmoveElemsToLayer: \"‫عناصر انتخاب شده به لایه '%s' منتقل شوند؟‬\",\n QwantToClear: '‫آیا مطمئن هستید که می خواهید نقاشی را پاک کنید؟\\nاین عمل باعث حذف تاریخچه واگرد شما خواهد شد!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: '‫در منبع SVG شما خطاهای تجزیه (parse) وجود داشت.\\nبه منبع SVG اصلی بازگردانده شود؟‬',\n QignoreSourceChanges: '‫تغییرات اعمال شده در منبع SVG نادیده گرفته شوند؟‬',\n featNotSupported: '‫این ویژگی پشتیبانی نشده است‬',\n enterNewImgURL: '‫نشانی وب (url) تصویر جدید را وارد کنید‬',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'fi',\n dir: 'ltr',\n common: {\n ok: 'Tallentaa',\n cancel: 'Peruuta',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Klikkaa muuttaa täyttöväri, Shift-click vaihtaa aivohalvauksen väriä',\n zoom_level: 'Muuta suurennustaso',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Muuta täyttöväri',\n stroke_color: 'Muuta aivohalvaus väri',\n stroke_style: 'Muuta aivohalvaus Dash tyyli',\n stroke_width: 'Muuta aivohalvaus leveys',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Muuta kiertokulma',\n blur: 'Change gaussian blur value',\n opacity: 'Muuta valitun kohteen läpinäkyvyys',\n circle_cx: 'Muuta Circlen CX koordinoida',\n circle_cy: 'Muuta Circlen CY koordinoida',\n circle_r: 'Muuta ympyrän säde',\n ellipse_cx: 'Muuta ellipsi&#39;s CX koordinoida',\n ellipse_cy: 'Muuta ellipsi&#39;s CY koordinoida',\n ellipse_rx: 'Muuta ellipsi&#39;s x säde',\n ellipse_ry: 'Muuta ellipsi n y säde',\n line_x1: 'Muuta Linen alkaa x-koordinaatti',\n line_x2: 'Muuta Linen päättyy x koordinoida',\n line_y1: 'Muuta Linen alkaa y-koordinaatti',\n line_y2: 'Muuta Linen päättyy y koordinoida',\n rect_height: 'Muuta suorakaiteen korkeus',\n rect_width: 'Muuta suorakaiteen leveys',\n corner_radius: 'Muuta suorakaide Corner Säde',\n image_width: 'Muuta kuvan leveys',\n image_height: 'Muuta kuvan korkeus',\n image_url: 'Muuta URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Muuta tekstin sisältö',\n font_family_label: 'Font:',\n font_family: 'Muuta Font Family',\n font_size: 'Muuta fontin kokoa',\n bold: 'Lihavoitu teksti',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Kursivoitu',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Vaihda taustaväri / sameuden',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Sovita Content',\n fit_to_all: 'Sovita kaikki content',\n fit_to_canvas: 'Sovita kangas',\n fit_to_layer_content: 'Sovita kerros sisältöön',\n fit_to_sel: 'Sovita valinta',\n align_relative_to: 'Kohdista suhteessa ...',\n relativeTo: 'suhteessa:',\n page: 'sivulta',\n largest_object: 'Suurin kohde',\n selected_objects: 'valittujen objektien',\n smallest_object: 'pienin kohde',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Keskitä',\n align_left: 'Tasaa vasemmalle',\n align_middle: 'Kohdista Lähi',\n align_right: 'Tasaa oikealle',\n align_top: 'Kohdista Top',\n mode_select: 'Valitse työkalu',\n mode_fhpath: 'Kynätyökalu',\n mode_line: 'Viivatyökalulla',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand suorakaide',\n mode_ellipse: 'Soikion',\n mode_circle: 'Ympyrään',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Työkalua',\n mode_image: 'Image Tool',\n mode_zoom: 'Suurennustyökalu',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Kumoa',\n redo: 'Tulppaamalla ilmakanavan',\n tool_source: 'Muokkaa lähdekoodipaketti',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Tuoteryhmään Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: 'Asiakirjan ominaisuudet',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Tallentaa',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Poista Layer',\n move_down: 'Siirrä Layer alas',\n new: 'New Layer',\n rename: 'Nimeä Layer',\n move_up: 'Siirrä Layer',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Valitse ennalta:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: \"Retrieving '%s' ...\",\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'fr',\n dir: 'ltr',\n common: {\n ok: 'OK',\n cancel: 'Annuler',\n key_backspace: 'Retour en Arrière',\n key_del: 'Suppr.',\n key_down: 'Bas',\n key_up: 'Haut',\n more_opts: \"Plus d'options\",\n url: 'URL',\n width: 'Largeur',\n height: 'Hauteur'\n },\n misc: {\n powered_by: 'Propulsé par'\n },\n ui: {\n toggle_stroke_tools: \"Montrer/cacher plus d'outils de contour\",\n palette_info: 'Cliquer pour changer la couleur de remplissage, Maj+clic pour changer la couleur de contour',\n zoom_level: 'Changer le niveau de zoom',\n panel_action: 'Cliquer pour ouvrir le panel de côté',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: \"Identifier l'élément\",\n fill_color: 'Changer la couleur de remplissage',\n stroke_color: 'Changer la couleur du contour',\n stroke_style: 'Changer le style du contour',\n stroke_width: 'Changer la largeur du contour de 1, Maj+clic pour changer la largeur de 0,1',\n pos_x: \"Changer l'abscisse (coordonnée X)\",\n pos_y: \"Changer l'ordonnée (coordonnée Y)\",\n linecap_butt: 'Terminaison : Sur le nœud',\n linecap_round: 'Terminaison : Arrondie',\n linecap_square: 'Terminaison : Carrée',\n linejoin_bevel: 'Raccord : Biseauté',\n linejoin_miter: 'Raccord : Droit',\n linejoin_round: 'Raccord : Arrondi',\n angle: \"Changer l'angle de rotation\",\n blur: 'Changer la valeur du flou gaussien',\n opacity: \"Changer l'opacité de l'élément sélectionné\",\n circle_cx: 'Changer la position horizontale cx du cercle',\n circle_cy: 'Changer la position verticale cy du cercle',\n circle_r: 'Changer le rayon du cercle',\n ellipse_cx: \"Changer la position horizontale cx de l'ellipse\",\n ellipse_cy: \"Changer la position verticale cy de l'ellipse\",\n ellipse_rx: \"Changer le rayon horizontal x de l'ellipse\",\n ellipse_ry: \"Changer le rayon vertical y de l'ellipse\",\n line_x1: 'Changer la position horizontale x de début de la ligne',\n line_x2: 'Changer la position horizontale x de fin de la ligne',\n line_y1: 'Changer la position verticale y de début de la ligne',\n line_y2: 'Changer la position verticale y de fin de la ligne',\n rect_height: 'Changer la hauteur du rectangle',\n rect_width: 'Changer la largeur du rectangle',\n corner_radius: 'Changer le rayon des coins du rectangle',\n image_width: \"Changer la largeur de l'image\",\n image_height: \"Changer la hauteur de l'image\",\n image_url: \"Modifier l'URL\",\n node_x: 'Changer la positon horizontale x du nœud',\n node_y: 'Changer la position verticale y du nœud',\n seg_type: 'Changer le type du segment',\n straight_segments: 'Droit',\n curve_segments: 'Courbe',\n text_contents: 'Changer le contenu du texte',\n font_family_label: 'Font:',\n font_family: 'Changer la famille de police',\n font_size: 'Changer la taille de la police',\n bold: 'Texte en gras',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Texte en italique',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Menu principal',\n bkgnd_color_opac: \"Changer la couleur d'arrière-plan/l'opacité\",\n connector_no_arrow: 'Sans flèches',\n fitToContent: 'Ajuster au contenu',\n fit_to_all: \"Ajuster à l'ensemble du contenu\",\n fit_to_canvas: 'Ajuster au canevas',\n fit_to_layer_content: 'Ajuster au contenu du calque',\n fit_to_sel: 'Ajuster à la sélection',\n align_relative_to: 'Aligner par rapport à…',\n relativeTo: 'par rapport à :',\n page: 'page',\n largest_object: 'objet le plus gros',\n selected_objects: 'objets sélectionnés',\n smallest_object: 'objet le plus petit',\n new_doc: 'Nouvelle image',\n open_doc: 'Ouvrir une image SVG',\n export_img: 'Exporter',\n save_doc: \"Enregistrer l'image\",\n import_doc: 'Importer une image',\n align_to_page: \"Aligner l'élément à la page\",\n align_bottom: 'Aligner en bas',\n align_center: 'Centrer verticalement',\n align_left: 'Aligner à gauche',\n align_middle: 'Centrer horizontalement',\n align_right: 'Aligner à droite',\n align_top: 'Aligner en haut',\n mode_select: 'Outil de sélection',\n mode_fhpath: 'Crayon à main levée',\n mode_line: 'Tracer des lignes',\n mode_rect: 'Outil rectangle',\n mode_square: 'Outil carré',\n mode_fhrect: 'Rectangle à main levée',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Cercle',\n mode_fhellipse: 'Ellipse à main levée',\n mode_path: 'Outil chemin',\n mode_text: 'Outil texte',\n mode_image: 'Outil image',\n mode_zoom: 'Zoom',\n no_embed: 'NOTE : Cette image ne peut pas être incorporée. Elle sera chargée à cette adresse',\n undo: 'Annuler',\n redo: 'Restaurer',\n tool_source: 'Modifier la source',\n wireframe_mode: 'Mode Fil de fer',\n clone: 'Cloner élément(s)',\n del: 'Supprimer élément(s)',\n group_elements: 'Grouper les éléments',\n make_link: 'Créer un hyperlien',\n set_link_url: \"Définir l'URL du lien (laisser vide pour supprimer)\",\n to_path: 'Convertir en chemin',\n reorient_path: 'Réorienter le chemin',\n ungroup: 'Dégrouper les éléments',\n docprops: 'Propriétés du document',\n editor_homepage: 'Page d\\'accueil de SVG-Edit',\n move_bottom: 'Déplacer vers le bas',\n move_top: 'Déplacer vers le haut',\n node_clone: 'Cloner le nœud',\n node_delete: 'Supprimer le nœud',\n node_link: 'Rendre les points de contrôle solidaires',\n add_subpath: 'Ajouter un tracé secondaire',\n openclose_path: 'Ouvrir/fermer le sous-chemin',\n source_save: 'Appliquer les modifications',\n cut: 'Couper',\n copy: 'Copier',\n paste: 'Coller',\n paste_in_place: 'Coller sur place',\n delete: 'Supprimer',\n group: 'Grouper',\n move_front: 'Placer au premier plan',\n move_up: \"Avancer d'un plan\",\n move_down: \"Reculer d'un plan\",\n move_back: 'Placer au fond',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Outil Ellipse/Cercle',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Se souvenir de ce choix ?',\n remember_this_choice_title: 'Si vous choisissez de désactiver le stockage tout en mémorisant ce choix, l\\'URL changera afin d\\'éviter de vous le demander à nouveau.'\n },\n layers: {\n layer: 'Calque',\n layers: 'Calques',\n del: 'Supprimer le calque',\n move_down: 'Descendre le calque',\n new: 'Nouveau calque',\n rename: 'Renommer le calque',\n move_up: 'Monter le calque',\n dupe: 'Dupliquer le calque',\n merge_down: 'Fusionner vers le bas',\n merge_all: 'Tout fusionner',\n move_elems_to: 'Déplacer les éléments vers :',\n move_selected: 'Déplacer les éléments sélectionnés vers un autre calque'\n },\n config: {\n image_props: \"Propriétés de l'image\",\n doc_title: 'Titre',\n doc_dims: 'Dimensions du canevas',\n included_images: 'Images insérées',\n image_opt_embed: 'Incorporer les données des images (fichiers locaux)',\n image_opt_ref: \"Utiliser l'adresse des fichiers\",\n editor_prefs: \"Préférences de l'éditeur\",\n language: 'Langue',\n background: \"Toile de fond de l'éditeur\",\n editor_img_url: 'Image URL',\n editor_bg_note: \"Note : La toile de fond ne sera pas sauvegardée avec l'image.\",\n select_predefined: 'Sélectionner prédéfinis :',\n units_and_rulers: 'Unités et règles',\n show_rulers: 'Afficher les règles',\n base_unit: 'Unité de mesure :',\n grid: 'Grille',\n snapping_onoff: 'Ancrer oui/non',\n snapping_stepsize: \"Pas d'ancrage :\",\n grid_color: 'Couleur de la grille',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'Nouvelle couleur - Appuyez sur &ldquo;OK&rdquo; pour valider',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Dégradé linéaire',\n jgraduate_radial_gradient: 'Dégradé radial',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Cliquez pour définir l\\'angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Valeur fournie invalide',\n noContentToFitTo: \"Il n'y a pas de contenu auquel ajuster\",\n dupeLayerName: 'Un autre calque porte déjà ce nom !',\n enterUniqueLayerName: 'Veuillez entrer un nom (unique) pour le calque',\n enterNewLayerName: 'Veuillez entrer le nouveau nom du calque',\n layerHasThatName: 'Le calque porte déjà ce nom',\n QmoveElemsToLayer: 'Déplacer les éléments sélectionnés vers le calque « %s » ?',\n QwantToClear: \"Voulez-vous effacer le dessin ?\\nL'historique de vos actions sera également effacé !\",\n QwantToOpen: \"Voulez-vous ouvrir un nouveau document ?\\nVous perdrez l'historique de vos modifications !\",\n QerrorsRevertToSource: 'Il y a des erreurs de syntaxe dans votre code source SVG.\\nRestaurer le code source SVG antérieur aux modifications ?',\n QignoreSourceChanges: 'Ignorer les modifications faites à la source SVG ?',\n featNotSupported: 'Fonction non supportée',\n enterNewImgURL: \"Entrer la nouvelle URL de l'image\",\n defsFailOnSave: \"NOTE : En raison d'un bogue dans votre navigateur, il se peut que cette image ne soit pas correctement affichée (dégradés ou éléments manquants). Le souci sera néanmoins réglé à la sauvegarde.\",\n loadingImage: \"Chargement de l'image, veuillez patienter…\",\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Notez également les problèmes suivants : ',\n unsavedChanges: 'Il y a des changements non sauvegardés.',\n enterNewLinkURL: \"Entrez la nouvelle URL de l'hyperlien\",\n errorLoadingSVG: 'Erreur : Impossible de charger les données SVG',\n URLLoadFail: \"Impossible de charger l'URL\",\n retrieving: 'Récupération de « %s »…',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'fy',\n dir: 'ltr',\n common: {\n ok: 'Ok',\n cancel: 'Ôfbrekke',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'omleech',\n key_up: 'omheech',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Klik om de folkleur te feroarjen, shift-klik om de linekleur te feroarjen.',\n zoom_level: 'Yn-/útzoome',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Folkleur oanpasse',\n stroke_color: 'Linekleur oanpasse',\n stroke_style: 'Linestijl oanpasse',\n stroke_width: 'Linebreedte oanpasse',\n pos_x: 'X-koördinaat oanpasse',\n pos_y: 'Y-koördinaat oanpasse',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Draaie',\n blur: 'Change gaussian blur value',\n opacity: 'Trochsichtigens oanpasse',\n circle_cx: \"Feroarje it X-koördinaat fan it middelpunt fan'e sirkel.\",\n circle_cy: \"Feroarje it Y-koördinaat fan it middelpunt fan'e sirkel.\",\n circle_r: 'Feroarje sirkelradius',\n ellipse_cx: \"Feroarje it X-koördinaat fan it middelpunt fan'e ellips.\",\n ellipse_cy: \"Feroarje it Y-koördinaat fan it middelpunt fan'e ellips.\",\n ellipse_rx: 'Feroarje ellips X radius',\n ellipse_ry: 'Feroarje ellips Y radius',\n line_x1: \"Feroarje start X koördinaat fan'e line\",\n line_x2: \"Feroarje ein X koördinaat fan'e line\",\n line_y1: \"Feroarje start Y koördinaat fan'e line\",\n line_y2: \"Feroarje ein Y koördinaat fan'e line\",\n rect_height: 'Hichte rjochthoeke oanpasse',\n rect_width: 'Breedte rjochthoeke oanpasse',\n corner_radius: 'Hoekeradius oanpasse',\n image_width: 'Breedte ôfbielding oanpasse',\n image_height: 'Hichte ôfbielding oanpasse',\n image_url: 'URL oanpasse',\n node_x: 'X-koördinaat knooppunt oanpasse',\n node_y: 'Y-koördinaat knooppunt oanpasse',\n seg_type: 'Segmenttype oanpasse',\n straight_segments: 'Rjocht',\n curve_segments: 'Bûcht',\n text_contents: 'Tekst oanpasse',\n font_family_label: 'Font:',\n font_family: 'Lettertype oanpasse',\n font_size: 'Lettergrutte oanpasse',\n bold: 'Fet',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Skean',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Eftergrûnkleur/trochsichtigens oanpasse',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Passe op ynhâld',\n fit_to_all: 'Op alle ynhâld passe',\n fit_to_canvas: 'Op kanvas passe',\n fit_to_layer_content: 'Op laachynhâld passe',\n fit_to_sel: 'Op seleksje passe',\n align_relative_to: 'Útlijne relatyf oan...',\n relativeTo: 'Relatief tsjinoer:',\n page: 'Side',\n largest_object: 'Grutste ûnderdiel',\n selected_objects: 'Selektearre ûnderdielen',\n smallest_object: 'Lytste ûnderdiel',\n new_doc: 'Nije ôfbielding',\n open_doc: 'Ôfbielding iepenje',\n export_img: 'Export',\n save_doc: 'Ôfbielding bewarje',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Ûnder útlijne',\n align_center: 'Midden útlijne',\n align_left: 'Lofts útlijne',\n align_middle: 'Midden útlijne',\n align_right: 'Rjochts útlijne',\n align_top: 'Boppe útlijne',\n mode_select: 'Selektearje',\n mode_fhpath: 'Potlead',\n mode_line: 'Line',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Frije rjochthoeke',\n mode_ellipse: 'Ellips',\n mode_circle: 'Sirkel',\n mode_fhellipse: 'Frije ellips',\n mode_path: 'Paad',\n mode_text: 'Tekst',\n mode_image: 'Ôfbielding',\n mode_zoom: 'Zoom',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Ungedien meitjse',\n redo: \"Op 'e nij\",\n tool_source: 'Boarne oanpasse',\n wireframe_mode: 'Triemodel',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Ûnderdielen groepearje',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Omsette nei paad',\n reorient_path: 'Paad opnij orientearje',\n ungroup: 'Groepering opheffe',\n docprops: 'Dokuminteigenskippen',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Nei eftergrûn',\n move_top: 'Nei foargrûn',\n node_clone: 'Knooppunt duplisearje',\n node_delete: 'Knooppunt fuortsmite',\n node_link: 'Knooppunten keppelje',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Feroarings tapasse',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Laach',\n layers: 'Layers',\n del: 'Laach fuortsmite',\n move_down: 'Laach omleech bringe',\n new: 'Nije laach',\n rename: 'Laach omneame',\n move_up: 'Laach omheech bringe',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Ûnderdielen ferplaate nei:',\n move_selected: 'Selektearre ûnderdielen ferplaatse nei in oare laach'\n },\n config: {\n image_props: 'Ôfbieldingseigenskippen',\n doc_title: 'Titel',\n doc_dims: 'Kanvasgrutte',\n included_images: 'Ynslúten ôfbieldingen',\n image_opt_embed: 'Ynformaasje tafoege (lokale triemen)',\n image_opt_ref: 'Triemreferensje brûke',\n editor_prefs: 'Eigenskippen bewurker',\n language: 'Taal',\n background: 'Eftergrûn bewurker',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Let op: de eftergrûn wurd net mei de ôfbielding bewarre.',\n select_predefined: 'Selektearje:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Ferkearde waarde jûn',\n noContentToFitTo: 'Gjin ynhâld om te passen',\n dupeLayerName: 'Der is al in laach mei dy namme!',\n enterUniqueLayerName: 'Type in unyke laachnamme',\n enterNewLayerName: 'Type in nije laachnamme',\n layerHasThatName: 'Laach hat dy namme al',\n QmoveElemsToLayer: \"Selektearre ûnderdielen ferplaatse nei '%s'?\",\n QwantToClear: 'Ôfbielding leechmeitsje? Dit sil ek de skiednis fuortsmite!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'Der wiene flaters yn de SVG-boarne.\\nWeromgean nei foarige SVG-boarne?',\n QignoreSourceChanges: 'Feroarings yn SVG-boarne negeare?',\n featNotSupported: 'Funksje wurdt net ûndersteund',\n enterNewImgURL: 'Jou de nije URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\'...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'ga',\n dir: 'ltr',\n common: {\n ok: 'Sábháil',\n cancel: 'Cealaigh',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Cliceáil chun athrú a líonadh dath, aistriú-cliceáil chun dath a athrú stróc',\n zoom_level: 'Athraigh súmáil leibhéal',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Athraigh an dath a líonadh',\n stroke_color: 'Dath stróc Athrú',\n stroke_style: 'Athraigh an stíl Fleasc stróc',\n stroke_width: 'Leithead stróc Athrú',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Uillinn rothlaithe Athrú',\n blur: 'Change gaussian blur value',\n opacity: 'Athraigh roghnaithe teimhneacht mír',\n circle_cx: 'Athraigh an ciorcal a chomhordú CX',\n circle_cy: 'Athraigh an ciorcal a chomhordú ga',\n circle_r: 'Athraigh an ciorcal&#39;s ga',\n ellipse_cx: 'Athraigh Éilips&#39;s CX a chomhordú',\n ellipse_cy: 'Athraigh an Éilips a chomhordú ga',\n ellipse_rx: 'Éilips Athraigh an gha x',\n ellipse_ry: 'Éilips Athraigh an gha y',\n line_x1: 'Athraigh an líne tosaigh a chomhordú x',\n line_x2: 'Athraigh an líne deireadh x chomhordú',\n line_y1: 'Athraigh an líne tosaigh a chomhordú y',\n line_y2: 'Athrú ar líne deireadh y chomhordú',\n rect_height: 'Airde dronuilleog Athrú',\n rect_width: 'Leithead dronuilleog Athrú',\n corner_radius: 'Athraigh Dronuilleog Cúinne na Ga',\n image_width: 'Leithead íomhá Athrú',\n image_height: 'Airde íomhá Athrú',\n image_url: 'Athraigh an URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Inneachar Athraigh téacs',\n font_family_label: 'Font:',\n font_family: 'Athraigh an Cló Teaghlaigh',\n font_size: 'Athraigh Clómhéid',\n bold: 'Trom Téacs',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Iodálach Téacs',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Dath cúlra Athraigh / teimhneacht',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Laghdaigh do gach ábhar',\n fit_to_canvas: 'Laghdaigh ar chanbhás',\n fit_to_layer_content: 'Laghdaigh shraith ábhar a',\n fit_to_sel: 'Laghdaigh a roghnú',\n align_relative_to: 'Ailínigh i gcomparáid leis ...',\n relativeTo: 'i gcomparáid leis:',\n page: 'leathanach',\n largest_object: 'réad is mó',\n selected_objects: 'réada tofa',\n smallest_object: 'lú réad',\n new_doc: 'Íomhá Nua',\n open_doc: 'Íomhá Oscailte',\n export_img: 'Export',\n save_doc: 'Sábháil Íomhá',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Cineál Bun',\n align_center: 'Ailínigh sa Lár',\n align_left: 'Ailínigh ar Chlé',\n align_middle: 'Cineál Middle',\n align_right: 'Ailínigh ar Dheis',\n align_top: 'Cineál Barr',\n mode_select: 'Roghnaigh Uirlis',\n mode_fhpath: 'Phionsail Uirlis',\n mode_line: 'Uirlis Líne',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Saor Hand Dronuilleog',\n mode_ellipse: 'Éilips',\n mode_circle: 'Ciorcal',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Téacs Uirlis',\n mode_image: 'Íomhá Uirlis',\n mode_zoom: 'Zúmáil Uirlis',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Cealaigh',\n redo: 'Athdhéan',\n tool_source: 'Cuir Foinse',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Eilimintí Grúpa',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Eilimintí Díghrúpáil',\n docprops: 'Doiciméad Airíonna',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Téigh go Bun',\n move_top: 'Téigh go Barr',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Sábháil',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Scrios Sraith',\n move_down: 'Bog Sraith Síos',\n new: 'Sraith Nua',\n rename: 'Athainmnigh Sraith',\n move_up: 'Bog Sraith Suas',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Roghnaigh réamhshainithe:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'gl',\n dir: 'ltr',\n common: {\n ok: 'Gardar',\n cancel: 'Cancelar',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Preme aquí para cambiar a cor de recheo, Shift-clic para cambiar a cor do curso',\n zoom_level: 'Cambiar o nivel de zoom',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Cambia-la cor de recheo',\n stroke_color: 'Cambiar a cor do curso',\n stroke_style: 'Modifica o estilo do trazo do curso',\n stroke_width: 'Cambiar o ancho do curso',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Cambiar o ángulo de xiro',\n blur: 'Change gaussian blur value',\n opacity: 'Cambia a opacidade elemento seleccionado',\n circle_cx: 'Cx Cambiar círculo de coordenadas',\n circle_cy: 'Círculo Cambio cy coordinar',\n circle_r: 'Cambiar círculo de raio',\n ellipse_cx: 'Cambiar elipse cx coordinar',\n ellipse_cy: 'Elipse Cambio cy coordinar',\n ellipse_rx: 'Raios X Change elipse',\n ellipse_ry: 'Radio y Change elipse',\n line_x1: 'Cambie a liña de partida coordenada x',\n line_x2: 'Cambie a liña acaba coordenada x',\n line_y1: 'Cambio na liña do recurso coordinada y',\n line_y2: 'Salto de liña acaba coordinada y',\n rect_height: 'Cambiar altura do rectángulo',\n rect_width: 'Cambiar a largo rectángulo',\n corner_radius: 'Cambiar Corner Rectangle Radius',\n image_width: 'Cambiar o ancho da imaxe',\n image_height: 'Cambiar altura da imaxe',\n image_url: 'Cambiar URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Cambiar o contido de texto',\n font_family_label: 'Font:',\n font_family: 'Cambiar fonte Familia',\n font_size: 'Mudar tamaño de letra',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Texto en cursiva',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Mudar a cor de fondo / Opacidade',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Axustar ó contido',\n fit_to_all: 'Axustar a todo o contido',\n fit_to_canvas: 'Axustar a pantalla',\n fit_to_layer_content: 'Axustar o contido da capa de',\n fit_to_sel: 'Axustar a selección',\n align_relative_to: 'Aliñar en relación a ...',\n relativeTo: 'en relación ao:',\n page: 'Portada',\n largest_object: 'maior obxecto',\n selected_objects: 'obxectos elixidos',\n smallest_object: 'menor obxecto',\n new_doc: 'Nova Imaxe',\n open_doc: 'Abrir Imaxe',\n export_img: 'Export',\n save_doc: 'Gardar Imaxe',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align bottom',\n align_center: 'Centrar',\n align_left: 'Aliñar á Esquerda',\n align_middle: 'Aliñar Medio',\n align_right: 'Aliñar á Dereita',\n align_top: 'Align Top',\n mode_select: 'Seleccionar a ferramenta',\n mode_fhpath: 'Ferramenta Lapis',\n mode_line: 'Ferramenta Liña',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rectangle',\n mode_ellipse: 'Elipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Ferramenta de Texto',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Desfacer',\n redo: 'Volver',\n tool_source: 'Fonte Editar',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Elementos do grupo',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Elementos Desagrupadas',\n docprops: 'Propriedades do Documento',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move a Bottom',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Gardar',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Delete Layer',\n move_down: 'Move capa inferior',\n new: 'New Layer',\n rename: 'Rename Layer',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Seleccione por defecto:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'he',\n dir: 'rtl',\n common: {\n ok: 'לשמור',\n cancel: 'ביטול',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'לחץ כדי לשנות צבע מילוי, לחץ על Shift-לשנות צבע שבץ',\n zoom_level: 'שינוי גודל תצוגה',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'שינוי צבע מילוי',\n stroke_color: 'שינוי צבע שבץ',\n stroke_style: 'דש שבץ שינוי סגנון',\n stroke_width: 'שינוי רוחב שבץ',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'שינוי זווית הסיבוב',\n blur: 'Change gaussian blur value',\n opacity: 'שינוי הפריט הנבחר אטימות',\n circle_cx: 'CX מעגל של שנה לתאם',\n circle_cy: 'מעגל שנה של cy לתאם',\n circle_r: 'מעגל שנה של רדיוס',\n ellipse_cx: 'שינוי של אליפסה CX לתאם',\n ellipse_cy: 'אליפסה שינוי של cy לתאם',\n ellipse_rx: 'אליפסה שינוי של רדיוס x',\n ellipse_ry: 'אליפסה שינוי של Y רדיוס',\n line_x1: 'שינוי קו ההתחלה של x לתאם',\n line_x2: 'שינוי קו הסיום של x לתאם',\n line_y1: 'שינוי קו ההתחלה של Y לתאם',\n line_y2: 'שינוי קו הסיום של Y לתאם',\n rect_height: 'שינוי גובה המלבן',\n rect_width: 'שינוי רוחב המלבן',\n corner_radius: 'לשנות מלבן פינת רדיוס',\n image_width: 'שינוי רוחב התמונה',\n image_height: 'שינוי גובה התמונה',\n image_url: 'שינוי כתובת',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'שינוי תוכן טקסט',\n font_family_label: 'Font:',\n font_family: 'שינוי גופן משפחה',\n font_size: 'שנה גודל גופן',\n bold: 'טקסט מודגש',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'טקסט נטוי',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'שנה את צבע הרקע / אטימות',\n connector_no_arrow: 'No arrow',\n fitToContent: 'התאם תוכן',\n fit_to_all: 'התאם התכנים',\n fit_to_canvas: 'התאם בד',\n fit_to_layer_content: 'מתאים לתוכן שכבת',\n fit_to_sel: 'התאם הבחירה',\n align_relative_to: 'יישור ביחס ...',\n relativeTo: 'יחסית:',\n page: 'דף',\n largest_object: 'האובייקט הגדול',\n selected_objects: 'elected objects',\n smallest_object: 'הקטן אובייקט',\n new_doc: 'תמונה חדשה',\n open_doc: 'פתח תמונה',\n export_img: 'Export',\n save_doc: 'שמור תמונה',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'יישור תחתון',\n align_center: 'ישור לאמצע',\n align_left: 'יישור לשמאל',\n align_middle: 'יישור התיכון',\n align_right: 'יישור לימין',\n align_top: 'יישור למעלה',\n mode_select: 'Select Tool',\n mode_fhpath: 'כלי העיפרון',\n mode_line: 'כלי הקו',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand מלבן',\n mode_ellipse: 'אליפסה',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand אליפסה',\n mode_path: 'Path Tool',\n mode_text: 'כלי טקסט',\n mode_image: 'כלי תמונה',\n mode_zoom: 'זום כלי',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'בטל',\n redo: 'בצע שוב',\n tool_source: 'מקור ערוך',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'אלמנטים הקבוצה',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'אלמנטים פרק קבוצה',\n docprops: 'מאפייני מסמך',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'הזז למטה',\n move_top: 'עבור לראש הדף',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'לשמור',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'מחיקת שכבה',\n move_down: 'הזז למטה שכבה',\n new: 'שכבהחדשה',\n rename: 'שינוי שם שכבה',\n move_up: 'העבר שכבה Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'בחר מוגדרים מראש:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'hi',\n dir: 'ltr',\n common: {\n ok: 'बचाना',\n cancel: 'रद्द करें',\n key_backspace: 'बैकस्पेस',\n key_del: 'हटायें',\n key_down: 'नीचे',\n key_up: 'ऊपर',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'रंग बदलने पर क्लिक करें, बदलाव भरने के क्लिक करने के लिए स्ट्रोक का रंग बदलने के लिए',\n zoom_level: 'बदलें स्तर ज़ूम',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'बदलें का रंग भरना',\n stroke_color: 'बदलें स्ट्रोक रंग',\n stroke_style: 'बदलें स्ट्रोक डेश शैली',\n stroke_width: 'बदलें स्ट्रोक चौड़ाई',\n pos_x: 'X समकक्ष बदलें ',\n pos_y: 'Y समकक्ष बदलें',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'बदलें रोटेशन कोण',\n blur: 'Change gaussian blur value',\n opacity: 'पारदर्शिता बदलें',\n circle_cx: 'बदल रहा है चक्र cx समन्वय',\n circle_cy: 'परिवर्तन चक्र cy समन्वय है',\n circle_r: 'बदल रहा है चक्र त्रिज्या',\n ellipse_cx: 'बदलें दीर्घवृत्त है cx समन्वय',\n ellipse_cy: 'बदलें दीर्घवृत्त cy समन्वय है',\n ellipse_rx: 'बदल रहा है दीर्घवृत्त x त्रिज्या',\n ellipse_ry: 'बदल रहा है दीर्घवृत्त y त्रिज्या',\n line_x1: 'बदल रहा है लाइन x समन्वय शुरू',\n line_x2: 'बदल रहा है लाइन x समन्वय समाप्त',\n line_y1: 'बदलें रेखा y शुरू हो रहा है समन्वय',\n line_y2: 'बदलें रेखा y अंत है समन्वय',\n rect_height: 'बदलें आयत ऊंचाई',\n rect_width: 'बदलें आयत चौड़ाई',\n corner_radius: 'बदलें आयत कॉर्नर त्रिज्या',\n image_width: 'बदलें छवि चौड़ाई',\n image_height: 'बदलें छवि ऊँचाई',\n image_url: 'बदलें यूआरएल',\n node_x: 'नोड का x समकक्ष बदलें',\n node_y: 'नोड का y समकक्ष बदलें',\n seg_type: 'वर्ग प्रकार बदलें',\n straight_segments: 'सीधे वर्ग',\n curve_segments: 'घुमाव',\n text_contents: 'बदलें पाठ सामग्री',\n font_family_label: 'Font:',\n font_family: 'बदलें फ़ॉन्ट परिवार',\n font_size: 'फ़ॉन्ट का आकार बदलें',\n bold: 'मोटा पाठ',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'इटैलिक पाठ',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'पृष्ठभूमि का रंग बदल / अस्पष्टता',\n connector_no_arrow: 'No arrow',\n fitToContent: 'सामग्री के लिए फिट',\n fit_to_all: 'सभी सामग्री के लिए फिट',\n fit_to_canvas: 'फिट कैनवास को',\n fit_to_layer_content: 'फिट परत सामग्री के लिए',\n fit_to_sel: 'चयन के लिए फिट',\n align_relative_to: 'संरेखित करें रिश्तेदार को ...',\n relativeTo: 'रिश्तेदार को:',\n page: 'पृष्ठ',\n largest_object: 'सबसे बड़ी वस्तु',\n selected_objects: 'निर्वाचित वस्तुओं',\n smallest_object: 'छोटी से छोटी वस्तु',\n new_doc: 'नई छवि',\n open_doc: 'छवि खोलें',\n export_img: 'Export',\n save_doc: 'सहेजें छवि',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'तलमेंपंक्तिबद्धकरें',\n align_center: 'मध्य में समंजित करें',\n align_left: ' पंक्तिबद्ध करें',\n align_middle: 'मध्य संरेखित करें',\n align_right: 'दायाँपंक्तिबद्धकरें',\n align_top: 'शीर्षमेंपंक्तिबद्धकरें',\n mode_select: 'उपकरण चुनें',\n mode_fhpath: 'पेंसिल उपकरण',\n mode_line: 'लाइन उपकरण',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'नि: शुल्क हाथ आयत',\n mode_ellipse: 'दीर्घवृत्त',\n mode_circle: 'वृत्त',\n mode_fhellipse: 'नि: शुल्क हाथ दीर्घवृत्त',\n mode_path: 'Path Tool',\n mode_text: 'पाठ उपकरण',\n mode_image: 'छवि उपकरण',\n mode_zoom: 'ज़ूम उपकरण',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'पूर्ववत करें',\n redo: 'फिर से करें',\n tool_source: 'स्रोत में बदलाव करें',\n wireframe_mode: 'रूपरेखा मोड',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'समूह तत्वों',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'पथ में बदलें',\n reorient_path: 'पथ को नई दिशा दें',\n ungroup: 'अंश को समूह से अलग करें',\n docprops: 'दस्तावेज़ गुण',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'नीचे ले जाएँ',\n move_top: 'ऊपर ले जाएँ',\n node_clone: 'नोड क्लोन',\n node_delete: 'नोड हटायें',\n node_link: 'कड़ी नियंत्रण बिंदु',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'बचाना',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'परत',\n layers: 'Layers',\n del: 'परत हटाएँ',\n move_down: 'परत नीचे ले जाएँ',\n new: 'नई परत',\n rename: 'परत का नाम बदलें',\n move_up: 'परत ऊपर ले जाएँ',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'अंश को ले जाएँ:',\n move_selected: 'चयनित अंश को दूसरी परत पर ले जाएँ'\n },\n config: {\n image_props: 'छवि के गुण',\n doc_title: 'शीर्षक',\n doc_dims: 'कैनवास आयाम',\n included_images: 'शामिल छवियाँ',\n image_opt_embed: 'एम्बेड डेटा (स्थानीय फ़ाइलें)',\n image_opt_ref: 'फाइल के संदर्भ का प्रयोग',\n editor_prefs: 'संपादक वरीयताएँ',\n language: 'भाषा',\n background: 'संपादक पृष्ठभूमि',\n editor_img_url: 'Image URL',\n editor_bg_note: 'नोट: पृष्ठभूमि छवि के साथ नहीं बचायी जाएगी',\n select_predefined: 'चुनें पूर्वनिर्धारित:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'अमान्य मूल्य',\n noContentToFitTo: 'कोई सामग्री फिट करने के लिए उपलब्ध नहीं',\n dupeLayerName: 'इस नाम कि परत पहले से मौजूद है !',\n enterUniqueLayerName: 'कृपया परत का एक अद्वितीय नाम डालें',\n enterNewLayerName: 'कृपया परत का एक नया नाम डालें',\n layerHasThatName: 'परत का पहले से ही यही नाम है',\n QmoveElemsToLayer: \"चयनित अंश को परत '%s' पर ले जाएँ ?\",\n QwantToClear: 'क्या आप छवि साफ़ करना चाहते हैं?\\nयह आपके उन्डू इतिहास को भी मिटा देगा!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'आपके एस.वी.जी. स्रोत में त्रुटियों थी.\\nक्या आप मूल एस.वी.जी स्रोत पर वापिस जाना चाहते हैं?',\n QignoreSourceChanges: 'एसवीजी स्रोत से लाये बदलावों को ध्यान न दें?',\n featNotSupported: 'सुविधा असमर्थित है',\n enterNewImgURL: 'नई छवि URL दर्ज करें',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'hr',\n dir: 'ltr',\n common: {\n ok: 'Spremiti',\n cancel: 'Odustani',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Kliknite promijeniti boju ispune, shift-click to promijeniti boju moždanog udara',\n zoom_level: 'Promjena razine zumiranja',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Promjena boje ispune',\n stroke_color: 'Promjena boje moždani udar',\n stroke_style: 'Promijeni stroke crtica stil',\n stroke_width: 'Promjena širine moždani udar',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Promijeni rotation angle',\n blur: 'Change gaussian blur value',\n opacity: 'Promjena odabrane stavke neprozirnost',\n circle_cx: 'Promjena krug&#39;s CX koordinirati',\n circle_cy: 'Cy Promijeni krug je koordinirati',\n circle_r: 'Promjena krug je radijusa',\n ellipse_cx: 'Promjena elipsa&#39;s CX koordinirati',\n ellipse_cy: 'Cy Promijeni elipsa je koordinirati',\n ellipse_rx: 'Promijeniti elipsa&#39;s x polumjer',\n ellipse_ry: 'Promjena elipsa&#39;s y polumjer',\n line_x1: 'Promijeni linija je početak x koordinatu',\n line_x2: 'Promjena linije završetak x koordinatu',\n line_y1: 'Promijeni linija je početak y koordinatu',\n line_y2: 'Promjena linije završetak y koordinatu',\n rect_height: 'Promijeni pravokutnik visine',\n rect_width: 'Promijeni pravokutnik širine',\n corner_radius: 'Promijeni Pravokutnik Corner Radius',\n image_width: 'Promijeni sliku širine',\n image_height: 'Promijeni sliku visina',\n image_url: 'Promijeni URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Promjena sadržaja teksta',\n font_family: 'Promjena fontova',\n font_size: 'Change font size',\n bold: 'Podebljani tekst',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Promijeni boju pozadine / neprozirnost',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Prilagodi na sve sadržaje',\n fit_to_canvas: 'Prilagodi na platnu',\n fit_to_layer_content: 'Prilagodi sloj sadržaj',\n fit_to_sel: 'Prilagodi odabir',\n align_relative_to: 'Poravnaj u odnosu na ...',\n relativeTo: 'u odnosu na:',\n page: 'stranica',\n largest_object: 'najveći objekt',\n selected_objects: 'izabrani objekti',\n smallest_object: 'najmanji objekt',\n new_doc: 'Nove slike',\n open_doc: 'Otvori sliku',\n export_img: 'Export',\n save_doc: 'Spremanje slike',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Poravnaj dolje',\n align_center: 'Centriraj',\n align_left: 'Poravnaj lijevo',\n align_middle: 'Poravnaj Srednji',\n align_right: 'Poravnaj desno',\n align_top: 'Poravnaj Top',\n mode_select: 'Odaberite alat',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Pravokutnik',\n mode_ellipse: 'Elipsa',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Tekst Alat',\n mode_image: 'Image Tool',\n mode_zoom: 'Alat za zumiranje',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Poništi',\n redo: 'Redo',\n tool_source: 'Uredi Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Grupa Elementi',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Razgrupiranje Elementi',\n docprops: 'Svojstva dokumenta',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Pomakni na vrh',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Spremiti',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Brisanje sloja',\n move_down: 'Move Layer Down',\n new: 'New Layer',\n rename: 'Preimenuj Layer',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Select predefinirane:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'hu',\n dir: 'ltr',\n common: {\n ok: 'Ment',\n cancel: 'Szakítani',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Kattints ide a változások töltse szín, shift-click változtatni stroke color',\n zoom_level: 'Change nagyítási',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Change töltse color',\n stroke_color: 'Change stroke color',\n stroke_style: 'Change stroke kötőjel style',\n stroke_width: 'Change stroke width',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Váltás forgás szög',\n blur: 'Change gaussian blur value',\n opacity: 'A kijelölt elem opacity',\n circle_cx: 'Change kör CX koordináta',\n circle_cy: 'Change kör cy koordináta',\n circle_r: 'Change kör sugara',\n ellipse_cx: 'Change ellipszis&#39;s CX koordináta',\n ellipse_cy: 'Change ellipszis&#39;s cy koordináta',\n ellipse_rx: 'Change ellipszis&#39;s x sugarú',\n ellipse_ry: 'Change ellipszis&#39;s y sugara',\n line_x1: 'A sor kezd x koordináta',\n line_x2: 'A sor vége az x koordináta',\n line_y1: 'A sor kezd y koordináta',\n line_y2: 'A sor vége az y koordináta',\n rect_height: 'Change téglalap magassága',\n rect_width: 'Change téglalap szélessége',\n corner_radius: 'Change téglalap sarok sugara',\n image_width: 'Change kép szélessége',\n image_height: 'Kép módosítása height',\n image_url: 'Change URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'A szöveg tartalma',\n font_family_label: 'Font:',\n font_family: 'Change Betűcsalád',\n font_size: 'Change font size',\n bold: 'Félkövér szöveg',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Dőlt szöveg',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Change background color / homályosság',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Illeszkednek az összes tartalom',\n fit_to_canvas: 'Igazítás a vászonra',\n fit_to_layer_content: 'Igazítás a réteg tartalma',\n fit_to_sel: 'Igazítás a kiválasztási',\n align_relative_to: 'Képest Igazítás ...',\n relativeTo: 'relatív hogy:',\n page: 'Page',\n largest_object: 'legnagyobb objektum',\n selected_objects: 'választott tárgyak',\n smallest_object: 'legkisebb objektum',\n new_doc: 'Új kép',\n open_doc: 'Kép megnyitása',\n export_img: 'Export',\n save_doc: 'Kép mentése más',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Alulra igazítás',\n align_center: 'Középre igazítás',\n align_left: 'Balra igazítás',\n align_middle: 'Közép-align',\n align_right: 'Jobbra igazítás',\n align_top: 'Align Top',\n mode_select: 'Válassza ki az eszközt',\n mode_fhpath: 'Ceruza eszköz',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand téglalap',\n mode_ellipse: 'Ellipszisszelet',\n mode_circle: 'Körbe',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Szöveg eszköz',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Visszavon',\n redo: 'Megismétléséhez',\n tool_source: 'Szerkesztés Forrás',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Csoport elemei',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Szétbont elemei',\n docprops: 'Dokumentum tulajdonságai',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Mozgatás lefelé',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Ment',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Réteg törlése',\n move_down: 'Mozgatása lefelé',\n new: 'Új réteg',\n rename: 'Réteg átnevezése',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Válassza ki előre definiált:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'hy',\n dir: 'ltr',\n common: {\n ok: 'Save',\n cancel: 'Cancel',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Click to change fill color, shift-click to change stroke color',\n zoom_level: 'Change zoom level',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Change fill color',\n stroke_color: 'Change stroke color',\n stroke_style: 'Change stroke dash style',\n stroke_width: 'Change stroke width',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Change rotation angle',\n blur: 'Change gaussian blur value',\n opacity: 'Change selected item opacity',\n circle_cx: \"Change circle's cx coordinate\",\n circle_cy: \"Change circle's cy coordinate\",\n circle_r: \"Change circle's radius\",\n ellipse_cx: \"Change ellipse's cx coordinate\",\n ellipse_cy: \"Change ellipse's cy coordinate\",\n ellipse_rx: \"Change ellipse's x radius\",\n ellipse_ry: \"Change ellipse's y radius\",\n line_x1: \"Change line's starting x coordinate\",\n line_x2: \"Change line's ending x coordinate\",\n line_y1: \"Change line's starting y coordinate\",\n line_y2: \"Change line's ending y coordinate\",\n rect_height: 'Change rectangle height',\n rect_width: 'Change rectangle width',\n corner_radius: 'Change Rectangle Corner Radius',\n image_width: 'Change image width',\n image_height: 'Change image height',\n image_url: 'Change URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Change text contents',\n font_family: 'Change Font Family',\n font_family_label: 'Font:',\n font_size: 'Change Font Size',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Change background color/opacity',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Fit to all content',\n fit_to_canvas: 'Fit to canvas',\n fit_to_layer_content: 'Fit to layer content',\n fit_to_sel: 'Fit to selection',\n align_relative_to: 'Align relative to ...',\n relativeTo: 'relative to:',\n page: 'page',\n largest_object: 'largest object',\n selected_objects: 'elected objects',\n smallest_object: 'smallest object',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Align Center',\n align_left: 'Align Left',\n align_middle: 'Align Middle',\n align_right: 'Align Right',\n align_top: 'Align Top',\n mode_select: 'Select Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rectangle',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Text Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Undo',\n redo: 'Redo',\n tool_source: 'Edit Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Group Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Save',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Delete Layer',\n move_down: 'Move Layer Down',\n new: 'New Layer',\n rename: 'Rename Layer',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Select predefined:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'id',\n dir: 'ltr',\n common: {\n ok: 'Simpan',\n cancel: 'Batal',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Klik untuk mengubah warna mengisi, shift-klik untuk mengubah warna stroke',\n zoom_level: 'Mengubah tingkat pembesaran',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Ubah warna mengisi',\n stroke_color: 'Ubah warna stroke',\n stroke_style: 'Ubah gaya dash stroke',\n stroke_width: 'Ubah stroke width',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Ubah sudut rotasi',\n blur: 'Change gaussian blur value',\n opacity: 'Mengubah item yang dipilih keburaman',\n circle_cx: 'Mengubah koordinat lingkaran cx',\n circle_cy: 'Mengubah koordinat cy lingkaran',\n circle_r: 'Ubah jari-jari lingkaran',\n ellipse_cx: 'Ubah elips&#39;s cx koordinat',\n ellipse_cy: 'Ubah elips&#39;s cy koordinat',\n ellipse_rx: 'Ubah elips&#39;s x jari-jari',\n ellipse_ry: 'Ubah elips&#39;s y jari-jari',\n line_x1: 'Ubah baris mulai x koordinat',\n line_x2: 'Ubah baris&#39;s Berakhir x koordinat',\n line_y1: 'Ubah baris mulai y koordinat',\n line_y2: 'Ubah baris di tiap akhir y koordinat',\n rect_height: 'Perubahan tinggi persegi panjang',\n rect_width: 'Ubah persegi panjang lebar',\n corner_radius: 'Ubah Corner Rectangle Radius',\n image_width: 'Ubah Lebar gambar',\n image_height: 'Tinggi gambar Perubahan',\n image_url: 'Ubah URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Ubah isi teks',\n font_family: 'Ubah Font Keluarga',\n font_family_label: 'Font:',\n font_size: 'Ubah Ukuran Font',\n bold: 'Bold Teks',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Teks',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Mengubah warna latar belakang / keburaman',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Cocok untuk semua konten',\n fit_to_canvas: 'Muat kanvas',\n fit_to_layer_content: 'Muat konten lapisan',\n fit_to_sel: 'Fit seleksi',\n align_relative_to: 'Rata relatif ...',\n relativeTo: 'relatif:',\n page: 'Halaman',\n largest_object: 'objek terbesar',\n selected_objects: 'objek terpilih',\n smallest_object: 'objek terkecil',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Rata Bottom',\n align_center: 'Rata Tengah',\n align_left: 'Rata Kiri',\n align_middle: 'Rata Tengah',\n align_right: 'Rata Kanan',\n align_top: 'Rata Top',\n mode_select: 'Pilih Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Persegi Panjang',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Lingkaran',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Teks Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Undo',\n redo: 'Redo',\n tool_source: 'Edit Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Kelompok Elemen',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elemen',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Pindah ke Bawah',\n move_top: 'Pindahkan ke Atas',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Simpan',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Hapus Layer',\n move_down: 'Pindahkan Layer Bawah',\n new: 'New Layer',\n rename: 'Rename Layer',\n move_up: 'Pindahkan Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Pilih standar:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'is',\n dir: 'ltr',\n common: {\n ok: 'Vista',\n cancel: 'Hætta',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Smelltu hér til að breyta fylla lit, Shift-smelltu til að breyta högg lit',\n zoom_level: 'Breyta Stækkunarstig',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Breyta fylla color',\n stroke_color: 'Breyta heilablķđfall color',\n stroke_style: 'Breyta heilablķđfall þjóta stíl',\n stroke_width: 'Breyta heilablķđfall width',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Breyting snúningur horn',\n blur: 'Change gaussian blur value',\n opacity: 'Breyta valin atriði opacity',\n circle_cx: 'Cx Breyta hring er að samræma',\n circle_cy: 'Breyta hring&#39;s cy samræma',\n circle_r: 'Radíus Breyta hringsins er',\n ellipse_cx: 'Breyta sporbaug&#39;s cx samræma',\n ellipse_cy: 'Breyta sporbaug&#39;s cy samræma',\n ellipse_rx: 'X radíus Breyta sporbaug&#39;s',\n ellipse_ry: 'Y radíus Breyta sporbaug&#39;s',\n line_x1: 'Breyta lína í byrjun x samræma',\n line_x2: 'Breyta lína&#39;s Ending x samræma',\n line_y1: 'Breyta lína í byrjun y samræma',\n line_y2: 'Breyta lína er endir y samræma',\n rect_height: 'Breyta rétthyrningur hæð',\n rect_width: 'Skipta rétthyrningur width',\n corner_radius: 'Breyta rétthyrningur Corner Radíus',\n image_width: 'Breyta mynd width',\n image_height: 'Breyta mynd hæð',\n image_url: 'Breyta URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Breyta texta innihald',\n font_family_label: 'Font:',\n font_family: 'Change Leturfjölskylda',\n font_size: 'Breyta leturstærð',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Breyta bakgrunnslit / opacity',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Laga til efni',\n fit_to_canvas: 'Fit á striga',\n fit_to_layer_content: 'Laga til lag efni',\n fit_to_sel: 'Fit til val',\n align_relative_to: 'Jafna miðað við ...',\n relativeTo: 'hlutfallslegt til:',\n page: 'síðu',\n largest_object: 'stærsti hlutinn',\n selected_objects: 'kjörinn hlutir',\n smallest_object: 'lítill hluti',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Jafna Bottom',\n align_center: 'Jafna Center',\n align_left: 'Vinstri jöfnun',\n align_middle: 'Jafna Mið',\n align_right: 'Hægri jöfnun',\n align_top: 'Jöfnun Top',\n mode_select: 'Veldu Tól',\n mode_fhpath: 'Blýantur Tól',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand rétthyrningur',\n mode_ellipse: 'Sporbaugur',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Sporbaugur',\n mode_path: 'Path Tool',\n mode_text: 'Text Tool',\n mode_image: 'Mynd Tól',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Hætta',\n redo: 'Endurtaka',\n tool_source: 'Edit Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Group Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Færa Bottom',\n move_top: 'Fara efst á síðu',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Vista',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Eyða Lag',\n move_down: 'Færa Layer Down',\n new: 'Lag',\n rename: 'Endurnefna Lag',\n move_up: 'Færa Lag Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Veldu predefined:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'it',\n dir: 'ltr',\n common: {\n ok: 'Salva',\n cancel: 'Annulla',\n key_backspace: 'backspace',\n key_del: 'Canc',\n key_down: 'giù',\n key_up: 'su',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Mostra/nascondi strumenti per il tratto',\n palette_info: 'Fare clic per cambiare il colore di riempimento, shift-click per cambiare colore del tratto',\n zoom_level: 'Cambia il livello di zoom',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: \"Identifica l'elemento\",\n fill_color: 'Cambia il colore di riempimento',\n stroke_color: 'Cambia il colore del tratto',\n stroke_style: 'Cambia lo stile del tratto',\n stroke_width: 'Cambia la larghezza del tratto',\n pos_x: 'Modifica la coordinata x',\n pos_y: 'Modifica la coordinata y',\n linecap_butt: 'Inizio linea: Punto',\n linecap_round: 'Inizio linea: Tondo',\n linecap_square: 'Inizio linea: Quadrato',\n linejoin_bevel: 'Giunzione: smussata',\n linejoin_miter: 'Giunzione: spezzata',\n linejoin_round: 'Giunzione: arrotondata',\n angle: \"Cambia l'angolo di rotazione\",\n blur: \"Cambia l'intensità della sfocatura\",\n opacity: \"Cambia l'opacità dell'oggetto selezionato\",\n circle_cx: 'Cambia la coordinata Cx del cerchio',\n circle_cy: 'Cambia la coordinata Cy del cerchio',\n circle_r: 'Cambia il raggio del cerchio',\n ellipse_cx: \"Cambia la coordinata Cx dell'ellisse\",\n ellipse_cy: \"Cambia la coordinata Cy dell'ellisse\",\n ellipse_rx: \"Cambia l'asse x dell'ellisse\",\n ellipse_ry: \"Cambia l'asse y dell'ellisse\",\n line_x1: 'Modifica la coordinata iniziale x della linea',\n line_x2: 'Modifica la coordinata finale x della linea',\n line_y1: 'Modifica la coordinata iniziale y della linea',\n line_y2: 'Modifica la coordinata finale y della linea',\n rect_height: \"Cambia l'altezza rettangolo\",\n rect_width: 'Cambia la larghezza rettangolo',\n corner_radius: \"Cambia il raggio dell'angolo\",\n image_width: \"Cambia la larghezza dell'immagine\",\n image_height: \"Cambia l'altezza dell'immagine\",\n image_url: 'Cambia URL',\n node_x: 'Modifica la coordinata x del nodo',\n node_y: 'Modifica la coordinata y del nodo',\n seg_type: 'Cambia il tipo di segmento',\n straight_segments: 'Linea retta',\n curve_segments: 'Curva',\n text_contents: 'Cambia il contenuto del testo',\n font_family_label: 'Font:',\n font_family: 'Cambia il tipo di Font',\n font_size: 'Modifica dimensione carattere',\n bold: 'Grassetto',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Corsivo',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Menù principale',\n bkgnd_color_opac: 'Cambia colore/opacità dello sfondo',\n connector_no_arrow: 'No freccia',\n fitToContent: 'Adatta al contenuto',\n fit_to_all: 'Adatta a tutti i contenuti',\n fit_to_canvas: \"Adatta all'area di disegno\",\n fit_to_layer_content: 'Adatta al contenuto del livello',\n fit_to_sel: 'Adatta alla selezione',\n align_relative_to: 'Allineati a ...',\n relativeTo: 'Rispetto a:',\n page: 'Pagina',\n largest_object: 'Oggetto più grande',\n selected_objects: 'Oggetti selezionati',\n smallest_object: 'Oggetto più piccolo',\n new_doc: 'Nuova immagine',\n open_doc: 'Apri immagine',\n export_img: 'Export',\n save_doc: 'Salva',\n import_doc: 'Importa SVG',\n align_to_page: 'Allinea elementi alla pagina',\n align_bottom: 'Allinea in basso',\n align_center: 'Allinea al centro',\n align_left: 'Allinea a sinistra',\n align_middle: 'Allinea al centro',\n align_right: 'Allinea a destra',\n align_top: 'Allinea in alto',\n mode_select: 'Seleziona',\n mode_fhpath: 'Matita',\n mode_line: 'Linea',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Rettangolo a mano libera',\n mode_ellipse: 'Ellisse',\n mode_circle: 'Cerchio',\n mode_fhellipse: 'Ellisse a mano libera',\n mode_path: 'Spezzata',\n mode_text: 'Testo',\n mode_image: 'Immagine',\n mode_zoom: 'Zoom',\n no_embed: \"NOTA: L'immagine non può essere incorporata: dipenderà dal percorso assoluto per essere vista\",\n undo: 'Annulla',\n redo: 'Rifai',\n tool_source: 'Modifica sorgente',\n wireframe_mode: 'Contorno',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Raggruppa elementi',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Converti in tracciato',\n reorient_path: 'Riallinea',\n ungroup: 'Separa gli elementi',\n docprops: 'Proprietà del documento',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Sposta in fondo',\n move_top: 'Sposta in cima',\n node_clone: 'Clona nodo',\n node_delete: 'Elimina nodo',\n node_link: 'Collegamento tra punti di controllo',\n add_subpath: 'Aggiungi sotto-percorso',\n openclose_path: 'Apri/chiudi spezzata',\n source_save: 'Salva',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Livello',\n layers: 'Layers',\n del: 'Elimina il livello',\n move_down: 'Sposta indietro il livello',\n new: 'Nuovo livello',\n rename: 'Rinomina il livello',\n move_up: 'Sposta avanti il livello',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Sposta verso:',\n move_selected: 'Sposta gli elementi in un diverso livello'\n },\n config: {\n image_props: 'Proprietà Immagine',\n doc_title: 'Titolo',\n doc_dims: \"Dimensioni dell'area di disegno\",\n included_images: 'Immagini incluse',\n image_opt_embed: 'Incorpora dati (file locali)',\n image_opt_ref: \"Usa l'identificativo di riferimento\",\n editor_prefs: 'Preferenze',\n language: 'Lingua',\n background: \"Sfondo dell'editor\",\n editor_img_url: 'Image URL',\n editor_bg_note: \"Nota: Lo sfondo non verrà salvato con l'immagine.\",\n select_predefined: 'Selezioni predefinite:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Valore assegnato non valido',\n noContentToFitTo: \"Non c'è contenuto cui adeguarsi\",\n dupeLayerName: \"C'è già un livello con questo nome!\",\n enterUniqueLayerName: 'Assegna un diverso nome a ciascun livello, grazie!',\n enterNewLayerName: 'Assegna un nome al livello',\n layerHasThatName: 'Un livello ha già questo nome',\n QmoveElemsToLayer: \"Sposta gli elementi selezionali al livello '%s'?\",\n QwantToClear: 'Vuoi cancellare il disegno?\\nVerrà eliminato anche lo storico delle modifiche!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'Ci sono errori nel codice sorgente SVG.\\nRitorno al codice originale?',\n QignoreSourceChanges: 'Ignoro i cambiamenti nel sorgente SVG?',\n featNotSupported: 'Caratteristica non supportata',\n enterNewImgURL: \"Scrivi un nuovo URL per l'immagine\",\n defsFailOnSave: \"NOTA: A causa dlle caratteristiche del tuo browser, l'immagine potrà apparire errata (senza elementi o gradazioni) finché non sarà salvata.\",\n loadingImage: \"Sto caricando l'immagine. attendere prego...\",\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Nota le seguenti particolarità: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'ja',\n dir: 'ltr',\n common: {\n ok: 'OK',\n cancel: 'キャンセル',\n key_backspace: 'backspace',\n key_del: '削除',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'クリックで塗りの色を選択、Shift+クリックで線の色を選択',\n zoom_level: 'ズーム倍率の変更',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: '塗りの色を変更',\n stroke_color: '線の色を変更',\n stroke_style: '線種の変更',\n stroke_width: '線幅の変更',\n pos_x: 'X座標を変更',\n pos_y: 'Y座標を変更',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: '回転角の変更',\n blur: 'Change gaussian blur value',\n opacity: '不透明度',\n circle_cx: '円の中心を変更X座標',\n circle_cy: '円の中心を変更Y座標',\n circle_r: '変更円の半径',\n ellipse_cx: '楕円の中心を変更X座標',\n ellipse_cy: '楕円の中心を変更Y座標',\n ellipse_rx: '楕円の半径を変更X座標',\n ellipse_ry: '楕円の半径を変更Y座標',\n line_x1: '開始X座標',\n line_x2: '終了X座標',\n line_y1: '開始Y座標',\n line_y2: '終了Y座標',\n rect_height: '長方形の高さを変更',\n rect_width: '長方形の幅を変更',\n corner_radius: '長方形の角の半径を変更',\n image_width: '画像の幅を変更',\n image_height: '画像の高さを変更',\n image_url: 'URLを変更',\n node_x: 'ードのX座標を変更',\n node_y: 'ードのY座標を変更',\n seg_type: '線分の種類を変更',\n straight_segments: '直線',\n curve_segments: 'カーブ',\n text_contents: 'テキストの内容の変更',\n font_family_label: 'Font:',\n font_family: 'フォントファミリーの変更',\n font_size: '文字サイズの変更',\n bold: '太字',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'イタリック体',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: '背景色/不透明度の変更',\n connector_no_arrow: 'No arrow',\n fitToContent: 'コンテンツに合わせる',\n fit_to_all: 'すべてのコンテンツに合わせる',\n fit_to_canvas: 'キャンバスに合わせる',\n fit_to_layer_content: 'レイヤー上のコンテンツに合わせる',\n fit_to_sel: '選択対象に合わせる',\n align_relative_to: '揃える',\n relativeTo: '相対:',\n page: 'ページ',\n largest_object: '最大のオブジェクト',\n selected_objects: '選択オブジェクト',\n smallest_object: '最小のオブジェクト',\n new_doc: '新規イメージ',\n open_doc: 'イメージを開く',\n export_img: 'Export',\n save_doc: '画像を保存',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: '下揃え',\n align_center: '中央揃え',\n align_left: '左揃え',\n align_middle: '中央揃え',\n align_right: '右揃え',\n align_top: '上揃え',\n mode_select: '選択ツール',\n mode_fhpath: '鉛筆ツール',\n mode_line: '直線ツール',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'フリーハンド長方形',\n mode_ellipse: '楕円',\n mode_circle: '円',\n mode_fhellipse: 'フリーハンド楕円',\n mode_path: 'パスツール',\n mode_text: 'テキストツール',\n mode_image: 'イメージツール',\n mode_zoom: 'ズームツール',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: '元に戻す',\n redo: 'やり直し',\n tool_source: 'ソースの編集',\n wireframe_mode: 'ワイヤーフレームで表示 [F]',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'グループ化',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'パスに変換',\n reorient_path: '現在の角度を0度とする',\n ungroup: 'グループ化を解除',\n docprops: '文書のプロパティ',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: '奥に移動',\n move_top: '手前に移動',\n node_clone: 'ノードを複製',\n node_delete: 'ノードを削除',\n node_link: '制御点の接続',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: '適用',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'レイヤ',\n layers: 'Layers',\n del: 'レイヤの削除',\n move_down: 'レイヤを下へ移動',\n new: '新規レイヤ',\n rename: 'レイヤの名前を変更',\n move_up: 'レイヤを上へ移動',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: '移動先レイヤ:',\n move_selected: '選択対象を別のレイヤに移動'\n },\n config: {\n image_props: 'イメージの設定',\n doc_title: 'タイトル',\n doc_dims: 'キャンバスの大きさ',\n included_images: '挿入された画像の扱い',\n image_opt_embed: 'SVGファイルに埋め込む',\n image_opt_ref: '画像を参照する',\n editor_prefs: 'エディタの設定',\n language: '言語',\n background: 'エディタの背景色',\n editor_img_url: 'Image URL',\n editor_bg_note: '※背景色はファイルに保存されません。',\n select_predefined: 'デフォルト',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: '無効な値が指定されています。',\n noContentToFitTo: '合わせる対象のコンテンツがありません。',\n dupeLayerName: '同名のレイヤーが既に存在します。',\n enterUniqueLayerName: '新規レイヤの一意な名前を入力してください。',\n enterNewLayerName: 'レイヤの新しい名前を入力してください。',\n layerHasThatName: '既に同名が付いています。',\n QmoveElemsToLayer: \"選択した要素をレイヤー '%s' に移動しますか?\",\n QwantToClear: 'キャンバスをクリアしますか?\\nアンドゥ履歴も消去されます。',\n QwantToOpen: '新しいファイルを開きますか?\\nアンドゥ履歴も消去されます。',\n QerrorsRevertToSource: 'ソースにエラーがあります。\\n元のソースに戻しますか',\n QignoreSourceChanges: 'ソースの変更を無視しますか?',\n featNotSupported: '機能はサポートされていません。',\n enterNewImgURL: '画像のURLを入力してください。',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'ko',\n dir: 'ltr',\n common: {\n ok: '저장',\n cancel: '취소',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: '색상을 클릭, 근무 시간 채우기 스트로크 색상을 변경하려면 변경하려면',\n zoom_level: '변경 수준으로 확대',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: '채우기 색상 변경',\n stroke_color: '뇌졸중으로 색상 변경',\n stroke_style: '뇌졸중 변경 대시 스타일',\n stroke_width: '뇌졸중 너비 변경',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: '회전 각도를 변경',\n blur: 'Change gaussian blur value',\n opacity: '변경 항목을 선택 불투명도',\n circle_cx: '변경 동그라미 CX는 좌표',\n circle_cy: '동그라미 싸이 변경 조정할 수있어',\n circle_r: '변경 원의 반지름',\n ellipse_cx: 'CX는 타원의 좌표 변경',\n ellipse_cy: '싸이 타원 변경 조정할 수있어',\n ellipse_rx: '변경 타원의 x 반지름',\n ellipse_ry: '변경 타원의 y를 반경',\n line_x1: '변경 라인의 X 좌표 시작',\n line_x2: '변경 라인의 X 좌표 결말',\n line_y1: '라인 변경 y를 시작 좌표',\n line_y2: '라인 변경 y를 결말의 좌표',\n rect_height: '사각형의 높이를 변경',\n rect_width: '사각형의 너비 변경',\n corner_radius: '변경 직사각형 코너 반경',\n image_width: '이미지 변경 폭',\n image_height: '이미지 높이 변경',\n image_url: 'URL 변경',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: '텍스트 변경 내용',\n font_family_label: 'Font:',\n font_family: '글꼴 변경 패밀리',\n font_size: '글꼴 크기 변경',\n bold: '굵은 텍스트',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: '기울임꼴 텍스트',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: '배경 색상 변경 / 투명도',\n connector_no_arrow: 'No arrow',\n fitToContent: '맞춤 콘텐츠',\n fit_to_all: '맞춤 모든 콘텐츠에',\n fit_to_canvas: '맞춤 캔버스',\n fit_to_layer_content: '레이어에 맞게 콘텐츠',\n fit_to_sel: '맞춤 선택',\n align_relative_to: '정렬 상대적으로 ...',\n relativeTo: '상대:',\n page: '페이지',\n largest_object: '큰 개체',\n selected_objects: '당선 개체',\n smallest_object: '작은 개체',\n new_doc: '새 이미지',\n open_doc: '오픈 이미지',\n export_img: 'Export',\n save_doc: '이미지 저장',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: '히프 정렬',\n align_center: '정렬 센터',\n align_left: '왼쪽 정렬',\n align_middle: '중간 정렬',\n align_right: '오른쪽 맞춤',\n align_top: '정렬 탑',\n mode_select: '선택 도구',\n mode_fhpath: '연필 도구',\n mode_line: '선 도구',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: '자유 핸드 직사각형',\n mode_ellipse: '타원',\n mode_circle: '동그라미',\n mode_fhellipse: '자유 핸드 타원',\n mode_path: 'Path Tool',\n mode_text: '텍스트 도구',\n mode_image: '이미지 도구',\n mode_zoom: '줌 도구',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: '취소',\n redo: '재실행',\n tool_source: '수정 소스',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: '그룹 요소',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: '그룹 해제 요소',\n docprops: '문서 속성',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: '아래로 이동',\n move_top: '상단으로 이동',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: '저장',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: '레이어 삭제',\n move_down: '레이어 아래로 이동',\n new: '새 레이어',\n rename: '레이어 이름 바꾸기',\n move_up: '레이어 위로 이동',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: '미리 정의된 선택:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'lt',\n dir: 'ltr',\n common: {\n ok: 'Saugoti',\n cancel: 'Atšaukti',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Spustelėkite norėdami keisti užpildo spalvą, perėjimo spustelėkite pakeisti insultas spalva',\n zoom_level: 'Keisti mastelį',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Keisti užpildyti spalvos',\n stroke_color: 'Keisti insultas spalva',\n stroke_style: 'Keisti insultas brūkšnys stilius',\n stroke_width: 'Keisti insultas plotis',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Keisti sukimosi kampas',\n blur: 'Change gaussian blur value',\n opacity: 'Pakeisti pasirinkto elemento neskaidrumo',\n circle_cx: 'Keisti ratas&#39;s CX koordinuoti',\n circle_cy: 'Keisti ratas&#39;s CY koordinuoti',\n circle_r: 'Keisti savo apskritimo spindulys',\n ellipse_cx: 'Keisti elipse&#39;s CX koordinuoti',\n ellipse_cy: 'Keisti elipse&#39;s CY koordinuoti',\n ellipse_rx: 'Keisti elipsė &quot;X spindulys',\n ellipse_ry: 'Keisti elipse Y spindulys',\n line_x1: 'Keisti linijos nuo koordinačių x',\n line_x2: 'Keisti linijos baigėsi x koordinuoti',\n line_y1: 'Keisti linijos pradžios y koordinačių',\n line_y2: 'Keisti linijos baigėsi y koordinačių',\n rect_height: 'Keisti stačiakampio aukščio',\n rect_width: 'Pakeisti stačiakampio plotis',\n corner_radius: 'Keisti stačiakampis skyrelį Spindulys',\n image_width: 'Keisti paveikslėlio plotis',\n image_height: 'Keisti vaizdo aukštis',\n image_url: 'Pakeisti URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Keisti teksto turinys',\n font_family_label: 'Font:',\n font_family: 'Pakeistišriftą Šeima',\n font_size: 'Change font size',\n bold: 'Pusjuodis',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Kursyvas',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Pakeisti fono spalvą / drumstumas',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Talpinti turinys',\n fit_to_all: 'Talpinti All content',\n fit_to_canvas: 'Talpinti drobė',\n fit_to_layer_content: 'Talpinti sluoksnis turinio',\n fit_to_sel: 'Talpinti atrankos',\n align_relative_to: 'Derinti palyginti ...',\n relativeTo: 'palyginti:',\n page: 'puslapis',\n largest_object: 'didžiausias objektas',\n selected_objects: 'išrinktas objektai',\n smallest_object: 'mažiausias objektą',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Lygiuoti apačioje',\n align_center: 'Lygiuoti',\n align_left: 'Lygiuoti kairėje',\n align_middle: 'Suderinti Vidurio',\n align_right: 'Lygiuoti dešinėje',\n align_top: 'Lygiuoti viršų',\n mode_select: 'Įrankis',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free Hand stačiakampis',\n mode_ellipse: 'Elipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free Hand Elipsė',\n mode_path: 'Path Tool',\n mode_text: 'Tekstas Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Įrankį',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Atšaukti',\n redo: 'Atstatyti',\n tool_source: 'Taisyti Šaltinis',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Elementų grupės',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Išgrupuoti elementai',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Perkelti į apačią',\n move_top: 'Perkelti į viršų',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Saugoti',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Ištrinti Layer',\n move_down: 'Perkelti sluoksnį Žemyn',\n new: 'New Layer',\n rename: 'Pervadinti sluoksnį',\n move_up: 'Perkelti sluoksnį Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Pasirinkite iš anksto:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'lv',\n dir: 'ltr',\n common: {\n ok: 'Glābt',\n cancel: 'Atcelt',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Noklikšķiniet, lai mainītu aizpildījuma krāsu, shift-click to mainīt stroke krāsa',\n zoom_level: 'Pārmaiņu mērogu',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Change aizpildījuma krāsu',\n stroke_color: 'Change stroke krāsa',\n stroke_style: 'Maina stroke domuzīme stils',\n stroke_width: 'Change stroke platums',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Mainīt griešanās leņķis',\n blur: 'Change gaussian blur value',\n opacity: 'Mainīt izvēlēto objektu necaurredzamība',\n circle_cx: 'Maina aplis&#39;s CX koordinēt',\n circle_cy: 'Pārmaiņu loks ir cy koordinēt',\n circle_r: 'Pārmaiņu loks ir rādiuss',\n ellipse_cx: 'Mainīt elipses&#39;s CX koordinēt',\n ellipse_cy: 'Mainīt elipses&#39;s cy koordinēt',\n ellipse_rx: 'Mainīt elipses&#39;s x rādiuss',\n ellipse_ry: 'Mainīt elipses&#39;s y rādiuss',\n line_x1: 'Mainīt līnijas sākas x koordinēt',\n line_x2: 'Mainīt līnijas beigu x koordinēt',\n line_y1: 'Mainīt līnijas sākas y koordinātu',\n line_y2: 'Mainīt līnijas beigu y koordinātu',\n rect_height: 'Change Taisnstūra augstums',\n rect_width: 'Change taisnstūra platums',\n corner_radius: 'Maina Taisnstūris Corner Rādiuss',\n image_width: 'Mainīt attēla platumu',\n image_height: 'Mainīt attēla augstums',\n image_url: 'Change URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Mainītu teksta saturs',\n font_family_label: 'Font:',\n font_family: 'Mainīt fonta Family',\n font_size: 'Mainīt fonta izmēru',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Kursīvs',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Change background color / necaurredzamība',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Fit uz visu saturu',\n fit_to_canvas: 'Ievietot audekls',\n fit_to_layer_content: 'Ievietot slānis saturs',\n fit_to_sel: 'Fit atlases',\n align_relative_to: 'Līdzināt, salīdzinot ar ...',\n relativeTo: 'salīdzinājumā ar:',\n page: 'lapa',\n largest_object: 'lielākais objekts',\n selected_objects: 'ievēlēts objekti',\n smallest_object: 'mazākais objekts',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Līdzināt Bottom',\n align_center: 'Līdzināt uz centru',\n align_left: 'Līdzināt pa kreisi',\n align_middle: 'Līdzināt Middle',\n align_right: 'Līdzināt pa labi',\n align_top: 'Līdzināt Top',\n mode_select: 'Select Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Taisnstūris',\n mode_ellipse: 'Elipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path',\n mode_text: 'Text Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Atpogāt',\n redo: 'Redo',\n tool_source: 'Rediģēt Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Grupa Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Atgrupēt Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Pārvietot uz leju',\n move_top: 'Pārvietot uz augšu',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Glābt',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Dzēst Layer',\n move_down: 'Pārvietot slāni uz leju',\n new: 'New Layer',\n rename: 'Pārdēvēt Layer',\n move_up: 'Pārvietot slāni uz augšu',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Izvēlieties iepriekš:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'mk',\n dir: 'ltr',\n common: {\n ok: 'Зачувува',\n cancel: 'Откажи',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Кликни за да внесете промени бојата, промена клик да се промени бојата удар',\n zoom_level: 'Промена зум ниво',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Измени пополнете боја',\n stroke_color: 'Промена боја на мозочен удар',\n stroke_style: 'Промена удар цртичка стил',\n stroke_width: 'Промена удар Ширина',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Change ротација агол',\n blur: 'Change gaussian blur value',\n opacity: 'Промена избрани ставка непроѕирноста',\n circle_cx: 'Промена круг на cx координира',\n circle_cy: 'Промена круг&#39;s cy координираат',\n circle_r: 'Промена на круг со радиус',\n ellipse_cx: 'Промена елипса&#39;s cx координираат',\n ellipse_cy: 'Промена на елипса cy координира',\n ellipse_rx: 'Промена на елипса x радиус',\n ellipse_ry: 'Промена на елипса у радиус',\n line_x1: 'Промена линија почетна x координира',\n line_x2: 'Промена линија завршува x координира',\n line_y1: 'Промена линија координираат почетна y',\n line_y2: 'Промена линија завршува y координира',\n rect_height: 'Промена правоаголник височина',\n rect_width: 'Промена правоаголник Ширина',\n corner_radius: 'Промена правоаголник Corner Radius',\n image_width: 'Промена Ширина на сликата',\n image_height: 'Промена на слика височина',\n image_url: 'Промена URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Промена текст содржина',\n font_family_label: 'Font:',\n font_family: 'Смени фонт Фамилија',\n font_size: 'Изменифонт Големина',\n bold: 'Задебелен текст',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic текст',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Смени позадина / непроѕирноста',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Способен да Содржина',\n fit_to_all: 'Способен да сите содржина',\n fit_to_canvas: 'Побиране да платно',\n fit_to_layer_content: 'Способен да слој содржина',\n fit_to_sel: 'Способен да селекција',\n align_relative_to: 'Порамни во поглед на ...',\n relativeTo: 'во поглед на:',\n page: 'страница',\n largest_object: 'најголемиот објект',\n selected_objects: 'избран објекти',\n smallest_object: 'најмалата објект',\n new_doc: 'Нови слики',\n open_doc: 'Отвори слика',\n export_img: 'Export',\n save_doc: 'Зачувај слика',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Центрирано',\n align_left: 'Порамни лево Порамни',\n align_middle: 'Израмни Среден',\n align_right: 'Порамни десно',\n align_top: 'Израмни почетокот',\n mode_select: 'Изберете ја алатката',\n mode_fhpath: 'Алатка за молив',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Правоаголник слободна рака',\n mode_ellipse: 'Елипса',\n mode_circle: 'Круг',\n mode_fhellipse: 'Free-Hand Елипса',\n mode_path: 'Path Tool',\n mode_text: 'Алатка за текст',\n mode_image: 'Алатка за сликата',\n mode_zoom: 'Алатка за зумирање',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Врати',\n redo: 'Повтори',\n tool_source: 'Уреди Извор',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Група на елементи',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Елементи',\n docprops: 'Својства на документот',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to bottom',\n move_top: 'Поместување на почетокот',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Зачувува',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Избриши Слој',\n move_down: 'Премести слој долу',\n new: 'Нов слој',\n rename: 'Преименувај слој',\n move_up: 'Премести слој горе',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Изберете предефинирани:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'ms',\n dir: 'ltr',\n common: {\n ok: 'Simpan',\n cancel: 'Batal',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Klik untuk menukar warna mengisi, shift-klik untuk menukar warna stroke',\n zoom_level: 'Mengubah peringkat pembesaran',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Tukar Warna mengisi',\n stroke_color: 'Tukar Warna stroke',\n stroke_style: 'Tukar gaya dash stroke',\n stroke_width: 'Tukar stroke width',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Namakan sudut putaran',\n blur: 'Change gaussian blur value',\n opacity: 'Mengubah item yang dipilih keburaman',\n circle_cx: 'Mengubah koordinat bulatan cx',\n circle_cy: 'Mengubah koordinat cy bulatan',\n circle_r: 'Tukar jari-jari lingkaran',\n ellipse_cx: 'Tukar elips&#39;s cx koordinat',\n ellipse_cy: 'Tukar elips&#39;s cy koordinat',\n ellipse_rx: 'Tukar elips&#39;s x jari-jari',\n ellipse_ry: 'Tukar elips&#39;s y jari-jari',\n line_x1: 'Ubah baris mulai x koordinat',\n line_x2: 'Ubah baris&#39;s Berakhir x koordinat',\n line_y1: 'Ubah baris mulai y koordinat',\n line_y2: 'Ubah baris di tiap akhir y koordinat',\n rect_height: 'Perubahan quality persegi panjang',\n rect_width: 'Tukar persegi panjang lebar',\n corner_radius: 'Tukar Corner Rectangle Radius',\n image_width: 'Tukar Lebar imej',\n image_height: 'Tinggi gambar Kaca',\n image_url: 'Tukar URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Tukar isi teks',\n font_family_label: 'Font:',\n font_family: 'Tukar Font Keluarga',\n font_size: 'Ubah Saiz Font',\n bold: 'Bold Teks',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Teks',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Mengubah warna latar belakang / keburaman',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Cocok untuk semua kandungan',\n fit_to_canvas: 'Muat kanvas',\n fit_to_layer_content: 'Muat kandungan lapisan',\n fit_to_sel: 'Fit seleksi',\n align_relative_to: 'Rata relatif ...',\n relativeTo: 'relatif:',\n page: 'Laman',\n largest_object: 'objek terbesar',\n selected_objects: 'objek terpilih',\n smallest_object: 'objek terkecil',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Rata Bottom',\n align_center: 'Rata Tengah',\n align_left: 'Rata Kiri',\n align_middle: 'Rata Tengah',\n align_right: 'Rata Kanan',\n align_top: 'Rata Popular',\n mode_select: 'Pilih Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Persegi Panjang',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Lingkaran',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Teks Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Undo',\n redo: 'Redo',\n tool_source: 'Edit Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Kelompok Elemen',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elemen',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Pindah ke Bawah',\n move_top: 'Pindah ke Atas',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Simpan',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Padam Layer',\n move_down: 'Pindah Layer Bawah',\n new: 'New Layer',\n rename: 'Rename Layer',\n move_up: 'Pindah Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Pilih standard:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'mt',\n dir: 'ltr',\n common: {\n ok: 'Save',\n cancel: 'Ikkanċella',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Ikklikkja biex timla l-bidla fil-kulur, ikklikkja-bidla għall-bidla color stroke',\n zoom_level: 'Bidla zoom livell',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Bidla imla color',\n stroke_color: 'Color stroke Bidla',\n stroke_style: 'Bidla stroke dash stil',\n stroke_width: 'Wisa &#39;puplesija Bidla',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Angolu ta &#39;rotazzjoni Bidla',\n blur: 'Change gaussian blur value',\n opacity: 'Bidla magħżula opaċità partita',\n circle_cx: 'CX ċirku Tibdil jikkoordinaw',\n circle_cy: 'Ċirku Tibdil cy jikkoordinaw',\n circle_r: 'Raġġ ta &#39;ċirku tal-Bidla',\n ellipse_cx: 'Bidla ellissi&#39;s CX jikkoordinaw',\n ellipse_cy: 'Ellissi Tibdil cy jikkoordinaw',\n ellipse_rx: 'Raġġ x ellissi Tibdil',\n ellipse_ry: 'Raġġ y ellissi Tibdil',\n line_x1: 'Bidla fil-linja tal-bidu tikkoordina x',\n line_x2: 'Linja tal-Bidla li jispiċċa x jikkoordinaw',\n line_y1: 'Bidla fil-linja tal-bidu y jikkoordinaw',\n line_y2: 'Linja Tibdil jispiċċa y jikkoordinaw',\n rect_height: 'Għoli rettangolu Bidla',\n rect_width: 'Wisa &#39;rettangolu Bidla',\n corner_radius: 'Bidla Rectangle Corner Radius',\n image_width: 'Wisa image Bidla',\n image_height: 'Għoli image Bidla',\n image_url: 'Bidla URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Test kontenut Bidla',\n font_family_label: 'Font:',\n font_family: 'Bidla Font Familja',\n font_size: 'Change font size',\n bold: 'Bold Test',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Test korsiv',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Bidla fil-kulur fl-isfond / opaċità',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit għall-kontenut',\n fit_to_all: 'Tajbin għall-kontenut',\n fit_to_canvas: 'Xieraq li kanvas',\n fit_to_layer_content: 'Fit-kontenut ta &#39;saff għal',\n fit_to_sel: 'Fit-għażla',\n align_relative_to: 'Jallinjaw relattiv għall - ...',\n relativeTo: 'relattiv għall -:',\n page: 'paġna',\n largest_object: 'akbar oġġett',\n selected_objects: 'oġġetti elett',\n smallest_object: 'iżgħar oġġett',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Tallinja Bottom',\n align_center: 'Tallinja Center',\n align_left: 'Tallinja Left',\n align_middle: 'Tallinja Nofsani',\n align_right: 'Tallinja Dritt',\n align_top: 'Tallinja Top',\n mode_select: 'Select Tool',\n mode_fhpath: 'Lapes Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free Hand-Rectangle',\n mode_ellipse: 'Ellissi',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free Hand-ellissi',\n mode_path: 'Path Tool',\n mode_text: 'Text Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Jneħħu',\n redo: 'Jerġa &#39;jagħmel',\n tool_source: 'Source Edit',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Grupp Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: 'Dokument Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Save',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Ħassar Layer',\n move_down: 'Move Layer Down',\n new: 'New Layer',\n rename: 'Semmi mill-ġdid Layer',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Select predefiniti:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'nl',\n dir: 'ltr',\n common: {\n ok: 'Ok',\n cancel: 'Annuleren',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'omlaag',\n key_up: 'omhoog',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Mogelijk gemaakt door'\n },\n ui: {\n toggle_stroke_tools: 'Toon/verberg meer lijn gereedschap',\n palette_info: 'Klik om de vul kleur te veranderen, shift-klik om de lijn kleur te veranderen',\n zoom_level: 'In-/uitzoomen',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identificeer het element',\n fill_color: 'Verander vul kleur',\n stroke_color: 'Verander lijn kleur',\n stroke_style: 'Verander lijn stijl',\n stroke_width: 'Verander lijn breedte',\n pos_x: 'Verander X coordinaat',\n pos_y: 'Verander Y coordinaat',\n linecap_butt: 'Lijneinde: Geen',\n linecap_round: 'Lijneinde: Rond',\n linecap_square: 'Lijneinde: Vierkant',\n linejoin_bevel: 'Lijnverbinding: Afgestompt',\n linejoin_miter: 'Lijnverbinding: Hoek',\n linejoin_round: 'Lijnverbinding: Rond',\n angle: 'Draai',\n blur: 'Verander Gaussische vervaging waarde',\n opacity: 'Verander opaciteit geselecteerde item',\n circle_cx: 'Verander het X coordinaat van het cirkel middelpunt',\n circle_cy: 'Verander het Y coordinaat van het cirkel middelpunt',\n circle_r: 'Verander de cirkel radius',\n ellipse_cx: 'Verander het X coordinaat van het ellips middelpunt',\n ellipse_cy: 'Verander het Y coordinaat van het ellips middelpunt',\n ellipse_rx: 'Verander ellips X radius',\n ellipse_ry: 'Verander ellips Y radius',\n line_x1: 'Verander start X coordinaat van de lijn',\n line_x2: 'Verander eind X coordinaat van de lijn',\n line_y1: 'Verander start Y coordinaat van de lijn',\n line_y2: 'Verander eind Y coordinaat van de lijn',\n rect_height: 'Verander hoogte rechthoek',\n rect_width: 'Verander breedte rechthoek',\n corner_radius: 'Verander hoekradius rechthoek',\n image_width: 'Verander breedte afbeelding',\n image_height: 'Verander hoogte afbeelding',\n image_url: 'Verander URL',\n node_x: 'Verander X coordinaat knooppunt',\n node_y: 'Verander Y coordinaat knooppunt',\n seg_type: 'Verander segment type',\n straight_segments: 'Recht',\n curve_segments: 'Gebogen',\n text_contents: 'Wijzig tekst',\n font_family_label: 'Font:',\n font_family: 'Verander lettertype',\n font_size: 'Verander lettertype grootte',\n bold: 'Vet',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Cursief',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Hoofdmenu',\n bkgnd_color_opac: 'Verander achtergrond kleur/doorzichtigheid',\n connector_no_arrow: 'Geen pijl',\n fitToContent: 'Pas om inhoud',\n fit_to_all: 'Pas om alle inhoud',\n fit_to_canvas: 'Pas om canvas',\n fit_to_layer_content: 'Pas om laag inhoud',\n fit_to_sel: 'Pas om selectie',\n align_relative_to: 'Uitlijnen relatief ten opzichte van ...',\n relativeTo: 'Relatief ten opzichte van:',\n page: 'Pagina',\n largest_object: 'Grootste object',\n selected_objects: 'Geselecteerde objecten',\n smallest_object: 'Kleinste object',\n new_doc: 'Nieuwe afbeelding',\n open_doc: 'Open afbeelding',\n export_img: 'Export',\n save_doc: 'Afbeelding opslaan',\n import_doc: 'Importeer SVG',\n align_to_page: 'Lijn element uit relatief ten opzichte van de pagina',\n align_bottom: 'Onder uitlijnen',\n align_center: 'Centreren',\n align_left: 'Links uitlijnen',\n align_middle: 'Midden uitlijnen',\n align_right: 'Rechts uitlijnen',\n align_top: 'Boven uitlijnen',\n mode_select: 'Selecteer',\n mode_fhpath: 'Potlood',\n mode_line: 'Lijn',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Vrije stijl rechthoek',\n mode_ellipse: 'Ellips',\n mode_circle: 'Cirkel',\n mode_fhellipse: 'Vrije stijl ellips',\n mode_path: 'Pad',\n mode_text: 'Tekst',\n mode_image: 'Afbeelding',\n mode_zoom: 'Zoom',\n no_embed: 'Let op: Dit plaatje kan niet worden geintegreerd (embeded). Het hangt af van dit pad om te worden afgebeeld.',\n undo: 'Ongedaan maken',\n redo: 'Opnieuw doen',\n tool_source: 'Bewerk bron',\n wireframe_mode: 'Draadmodel',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Groepeer elementen',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Zet om naar pad',\n reorient_path: 'Herorienteer pad',\n ungroup: 'Groepering opheffen',\n docprops: 'Documenteigenschappen',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Naar achtergrond',\n move_top: 'Naar voorgrond',\n node_clone: 'Kloon knooppunt',\n node_delete: 'Delete knooppunt',\n node_link: 'Koppel controle punten',\n add_subpath: 'Subpad toevoegen',\n openclose_path: 'Open/sluit subpad',\n source_save: 'Veranderingen toepassen',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Laag',\n layers: 'Layers',\n del: 'Delete laag',\n move_down: 'Beweeg laag omlaag',\n new: 'Nieuwe laag',\n rename: 'Hernoem laag',\n move_up: 'Beweeg laag omhoog',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Verplaats elementen naar:',\n move_selected: 'Verplaats geselecteerde elementen naar andere laag'\n },\n config: {\n image_props: 'Afbeeldingeigenschappen',\n doc_title: 'Titel',\n doc_dims: 'Canvas afmetingen',\n included_images: 'Ingesloten afbeeldingen',\n image_opt_embed: 'Toevoegen data (lokale bestanden)',\n image_opt_ref: 'Gebruik bestand referentie',\n editor_prefs: 'Editor eigenschappen',\n language: 'Taal',\n background: 'Editor achtergrond',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Let op: De achtergrond wordt niet opgeslagen met de afbeelding.',\n select_predefined: 'Kies voorgedefinieerd:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Verkeerde waarde gegeven',\n noContentToFitTo: 'Geen inhoud om omheen te passen',\n dupeLayerName: 'Er is al een laag met die naam!',\n enterUniqueLayerName: 'Geef een unieke laag naam',\n enterNewLayerName: 'Geef een nieuwe laag naam',\n layerHasThatName: 'Laag heeft al die naam',\n QmoveElemsToLayer: \"Verplaats geselecteerde elementen naar laag '%s'?\",\n QwantToClear: 'Wil je de afbeelding leeg maken?\\nDit zal ook de ongedaan maak geschiedenis wissen!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'Er waren analyse fouten in je SVG bron.\\nTeruggaan naar de originele SVG bron?',\n QignoreSourceChanges: 'Veranderingen in de SVG bron negeren?',\n featNotSupported: 'Functie wordt niet ondersteund',\n enterNewImgURL: 'Geef de nieuwe afbeelding URL',\n defsFailOnSave: 'Let op: Vanwege een fout in je browser, kan dit plaatje verkeerd verschijnen (missende hoeken en/of elementen). Het zal goed verschijnen zodra het plaatje echt wordt opgeslagen.',\n loadingImage: 'Laden van het plaatje, even geduld aub...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Let op de volgende problemen: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'no',\n dir: 'ltr',\n common: {\n ok: 'Lagre',\n cancel: 'Avbryt',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Click å endre fyllfarge, shift-klikke for å endre slag farge',\n zoom_level: 'Endre zoomnivå',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Endre fyllfarge',\n stroke_color: 'Endre stroke color',\n stroke_style: 'Endre stroke dash stil',\n stroke_width: 'Endre stroke width',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Endre rotasjonsvinkelen',\n blur: 'Change gaussian blur value',\n opacity: 'Endre valgte elementet opasitet',\n circle_cx: 'Endre sirkelens CX koordinatsystem',\n circle_cy: 'Endre sirkelens koordinere cy',\n circle_r: 'Endre sirkelens radius',\n ellipse_cx: 'Endre ellipse&#39;s CX koordinatsystem',\n ellipse_cy: 'Endre ellipse&#39;s koordinere cy',\n ellipse_rx: 'Endre ellipse&#39;s x radius',\n ellipse_ry: 'Endre ellipse&#39;s y radius',\n line_x1: 'Endre linje begynner x koordinat',\n line_x2: 'Endre linje&#39;s ending x koordinat',\n line_y1: 'Endre linje begynner y koordinat',\n line_y2: 'Endre linje&#39;s ending y koordinat',\n rect_height: 'Endre rektangel høyde',\n rect_width: 'Endre rektangel bredde',\n corner_radius: 'Endre rektangel Corner Radius',\n image_width: 'Endre bilde bredde',\n image_height: 'Endre bilde høyde',\n image_url: 'Endre URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Endre tekst innholdet',\n font_family_label: 'Font:',\n font_family: 'Change Font Family',\n font_size: 'Endre skriftstørrelse',\n bold: 'Fet tekst',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Kursiv tekst',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Endre bakgrunnsfarge / opacity',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Passer til alt innhold',\n fit_to_canvas: 'Tilpass til lerret',\n fit_to_layer_content: 'Fit to lag innhold',\n fit_to_sel: 'Tilpass til valg',\n align_relative_to: 'Juster i forhold til ...',\n relativeTo: 'i forhold til:',\n page: 'side',\n largest_object: 'største objekt',\n selected_objects: 'velges objekter',\n smallest_object: 'minste objekt',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Midtstill',\n align_left: 'Venstrejuster',\n align_middle: 'Rett Middle',\n align_right: 'Høyrejuster',\n align_top: 'Align Top',\n mode_select: 'Select Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Linjeverktøy',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand rektangel',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Text Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Angre',\n redo: 'Redo',\n tool_source: 'Edit Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Gruppe Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Dele opp Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Flytt til toppen',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Lagre',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Slett laget',\n move_down: 'Flytt laget ned',\n new: 'Nytt lag',\n rename: 'Rename Layer',\n move_up: 'Flytt Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Velg forhåndsdefinerte:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'pl',\n dir: 'ltr',\n author: 'Aleksander Lurie',\n common: {\n ok: 'OK',\n cancel: 'Anuluj',\n key_backspace: 'usuń',\n key_del: 'usuń',\n key_down: 'w dół',\n key_up: 'w górę',\n more_opts: 'więcej opcji',\n url: 'adres url',\n width: 'Szerokość',\n height: 'Wysokość'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Pokaż/ukryj więcej opcji obramowania',\n palette_info: 'Kliknij aby zmienić kolor wypełnienia, przytrzymaj shift aby zmienić kolor obramowania',\n zoom_level: 'Zmiana powiększenia',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identyfikator elementu',\n fill_color: 'Zmień kolor wypełnienia',\n stroke_color: 'Zmień kolor obramowania',\n stroke_style: 'Zmień styl obramowania',\n stroke_width: 'Zmień szerokość obramowania o 1, przytrzymaj shift aby zmienić szerokość o 0.1',\n pos_x: 'Zmień współrzędną X',\n pos_y: 'Zmień współrzędną Y',\n linecap_butt: 'Zakończenie linii: grzbiet',\n linecap_round: 'Zakończenie linii: zaokrąglone',\n linecap_square: 'Zakończenie linii: kwadrat',\n linejoin_bevel: 'Łączenie linii: ścięte',\n linejoin_miter: 'Łączenie linii: ostre',\n linejoin_round: 'Łączenie linii: zaokrąglone',\n angle: 'Zmień kąt obrotu',\n blur: 'Zmień wartość rozmycia gaussa',\n opacity: 'Zmień przezroczystość zaznaczonego elementu',\n circle_cx: 'Zmień współrzędną cx okręgu',\n circle_cy: 'Zmień współrzędną cy okręgu',\n circle_r: 'zmień promień okręgu',\n ellipse_cx: 'Zmień współrzędną cx elipsy',\n ellipse_cy: 'Zmień współrzędną cy elipsy',\n ellipse_rx: 'Zmień promień x elipsy',\n ellipse_ry: 'Zmień promień y elipsy',\n line_x1: 'Zmień współrzędna x początku linii',\n line_x2: 'Zmień współrzędną x końca linii',\n line_y1: 'Zmień współrzędną y początku linii',\n line_y2: 'Zmień współrzędną y końca linii',\n rect_height: 'Zmień wysokość prostokąta',\n rect_width: 'Zmień szerokość prostokąta',\n corner_radius: 'Zmień promień zaokrąglenia narożników prostokąta',\n image_width: 'Zmień wysokość obrazu',\n image_height: 'Zmień szerokość obrazu',\n image_url: 'Zmień adres URL',\n node_x: 'Zmień współrzędną x węzła',\n node_y: 'Zmień współrzędną y węzła',\n seg_type: 'Zmień typ segmentu',\n straight_segments: 'Prosty',\n curve_segments: 'Zaokrąglony',\n text_contents: 'Zmień text',\n font_family_label: 'Font:',\n font_family: 'Zmień krój czcionki',\n font_size: 'Zmień rozmiar czcionki',\n bold: 'Pogrubienie textu',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Kursywa',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Menu główne',\n bkgnd_color_opac: 'Zmiana koloru/przezroczystości tła',\n connector_no_arrow: 'Brak strzałek',\n fitToContent: 'Dopasuj do zawartości',\n fit_to_all: 'Dopasuj do całej zawartości',\n fit_to_canvas: 'Dopasuj do widoku',\n fit_to_layer_content: 'Dopasuj do zawartości warstwy',\n fit_to_sel: 'Dopasuj do zaznaczenia',\n align_relative_to: 'Wyrównaj relatywnie do ...',\n relativeTo: 'relatywnie do:',\n page: 'strona',\n largest_object: 'największy obiekt',\n selected_objects: 'zaznaczone obiekty',\n smallest_object: 'najmniejszy obiekt',\n new_doc: 'Nowy obraz',\n open_doc: 'Otwórz obraz',\n export_img: 'Eksportuj',\n save_doc: 'Zapisz obraz',\n import_doc: 'Importuj SVG',\n align_to_page: 'Wyrównaj element do strony',\n align_bottom: 'Wyrównaj do dołu',\n align_center: 'Wyśrodkuj w poziomie',\n align_left: 'Wyrównaj do lewej',\n align_middle: 'Wyśrodkuj w pionie',\n align_right: 'Wyrównaj do prawej',\n align_top: 'Wyrównaj do góry',\n mode_select: 'Zaznaczenie',\n mode_fhpath: 'Ołówek',\n mode_line: 'Linia',\n mode_rect: 'Prostokąt',\n mode_square: 'Kwadrat',\n mode_fhrect: 'Dowolny prostokąt',\n mode_ellipse: 'Elipsa',\n mode_circle: 'Okrąg',\n mode_fhellipse: 'Dowolna elipsa',\n mode_path: 'Ścieżka',\n mode_text: 'Tekst',\n mode_image: 'Obraz',\n mode_zoom: 'Powiększenie',\n no_embed: 'Uwaga: Ten obraz nie może być osadzony. Być może podany adres na to nie pozwala',\n undo: 'Wstecz',\n redo: 'Dalej',\n tool_source: 'Edytuj źródło',\n wireframe_mode: 'Tryb szkieletowy',\n clone: 'Klonuj element(y)',\n del: 'Usuń warstwę',\n group_elements: 'Grupuj elementy',\n make_link: 'Utwórz łącze',\n set_link_url: 'Ustal adres URL (pozostaw puste aby usunąć)',\n to_path: 'Konwertuj do ścieżki',\n reorient_path: 'Zresetuj obwiednię',\n ungroup: 'Rozgrupuj elementy',\n docprops: 'Właściwości dokumentu',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Przenieś pod spód',\n move_top: 'Przenieś na wierzch',\n node_clone: 'Klonuj węzeł',\n node_delete: 'Usuń węzeł',\n node_link: 'Podłącz punkty kontrolne',\n add_subpath: 'Dodaj ścieżkę podrzędną',\n openclose_path: 'Otwórz/zamknij ścieżkę podrzędną',\n source_save: 'Zachowaj zmiany',\n cut: 'Wytnij',\n copy: 'Kopiuj',\n paste: 'Wklej',\n paste_in_place: 'Wklej w miejscu',\n delete: 'Usuń',\n group: 'Grupuj',\n move_front: 'Przenieś do przodu',\n move_up: 'Przenieś warstwę w górę',\n move_down: 'Przenieś warstwę w dół',\n move_back: 'Przenieś do tyłu',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Warstwa',\n layers: 'Warstwy',\n del: 'Usuń warstwę',\n move_down: 'Przenieś warstwę w dół',\n new: 'Nowa warstwa',\n rename: 'Zmień nazwę warstwy',\n move_up: 'Przenieś warstwę w górę',\n dupe: 'Duplikuj warstwę',\n merge_down: 'Scal w dół',\n merge_all: 'Scal wszystko',\n move_elems_to: 'Przenieś elementy do:',\n move_selected: 'Przenieś zaznaczone elementy do innej warstwy'\n },\n config: {\n image_props: 'Własciwości obrazu',\n doc_title: 'Tytuł',\n doc_dims: 'Wymiary pola roboczego',\n included_images: 'Dołączone obrazy',\n image_opt_embed: 'Dane osadzone (pliki lokalne)',\n image_opt_ref: 'Użyj referencji do pliku',\n editor_prefs: 'Ustawienia edytora',\n language: 'Język',\n background: 'Tło edytora',\n editor_img_url: 'Adres URL obrazu',\n editor_bg_note: 'Uwaga: Tło nie zostało zapisane z obrazem.',\n select_predefined: 'Wybierz predefiniowany:',\n units_and_rulers: 'Jednostki/Linijki',\n show_rulers: 'Pokaż linijki',\n base_unit: 'Podstawowa jednostka:',\n grid: 'Siatka',\n snapping_onoff: 'Włącz/wyłącz przyciąganie',\n snapping_stepsize: 'Przyciągaj co:',\n grid_color: 'Kolor siatki',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Podano nieprawidłową wartość',\n noContentToFitTo: 'Brak zawartości do dopasowania',\n dupeLayerName: 'Istnieje już warstwa o takiej nazwie!',\n enterUniqueLayerName: 'Podaj unikalną nazwę warstwy',\n enterNewLayerName: 'Podaj nazwe nowej warstwy',\n layerHasThatName: 'Warstwa już tak się nazywa',\n QmoveElemsToLayer: 'Przenies zaznaczone elementy do warstwy \\'%s\\'?',\n QwantToClear: 'Jesteś pewien, że chcesz wyczyścić pole robocze?\\nHistoria projektu również zostanie skasowana',\n QwantToOpen: 'Jesteś pewien, że chcesz otworzyć nowy plik?\\nHistoria projektu również zostanie skasowana',\n QerrorsRevertToSource: 'Błąd parsowania źródła Twojego pliku SVG.\\nPrzywrócić orginalne źródło pliku SVG?',\n QignoreSourceChanges: 'Zignorowac zmiany w źródle pliku SVG?',\n featNotSupported: 'Funkcjonalność niedostępna',\n enterNewImgURL: 'Podaj adres URL nowego obrazu',\n defsFailOnSave: 'Uwaga: Ze względu na błąd w przeglądarce, ten obraz może się źle wyswietlać (brak gradientów lub elementów). Będzie jednak wyświetlał się poprawnie skoro został zapisany.',\n loadingImage: 'Ładowanie obrazu, proszę czekać...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Zwróć uwagę na nastepujące kwestie: ',\n unsavedChanges: 'Wykryto niezapisane zmiany.',\n enterNewLinkURL: 'Wpisz nowy adres URL hiperłącza',\n errorLoadingSVG: 'Błąd: Nie można załadować danych SVG',\n URLLoadFail: 'Nie można załadować z adresu URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'pt-BR',\n dir: 'ltr',\n common: {\n ok: 'OK',\n cancel: 'Cancelar',\n key_backspace: 'Tecla backspace',\n key_del: 'Tecla delete',\n key_down: 'Seta para baixo',\n key_up: 'Seta para cima',\n more_opts: 'Mais opções',\n url: 'URL',\n width: 'Largura',\n height: 'Altura'\n },\n misc: {\n powered_by: 'Tecnologia'\n },\n ui: {\n toggle_stroke_tools: 'Mais opções de traço',\n palette_info: 'Click para mudar a cor de preenchimento, shift-click para mudar a cor do traço',\n zoom_level: 'Mudar zoom',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identifica o elemento',\n fill_color: 'Mudar a cor de preenchimento',\n stroke_color: 'Mudar a cor do traço',\n stroke_style: 'Mudar o estilo do traço',\n stroke_width: 'Mudar a espessura do traço em 1, shift-click para mudar 0.1',\n pos_x: 'Mudar a coordenada X',\n pos_y: 'Mudar a coordenada Y',\n linecap_butt: 'Estilo do fim do traço: Topo',\n linecap_round: 'Estilo do fim do traço: Redondo',\n linecap_square: 'Estilo do fim do traço: Quadrado',\n linejoin_bevel: 'Estilo da Aresta: Chanfro',\n linejoin_miter: 'Estilo da Aresta: Reto',\n linejoin_round: 'Estilo da Aresta: Redondo',\n angle: 'Mudar ângulo de rotação',\n blur: 'Mudar valor de desfoque',\n opacity: 'Mudar opacidade do item selecionado',\n circle_cx: 'Mudar a coordenada cx do círculo',\n circle_cy: 'Mudar a coordenada cy do círculo',\n circle_r: 'Mudar o raio do círculo',\n ellipse_cx: 'Mudar a coordenada cx da elípse',\n ellipse_cy: 'Mudar a coordenada cy da elípse',\n ellipse_rx: 'Mudar o raio x da elípse',\n ellipse_ry: 'Mudar o raio y da elípse',\n line_x1: 'Mudar a coordenada x do início da linha',\n line_x2: 'Mudar a coordenada x do fim da linha',\n line_y1: 'Mudar a coordenada y do início da linha',\n line_y2: 'Mudar a coordenada y do fim da linha',\n rect_height: 'Mudar a altura do retângulo',\n rect_width: 'Mudar a largura do retângulo',\n corner_radius: 'Mudar o raio da aresta do retângulo',\n image_width: 'Mudar a largura da imagem',\n image_height: 'Mudar a altura da imagem',\n image_url: 'Mudar URL',\n node_x: 'Mudar a coordenada x da aresta',\n node_y: 'Mudar a coordenada y da aresta',\n seg_type: 'Mudar o tipo de segmento',\n straight_segments: 'Reto',\n curve_segments: 'Curvo',\n text_contents: 'Mudar conteúdo do texto',\n font_family_label: 'Font:',\n font_family: 'Mudar o estilo da fonte',\n font_size: 'Mudar o tamanho da fonte',\n bold: 'Negrito',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italico',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Menu Principal',\n bkgnd_color_opac: 'Mudar cor/opacidade do fundo',\n connector_no_arrow: 'Sem flecha',\n fitToContent: 'Ajustar ao conteúdo',\n fit_to_all: 'Ajustar a todo conteúdo',\n fit_to_canvas: 'Ajustar à tela',\n fit_to_layer_content: 'Ajustar ao conteúdo da camada',\n fit_to_sel: 'Ajustar à seleção',\n align_relative_to: 'Alinhar em relação à ...',\n relativeTo: 'Referência:',\n page: 'página',\n largest_object: 'maior objeto',\n selected_objects: 'objetos selecionados',\n smallest_object: 'menor objeto',\n new_doc: 'Nova imagem',\n open_doc: 'Abrir imagem',\n export_img: 'Export',\n save_doc: 'Salvar imagem',\n import_doc: 'Importar SVG',\n align_to_page: 'Alinhar elemento na página',\n align_bottom: 'Alinhar no fundo',\n align_center: 'Alinhar no centro',\n align_left: 'Alinhar na esquerda',\n align_middle: 'Alinhar no meio',\n align_right: 'Alinhar na direita',\n align_top: 'Alinhar no topo',\n mode_select: 'Selecão',\n mode_fhpath: 'Lápis',\n mode_line: 'Linha',\n mode_rect: 'Retângulo',\n mode_square: 'Quadrado',\n mode_fhrect: 'Retângulo a mão-livre',\n mode_ellipse: 'Elípse',\n mode_circle: 'Círculo',\n mode_fhellipse: 'Elípse a mão-livre',\n mode_path: 'Contorno',\n mode_text: 'Texto',\n mode_image: 'Imagem',\n mode_zoom: 'Zoom',\n no_embed: 'Atenção: Esta imagem não pode ser incorporada e dependerá de seu caminho para ser exibida',\n undo: 'Desfazer',\n redo: 'Refazer',\n tool_source: 'Editar o código',\n wireframe_mode: 'Modo linhas',\n clone: 'Clonar Elemento(s)',\n del: 'Deletar Elemento(s)',\n group_elements: 'Agrupar Elementos',\n make_link: 'Criar (hyper)link',\n set_link_url: 'Alterar URL (em branco para remover)',\n to_path: 'Converter para Contorno',\n reorient_path: 'Reorientar contorno',\n ungroup: 'Desagrupar Elementos',\n docprops: 'Propriedades',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Mover para o fundo',\n move_top: 'Mover para o topo',\n node_clone: 'Clonar Aresta',\n node_delete: 'Deletar Aresta',\n node_link: 'Alinhar pontos de controle',\n add_subpath: 'Adicionar contorno',\n openclose_path: 'Abrir/Fechar contorno',\n source_save: 'Salvar',\n cut: 'Recortar',\n copy: 'Copiar',\n paste: 'Colar',\n paste_in_place: 'Colar no mesmo local',\n delete: 'Deletar',\n group: 'Agrupar',\n move_front: 'Trazer para Frente',\n move_up: 'Avançar',\n move_down: 'Recuar',\n move_back: 'Enviar para Trás',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Camada',\n layers: 'Camadas',\n del: 'Deletar Camada',\n move_down: 'Enviar Camada para Trás',\n new: 'Nova Camada',\n rename: 'Renomear Camada',\n move_up: 'Trazer Camada para Frente',\n dupe: 'Duplicar Camada',\n merge_down: 'Achatar para baixo',\n merge_all: 'Achatar todas',\n move_elems_to: 'Mover elementos para:',\n move_selected: 'Mover elementos selecionados para outra camada'\n },\n config: {\n image_props: 'Propriedades',\n doc_title: 'Título',\n doc_dims: 'Dimensões',\n included_images: 'Imagens',\n image_opt_embed: 'Incorporadas (arquivos locais)',\n image_opt_ref: 'Usar referência',\n editor_prefs: 'Preferências',\n language: 'Idioma',\n background: 'Fundo da página',\n editor_img_url: 'URL da Imagem',\n editor_bg_note: 'Atenção: Fundo da página não será salvo.',\n select_predefined: 'Modelos:',\n units_and_rulers: 'Unidade & Réguas',\n show_rulers: 'Mostrar réguas',\n base_unit: 'Unidade base:',\n grid: 'Grade',\n snapping_onoff: 'Snap on/off',\n snapping_stepsize: 'Intensidade do Snap:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Valor inválido',\n noContentToFitTo: 'Não há conteúdo',\n dupeLayerName: 'Nome duplicado',\n enterUniqueLayerName: 'Insira um nome único',\n enterNewLayerName: 'Insira um novo nome',\n layerHasThatName: 'A camada já pussui este nome',\n QmoveElemsToLayer: 'Mover elementos selecionados para a camada: \\'%s\\'?',\n QwantToClear: 'Deseja criar um novo arquivo?\\nO histórico também será apagado!',\n QwantToOpen: 'Deseja abrir um novo arquivo?\\nO histórico também será apagado!',\n QerrorsRevertToSource: 'Foram encontrados erros ná análise do código SVG.\\nReverter para o código SVG original?',\n QignoreSourceChanges: 'Ignorar as mudanças no código SVG?',\n featNotSupported: 'Recurso não suportado',\n enterNewImgURL: 'Insira nova URL da imagem',\n defsFailOnSave: 'Atenção: Devido a um bug em seu navegador, esta imagem pode apresentar erros, porém será salva corretamente.',\n loadingImage: 'Carregando imagem, por favor aguarde...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Atenção para as seguintes questões: ',\n unsavedChanges: 'Existem alterações não salvas.',\n enterNewLinkURL: 'Insira novo URL do hyperlink',\n errorLoadingSVG: 'Erro: Impossível carregar dados SVG',\n URLLoadFail: 'Impossível carregar deste URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'pt-PT',\n dir: 'ltr',\n common: {\n ok: 'Salvar',\n cancel: 'Cancelar',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Clique para mudar a cor de preenchimento, shift-clique para mudar a cor do curso',\n zoom_level: 'Alterar o nível de zoom',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Alterar a cor de preenchimento',\n stroke_color: 'Mudar a cor do curso',\n stroke_style: 'Alterar o estilo do traço do curso',\n stroke_width: 'Alterar a largura do curso',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Alterar o ângulo de rotação',\n blur: 'Change gaussian blur value',\n opacity: 'Mude a opacidade item selecionado',\n circle_cx: 'Cx Mudar círculo de coordenadas',\n circle_cy: 'Círculo Mudança cy coordenar',\n circle_r: 'Alterar círculo de raio',\n ellipse_cx: 'Alterar elipse cx coordenar',\n ellipse_cy: 'Elipse Mudança cy coordenar',\n ellipse_rx: 'Raio X Change elipse',\n ellipse_ry: 'Raio y Change elipse',\n line_x1: 'Altere a linha de partida coordenada x',\n line_x2: 'Altere a linha está terminando coordenada x',\n line_y1: 'Mudança na linha de partida coordenada y',\n line_y2: 'Mudança de linha está terminando coordenada y',\n rect_height: 'Alterar altura do retângulo',\n rect_width: 'Alterar a largura retângulo',\n corner_radius: 'Alterar Corner Rectangle Radius',\n image_width: 'Alterar a largura da imagem',\n image_height: 'Alterar altura da imagem',\n image_url: 'Alterar URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Alterar o conteúdo de texto',\n font_family_label: 'Font:',\n font_family: 'Alterar fonte Família',\n font_size: 'Alterar tamanho de letra',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Texto em itálico',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Mudar a cor de fundo / opacidade',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Ajustar ao conteúdo',\n fit_to_all: 'Ajustar a todo o conteúdo',\n fit_to_canvas: 'Ajustar à tela',\n fit_to_layer_content: 'Ajustar o conteúdo da camada de',\n fit_to_sel: 'Ajustar à selecção',\n align_relative_to: 'Alinhar em relação a ...',\n relativeTo: 'em relação ao:',\n page: 'Página',\n largest_object: 'maior objeto',\n selected_objects: 'objetos eleitos',\n smallest_object: 'menor objeto',\n new_doc: 'Nova Imagem',\n open_doc: 'Abrir Imagem',\n export_img: 'Export',\n save_doc: 'Salvar Imagem',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Alinhar ao centro',\n align_left: 'Alinhar à Esquerda',\n align_middle: 'Alinhar Médio',\n align_right: 'Alinhar à Direita',\n align_top: 'Align Top',\n mode_select: 'Selecione a ferramenta',\n mode_fhpath: 'Ferramenta Lápis',\n mode_line: 'Ferramenta Linha',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rectangle',\n mode_ellipse: 'Elipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Ferramenta de Texto',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Desfazer',\n redo: 'Refazer',\n tool_source: 'Fonte Editar',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Elementos do Grupo',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Elementos Desagrupar',\n docprops: 'Propriedades do Documento',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Salvar',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Delete Layer',\n move_down: 'Move camada para baixo',\n new: 'New Layer',\n rename: 'Rename Layer',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Selecione predefinidos:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'ro',\n dir: 'ltr',\n common: {\n ok: 'Ok',\n cancel: 'Anulaţi',\n key_backspace: 'backspace',\n key_del: 'ştergere',\n key_down: 'jos',\n key_up: 'sus',\n more_opts: 'Mai multe opţiuni',\n url: 'URL',\n width: 'Lăţime',\n height: 'Înălţime'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Arătaţi/ascundeţi mai multe unelte de contur',\n palette_info: 'Faceţi clic pentru a schimba culoarea de umplere, Shift-clic pentru a schimba culoarea de contur',\n zoom_level: 'Schimbarea nivelului de zoom',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identificare element',\n fill_color: 'Schimbarea culorii de umplere',\n stroke_color: 'Schimbarea culorii de contur',\n stroke_style: 'Schimbarea stilului de contur',\n stroke_width: 'Schimbarea lăţimii conturului',\n pos_x: 'Schimbă coordonata X',\n pos_y: 'Schimbă coordonata Y',\n linecap_butt: 'Capăt de linie: Butuc',\n linecap_round: 'Capăt de linie: Rotund',\n linecap_square: 'Capăt de linie: Pătrat',\n linejoin_bevel: 'Articulaţia liniei: Teşită',\n linejoin_miter: 'Articulaţia liniei: Unghi ascuţit',\n linejoin_round: 'Articulaţia liniei: Rotundă',\n angle: 'Schimbarea unghiul de rotaţie',\n blur: 'Schimbarea valorii estomparii gaussiene',\n opacity: 'Schimbarea gradului de opacitate',\n circle_cx: 'Schimbarea coordonatei CX a cercului',\n circle_cy: 'Schimbarea coordonatei CY a cercului',\n circle_r: 'Schimbarea razei cercului',\n ellipse_cx: 'Schimbarea coordonatei CX a elipsei',\n ellipse_cy: 'Schimbarea coordonatei CY a elipsei',\n ellipse_rx: 'Schimbarea razei elipsei X',\n ellipse_ry: 'Schimbarea razei elipsei Y',\n line_x1: 'Schimbarea coordonatei x a punctului de start',\n line_x2: 'Schimbarea coordonatei x a punctului final',\n line_y1: 'Schimbarea coordonatei y a punctului de start',\n line_y2: 'Schimbare coordonatei y a punctului final',\n rect_height: 'Schimbarea înălţimii dreptunghiului',\n rect_width: 'Schimbarea lăţimii dreptunghiului',\n corner_radius: 'Schimbarea razei colţului dreptunghiului',\n image_width: 'Schimbarea lăţimii imaginii',\n image_height: 'Schimbarea înălţimii imaginii',\n image_url: 'Schimbaţi URL-ul',\n node_x: 'Schimbă coordonata x a punctului',\n node_y: 'Schimbă coordonata x a punctului',\n seg_type: 'Schimbă tipul de segment',\n straight_segments: 'Drept',\n curve_segments: 'Curb',\n text_contents: 'Schimbarea conţinutului textului',\n font_family_label: 'Font:',\n font_family: 'Modificare familie de fonturi',\n font_size: 'Schimbă dimensiunea fontului',\n bold: 'Text Îngroşat',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Text Înclinat',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Menu Principal',\n bkgnd_color_opac: 'Schimbare culoare de fundal / opacitate',\n connector_no_arrow: 'Fără săgeată',\n fitToContent: 'Dimensionare la conţinut',\n fit_to_all: 'Potrivire la tot conţinutul',\n fit_to_canvas: 'Potrivire la Şevalet',\n fit_to_layer_content: 'Potrivire la conţinutul stratului',\n fit_to_sel: 'Potrivire la selecţie',\n align_relative_to: 'Aliniere în raport cu ...',\n relativeTo: 'în raport cu:',\n page: 'pagină',\n largest_object: 'cel mai mare obiect',\n selected_objects: 'obiectele alese',\n smallest_object: 'cel mai mic obiect',\n new_doc: 'Imagine nouă',\n open_doc: 'Imagine deschisă',\n export_img: 'Export',\n save_doc: 'Salvare imagine',\n import_doc: 'Importare SVG',\n align_to_page: 'Aliniere la pagină',\n align_bottom: 'Aliniere jos',\n align_center: 'Aliniere la centru',\n align_left: 'Aliniere la stânga',\n align_middle: 'Aliniere la mijloc',\n align_right: 'Aliniere la dreapta',\n align_top: 'Aliniere sus',\n mode_select: 'Unealtă de Selectare',\n mode_fhpath: 'Unealtă de Traiectorie',\n mode_line: 'Unealtă de Linie',\n mode_rect: 'Unealtă de Dreptunghi',\n mode_square: 'Unealtă de Pătrat',\n mode_fhrect: 'Dreptunghi cu mana liberă',\n mode_ellipse: 'Elipsă',\n mode_circle: 'Cerc',\n mode_fhellipse: 'Elipsă cu mana liberă',\n mode_path: 'Unealtă de Traiectorie',\n mode_text: 'Unealtă de Text',\n mode_image: 'Unealtă de Imagine',\n mode_zoom: 'Unealtă de Zoom',\n no_embed: 'NOTE: Aceasta imagine nu poate fi inglobată. Va depinde de aceasta traiectorie pentru a fi prezentată.',\n undo: 'Anulare',\n redo: 'Refacere',\n tool_source: 'Editare Cod Sursă',\n wireframe_mode: 'Mod Schelet',\n clone: 'Clonează Elementul/ele',\n del: 'Şterge Elementul/ele',\n group_elements: 'Grupare Elemente',\n make_link: 'Crează (hyper)link',\n set_link_url: 'Setează link URL (lăsaţi liber pentru eliminare)',\n to_path: 'Converteşte in Traiectorie',\n reorient_path: 'Reorientează Traiectoria',\n ungroup: 'Anulare Grupare Elemente',\n docprops: 'Proprietăţile Documentului',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Mutare în jos',\n move_top: 'Mutare în sus',\n node_clone: 'Clonează Punct',\n node_delete: 'Şterge Punct',\n node_link: 'Uneşte Punctele de Control',\n add_subpath: 'Adăugaţi sub-traiectorie',\n openclose_path: 'Deschide/inchide sub-traiectorie',\n source_save: 'Folosiţi Schimbările',\n cut: 'Tăiere',\n copy: 'Copiere',\n paste: 'Reproducere',\n paste_in_place: 'Reproducere pe loc',\n delete: 'Ştergere',\n group: 'Group',\n move_front: 'Pune in faţa',\n move_up: 'Pune in spate',\n move_down: 'Trimite in faţa',\n move_back: 'Trimite in spate',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Strat',\n layers: 'Straturi',\n del: 'Ştergeţi Strat',\n move_down: 'Mutare Strat în Jos',\n new: 'Strat Nou',\n rename: 'Redenumiţi Stratul',\n move_up: 'Mutare Strat în Sus',\n dupe: 'Duplicaţi Stratul',\n merge_down: 'Fuzionare in jos',\n merge_all: 'Fuzionarea tuturor',\n move_elems_to: 'Mută elemente la:',\n move_selected: 'Mută elementele selectate pe un alt strat'\n },\n config: {\n image_props: 'Proprietăţile Imaginii',\n doc_title: 'Titlul',\n doc_dims: 'Dimensiunile Şevaletului',\n included_images: 'Imaginile Incluse',\n image_opt_embed: 'Includeţi Datele (fişiere locale)',\n image_opt_ref: 'Foloseşte referinţe la fişiere',\n editor_prefs: 'Preferinţele Editorului',\n language: 'Limba',\n background: 'Fondul Editorului',\n editor_img_url: 'URL-ul Imaginii',\n editor_bg_note: 'Notă: Fondul nu va fi salvat cu imaginea.',\n select_predefined: 'Selecţii predefinite:',\n units_and_rulers: 'Unitati si Rigle',\n show_rulers: 'Arată Riglele',\n base_unit: 'Unitate de baza:',\n grid: 'Caroiaj',\n snapping_onoff: 'Fixare on/off',\n snapping_stepsize: 'Dimensiunea pasului de fixare:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Valoarea data nu este validă',\n noContentToFitTo: 'Fara conţinut de referinţă',\n dupeLayerName: 'Deja exista un strat numit asa!',\n enterUniqueLayerName: 'Rog introduceţi un nume unic',\n enterNewLayerName: 'Rog introduceţi un nume pentru strat',\n layerHasThatName: 'Statul deja are acest nume',\n QmoveElemsToLayer: \"Mutaţi elementele selectate pe stratul '%s'?\",\n QwantToClear: 'Doriti să ştergeţi desenul?\\nAceasta va sterge si posibilitatea de anulare!',\n QwantToOpen: 'Doriti sa deschideţi un nou fişier?\\nAceasta va şterge istoricul!',\n QerrorsRevertToSource: 'Sunt erori de parsing in sursa SVG.\\nRevenire la sursa SVG orginală?',\n QignoreSourceChanges: 'Ignoraţi schimbarile la sursa SVG?',\n featNotSupported: 'Funcţie neimplementată',\n enterNewImgURL: 'Introduceţi noul URL pentru Imagine',\n defsFailOnSave: 'NOTE: Din cauza unei erori in browserul dv., aceasta imagine poate apare gresit (fara gradiente sau elemente). Însă va apare corect dupa salvare.',\n loadingImage: 'Imaginea se incarcă, va rugam asteptaţi...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'De asemenea remarcati urmatoarele probleme: ',\n unsavedChanges: 'Sunt schimbări nesalvate.',\n enterNewLinkURL: 'IntroduAliniere în raport cu ...sceţi noul URL',\n errorLoadingSVG: 'Eroare: Nu se pot încărca datele SVG',\n URLLoadFail: 'Nu se poate încărca de la URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'ru',\n dir: 'ltr',\n common: {\n ok: 'Сохранить',\n cancel: 'Отменить',\n key_backspace: 'Backspace',\n key_del: 'Delete',\n key_down: 'Вниз',\n key_up: 'Вверх',\n more_opts: 'Доп. Настройки',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Показать/скрыть инструменты обводки',\n palette_info: 'Нажмите для изменения цвета заливки, Shift-Click изменить цвета обводки',\n zoom_level: 'Изменить масштаб',\n panel_action: 'Click to open side panel',\n quality: 'Качество:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Идентификатор элемента',\n fill_color: 'Изменить цвет заливки',\n stroke_color: 'Изменить цвет обводки',\n stroke_style: 'Изменить стиль обводки',\n stroke_width: 'Изменить толщину обводки',\n pos_x: 'Изменить горизонтальный координат',\n pos_y: 'Изменить вертикальный координат',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Изменить угол поворота',\n blur: 'Изменяет значение размытия',\n opacity: 'Изменить непрозрачность элемента',\n circle_cx: 'Изменить горизонтальный координат (CX) окружности',\n circle_cy: 'Изменить вертикальный координат (CY) окружности',\n circle_r: 'Изменить радиус окружности',\n ellipse_cx: 'Изменить горизонтальный координат (CX) эллипса',\n ellipse_cy: 'Изменить вертикальный координат (CY) эллипса',\n ellipse_rx: 'Изменить горизонтальный радиус эллипса',\n ellipse_ry: 'Изменить вертикальный радиус эллипса',\n line_x1: 'Изменить горизонтальный координат X начальной точки линии',\n line_x2: 'Изменить горизонтальный координат X конечной точки линии',\n line_y1: 'Изменить вертикальный координат Y начальной точки линии',\n line_y2: 'Изменить вертикальный координат Y конечной точки линии',\n rect_height: 'Изменениe высоту прямоугольника',\n rect_width: 'Измененить ширину прямоугольника',\n corner_radius: 'Радиус закругленности угла',\n image_width: 'Изменить ширину изображения',\n image_height: 'Изменить высоту изображения',\n image_url: 'Изменить URL',\n node_x: 'Изменить горизонтальную координату узла',\n node_y: 'Изменить вертикальную координату узла',\n seg_type: 'Изменить вид',\n straight_segments: 'Отрезок',\n curve_segments: 'Сплайн',\n text_contents: 'Изменить содержание текста',\n font_family_label: 'Font:',\n font_family: 'Изменить семейство шрифтов',\n font_size: 'Изменить размер шрифта',\n bold: 'Жирный',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Курсив',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Главное меню',\n bkgnd_color_opac: 'Изменить цвет фона или прозрачность',\n connector_no_arrow: 'Нет стрелки',\n fitToContent: 'Под размер содержимого',\n fit_to_all: 'Под размер всех слоев',\n fit_to_canvas: 'Под размер холста',\n fit_to_layer_content: 'Под размер содержания слоя',\n fit_to_sel: 'Под размер выделенного',\n align_relative_to: 'Выровнять по отношению к ...',\n relativeTo: 'По отношению к ',\n page: 'страница',\n largest_object: 'Наибольший объект',\n selected_objects: 'Выделенные объекты',\n smallest_object: 'Самый маленький объект',\n new_doc: 'Создать изображение',\n open_doc: 'Открыть изображение',\n export_img: 'Экспорт',\n save_doc: 'Сохранить изображение',\n import_doc: 'Импорт изображения',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Выровнять по нижнему краю',\n align_center: 'Центрировать по вертикальной оси',\n align_left: 'По левому краю',\n align_middle: 'Центрировать по горизонтальной оси',\n align_right: 'По правому краю',\n align_top: 'Выровнять по верхнему краю',\n mode_select: 'Выделить',\n mode_fhpath: 'Карандаш',\n mode_line: 'Линия',\n mode_rect: 'Прямоугольник',\n mode_square: 'Квадрат',\n mode_fhrect: 'Прямоугольник от руки',\n mode_ellipse: 'Эллипс',\n mode_circle: 'Окружность',\n mode_fhellipse: 'Эллипс от руки',\n mode_path: 'Контуры',\n mode_text: 'Текст',\n mode_image: 'Изображение',\n mode_zoom: 'Лупа',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Отменить',\n redo: 'Вернуть',\n tool_source: 'Редактировать исходный код',\n wireframe_mode: 'Каркас',\n clone: 'Клонировать элемент(ы)',\n del: 'Удалить элемент(ы)',\n group_elements: 'Создать группу элементов',\n make_link: 'Сделать ссылкой',\n set_link_url: 'Ссылка(оставьте пустым для удаления)',\n to_path: 'В контур',\n reorient_path: 'Изменить ориентацию контура',\n ungroup: 'Разгруппировать элементы',\n docprops: 'Свойства документа',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Опустить',\n move_top: 'Поднять',\n node_clone: 'Создать копию узла',\n node_delete: 'Удалить узел',\n node_link: 'Связать узлы',\n add_subpath: 'Добавить линию',\n openclose_path: 'Разомкнуть/Замкнуть линию',\n source_save: 'Сохранить',\n cut: 'Вырезать',\n copy: 'Копировать',\n paste: 'Вставить',\n paste_in_place: 'Вставить сюда',\n Delete: 'Удалить',\n group: 'Группировка',\n move_front: 'На передний план',\n move_up: 'Передвинуть вперед',\n move_down: 'Передвинуть назад',\n move_back: 'На задний план',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Слой',\n layers: 'Слои',\n del: 'Удалить слой',\n move_down: 'Опустить слой',\n new: 'Создать слой',\n rename: 'Переименовать Слой',\n move_up: 'Поднять слой',\n dupe: 'Копировать слой',\n merge_down: 'Объединить с нижним',\n merge_all: 'Объединить все',\n move_elems_to: 'Переместить выделенные элементы:',\n move_selected: 'Переместить выделенные элементы на другой слой'\n },\n config: {\n image_props: 'Свойства изображения',\n doc_title: 'Название',\n doc_dims: 'Размеры холста',\n included_images: 'Встроенные изображения',\n image_opt_embed: 'Локальные файлы',\n image_opt_ref: 'По ссылкам',\n editor_prefs: 'Параметры',\n language: 'Язык',\n background: 'Фон',\n editor_img_url: 'Изображение URL',\n editor_bg_note: '(Фон не сохранится вместе с изображением.)',\n select_predefined: 'Выбирать предопределенный размер',\n units_and_rulers: 'Единицы & Линейки',\n show_rulers: 'Показывать линейки',\n base_unit: 'Единицы:',\n grid: 'Сетка',\n snapping_onoff: 'Привязка вкл/выкл',\n snapping_stepsize: 'Шаг привязки:',\n grid_color: 'Цвет сетки',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Некорректное значение аргумента',\n noContentToFitTo: 'Нет содержания, по которому выровнять.',\n dupeLayerName: 'Слой с этим именем уже существует.',\n enterUniqueLayerName: 'Пожалуйста, введите имя для слоя.',\n enterNewLayerName: 'Пожалуйста, введите новое имя.',\n layerHasThatName: 'Слой уже называется этим именем.',\n QmoveElemsToLayer: \"Переместить выделенные элементы на слой '%s'?\",\n QwantToClear: 'Вы хотите очистить?\\nИстория действий будет забыта!',\n QwantToOpen: 'Открыть новый файл?\\nИстория действий будет забыта!',\n QerrorsRevertToSource: 'Была проблема при парсинге вашего SVG исходного кода.\\nЗаменить его предыдущим SVG кодом?',\n QignoreSourceChanges: 'Забыть без сохранения?',\n featNotSupported: 'Возможность не реализована',\n enterNewImgURL: 'Введите новый URL изображения',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Загрузка изоражения, придется подождать...',\n saveFromBrowser: \"Выберите 'Сохранить как...' в вашем браузере (возможно через меню файл или в контекстном меню) чтобы сохранить как файл %s.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'Есть несохраненные изменения.',\n enterNewLinkURL: 'Введите новую ссылку URL',\n errorLoadingSVG: 'Ошибка: Не удалось загрузить SVG данные',\n URLLoadFail: 'Не удалось загрузить по ссылке URL',\n retrieving: 'Получение \\'%s\\' ...',\n popupWindowBlocked: 'Всплывающее окно могло заблокироваться браузером',\n exportNoBlur: 'Размытые элементы отображены как неразмытые',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Текст может показываться не так как должен',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'sk',\n dir: 'ltr',\n common: {\n ok: 'Uložiť',\n cancel: 'Zrušiť',\n key_backspace: 'Backspace',\n key_del: 'Delete',\n key_down: 'šípka dole',\n key_up: 'šípka hore',\n more_opts: 'Viac možností',\n url: 'URL',\n width: 'Šírka',\n height: 'Výška'\n },\n misc: {\n powered_by: 'Beží na'\n },\n ui: {\n toggle_stroke_tools: 'Skryť/ukázať viac nástrojov pre krivku',\n palette_info: 'Kliknutím zmeníte farbu výplne, so Shiftom zmeníte farbu obrysu',\n zoom_level: 'Zmena priblíženia',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Zmeniť ID elementu',\n fill_color: 'Zmeniť farbu výplne',\n stroke_color: 'Zmeniť farbu obrysu',\n stroke_style: 'Zmeniť štýl obrysu',\n stroke_width: 'Zmeniť hrúbku obrysu',\n pos_x: 'Zmeniť súradnicu X',\n pos_y: 'Zmeniť súradnicu Y',\n linecap_butt: 'Koniec čiary: presný',\n linecap_round: 'Koniec čiary: zaoblený',\n linecap_square: 'Koniec čiary: so štvorcovým presahom',\n linejoin_bevel: 'Napojenie čiar: skosené',\n linejoin_miter: 'Napojenie čiar: ostré',\n linejoin_round: 'Napojenie čiar: oblé',\n angle: 'Zmeniť uhol natočenia',\n blur: 'Zmeniť intenzitu rozmazania',\n opacity: 'Zmeniť prehľadnosť vybraných položiek',\n circle_cx: 'Zmeniť súradnicu X stredu kružnice',\n circle_cy: 'Zmeniť súradnicu Y stredu kružnice',\n circle_r: 'Zmeniť polomer kružnice',\n ellipse_cx: 'Zmeniť súradnicu X stredu elipsy',\n ellipse_cy: 'Zmeniť súradnicu Y stredu elipsy',\n ellipse_rx: 'Zmeniť polomer X elipsy',\n ellipse_ry: 'Zmeniť polomer Y elipsy',\n line_x1: 'Zmeniť počiatočnú súradnicu X čiary',\n line_x2: 'Zmeniť koncovú súradnicu X čiary',\n line_y1: 'Zmeniť počiatočnú súradnicu Y čiary',\n line_y2: 'Zmeniť koncovú súradnicu Y čiary',\n rect_height: 'Zmena výšku obdĺžnika',\n rect_width: 'Zmeniť šírku obdĺžnika',\n corner_radius: 'Zmeniť zaoblenie rohov obdĺžnika',\n image_width: 'Zmeniť šírku obrázka',\n image_height: 'Zmeniť výšku obrázka',\n image_url: 'Zmeniť URL',\n node_x: 'Zmeniť uzlu súradnicu X',\n node_y: 'Zmeniť uzlu súradnicu Y',\n seg_type: 'Zmeniť typ segmentu',\n straight_segments: 'Rovný',\n curve_segments: 'Krivka',\n text_contents: 'Zmeniť text',\n font_family_label: 'Font:',\n font_family: 'Zmeniť font',\n font_size: 'Zmeniť veľkosť písma',\n bold: 'Tučné',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Kurzíva',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Hlavné menu',\n bkgnd_color_opac: 'Zmeniť farbu a priehľadnosť pozadia',\n connector_no_arrow: 'Spojnica bez šípok',\n fitToContent: 'Prispôsobiť obsahu',\n fit_to_all: 'Prisposobiť celému obsahu',\n fit_to_canvas: 'Prispôsobiť stránke',\n fit_to_layer_content: 'Prispôsobiť obsahu vrstvy',\n fit_to_sel: 'Prispôsobiť výberu',\n align_relative_to: 'Zarovnať relatívne k ...',\n relativeTo: 'vzhľadom k:',\n page: 'stránke',\n largest_object: 'najväčšiemu objektu',\n selected_objects: 'zvoleným objektom',\n smallest_object: 'najmenšiemu objektu',\n new_doc: 'Nový obrázok',\n open_doc: 'Otvoriť obrázok',\n export_img: 'Export',\n save_doc: 'Uložiť obrázok',\n import_doc: 'Import SVG',\n align_to_page: 'Zarovnať element na stránku',\n align_bottom: 'Zarovnať dole',\n align_center: 'Zarovnať na stred',\n align_left: 'Zarovnať doľava',\n align_middle: 'Zarovnať na stred',\n align_right: 'Zarovnať doprava',\n align_top: 'Zarovnať hore',\n mode_select: 'Výber',\n mode_fhpath: 'Ceruzka',\n mode_line: 'Čiara',\n mode_rect: 'Obdĺžnik',\n mode_square: 'Štvorec',\n mode_fhrect: 'Obdĺžnik voľnou rukou',\n mode_ellipse: 'Elipsa',\n mode_circle: 'Kružnica',\n mode_fhellipse: 'Elipsa voľnou rukou',\n mode_path: 'Krivka',\n mode_text: 'Text',\n mode_image: 'Obrázok',\n mode_zoom: 'Priblíženie',\n no_embed: 'POZNÁMKA: Tento obrázok nemôže byť vložený. Jeho zobrazenie bude závisieť na jeho ceste',\n undo: 'Späť',\n redo: 'Opakovať',\n tool_source: 'Upraviť SVG kód',\n wireframe_mode: 'Drôtový model',\n clone: 'Klonuj element(y)',\n del: 'Zmaž element(y)',\n group_elements: 'Zoskupiť elementy',\n make_link: 'Naviaž odkaz (hyper)link',\n set_link_url: 'Nastav odkaz URL (ak prázdny, odstráni sa)',\n to_path: 'Previesť na krivku',\n reorient_path: 'Zmeniť orientáciu krivky',\n ungroup: 'Zrušiť skupinu',\n docprops: 'Vlastnosti dokumentu',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Presunúť spodok',\n move_top: 'Presunúť na vrch',\n node_clone: 'Klonovať uzol',\n node_delete: 'Zmazať uzol',\n node_link: 'Prepojiť kontrolné body',\n add_subpath: 'Pridať ďalšiu súčasť krivky',\n openclose_path: 'Otvoriť/uzatvoriť súčasť krivky',\n source_save: 'Uložiť',\n cut: 'Vystrihnutie',\n copy: 'Kópia',\n paste: 'Vloženie',\n paste_in_place: 'Vloženie na pôvodnom mieste',\n delete: 'Zmazanie',\n group: 'Group',\n move_front: 'Vysuň navrch',\n move_up: 'Vysuň vpred',\n move_down: 'Zasuň na spodok',\n move_back: 'Zasuň dozadu',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Vrstva',\n layers: 'Vrstvy',\n del: 'Odstrániť vrstvu',\n move_down: 'Presunúť vrstvu dole',\n new: 'Nová vrstva',\n rename: 'Premenovať vrstvu',\n move_up: 'Presunúť vrstvu hore',\n dupe: 'Zduplikovať vrstvu',\n merge_down: 'Zlúčiť s vrstvou dole',\n merge_all: 'Zlúčiť všetko',\n move_elems_to: 'Presunúť elementy do:',\n move_selected: 'Presunúť vybrané elementy do inej vrstvy'\n },\n config: {\n image_props: 'Vlastnosti obrázka',\n doc_title: 'Titulok',\n doc_dims: 'Rozmery plátna',\n included_images: 'Vložené obrázky',\n image_opt_embed: 'Vložiť data (lokálne súbory)',\n image_opt_ref: 'Použiť referenciu na súbor',\n editor_prefs: 'Vlastnosti editora',\n language: 'Jazyk',\n background: 'Zmeniť pozadie',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Poznámka: Pozadie nebude uložené spolu s obrázkom.',\n select_predefined: 'Vybrať preddefinovaný:',\n units_and_rulers: 'Jednotky & Pravítka',\n show_rulers: 'Ukáž pravítka',\n base_unit: 'Základné jednotky:',\n grid: 'Mriežka',\n snapping_onoff: 'Priväzovanie (do mriežky) zap/vyp',\n snapping_stepsize: 'Priväzovanie (do mriežky) veľkosť kroku:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Neplatná hodnota',\n noContentToFitTo: 'Vyberte oblasť na prispôsobenie',\n dupeLayerName: 'Vrstva s daným názvom už existuje!',\n enterUniqueLayerName: 'Zadajte jedinečný názov vrstvy',\n enterNewLayerName: 'Zadajte názov vrstvy',\n layerHasThatName: 'Vrstva už má zadaný tento názov',\n QmoveElemsToLayer: \"Presunúť elementy do vrstvy '%s'?\",\n QwantToClear: 'Naozaj chcete vymazať kresbu?\\n(História bude taktiež vymazaná!)!',\n QwantToOpen: 'Chcete otvoriť nový súbor?\\nTo však tiež vymaže Vašu UNDO knižnicu!',\n QerrorsRevertToSource: 'Chyba pri načítaní SVG dokumentu.\\nVrátiť povodný SVG dokument?',\n QignoreSourceChanges: 'Ignorovať zmeny v SVG dokumente?',\n featNotSupported: 'Vlastnosť nie je podporovaná',\n enterNewImgURL: 'Zadajte nové URL obrázka',\n defsFailOnSave: 'POZNÁMKA: Kvôli chybe v prehliadači sa tento obrázok môže zobraziť nesprávne (napr. chýbajúce prechody či elementy). Po uložení sa zobrazí správne.',\n loadingImage: 'Nahrávam obrázok, prosím čakajte ...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Môžu sa vyskytnúť nasledujúce problémy: ',\n unsavedChanges: 'Sú tu neuložené zmeny.',\n enterNewLinkURL: 'Zadajte nové URL odkazu (hyperlink)',\n errorLoadingSVG: 'Chyba: Nedajú sa načítať SVG data',\n URLLoadFail: 'Nemožno čítať z URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'sl',\n dir: 'ltr',\n common: {\n ok: 'V redu',\n cancel: 'Prekliči',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'dol',\n key_up: 'gor',\n more_opts: 'Več možnosti',\n url: 'URL',\n width: 'širina',\n height: 'višina'\n },\n misc: {\n powered_by: 'Izdelano z'\n },\n ui: {\n toggle_stroke_tools: 'Pokaži/skrij več orodij za oris',\n palette_info: 'Kliknite, če želite spremeniti barvo polnila, kliknite+Shift, če želite spremeniti barvo orisa',\n zoom_level: 'Povečava',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'ID elementa',\n fill_color: 'Spremeni barvo polnila',\n stroke_color: 'Spremeni barvo orisa',\n stroke_style: 'Spremeni slog orisa',\n stroke_width: 'Spreminjanje širino orisa',\n pos_x: 'Spremeni X koordinato',\n pos_y: 'Spremeni Y koordinato',\n linecap_butt: 'Začetek črte: odsekan',\n linecap_round: 'Začetek črte: zaobljen',\n linecap_square: 'Začetek črte: kvadraten',\n linejoin_bevel: 'Ovinek črte: Odsekan',\n linejoin_miter: 'Linejoin: V kot',\n linejoin_round: 'Linejoin: Zaobljen',\n angle: 'Spremeni kot zasuka',\n blur: 'Spremeni zameglitev roba',\n opacity: 'Spremeni prosojnost',\n circle_cx: 'Spremeni CX koordinato',\n circle_cy: 'Spremeni CY koordinato',\n circle_r: 'Spremeni polmer kroga',\n ellipse_cx: 'Spremeni CX koordinato',\n ellipse_cy: 'Spremeni CY koordinato',\n ellipse_rx: 'Spremeni X polmer',\n ellipse_ry: 'Spremeni Y polmer',\n line_x1: 'Spremeni začetno X koordinato',\n line_x2: 'Spremeni končno X koordinato',\n line_y1: 'Spremeni začetno Y koordinato',\n line_y2: 'Spremeni končno Y koordinato',\n rect_height: 'Spremeni višino pravokotnika',\n rect_width: 'Spremeni širino pravokotnika',\n corner_radius: 'Spremeni Pravokotnik Corner Radius',\n image_width: 'Spremeni širino slike',\n image_height: 'Spremeni višino slike',\n image_url: 'Spremeni URL',\n node_x: 'Spremeni X koordinato oglišča',\n node_y: 'Spremeni Y koordinato oglišča',\n seg_type: 'Spremeni vrsto odseka',\n straight_segments: 'Raven odsek',\n curve_segments: 'Ukrivljen odsek',\n text_contents: 'Spremeni besedilo',\n font_family_label: 'Font:',\n font_family: 'Spremeni tip pisave',\n font_size: 'Spremeni velikost pisave',\n bold: 'Krepko',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Poševno',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Glavni meni',\n bkgnd_color_opac: 'Spremeni barvo / prosojnost',\n connector_no_arrow: 'Brez puščice',\n fitToContent: 'Prilagodi vsebini',\n fit_to_all: 'Prilagodi vsemu',\n fit_to_canvas: 'Prilagodi sliki',\n fit_to_layer_content: 'Prilagodi sloju',\n fit_to_sel: 'Prilagodi izboru',\n align_relative_to: 'Poravnaj glede na ...',\n relativeTo: 'glede na:',\n page: 'page',\n largest_object: 'največji objekt',\n selected_objects: 'izbrani objekt',\n smallest_object: 'najmanjši objekt',\n new_doc: 'Nova slika',\n open_doc: 'Odpri sliko',\n export_img: 'Izvozi v PNG',\n save_doc: 'Shrani sliko',\n import_doc: 'Uvozi SVG',\n align_to_page: 'Poravnaj na stran',\n align_bottom: 'Poravnaj na dno',\n align_center: 'Poravnaj na sredino',\n align_left: 'Poravnaj levo',\n align_middle: 'Poravnaj na sredino',\n align_right: 'Poravnaj desno',\n align_top: 'Poravnaj na vrh',\n mode_select: 'Izberi',\n mode_fhpath: 'Svinčnik',\n mode_line: 'Crta',\n mode_rect: 'Pravokotnik',\n mode_square: 'Kvadrat',\n mode_fhrect: 'Prostoročni pravokotnik',\n mode_ellipse: 'Elipsa',\n mode_circle: 'Krog',\n mode_fhellipse: 'Prostoročna elipsa',\n mode_path: 'Pot',\n mode_text: 'Besedilo',\n mode_image: 'Slika',\n mode_zoom: 'Povečava',\n no_embed: 'OPOMBA: Ta slika ne more biti vključena. It will depend on this path to be displayed',\n undo: 'Razveljavi',\n redo: 'Uveljavi',\n tool_source: 'Uredi vir',\n wireframe_mode: 'Wireframe način',\n clone: 'Kloniraj element(e)',\n del: 'Izbriši element(e)',\n group_elements: 'Združi element(e)',\n make_link: 'Vstavi (hiper)povezavo',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Pretvori v pot',\n reorient_path: 'Reorient pot',\n ungroup: 'Razdruži elemente',\n docprops: 'Lastnosti dokumenta',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Premakni na dno',\n move_top: 'Premakni na vrh',\n node_clone: 'Kloniraj oglišče',\n node_delete: 'Izbriši oglišče',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Shrani',\n cut: 'Izreži',\n copy: 'Kopiraj',\n paste: 'Prilepi',\n paste_in_place: 'Prilepi na mesto',\n delete: 'Izbriši',\n group: 'Združi',\n move_front: 'Postavi v ospredje',\n move_up: 'Pomakni naporej',\n move_down: 'Pomakni nazaj',\n move_back: 'Postavi v ozadje',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Sloj',\n layers: 'Sloji',\n del: 'Izbriši sloj',\n move_down: 'Premakni navzdol',\n new: 'Nov sloj',\n rename: 'Preimenuj sloj',\n move_up: 'Premakni navzgor',\n dupe: 'Podvoji sloj',\n merge_down: 'Združi s spodnjimi',\n merge_all: 'Združi vse',\n move_elems_to: 'Premakni elemente v:',\n move_selected: 'Premakne elemente v drug sloj'\n },\n config: {\n image_props: 'Lastnosti slike',\n doc_title: 'Naslov',\n doc_dims: 'Dimenzije slike',\n included_images: 'Vključene slike',\n image_opt_embed: 'Vključene (local files)',\n image_opt_ref: 'Povezane (Use file reference)',\n editor_prefs: 'Lastnosti urejevalnika',\n language: 'Jezik',\n background: 'Ozadje urejevalnika',\n editor_img_url: 'URL slike',\n editor_bg_note: 'OPOMBA: Ozdaje ne bo shranjeno s sliko.',\n select_predefined: 'Izberi prednastavljeno:',\n units_and_rulers: 'Enote & ravnilo',\n show_rulers: 'Pokaži ravnilo',\n base_unit: 'Osnovne enote',\n grid: 'Mreža',\n snapping_onoff: 'Pripni na mrežo DA/NE',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Napačna vrednost!',\n noContentToFitTo: 'Ni vsebine za prilagajanje',\n dupeLayerName: 'Sloj s tem imenom že obstajal!',\n enterUniqueLayerName: 'Vnesite edinstveno ime sloja',\n enterNewLayerName: 'Vnesite ime novega sloja',\n layerHasThatName: 'Sloje že ima to ime',\n QmoveElemsToLayer: \"Premaknem izbrane elemente v sloj '%s'?\",\n QwantToClear: 'Ali želite počistiti risbo?\\nTo bo izbrisalo tudi zgodovino korakov (ni mogoče razveljaviti)!',\n QwantToOpen: 'Ali želite odpreti novo datoteko?\\nTo bo izbrisalo tudi zgodovino korakov (ni mogoče razveljaviti)!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignoriram spremembe, narejene v SVG kodi?',\n featNotSupported: 'Ni podprto',\n enterNewImgURL: 'Vnesite nov URL slike',\n defsFailOnSave: 'OPOMBA: Zaradi napake vašega brskalnika obstaja možnost, da ta slika ni prikazan pravilno (manjkajo določeni elementi ali gradient). Vseeno bo prikaz pravilen, ko bo slika enkrat shranjena.',\n loadingImage: 'Nalagam sliko, prosimo, počakajte ...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'Obstajajo neshranjene spremembe.',\n enterNewLinkURL: 'Vnesite novo URL povezavo',\n errorLoadingSVG: 'Napaka: Ne morem naložiti SVG podatkov',\n URLLoadFail: 'Ne morem naložiti z URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'sq',\n dir: 'ltr',\n common: {\n ok: 'Ruaj',\n cancel: 'Anulo',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Klikoni për të ndryshuar mbushur me ngjyra, shift-klikoni për të ndryshuar ngjyrën pash',\n zoom_level: 'Ndryshimi zoom nivel',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Ndryshimi mbush color',\n stroke_color: 'Change color pash',\n stroke_style: 'Ndryshimi dash goditje stil',\n stroke_width: 'Ndryshimi goditje width',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Kënd Ndryshimi rrotullim',\n blur: 'Change gaussian blur value',\n opacity: 'Ndryshimi zgjedhur errësirë item',\n circle_cx: 'Cx rrethi Ndryshimi i bashkërenduar',\n circle_cy: 'Ndryshimi i rrethit cy koordinuar',\n circle_r: 'Rreze rreth Ndryshimi i',\n ellipse_cx: 'Ndryshimi elips e cx koordinuar',\n ellipse_cy: 'Elips cy Ndryshimi i bashkërenduar',\n ellipse_rx: 'Rreze x elips Ndryshimi i',\n ellipse_ry: 'Radiusi y elips ndërroj',\n line_x1: 'Shkarko Ndryshimi që fillon x koordinuar',\n line_x2: 'Linjë Ndryshimi i fund x koordinuar',\n line_y1: 'Shkarko Ndryshimi që fillon y koordinuar',\n line_y2: 'Shkarko Ndryshimi i dhënë fund y koordinuar',\n rect_height: 'Height Ndryshimi drejtkëndësh',\n rect_width: 'Width Ndryshimi drejtkëndësh',\n corner_radius: 'Ndryshimi Rectangle Corner Radius',\n image_width: 'Ndryshimi image width',\n image_height: 'Height të ndryshuar imazhin',\n image_url: 'Ndrysho URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Text contents Ndryshimi',\n font_family_label: 'Font:',\n font_family: 'Ndryshimi Font Family',\n font_size: 'Ndryshimi Font Size',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Change color background / patejdukshmëri',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Fit për të gjithë përmbajtjen',\n fit_to_canvas: 'Fit në kanavacë',\n fit_to_layer_content: 'Shtresë Fit to content',\n fit_to_sel: 'Fit to Selection',\n align_relative_to: 'Vendose në lidhje me ...',\n relativeTo: 'lidhje me:',\n page: 'faqe',\n largest_object: 'madh objekt',\n selected_objects: 'objektet e zgjedhur',\n smallest_object: 'objektit më të vogël',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Align Center',\n align_left: 'Align Left',\n align_middle: 'Align Mesme',\n align_right: 'Align Right',\n align_top: 'Align Top',\n mode_select: 'Zgjidhni Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Lëndë Hand Rectangle',\n mode_ellipse: 'Elips',\n mode_circle: 'Rrethi',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Text Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Undo',\n redo: 'Redo',\n tool_source: 'Burimi Edit',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Elementet e Grupit',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Elemente Ungroup',\n docprops: 'Dokumenti Prona',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Ruaj',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Delete Layer',\n move_down: 'Move Down Layer',\n new: 'Re Shtresa',\n rename: 'Rename Layer',\n move_up: 'Move Up Layer',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Zgjidhni paracaktuara:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'sr',\n dir: 'ltr',\n common: {\n ok: 'Сачувати',\n cancel: 'Откажи',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Кликните да бисте променили боју попуне, Схифт-кликните да промените боју удар',\n zoom_level: 'Промените ниво зумирања',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Промена боје попуне',\n stroke_color: 'Промена боје удар',\n stroke_style: 'Промена ход Дасх стил',\n stroke_width: 'Промена удара ширина',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Промени ротације Угао',\n blur: 'Change gaussian blur value',\n opacity: 'Промена изабране ставке непрозирност',\n circle_cx: 'Промена круг&#39;с ЦКС координатни',\n circle_cy: 'Промена круг&#39;с ср координатни',\n circle_r: 'Промена круга је полупречник',\n ellipse_cx: 'Промена елипса ЦКС&#39;с координатни',\n ellipse_cy: 'Промена елипса&#39;с ср координатни',\n ellipse_rx: 'Промена елипса&#39;с Кс радијуса',\n ellipse_ry: 'Промена елипса је радијус Ы',\n line_x1: 'Промена линија Стартни кс координата',\n line_x2: 'Промена линија је завршетак кс координата',\n line_y1: 'Промена линија у координатни почетак Ы',\n line_y2: 'Промена линија је Ы координата се завршава',\n rect_height: 'Промени правоугаоник висина',\n rect_width: 'Промени правоугаоник ширине',\n corner_radius: 'Промена правоугаоник Кутак радијуса',\n image_width: 'Промени слику ширине',\n image_height: 'Промени слику висине',\n image_url: 'Промените УРЛ адресу',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Промена садржаја текстуалне',\n font_family_label: 'Font:',\n font_family: 'Цханге фонт породицу',\n font_size: 'Цханге фонт сизе',\n bold: 'Подебљан текст',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Италиц текст',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Промена боје позадине / непрозирност',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Стане на садржај',\n fit_to_all: 'Уклопи у сав садржај',\n fit_to_canvas: 'Стане на платну',\n fit_to_layer_content: 'Уклопи у слоју садржај',\n fit_to_sel: 'Уклопи у избор',\n align_relative_to: 'Алигн у односу на ...',\n relativeTo: 'у односу на:',\n page: 'страна',\n largest_object: 'Највећи објекат',\n selected_objects: 'изабраних објеката',\n smallest_object: 'Најмањи објекат',\n new_doc: 'Нова слика',\n open_doc: 'Отвори слике',\n export_img: 'Export',\n save_doc: 'Сачувај слика',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Поравнај доле',\n align_center: 'Поравнај по центру',\n align_left: 'Поравнај лево',\n align_middle: 'Алигн Средњи',\n align_right: 'Поравнај десно',\n align_top: 'Поравнајте врх',\n mode_select: 'Изаберите алатку',\n mode_fhpath: 'Алатка оловка',\n mode_line: 'Линија Алат',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Фрее-Ручни правоугаоник',\n mode_ellipse: 'Елипса',\n mode_circle: 'Круг',\n mode_fhellipse: 'Фрее-Ручни Елипса',\n mode_path: 'Path Tool',\n mode_text: 'Текст Алат',\n mode_image: 'Алатка за слике',\n mode_zoom: 'Алатка за зумирање',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Поништи',\n redo: 'Редо',\n tool_source: 'Уреди Извор',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Група Елементи',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Разгрупирање Елементи',\n docprops: 'Особине документа',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Премести на доле',\n move_top: 'Премести на врх',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Сачувати',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Избриши слој',\n move_down: 'Помери слој доле',\n new: 'Нови слој',\n rename: 'Преименуј слој',\n move_up: 'Помери слој Горе',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Изаберите унапред дефинисани:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'sv',\n dir: 'ltr',\n common: {\n ok: 'Spara',\n cancel: 'Avbryt',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Klicka för att ändra fyllningsfärg, shift-klicka för att ändra färgar',\n zoom_level: 'Ändra zoomnivå',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Ändra fyllningsfärg',\n stroke_color: 'Ändra färgar',\n stroke_style: 'Ändra stroke Dash stil',\n stroke_width: 'Ändra stroke bredd',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Ändra rotationsvinkel',\n blur: 'Change gaussian blur value',\n opacity: 'Ändra markerat objekt opacitet',\n circle_cx: 'Ändra cirkeln cx samordna',\n circle_cy: 'Ändra cirkeln samordna cy',\n circle_r: 'Ändra cirkelns radie',\n ellipse_cx: 'Ändra ellips&#39;s cx samordna',\n ellipse_cy: 'Ändra ellips&#39;s samordna cy',\n ellipse_rx: 'Ändra ellips&#39;s x radie',\n ellipse_ry: 'Ändra ellips&#39;s y radie',\n line_x1: 'Ändra Lines startar x samordna',\n line_x2: 'Ändra Lines slutar x samordna',\n line_y1: 'Ändra Lines startar Y-koordinat',\n line_y2: 'Ändra Lines slutar Y-koordinat',\n rect_height: 'Ändra rektangel höjd',\n rect_width: 'Ändra rektangel bredd',\n corner_radius: 'Ändra rektangel hörnradie',\n image_width: 'Ändra bild bredd',\n image_height: 'Ändra bildhöjd',\n image_url: 'Ändra URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Ändra textinnehållet',\n font_family_label: 'Font:',\n font_family: 'Ändra Typsnitt',\n font_size: 'Ändra textstorlek',\n bold: 'Fet text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Kursiv text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Ändra bakgrundsfärg / opacitet',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Passar till allt innehåll',\n fit_to_canvas: 'Anpassa till duk',\n fit_to_layer_content: 'Anpassa till lager innehåll',\n fit_to_sel: 'Anpassa till val',\n align_relative_to: 'Justera förhållande till ...',\n relativeTo: 'jämfört:',\n page: 'sida',\n largest_object: 'största objekt',\n selected_objects: 'valda objekt',\n smallest_object: 'minsta objektet',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Centrera',\n align_left: 'Vänsterjustera',\n align_middle: 'Justera Middle',\n align_right: 'Högerjustera',\n align_top: 'Justera Top',\n mode_select: 'Markeringsverktyget',\n mode_fhpath: 'Pennverktyget',\n mode_line: 'Linjeverktyg',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Fri hand rektangel',\n mode_ellipse: 'Ellips',\n mode_circle: 'Circle',\n mode_fhellipse: 'Fri hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Textverktyg',\n mode_image: 'Bildverktyg',\n mode_zoom: 'Zoomverktyget',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Ångra',\n redo: 'Redo',\n tool_source: 'Redigera källa',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Group Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Dela Elements',\n docprops: 'Dokumentegenskaper',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Flytta till början',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Spara',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Radera Layer',\n move_down: 'Flytta Layer Down',\n new: 'New Layer',\n rename: 'Byt namn på Layer',\n move_up: 'Flytta Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Välj fördefinierad:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'sw',\n dir: 'ltr',\n common: {\n ok: 'Okoa',\n cancel: 'Cancel',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Click kubadili kujaza color, skiftarbete-click kubadili kiharusi color',\n zoom_level: 'Change zoom ngazi',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Change kujaza Michezo',\n stroke_color: 'Change kiharusi Michezo',\n stroke_style: 'Change kiharusi dash style',\n stroke_width: 'Change kiharusi width',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Change mzunguko vinkel',\n blur: 'Change gaussian blur value',\n opacity: 'Change selected opacity punkt',\n circle_cx: 'Change mduara&#39;s CX kuratibu',\n circle_cy: 'Change mduara&#39;s cy kuratibu',\n circle_r: 'Change mduara&#39;s Radius',\n ellipse_cx: 'Change ellipse s CX kuratibu',\n ellipse_cy: 'Change ellipse s cy kuratibu',\n ellipse_rx: 'Change ellipse s x Radius',\n ellipse_ry: 'Change ellipse&#39;s y Radius',\n line_x1: 'Change Mpya&#39;s mapya x kuratibu',\n line_x2: 'Change Mpya&#39;s kuishia x kuratibu',\n line_y1: 'Change Mpya&#39;s mapya y kuratibu',\n line_y2: 'Change Mpya&#39;s kuishia y kuratibu',\n rect_height: 'Change Mstatili height',\n rect_width: 'Change Mstatili width',\n corner_radius: 'Change Mstatili Corner Radius',\n image_width: 'Change image width',\n image_height: 'Change image urefu',\n image_url: 'Change URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Change Nakala contents',\n font_family_label: 'Font:',\n font_family: 'Change font Family',\n font_size: 'Change font Size',\n bold: 'Bold Nakala',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italiki Nakala',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Change background color / opacity',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Waliopo Content',\n fit_to_all: 'Waliopo all content',\n fit_to_canvas: 'Wanaofaa Canvas',\n fit_to_layer_content: 'Waliopo safu content',\n fit_to_sel: 'Waliopo uteuzi',\n align_relative_to: 'Align jamaa na ...',\n relativeTo: 'relativa att:',\n page: 'Page',\n largest_object: 'ukubwa object',\n selected_objects: 'waliochaguliwa vitu',\n smallest_object: 'minsta object',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Align Center',\n align_left: 'Align Left',\n align_middle: 'Kati align',\n align_right: 'Align Right',\n align_top: 'Align Juu',\n mode_select: 'Select Tool',\n mode_fhpath: 'Penseli Tool',\n mode_line: 'Mpya Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rectangle',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Nakala Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Tengua',\n redo: 'Redo',\n tool_source: 'Edit Lugha',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Kikundi Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Kuhama Bottom',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Save',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Delete Layer',\n move_down: 'Move Layer Down',\n new: 'Mpya Layer',\n rename: 'Rename Layer',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Select predefined:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'test',\n dir: 'ltr',\n common: {\n ok: 'OK',\n cancel: 'Cancel',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Click to change fill color, shift-click to change stroke color',\n zoom_level: 'Change zoom level',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Change fill color',\n stroke_color: 'Change stroke color',\n stroke_style: 'Change stroke dash style',\n stroke_width: 'Change stroke width by 1, shift-click to change by 0.1',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Change rotation angle',\n blur: 'Change gaussian blur value',\n opacity: 'Change selected item opacity',\n circle_cx: \"Change circle's cx coordinate\",\n circle_cy: \"Change circle's cy coordinate\",\n circle_r: \"Change circle's radius\",\n ellipse_cx: \"Change ellipse's cx coordinate\",\n ellipse_cy: \"Change ellipse's cy coordinate\",\n ellipse_rx: \"Change ellipse's x radius\",\n ellipse_ry: \"Change ellipse's y radius\",\n line_x1: \"Change line's starting x coordinate\",\n line_x2: \"Change line's ending x coordinate\",\n line_y1: \"Change line's starting y coordinate\",\n line_y2: \"Change line's ending y coordinate\",\n rect_height: 'Change rectangle height',\n rect_width: 'Change rectangle width',\n corner_radius: 'Change Rectangle Corner Radius',\n image_width: 'Change image width',\n image_height: 'Change image height',\n image_url: 'Change URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Change text contents',\n font_family_label: 'Font:',\n font_family: 'Change Font Family',\n font_size: 'Change Font Size',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Change background color/opacity',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'Fit to all content',\n fit_to_canvas: 'Fit to canvas',\n fit_to_layer_content: 'Fit to layer content',\n fit_to_sel: 'Fit to selection',\n align_relative_to: 'Align relative to ...',\n relativeTo: 'relative to:',\n page: 'page',\n largest_object: 'largest object',\n selected_objects: 'selected objects',\n smallest_object: 'smallest object',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Align Center',\n align_left: 'Align Left',\n align_middle: 'Align Middle',\n align_right: 'Align Right',\n align_top: 'Align Top',\n mode_select: 'Select Tool',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-Hand Rectangle',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Free-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Text Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Undo',\n redo: 'Redo',\n tool_source: 'Edit Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Group Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Move to Bottom',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Apply Changes',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Move Layer Up',\n move_down: 'Move Layer Down',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Delete Layer',\n move_down: 'Move Layer Down',\n new: 'New Layer',\n rename: 'Rename Layer',\n move_up: 'Move Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Select predefined:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: 'Move selected elements to layer \\'%s\\'?',\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'th',\n dir: 'ltr',\n common: {\n ok: 'บันทึก',\n cancel: 'ยกเลิก',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'คลิกเพื่อเปลี่ยนใส่สีกะคลิกเปลี่ยนสีจังหวะ',\n zoom_level: 'เปลี่ยนระดับการซูม',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'เปลี่ยนใส่สี',\n stroke_color: 'สีจังหวะเปลี่ยน',\n stroke_style: 'รีบเปลี่ยนสไตล์จังหวะ',\n stroke_width: 'ความกว้างจังหวะเปลี่ยน',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'มุมหมุนเปลี่ยน',\n blur: 'Change gaussian blur value',\n opacity: 'เปลี่ยนความทึบเลือกรายการ',\n circle_cx: 'Cx วงกลมเปลี่ยนของพิกัด',\n circle_cy: 'วงกลมเปลี่ยนเป็น cy ประสานงาน',\n circle_r: 'รัศมีวงกลมเปลี่ยนเป็น',\n ellipse_cx: 'เปลี่ยน ellipse ของ cx ประสานงาน',\n ellipse_cy: 'Ellipse เปลี่ยนของ cy ประสานงาน',\n ellipse_rx: 'Ellipse เปลี่ยนของรัศมี x',\n ellipse_ry: 'Ellipse เปลี่ยนของรัศมี y',\n line_x1: 'สายเปลี่ยนเป็นเริ่มต้น x พิกัด',\n line_x2: 'สายเปลี่ยนเป็นสิ้นสุด x พิกัด',\n line_y1: 'สายเปลี่ยนเป็นเริ่มต้น y พิกัด',\n line_y2: 'สายเปลี่ยนเป็นสิ้นสุด y พิกัด',\n rect_height: 'ความสูงสี่เหลี่ยมผืนผ้าเปลี่ยน',\n rect_width: 'ความกว้างสี่เหลี่ยมผืนผ้าเปลี่ยน',\n corner_radius: 'รัศมีเปลี่ยนสี่เหลี่ยมผืนผ้า Corner',\n image_width: 'ความกว้างเปลี่ยนรูปภาพ',\n image_height: 'ความสูงเปลี่ยนรูปภาพ',\n image_url: 'URL เปลี่ยน',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'เปลี่ยนเนื้อหาข้อความ',\n font_family_label: 'Font:',\n font_family: 'ครอบครัว Change Font',\n font_size: 'เปลี่ยนขนาดตัวอักษร',\n bold: 'ข้อความตัวหนา',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'ข้อความตัวเอียง',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'สีพื้นหลังเปลี่ยน / ความทึบ',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Fit to Content',\n fit_to_all: 'พอดีกับเนื้อหาทั้งหมด',\n fit_to_canvas: 'เหมาะสมในการผ้าใบ',\n fit_to_layer_content: 'พอดีเนื้อหาชั้นที่',\n fit_to_sel: 'เหมาะสมในการเลือก',\n align_relative_to: 'จัดชิดเทียบกับ ...',\n relativeTo: 'เทียบกับ:',\n page: 'หน้า',\n largest_object: 'ที่ใหญ่ที่สุดในวัตถุ',\n selected_objects: 'วัตถุเลือกตั้ง',\n smallest_object: 'วัตถุที่เล็กที่สุด',\n new_doc: 'รูปภาพใหม่',\n open_doc: 'ภาพเปิด',\n export_img: 'Export',\n save_doc: 'บันทึกรูปภาพ',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'ด้านล่างชิด',\n align_center: 'จัดแนวกึ่งกลาง',\n align_left: 'จัดชิดซ้าย',\n align_middle: 'กลางชิด',\n align_right: 'จัดชิดขวา',\n align_top: 'ด้านบนชิด',\n mode_select: 'เครื่องมือเลือก',\n mode_fhpath: 'เครื่องมือดินสอ',\n mode_line: 'เครื่องมือ Line',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'สี่เหลี่ยมผืนผ้า Free-Hand',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Ellipse Free-Hand',\n mode_path: 'Path Tool',\n mode_text: 'เครื่องมือ Text',\n mode_image: 'เครื่องมือ Image',\n mode_zoom: 'เครื่องมือซูม',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'เลิก',\n redo: 'ทำซ้ำ',\n tool_source: 'แหล่งที่มาแก้ไข',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'องค์ประกอบของกลุ่ม',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'องค์ประกอบ Ungroup',\n docprops: 'คุณสมบัติของเอกสาร',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'ย้ายไปด้านล่าง',\n move_top: 'ย้ายไปด้านบน',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'บันทึก',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Delete Layer',\n move_down: 'ย้าย Layer ลง',\n new: 'Layer ใหม่',\n rename: 'Layer เปลี่ยนชื่อ',\n move_up: 'ย้าย Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'เลือกที่กำหนดไว้ล่วงหน้า:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'tl',\n dir: 'ltr',\n common: {\n ok: 'I-save',\n cancel: 'I-cancel',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'I-click upang baguhin ang punan ang kulay, paglilipat-click upang baguhin ang paghampas ng kulay',\n zoom_level: 'Baguhin ang antas ng zoom',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Baguhin ang punuin ng kulay',\n stroke_color: 'Baguhin ang kulay ng paghampas',\n stroke_style: 'Baguhin ang stroke pagsugod estilo',\n stroke_width: 'Baguhin ang stroke lapad',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Baguhin ang pag-ikot anggulo',\n blur: 'Change gaussian blur value',\n opacity: 'Palitan ang mga napiling bagay kalabuan',\n circle_cx: 'Cx Baguhin ang bilog&#39;s coordinate',\n circle_cy: 'Baguhin ang bilog&#39;s cy coordinate',\n circle_r: 'Baguhin ang radius ng bilog',\n ellipse_cx: 'Baguhin ang tambilugan&#39;s cx-ugma',\n ellipse_cy: 'Baguhin ang tambilugan&#39;s cy coordinate',\n ellipse_rx: 'X radius Baguhin ang tambilugan&#39;s',\n ellipse_ry: 'Y radius Baguhin ang tambilugan&#39;s',\n line_x1: 'Baguhin ang linya ng simula x coordinate',\n line_x2: 'Baguhin ang linya ay nagtatapos x coordinate',\n line_y1: 'Baguhin ang linya ng simula y coordinate',\n line_y2: 'Baguhin ang linya ay nagtatapos y coordinate',\n rect_height: 'Baguhin ang rektanggulo taas',\n rect_width: 'Baguhin ang rektanggulo lapad',\n corner_radius: 'Baguhin ang Parihaba Corner Radius',\n image_width: 'Baguhin ang lapad ng imahe',\n image_height: 'Baguhin ang taas ng imahe',\n image_url: 'Baguhin ang URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Baguhin ang mga nilalaman ng teksto',\n font_family_label: 'Font:',\n font_family: 'Baguhin ang Pamilya ng Font',\n font_size: 'Baguhin ang Laki ng Font',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Baguhin ang kulay ng background / kalabuan',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Pagkasyahin sa Nilalaman',\n fit_to_all: 'Pagkasyahin sa lahat ng mga nilalaman',\n fit_to_canvas: 'Pagkasyahin sa tolda',\n fit_to_layer_content: 'Pagkasyahin sa layer nilalaman',\n fit_to_sel: 'Pagkasyahin sa pagpili',\n align_relative_to: 'Pantayin sa kamag-anak sa ...',\n relativeTo: 'kamag-anak sa:',\n page: 'pahina',\n largest_object: 'pinakamalaking bagay',\n selected_objects: 'inihalal na mga bagay',\n smallest_object: 'pinakamaliit na bagay',\n new_doc: 'Bagong Imahe',\n open_doc: 'Buksan ang Image',\n export_img: 'Export',\n save_doc: 'I-save ang Image',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Pantayin sa Ibaba',\n align_center: 'Pantayin sa Gitna',\n align_left: 'Pantayin ang Kaliwa',\n align_middle: 'Pantayin sa Gitnang',\n align_right: 'Pantayin sa Kanan',\n align_top: 'Pantayin Top',\n mode_select: 'Piliin ang Tool',\n mode_fhpath: 'Kasangkapan ng lapis',\n mode_line: 'Line Kasangkapan',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Libreng-kamay Parihaba',\n mode_ellipse: 'Tambilugan',\n mode_circle: 'Circle',\n mode_fhellipse: 'Libreng-kamay tambilugan',\n mode_path: 'Path Tool',\n mode_text: 'Text Kasangkapan',\n mode_image: 'Image Kasangkapan',\n mode_zoom: 'Mag-zoom Kasangkapan',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Bawiin',\n redo: 'Gawin muli',\n tool_source: 'I-edit ang Source',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Group Sangkap',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Sangkap',\n docprops: 'Document Katangian',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Ilipat sa Ibaba',\n move_top: 'Ilipat sa Tuktok',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'I-save',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Tanggalin Layer',\n move_down: 'Ilipat Layer Down',\n new: 'Bagong Layer',\n rename: 'Palitan ang pangalan ng Layer',\n move_up: 'Ilipat Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Piliin ang paunang-natukoy na:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'tr',\n dir: 'ltr',\n common: {\n ok: 'Tamam',\n cancel: 'İptal',\n key_backspace: 'Gerisilme',\n key_del: 'Delete',\n key_down: 'Aşağı',\n key_up: 'Yukarı',\n more_opts: 'Daha fazla',\n url: 'URL',\n width: 'En',\n height: 'Boy'\n },\n misc: {\n powered_by: 'Geliştiren'\n },\n ui: {\n toggle_stroke_tools: 'Göster/Gizle çizim araçları',\n palette_info: 'Dolgu rengini değiştirmek için tıklayın, shift-click ile çizgi rengini değiştirin',\n zoom_level: 'Yakınlık seviyesini değiştirin',\n panel: 'Panel',\n panel_action: 'Yan paneli açmak için tıklayın',\n quality: 'Kalite:',\n pathNodeTooltip: 'Düğümü taşıyarak hareket ettirin. Düğüme tıklayarak kesit türünü değiştirin',\n pathCtrlPtTooltip: 'denetleme noktasını sürükleyerek eğriyi değiştirin',\n pick_stroke_paint_opacity: 'Çizgi Rengi ve Saydamlık düzeyi seçin',\n pick_fill_paint_opacity: 'Dolgu Rengi ve Saydamlık düzeyi seçin',\n group_identify_label: 'Grup kimlik etiketi',\n export_type_label: 'Dışa aktarma için resim seçin:'\n },\n properties: {\n id: 'Öge kimlik numarası',\n fill_color: 'Dolgu rengini değiştir',\n stroke_color: 'Çizgi rengini değiştir',\n stroke_style: 'Çizgi stilini değiştir',\n stroke_width: 'Çizgi kalınlığını 1 birim değiştir, shift-click ile 0.1 birim değiştir',\n pos_x: 'X koordinatı değiştir',\n pos_y: 'Y koordinatı değiştir',\n linecap_butt: 'ÇizgiUcu: Butt',\n linecap_round: 'ÇizgiUcu: Yuvarlak',\n linecap_square: 'ÇizgiUcu: Kare',\n linejoin_bevel: 'ÇizgiBirleşim: Kabartma',\n linejoin_miter: 'ÇizgiBirleşim: Miter',\n linejoin_round: 'ÇizgiBirleşim: Yuvarlak',\n angle: 'Döndürme açısını değiştir',\n blur: 'Gaussian bulanıklık değerini değiştir',\n opacity: 'Seçilen ögenin saydamlığını değiştir',\n circle_cx: 'Çemberin cx koordinatını değiştir',\n circle_cy: 'Çemberin cy koordinatını değiştir',\n circle_r: 'Çemberin yarıçapını değiştir',\n ellipse_cx: 'Elipsin cx koordinatını değiştir',\n ellipse_cy: 'Elipsin cy koordinatını değiştir',\n ellipse_rx: 'Elipsin x yarıçapını değiştir',\n ellipse_ry: 'Elipsin y yarıçapını değiştir',\n line_x1: 'Çizginin başlangıç x değerini değiştir',\n line_x2: 'Çizginin bitiş x değerini değiştir',\n line_y1: 'Çizginin başlangıç y değerini değiştir',\n line_y2: 'Change line\\'s ending y coordinate',\n rect_height: 'Üçgenin yüksekliğini değiştir',\n rect_width: 'Üçgenin enini değiştir',\n corner_radius: 'Üçgenin Köşe Yarıçapını değiştir',\n image_width: 'Resmin enini değiştir',\n image_height: 'Resmin boyunu değiştir',\n image_url: 'URL değiştir',\n node_x: 'Düğümün x koordinatını değiştir',\n node_y: 'Düğümün y koordinatını değiştir',\n seg_type: 'Kesit tipini değiştir',\n straight_segments: 'Düzgün',\n curve_segments: 'Eğri',\n text_contents: 'Metin içeriğini değiştir',\n font_family_label: 'Font:',\n font_family: 'Font Ailesini Değiştir',\n font_size: 'Font boyutunu değiştir',\n bold: 'Kalın Metin',\n text_decoration_underline: 'Altıçizili',\n text_decoration_linethrough: 'Ortaçizili',\n text_decoration_overline: 'Üstçizili',\n italic: 'Italic Metin',\n text_anchor_start: 'Metni başa hizala',\n text_anchor_middle: 'Metni ortaya hizala',\n text_anchor_end: 'Metni sona hizala',\n text_letter_spacing: 'Harf boşluklarını değiştir',\n text_word_spacing: 'Kelime arası boşlukları değiştir',\n text_length: 'Metnin içerisine çizileceği boşluğun miktarını belirmeye yarar',\n text_length_adjust: 'Uzunluk Ayarla',\n text_length_adjust_spacing: 'Boşluk',\n text_length_adjust_spacing_and_glyphs: 'Boşluk & Glyphs',\n r_label: 'r',\n x_label: 'x',\n y_label: 'y',\n x1_label: 'x1',\n y1_label: 'y1',\n x2_label: 'x2',\n y2_label: 'y2',\n rx_label: 'rx',\n ry_label: 'ry',\n cx_label: 'cx',\n cy_label: 'cy',\n w_label: 'w',\n h_label: 'h',\n id_label: 'id',\n class_label: 'class',\n label: 'etiket',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Seçenekleri ve SVG içeriğini yerel olarak sakla',\n prefs_only: 'Sadece seçenekleri yerel olarak sakla',\n no_prefs_or_content: 'SVG içeriğini ya da seçenekleri yerel olarak saklama!',\n jgraduate_pad: 'Dolgula',\n jgraduate_reflect: 'Yansıt',\n jgraduate_repeat: 'Tekrarla'\n },\n tools: {\n main_menu: 'Ana Menu',\n bkgnd_color_opac: 'Arka plan rengini/saydamlığını ayarla',\n connector_no_arrow: 'Düz bağlantı',\n fitToContent: 'İçeriğe sığdır',\n fit_to_all: 'Tüm içeriğe sığdır',\n fit_to_canvas: 'canvas\\'a sığdır',\n fit_to_layer_content: 'Kayman içeriğine sığdır',\n fit_to_sel: 'Seçime sığdır',\n align_relative_to: 'Şuna göre hizala...',\n relativeTo: 'şuna göre:',\n page: 'sayfa',\n largest_object: 'enbüyük nesne',\n selected_objects: 'seçili nesneler',\n smallest_object: 'enküçük nesne',\n export_img: 'Dışa aktar',\n import_doc: 'SVG içe aktar',\n align_to_page: 'Ögeyi Sayfaya Hizala',\n align_bottom: 'Alta Hizala',\n align_center: 'Merkeze Hizala',\n align_left: 'Sola Hizala',\n align_middle: 'Ortaya Hizala',\n align_right: 'Sağa Hizala',\n align_top: 'Üste Hizala',\n mode_select: 'Seçim Aracı',\n mode_fhpath: 'Kalem Aracı',\n mode_line: 'Çizgi Aracı',\n mode_rect: 'Dörtgen Aracı',\n mode_square: 'Kare Aracı',\n mode_fhrect: 'Serbest Dörtgen Aracı',\n mode_ellipse: 'Elips',\n mode_circle: 'Çember',\n mode_fhellipse: 'Serbest Elips',\n mode_path: 'Path Aracı',\n mode_text: 'Metin Aracı',\n mode_image: 'Resim Aracı',\n mode_zoom: 'Yakınlaştırma Aracı',\n no_embed: 'NOT: Bu resim içe gömülemiyor. Bu Path e bağlı olarak görüntülenecek',\n undo: 'Gerial',\n redo: 'Yinele',\n tool_source: 'Kaynağı Düzenle',\n wireframe_mode: 'Çizgi Mod',\n clone: 'Öge(ler)i Çoğalt',\n del: 'Öge(ler)i Sil',\n group_elements: 'Ögeleri Grupla',\n make_link: '(hiper) Link Oluştur',\n set_link_url: 'Bağlantı URL si ata(boş bırak ya da kaldır)',\n to_path: 'Path\\'e dönüştür',\n reorient_path: 'Path yeniden yönlendir',\n ungroup: 'Ögelerin Grubunu çöz',\n docprops: 'Belge Seçenekleri',\n editor_homepage: 'SVG-Edit Ana Sayfası',\n move_bottom: 'Alta gönder',\n move_top: 'Öne gönder',\n node_clone: 'Düğüm Klonla',\n node_delete: 'Düğüm Klonla',\n node_link: 'Denetim Noktalarını Bağla',\n add_subpath: 'Alt Path ekle',\n openclose_path: 'Aç/Kapa Alt Path',\n source_save: 'Değişiklikleri Kaydet',\n cut: 'Kes',\n copy: 'Kopyala',\n paste: 'Yapıştır',\n paste_in_place: 'Yerine Yapıştır',\n delete: 'Sil',\n group: 'Grupla',\n move_front: 'En Öne Getir',\n move_up: 'Bir Öne Getir',\n move_down: 'Bir Arkaya Gönder',\n move_back: 'En Arkaya Gönder',\n tool_unlink_use: 'Ana nesneye bağını kopar (bağımsız yap)',\n ellipse_circle_tool: 'Elips/Çember Aracı',\n square_rect_tool: 'Kare/Dörtgen Aracı',\n remember_this_choice: 'Bu seçenek hatırlansın mı?',\n remember_this_choice_title: 'Bu seçenek seçilirse, seçiminiz hatırlanacak biçimde URL değiştirilecek.'\n },\n layers: {\n layer: 'Katman',\n layers: 'Katmanlar',\n del: 'Katmanı Sil',\n move_down: 'Katmanı Aşağı Taşı',\n new: 'Yeni Katman',\n rename: 'Katmanı Yeniden Adlandır',\n move_up: 'Katmanı Üste Taşı',\n dupe: 'Katmanı Çoğalt...',\n merge_down: 'Aşağı Birleştir',\n merge_all: 'Tümünü Birleştir',\n move_elems_to: 'Ögeleri şuraya taşı:',\n move_selected: 'Seçilen ögeleri farklı katmana taşı'\n },\n config: {\n image_props: 'Resim Özellikleri',\n doc_title: 'Başlık:',\n doc_dims: 'Canvas Boyutları',\n included_images: 'Dahili Resimler',\n image_opt_embed: 'Veriyi Göm(local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editör Seçenekleri',\n language: 'Dil:',\n background: 'Editör Arkaplanı',\n editor_img_url: 'Resim URL:',\n editor_bg_note: 'Not: Arkaplan resimle kaydedilmeyecek!',\n select_predefined: 'Select predefined:',\n units_and_rulers: 'Birimler & Cetveller',\n show_rulers: 'Cetvelleri Göster',\n base_unit: 'Temel Birim:',\n grid: 'Izgara',\n snapping_onoff: 'Hizalama Yardımı Aç/Kapa',\n snapping_stepsize: 'Hizalama Yardım Adımı:',\n grid_color: 'Izgara Rengi:',\n done: 'Kaydedildi',\n change_xxx_color: 'xxx rengini değiştir',\n pick_paint_opavity: 'Renk ve saydamlık için yeni bir değer{{newValue}}',\n open_color_picker: 'Renk Seçiciyi Açmak için Tıklayın',\n jpicker_title: 'Renk Seçmek için işaretçileri Sürükleyin',\n jpicker_new_color: 'yeni',\n jpicker_current_color: 'mevcut',\n jpicker_tooltip_colors_new_color: 'Yeni Renk - &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Asıl renge dönmek için tıklayın',\n jpicker_tooltip_buttons_ok: 'Renk seçitine ekle',\n jpicker_tooltip_buttons_cancel: 'Vazgeç asıl renge dön',\n jpicker_tooltip_hue_radio: '&ldquo;Hue&rdquo; Renk Modu Ayarla',\n jpicker_tooltip_hue_textbox: '&ldquo;Hue&rdquo; değeri (0-360&deg;)',\n jpicker_tooltip_saturation_radio: '&ldquo;Doygunluk&rdquo; Renk Modu Ayarla',\n jpicker_tooltip_saturation_textbox: '&ldquo;Doygunluk&rdquo; Değeri(0-100%)',\n jpicker_tooltip_value_radio: '&ldquo;Beyazlık&rdquo; Renk Modu Ayarla',\n jpicker_tooltip_value_textbox: '&ldquo;Beyazlık&rdquo; Değeri (0-100%)',\n jpicker_tooltip_red_radio: '&ldquo;Kırmızı&rdquo; Renk Modu Ayarla',\n jpicker_tooltip_red_textbox: '&ldquo;Kırmızı&rdquo; Değeri (0-255)',\n jpicker_tooltip_green_radio: '&ldquo;Yeşil&rdquo; Renk Modu Ayarla',\n jpicker_tooltip_green_textbox: '&ldquo;Yeşil&rdquo; Değeri (0-255)',\n jpicker_tooltip_blue_radio: '&ldquo;Mavi&rdquo; Renk Modu',\n jpicker_tooltip_blue_textbox: '&ldquo;Mavi&rdquo; Değeri (0-255)',\n jpicker_tooltip_alpha_radio: '&ldquo;Saydamlık&rdquo; Renk Modu Ayarla',\n jpicker_tooltip_alpha_textbox: '&ldquo;Saydamlık&rdquo; Değeri (0-100)',\n jpicker_tooltip_hex_textbox: '&ldquo;Hex&rdquo; Renk Modu Ayarla (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: '&ldquo;Hex&rdquo; Değeri (#00-#ff)',\n jgraduate_solid_color: 'Tek Renk',\n jgraduate_linear_gradient: 'Doğrusal Gradyan',\n jgraduate_radial_gradient: 'Döngüsel Gradyan',\n jgraduate_begin_point: 'Başlangıç Noktası',\n jgraduate_enter_starting_x: 'x için 0.0 ve 1.0 arasında başlangıç değeri girin',\n jgraduate_enter_starting_y: 'y için 0.0 ve 1.0 arasında başlangıç değeri girin',\n jgraduate_end_point: 'Bitiş Noktası',\n jgraduate_enter_ending_x: 'x için 0.0 ve 1.0 arasında bitiş değeri girin',\n jgraduate_enter_ending_y: 'y için 0.0 ve 1.0 arasında bitiş değeri girin',\n jgraduate_center_point: 'Merkez Noktası',\n jgraduate_enter_value_x: 'x için 0.0 ve 1.0 arasında değer girin',\n jgraduate_enter_value_y: 'y için 0.0 ve 1.0 arasında değer girin',\n jgraduate_focal_point: 'Odak Noktası',\n jgraduate_match_center: 'Merkezle eşleştir:',\n jgraduate_enter_focal_x: 'x için 0.0 ve 1.0 arasında değer girin',\n jgraduate_enter_focal_y: 'y için 0.0 ve 1.0 arasında değer girin',\n jgraduate_spread_method: 'Yayılım Metodu',\n jgraduate_radius: 'Yarıçap:',\n jgraduate_set_radius: 'Yarıçapı ayarlamak için tıklayın',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Ellip ayarlamak için tıklayın',\n jgraduate_angle: 'Açı:',\n jgraduate_set_angle: 'Açıyı ayarlamak için tıklayın',\n jgraduate_deg: 'derece:',\n jgraduate_opac: 'Şeffflık:',\n jgraduate_set_opac: 'Şeffaflığı ayarlamak için tıklayın'\n },\n notification: {\n invalidAttrValGiven: 'Verilen değer geçersiz',\n noContentToFitTo: 'Kendisine sığılacak içerik yok',\n dupeLayerName: 'O isimde bir katman zaten var!',\n enterUniqueLayerName: 'Benzersiz bir katman ismi girin',\n enterNewLayerName: 'Yeni katman ismi verin',\n layerHasThatName: 'Katmanın ismi aynı',\n QmoveElemsToLayer: 'Seçilen nesneleri \\'%s\\' katmanına taşıyın?',\n QwantToClear: 'Çizimi sıfırlamak istediğinizden emin misiniz?\\nBu aynı zamanda gerial geçmişini de silecek!',\n QwantToOpen: 'Yeni bir belge açmak istediğinize emin misiniz?\\nBu aynı zamanda gerial geçmişini de silecek!',\n QerrorsRevertToSource: 'SVG dosyasını tararken sorunlar oluştu.\\nOrjinal SVG dosyasına dönüş yapılsın mı?',\n QignoreSourceChanges: 'SVG kayndağındaki değişiklikleri gözmezden gelelim mi?',\n featNotSupported: 'Bu özellik desteklenmiyor',\n enterNewImgURL: 'Yeni bir resim bağlantısı(URL) girin',\n defsFailOnSave: 'NOTE: internet gezgininizdeki hata nedeni ile, bu resim yanlış görüntülenebilir (gradyan ya da element eksikliği). Ama kaydedildikten sonra düzgün görünecektir.',\n loadingImage: 'Resim yükleniyor, Lütfen bekleyiniz...',\n saveFromBrowser: '\\'Farklı Kaydet...\\' seçeneğini seçin (sağ tık menüsünden ya da Dosya menüsünden olabilir) eğer bu resmi {{type}} tipinde kaydetmek istiyorsanız.',\n noteTheseIssues: 'Ayrıca şu sorunları not edin: ',\n unsavedChanges: 'Kaydedilmemiş değişiklikler mevcut.',\n enterNewLinkURL: 'Yeni bir bağlantı URL\\'si girin',\n errorLoadingSVG: 'Hata: SVG verisi yüklenemiyor',\n URLLoadFail: 'URL\\'den yükleme gerçekleştirilemiyor',\n retrieving: 'Alınıyor \\'%s\\' ...',\n popupWindowBlocked: 'Açılı pencere internet gezgini tarafından engelleniyor olabilir',\n exportNoBlur: 'Bulanık ögeler bulanık değil gibi görüntülenecek',\n exportNoforeignObject: 'foreignObject ögeleri görüntülenmeyecek',\n exportNoDashArray: 'Çizgiler \\'sürekli\\' görüntülenecek',\n exportNoText: 'Metin beklenildiği şekilde görüntülenmeyebilir',\n editorPreferencesMsg: 'Varsayılan olarak ve destekleniyorsa, SVG-Edit seçimlerinizi ve SVG dosyayı bilgisayarınızda yerel olarak kaydedebilir dolayısıyla SVG-Edit\\'i her açtığınızda tekrar yüklemek zorunda değilsiniz. Eğer gizlilik gereği bu özelliği kapatmak isterseniz aşağıdaki seçeneklerden yapabilrisiniz.',\n source_dialog_note: 'Bu kutu içeriğini metin düzenleyiciye kopyalayın, sonra dosyayı .svg eklentisi ile kaydedin.'\n }\n}\n","export default {\n lang: 'uk',\n dir: 'ltr',\n common: {\n ok: 'Зберегти',\n cancel: 'Скасування',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Натисніть для зміни кольору заливки, Shift-Click змінити обвід',\n zoom_level: 'Зміна масштабу',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Зміна кольору заливки',\n stroke_color: 'Зміна кольору інсульт',\n stroke_style: 'Зміна стилю інсульт тире',\n stroke_width: 'Зміни ширина штриха',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Зміна кута повороту',\n blur: 'Change gaussian blur value',\n opacity: 'Зміна вибраного пункту непрозорості',\n circle_cx: 'CX зміну кола координата',\n circle_cy: 'Зміни гуртка CY координати',\n circle_r: 'Зміна кола&#39;s радіус',\n ellipse_cx: 'Зміни еліпса CX координати',\n ellipse_cy: 'Зміни еліпса CY координати',\n ellipse_rx: 'Х Зміни еліпса радіусом',\n ellipse_ry: 'Зміни у еліпса радіусом',\n line_x1: 'Зміни починає координати лінія х',\n line_x2: 'Зміни за період, що закінчився лінія координати х',\n line_y1: 'Зміни лінія починає Y координата',\n line_y2: 'Зміна за період, що закінчився лінія Y координата',\n rect_height: 'Зміни прямокутник висотою',\n rect_width: 'Зміна ширини прямокутника',\n corner_radius: 'Зміни прямокутник Corner Radius',\n image_width: 'Зміни ширина зображення',\n image_height: 'Зміна висоти зображення',\n image_url: 'Змінити URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Зміна змісту тексту',\n font_family_label: 'Font:',\n font_family: 'Зміни Сімейство шрифтів',\n font_size: 'Змінити розмір шрифту',\n bold: 'Товстий текст',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Похилий текст',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Зміна кольору тла / непрозорість',\n connector_no_arrow: 'No arrow',\n fitToContent: 'За розміром змісту',\n fit_to_all: 'За розміром весь вміст',\n fit_to_canvas: 'Розмір полотна',\n fit_to_layer_content: 'За розміром шар змісту',\n fit_to_sel: 'Вибір розміру',\n align_relative_to: 'Вирівняти по відношенню до ...',\n relativeTo: 'в порівнянні з:',\n page: 'сторінка',\n largest_object: 'найбільший об&#39;єкт',\n selected_objects: 'обраними об&#39;єктами',\n smallest_object: 'маленький об&#39;єкт',\n new_doc: 'Нове зображення',\n open_doc: 'Відкрити зображення',\n export_img: 'Export',\n save_doc: 'Зберегти малюнок',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Вирівняти по нижньому краю',\n align_center: 'Вирівняти по центру',\n align_left: 'По лівому краю',\n align_middle: 'Вирівняти Близького',\n align_right: 'По правому краю',\n align_top: 'Вирівняти по верхньому краю',\n mode_select: 'Виберіть інструмент',\n mode_fhpath: 'Pencil Tool',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Вільної руки Прямокутник',\n mode_ellipse: 'Еліпс',\n mode_circle: 'Коло',\n mode_fhellipse: 'Вільної руки Еліпс',\n mode_path: 'Path Tool',\n mode_text: 'Текст Tool',\n mode_image: 'Image Tool',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Скасувати',\n redo: 'Повтор',\n tool_source: 'Змінити вихідний',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Група елементів',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Елементи розгрупувати',\n docprops: 'Властивості документа',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Перемістити вниз',\n move_top: 'Перемістити догори',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Зберегти',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Видалити шар',\n move_down: 'Перемістити шар на',\n new: 'Новий шар',\n rename: 'Перейменувати Шар',\n move_up: 'Переміщення шару до',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Виберіть зумовлений:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'vi',\n dir: 'ltr',\n common: {\n ok: 'Lưu',\n cancel: 'Hủy',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'Nhấn vào đây để thay đổi đầy màu sắc, thay đổi nhấp chuột để thay đổi màu sắc đột quỵ',\n zoom_level: 'Thay đổi mức độ phóng',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'Thay đổi đầy màu sắc',\n stroke_color: 'Thay đổi màu sắc đột quỵ',\n stroke_style: 'Thay đổi phong cách đột quỵ dash',\n stroke_width: 'Thay đổi chiều rộng đột quỵ',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'Thay đổi góc xoay',\n blur: 'Change gaussian blur value',\n opacity: 'Thay đổi lựa chọn opacity mục',\n circle_cx: 'Thay đổi hình tròn của cx phối hợp',\n circle_cy: 'Thay đổi hình tròn của vi phối hợp',\n circle_r: 'Thay đổi bán kính của hình tròn',\n ellipse_cx: 'Thay đổi hình elip của cx phối hợp',\n ellipse_cy: 'Thay đổi hình elip của vi phối hợp',\n ellipse_rx: 'Thay đổi hình elip của x bán kính',\n ellipse_ry: 'Y Thay đổi bán kính của hình ellipse',\n line_x1: 'Thay đổi dòng của bắt đầu từ x phối hợp',\n line_x2: 'Thay đổi dòng của x kết thúc sớm nhất phối hợp',\n line_y1: 'Thay đổi dòng của bắt đầu từ y phối hợp',\n line_y2: 'Thay đổi dòng của kết thúc y phối hợp',\n rect_height: 'Thay đổi hình chữ nhật chiều cao',\n rect_width: 'Thay đổi hình chữ nhật chiều rộng',\n corner_radius: 'Thay đổi chữ nhật Corner Radius',\n image_width: 'Thay đổi hình ảnh rộng',\n image_height: 'Thay đổi hình ảnh chiều cao',\n image_url: 'Thay đổi URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'Thay đổi nội dung văn bản',\n font_family_label: 'Font:',\n font_family: 'Thay đổi Font Gia đình',\n font_size: 'Thay đổi cỡ chữ',\n bold: 'Bold Text',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'Italic Text',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'Thay đổi màu nền / opacity',\n connector_no_arrow: 'No arrow',\n fitToContent: 'Phù hợp với nội dung',\n fit_to_all: 'Phù hợp với tất cả nội dung',\n fit_to_canvas: 'Phù hợp với vải',\n fit_to_layer_content: 'Vào lớp phù hợp với nội dung',\n fit_to_sel: 'Phù hợp để lựa chọn',\n align_relative_to: 'Căn liên quan đến ...',\n relativeTo: 'liên quan đến:',\n page: 'Page',\n largest_object: 'lớn nhất đối tượng',\n selected_objects: 'bầu các đối tượng',\n smallest_object: 'nhỏ đối tượng',\n export_img: 'Export',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'Align Bottom',\n align_center: 'Căn giữa',\n align_left: 'Căn còn lại',\n align_middle: 'Căn Trung',\n align_right: 'Căn phải',\n align_top: 'Căn Top',\n mode_select: 'Chọn Công cụ',\n mode_fhpath: 'Bút chì Công cụ',\n mode_line: 'Line Tool',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Việt-Hand Hình chữ nhật',\n mode_ellipse: 'Ellipse',\n mode_circle: 'Circle',\n mode_fhellipse: 'Việt-Hand Ellipse',\n mode_path: 'Path Tool',\n mode_text: 'Text Tool',\n mode_image: 'Hình Công cụ',\n mode_zoom: 'Zoom Tool',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'Hoàn tác',\n redo: 'Làm lại',\n tool_source: 'Sửa Nguồn',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'Nhóm Elements',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: 'Document Properties',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'Chuyển đến đáy',\n move_top: 'Move to Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'Lưu',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'Xoá Layer',\n move_down: 'Move Layer Down',\n new: 'New Layer',\n rename: 'Đổi tên Layer',\n move_up: 'Di chuyển Layer Up',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'Chọn định sẵn:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'yi',\n dir: 'ltr',\n common: {\n ok: 'היט',\n cancel: 'באָטל מאַכן',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: 'גיט צו ענדערן אָנעסן קאָליר, יבעררוק-גיט צו טוישן מאַך קאָליר',\n zoom_level: 'ענדערן פארגרעסער הייך',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: 'ענדערן אָנעסן קאָליר',\n stroke_color: 'טוישן מאַך קאָליר',\n stroke_style: 'טוישן מאַך לאָך מאָדע',\n stroke_width: 'טוישן מאַך ברייט',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: 'ענדערן ראָוטיישאַן ווינקל',\n blur: 'Change gaussian blur value',\n opacity: 'ענדערן סעלעקטעד נומער אָופּאַסאַטי',\n circle_cx: 'ענדערן קרייז ס קקס קאָואָרדאַנאַט',\n circle_cy: 'ענדערן קרייז ס סי קאָואָרדאַנאַט',\n circle_r: 'ענדערן קרייז ס ראַדיוס',\n ellipse_cx: 'ענדערן יליפּס ס קקס קאָואָרדאַנאַט',\n ellipse_cy: 'ענדערן יליפּס ס סי קאָואָרדאַנאַט',\n ellipse_rx: 'ענדערן יליפּס ס &#39;קס ראַדיוס',\n ellipse_ry: 'ענדערן יליפּס ס &#39;י ראַדיוס',\n line_x1: 'טוישן ליניע ס &#39;סטאַרטינג קס קאָואָרדאַנאַט',\n line_x2: 'טוישן ליניע ס &#39;סאָף קס קאָואָרדאַנאַט',\n line_y1: 'טוישן ליניע ס &#39;סטאַרטינג י קאָואָרדאַנאַט',\n line_y2: 'טוישן ליניע ס &#39;סאָף י קאָואָרדאַנאַט',\n rect_height: 'ענדערן גראָדעק הייך',\n rect_width: 'ענדערן גראָדעק ברייט',\n corner_radius: 'ענדערן רעקטאַנגלע קאָרנער ראַדיוס',\n image_width: 'טוישן בילד ברייט',\n image_height: 'טוישן בילד הייך',\n image_url: 'ענדערן URL',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: 'ענדערן טעקסט אינהאַלט',\n font_family_label: 'Font:',\n font_family: 'ענדערן פאָנט פאַמילי',\n font_size: 'בייטן פאָנט גרייס',\n bold: 'דרייסט טעקסט',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: 'יטאַליק טעקסט',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: 'ענדערן הינטערגרונט פאַרב / אָופּאַסאַטי',\n connector_no_arrow: 'No arrow',\n fitToContent: 'פּאַסיק צו אינהאַלט',\n fit_to_all: 'פּאַסיק צו אַלע אינהאַלט',\n fit_to_canvas: 'פּאַסיק צו לייוונט',\n fit_to_layer_content: 'פּאַסיק צו שיכטע אינהאַלט',\n fit_to_sel: 'פּאַסיק צו אָפּקלייב',\n align_relative_to: 'יינרייען קאָרעוו צו ...',\n relativeTo: 'קאָרעוו צו:',\n page: 'בלאַט',\n largest_object: 'לאַרדזשאַסט קעגן',\n selected_objects: 'עלעקטעד אַבדזשעקץ',\n smallest_object: 'סמאָלאַסט קעגן',\n new_doc: 'ניו בילד',\n open_doc: 'Open בילד',\n export_img: 'Export',\n save_doc: 'היט בילד',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: 'יינרייען באָטטאָם',\n align_center: 'יינרייען צענטער',\n align_left: 'יינרייען לעפט',\n align_middle: 'יינרייען מיטל',\n align_right: 'יינרייען רעכט',\n align_top: 'יינרייען Top',\n mode_select: 'סעלעקטירן טול',\n mode_fhpath: 'בלייער טול',\n mode_line: 'שורה טול',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: 'Free-הענט רעקטאַנגלע',\n mode_ellipse: 'עלליפּסע',\n mode_circle: 'קאַראַהאָד',\n mode_fhellipse: 'Free-הענט עלליפּסע',\n mode_path: 'Path Tool',\n mode_text: 'טעקסט טול',\n mode_image: 'בילד טול',\n mode_zoom: 'פארגרעסער טול',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: 'ופמאַכן',\n redo: 'רעדאָ',\n tool_source: 'רעדאַקטירן סאָרס',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: 'גרופּע עלעמענץ',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'ונגראָופּ עלעמענץ',\n docprops: 'דאָקומענט פּראָפּערטיעס',\n editor_homepage: 'SVG-Edit Home Page',\n move_bottom: 'מאַך צו באָטטאָם',\n move_top: 'באַוועגן צו Top',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: 'היט',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: 'ויסמעקן לייַער',\n move_down: 'קער לייַער דאָוון',\n new: 'ניו לייַער',\n rename: 'רענאַמע לייַער',\n move_up: 'באַוועגן לייַער אַרויף',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: 'סעלעקטירן פּרעדעפינעד:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'zh-CN',\n dir: 'ltr',\n common: {\n ok: '确定',\n cancel: '取消',\n key_backspace: '退格',\n key_del: '删除',\n key_down: '下',\n key_up: '上',\n more_opts: '更多选项',\n url: 'URL',\n width: '宽度',\n height: '高度'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: '显示/隐藏更式边线工具',\n palette_info: '点击更改填充颜色按住Shift键单击更改线条颜色',\n zoom_level: '更改缩放级别',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: '元素ID',\n fill_color: '更改填充颜色',\n stroke_color: '线条的颜色变化',\n stroke_style: '更改线条样式',\n stroke_width: '更改线条宽度',\n pos_x: '更改X坐标',\n pos_y: '更改Y坐标',\n linecap_butt: '顶端样式: 齐平',\n linecap_round: '顶端样式: 圆滑',\n linecap_square: '顶端样式: 方块',\n linejoin_bevel: '连接处: 削平',\n linejoin_miter: '连接处: 直角',\n linejoin_round: '连接处: 圆角',\n angle: '更改旋转角度',\n blur: '更改高斯模糊值',\n opacity: '更改所选条目的不透明度',\n circle_cx: '改变圆的中心X坐标',\n circle_cy: '改变圆的中心Y坐标',\n circle_r: '改变圆的半径',\n ellipse_cx: '改变椭圆的中心X坐标',\n ellipse_cy: '改变椭圆的中心Y坐标',\n ellipse_rx: '改变椭圆的x半径',\n ellipse_ry: '改变椭圆的y半径',\n line_x1: '更改直线起点的x坐标',\n line_x2: '更改直线终点的x坐标',\n line_y1: '更改直线起点的y坐标',\n line_y2: '更改直线终点的y坐标',\n rect_height: '更改矩形的高度',\n rect_width: '更改矩形的宽度',\n corner_radius: '角半径:',\n image_width: '更改图像的宽度',\n image_height: '更改图像的高度',\n image_url: '更改网址',\n node_x: '更改节点的X坐标',\n node_y: '更改节点的Y坐标',\n seg_type: '修改线段类型',\n straight_segments: '直线',\n curve_segments: '曲线',\n text_contents: '更改文本内容',\n font_family_label: 'Font:',\n font_family: '更改字体样式',\n font_size: '更改字体大小',\n bold: '粗体',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: '斜体',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: '主菜单',\n bkgnd_color_opac: '更改背景颜色/不透明',\n connector_no_arrow: '无箭头',\n fitToContent: '适应内容',\n fit_to_all: '适应于所有的内容',\n fit_to_canvas: '适应画布',\n fit_to_layer_content: '适应层内容',\n fit_to_sel: '适应选中内容',\n align_relative_to: '相对对齐 ...',\n relativeTo: '相对于:',\n page: '网页',\n largest_object: '最大对象',\n selected_objects: '选中的对象',\n smallest_object: '最小的对象',\n new_doc: '新文档',\n open_doc: '打开文档',\n export_img: '导出',\n save_doc: '保存图像',\n import_doc: '导入SVG',\n align_to_page: '对齐元素到页面',\n align_bottom: '底部对齐',\n align_center: '居中对齐',\n align_left: '左对齐',\n align_middle: '水平居中对齐',\n align_right: '右对齐',\n align_top: '顶端对齐',\n mode_select: '选择工具',\n mode_fhpath: '铅笔工具',\n mode_line: '线工具',\n mode_rect: '矩形',\n mode_square: '正方形',\n mode_fhrect: '自由矩形',\n mode_ellipse: '椭圆',\n mode_circle: '圆形',\n mode_fhellipse: '自由椭圆',\n mode_path: '路径',\n mode_text: '文字工具',\n mode_image: '图像工具',\n mode_zoom: '缩放工具',\n no_embed: '注意: 根据SVG图像的存储位置内嵌的位图可能无法显示!',\n undo: '撤消',\n redo: '重做',\n tool_source: '编辑源',\n wireframe_mode: '线条模式',\n clone: '克隆元素',\n del: '删除元素',\n group_elements: '组合元素',\n make_link: '创建超链接',\n set_link_url: '设置链接URL (设置为空以删除)',\n to_path: '转换为路径',\n reorient_path: '调整路径',\n ungroup: '取消组合元素',\n docprops: '文档属性',\n editor_homepage: 'SVG-Edit 主页',\n move_bottom: '移至底部',\n move_top: '移至顶部',\n node_clone: '复制节点',\n node_delete: '删除节点',\n node_link: '连接控制点',\n add_subpath: '添加子路径',\n openclose_path: '打开/关闭 子路径',\n source_save: '保存',\n cut: '剪切',\n copy: '复制',\n paste: '粘贴',\n paste_in_place: '粘贴到原位置',\n delete: '删除',\n group: '组合',\n move_front: '移至顶部',\n move_up: '向上移动',\n move_down: '向下移动',\n move_back: '移至底部',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: '图层',\n layers: '图层',\n del: '删除图层',\n move_down: '向下移动图层',\n new: '新建图层',\n rename: '重命名图层',\n move_up: '向上移动图层',\n dupe: '复制图层',\n merge_down: '向下合并',\n merge_all: '全部合并',\n move_elems_to: '移动元素至:',\n move_selected: '移动元素至另一个图层'\n },\n config: {\n image_props: '图像属性',\n doc_title: '标题',\n doc_dims: '画布大小',\n included_images: '包含图像',\n image_opt_embed: '嵌入数据 (本地文件)',\n image_opt_ref: '使用文件引用',\n editor_prefs: '编辑器首选项',\n language: '语言',\n background: '编辑器背景',\n editor_img_url: '图像 URL',\n editor_bg_note: '注意: 背景不会保存在图像中.',\n select_predefined: '选择预定义:',\n units_and_rulers: '单位 & 标尺',\n show_rulers: '显示标尺',\n base_unit: '基本单位:',\n grid: '网格',\n snapping_onoff: '吸附开/关',\n snapping_stepsize: '吸附步长:',\n grid_color: '网格颜色',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: '无效的参数',\n noContentToFitTo: '无可适应的内容',\n dupeLayerName: '已存在同名的图层!',\n enterUniqueLayerName: '请输入一个唯一的图层名称',\n enterNewLayerName: '请输入新的图层名称',\n layerHasThatName: '图层已经采用了该名称',\n QmoveElemsToLayer: \"您确定移动所选元素到图层'%s'吗?\",\n QwantToClear: '您希望清除当前绘制的所有图形吗?\\n该操作将无法撤消!',\n QwantToOpen: '您希望打开一个新文档吗?\\n该操作将无法撤消!',\n QerrorsRevertToSource: 'SVG文件解析错误.\\n是否还原到最初的SVG文件?',\n QignoreSourceChanges: '忽略对SVG文件所作的更改么?',\n featNotSupported: '不支持该功能',\n enterNewImgURL: '请输入新图像的URLL',\n defsFailOnSave: '注意: 由于您所使用的浏览器存在缺陷, 该图像无法正确显示 (不支持渐变或相关元素). 修复该缺陷后可正确显示.',\n loadingImage: '正在加载图像, 请稍候...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: '同时注意以下几点: ',\n unsavedChanges: '存在未保存的修改.',\n enterNewLinkURL: '输入新建链接的URL地址',\n errorLoadingSVG: '错误: 无法加载SVG数据',\n URLLoadFail: '无法从URL中加载',\n retrieving: '检索 \\'%s\\'...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'zh-HK',\n dir: 'ltr',\n common: {\n ok: '确定',\n cancel: '取消',\n key_backspace: 'backspace',\n key_del: 'delete',\n key_down: 'down',\n key_up: 'up',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: '点击更改填充颜色按住Shift键单击更改颜色中风',\n zoom_level: '更改缩放级别',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: '更改填充颜色',\n stroke_color: '中风的颜色变化',\n stroke_style: '更改行程冲刺风格',\n stroke_width: '笔划宽度的变化',\n pos_x: 'Change X coordinate',\n pos_y: 'Change Y coordinate',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: '旋转角度的变化',\n blur: 'Change gaussian blur value',\n opacity: '更改所选项目不透明',\n circle_cx: '改变循环的CX坐标',\n circle_cy: '改变循环的赛扬坐标',\n circle_r: '改变圆的半径',\n ellipse_cx: '改变椭圆的CX坐标',\n ellipse_cy: '改变椭圆的赛扬坐标',\n ellipse_rx: '改变椭圆的x半径',\n ellipse_ry: '改变椭圆的y半径',\n line_x1: '更改行的起点的x坐标',\n line_x2: '更改行的结束x坐标',\n line_y1: '更改行的起点的y坐标',\n line_y2: '更改行的结束y坐标',\n rect_height: '更改矩形的高度',\n rect_width: '更改矩形的宽度',\n corner_radius: '角半径:',\n image_width: '更改图像的宽度',\n image_height: '更改图像高度',\n image_url: '更改网址',\n node_x: \"Change node's x coordinate\",\n node_y: \"Change node's y coordinate\",\n seg_type: 'Change Segment type',\n straight_segments: 'Straight',\n curve_segments: 'Curve',\n text_contents: '更改文字内容',\n font_family_label: 'Font:',\n font_family: '更改字体家族',\n font_size: '更改字体大小',\n bold: '粗体',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: '斜体文本',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: '更改背景颜色/不透明',\n connector_no_arrow: 'No arrow',\n fitToContent: '适合内容',\n fit_to_all: '适合于所有的内容',\n fit_to_canvas: '适合画布',\n fit_to_layer_content: '适合层内容',\n fit_to_sel: '适合选择',\n align_relative_to: '相对对齐 ...',\n relativeTo: '相对于:',\n page: '网页',\n largest_object: '最大对象',\n selected_objects: '选对象',\n smallest_object: '最小的对象',\n new_doc: '新形象',\n open_doc: '打开图像',\n export_img: 'Export',\n save_doc: '保存图像',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: '底部对齐',\n align_center: '居中对齐',\n align_left: '左对齐',\n align_middle: '中间对齐',\n align_right: '右对齐',\n align_top: '顶端对齐',\n mode_select: '选择工具',\n mode_fhpath: '铅笔工具',\n mode_line: '线工具',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: '免费手矩形',\n mode_ellipse: '椭圆',\n mode_circle: '圈',\n mode_fhellipse: '免费手椭圆',\n mode_path: 'Path Tool',\n mode_text: '文字工具',\n mode_image: '图像工具',\n mode_zoom: '缩放工具',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: '撤消',\n redo: '重做',\n tool_source: '编辑源',\n wireframe_mode: 'Wireframe Mode',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: '族元素',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: 'Convert to Path',\n reorient_path: 'Reorient path',\n ungroup: 'Ungroup Elements',\n docprops: '文档属性',\n editor_homepage: 'SVG-Edit 主页',\n move_bottom: '移至底部',\n move_top: '移动到顶部',\n node_clone: 'Clone Node',\n node_delete: 'Delete Node',\n node_link: 'Link Control Points',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: '保存',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: 'Layer',\n layers: 'Layers',\n del: '删除层',\n move_down: '层向下移动',\n new: '新层',\n rename: '重命名层',\n move_up: '移动层最多',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: 'Move elements to:',\n move_selected: 'Move selected elements to a different layer'\n },\n config: {\n image_props: 'Image Properties',\n doc_title: 'Title',\n doc_dims: 'Canvas Dimensions',\n included_images: 'Included Images',\n image_opt_embed: 'Embed data (local files)',\n image_opt_ref: 'Use file reference',\n editor_prefs: 'Editor Preferences',\n language: 'Language',\n background: 'Editor Background',\n editor_img_url: 'Image URL',\n editor_bg_note: 'Note: Background will not be saved with image.',\n select_predefined: '选择预定义:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: 'Invalid value given',\n noContentToFitTo: 'No content to fit to',\n dupeLayerName: 'There is already a layer named that!',\n enterUniqueLayerName: 'Please enter a unique layer name',\n enterNewLayerName: 'Please enter the new layer name',\n layerHasThatName: 'Layer already has that name',\n QmoveElemsToLayer: \"Move selected elements to layer '%s'?\",\n QwantToClear: 'Do you want to clear the drawing?\\nThis will also erase your undo history!',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'There were parsing errors in your SVG source.\\nRevert back to original SVG source?',\n QignoreSourceChanges: 'Ignore changes made to SVG source?',\n featNotSupported: 'Feature not supported',\n enterNewImgURL: 'Enter the new image URL',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n","export default {\n lang: 'zh-TW',\n dir: 'ltr',\n common: {\n ok: '确定',\n cancel: '取消',\n key_backspace: '空白',\n key_del: '刪除',\n key_down: '下',\n key_up: '上',\n more_opts: 'More Options',\n url: 'URL',\n width: 'Width',\n height: 'Height'\n },\n misc: {\n powered_by: 'Powered by'\n },\n ui: {\n toggle_stroke_tools: 'Show/hide more stroke tools',\n palette_info: '點擊更改填充顏色按住Shift鍵單擊更改線條顏色',\n zoom_level: '更改縮放級別',\n panel_action: 'Click to open side panel',\n quality: 'Quality:',\n pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type',\n pathCtrlPtTooltip: 'Drag control point to adjust curve properties',\n pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity',\n pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity',\n group_identify_label: 'Group identification label',\n export_type_label: 'Select an image type for export:'\n },\n properties: {\n id: 'Identify the element',\n fill_color: '更改填充顏色',\n stroke_color: '線條顏色',\n stroke_style: '更改線條(虛線)風格',\n stroke_width: '線條寬度',\n pos_x: '調整 X 軸',\n pos_y: '調整 Y 軸',\n linecap_butt: 'Linecap: Butt',\n linecap_round: 'Linecap: Round',\n linecap_square: 'Linecap: Square',\n linejoin_bevel: 'Linejoin: Bevel',\n linejoin_miter: 'Linejoin: Miter',\n linejoin_round: 'Linejoin: Round',\n angle: '旋轉角度',\n blur: 'Change gaussian blur value',\n opacity: '更改所選項目不透明度',\n circle_cx: '改變圓的CX坐標',\n circle_cy: '改變圓的CY坐標',\n circle_r: '改變圓的半徑',\n ellipse_cx: '改變橢圓的圓心x軸座標',\n ellipse_cy: '改變橢圓的圓心y軸座標',\n ellipse_rx: '改變橢圓的x軸長',\n ellipse_ry: '改變橢圓的y軸長',\n line_x1: '更改行的起點的x坐標',\n line_x2: '更改行的終點x坐標',\n line_y1: '更改行的起點的y坐標',\n line_y2: '更改行的終點y坐標',\n rect_height: '更改矩形的高度',\n rect_width: '更改矩形的寬度',\n corner_radius: '角半徑:',\n image_width: '更改圖像的寬度',\n image_height: '更改圖像高度',\n image_url: '更改網址',\n node_x: '改變節點的x軸座標',\n node_y: '改變節點的y軸座標',\n seg_type: 'Change Segment type',\n straight_segments: '直線',\n curve_segments: '曲線',\n text_contents: '更改文字內容',\n font_family_label: 'Font:',\n font_family: '更改字體',\n font_size: '更改字體大小',\n bold: '粗體',\n text_decoration_underline: 'Underline',\n text_decoration_linethrough: 'Line-Through',\n text_decoration_overline: 'Overline',\n italic: '斜體',\n text_anchor_start: 'Align the text in start',\n text_anchor_middle: 'Align the text in middle',\n text_anchor_end: 'Align the text in end',\n text_letter_spacing: 'Change the letter spacing',\n text_word_spacing: 'Change the word spacing',\n text_length: 'Lets you specify the width of the space into which the text will draw',\n text_length_adjust: 'Length adjust',\n text_length_adjust_spacing: 'Spacing',\n text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs',\n class: 'Element class',\n serif: 'Serif',\n sans_serif: 'Sans-serif',\n cursive: 'Cursive',\n fantasy: 'Fantasy',\n monospace: 'Monospace',\n courier: 'Courier',\n helvetica: 'Helvetica',\n times: 'times',\n prefs_and_content: 'Store preferences and SVG content locally',\n prefs_only: 'Only store preferences locally',\n no_prefs_or_content: 'Do not store my preferences or SVG content locally',\n jgraduate_pad: 'Pad',\n jgraduate_reflect: 'Reflect',\n jgraduate_repeat: 'Repeat'\n },\n tools: {\n main_menu: 'Main Menu',\n bkgnd_color_opac: '更改背景顏色/不透明',\n connector_no_arrow: 'No arrow',\n fitToContent: '適合內容',\n fit_to_all: '適合所有的內容',\n fit_to_canvas: '適合畫布',\n fit_to_layer_content: '適合圖層內容',\n fit_to_sel: '適合選取的物件',\n align_relative_to: '相對對齊 ...',\n relativeTo: '相對於:',\n page: '網頁',\n largest_object: '最大的物件',\n selected_objects: '選取物件',\n smallest_object: '最小的物件',\n new_doc: '清空圖像',\n open_doc: '打開圖像',\n export_img: 'Export',\n save_doc: '保存圖像',\n import_doc: 'Import SVG',\n align_to_page: 'Align Element to Page',\n align_bottom: '底部對齊',\n align_center: '居中對齊',\n align_left: '向左對齊',\n align_middle: '中間對齊',\n align_right: '向右對齊',\n align_top: '頂端對齊',\n mode_select: '選擇工具',\n mode_fhpath: '鉛筆工具',\n mode_line: '線工具',\n mode_rect: 'Rectangle Tool',\n mode_square: 'Square Tool',\n mode_fhrect: '徒手畫矩形',\n mode_ellipse: '橢圓',\n mode_circle: '圓',\n mode_fhellipse: '徒手畫橢圓',\n mode_path: '路徑工具',\n mode_text: '文字工具',\n mode_image: '圖像工具',\n mode_zoom: '縮放工具',\n no_embed: 'NOTE: This image cannot be embedded. It will depend on this path to be displayed',\n undo: '取消復原',\n redo: '復原',\n tool_source: '編輯SVG原始碼',\n wireframe_mode: '框線模式(只瀏覽線條)',\n clone: 'Clone Element(s)',\n del: 'Delete Element(s)',\n group_elements: '群組',\n make_link: 'Make (hyper)link',\n set_link_url: 'Set link URL (leave empty to remove)',\n to_path: '轉換成路徑',\n reorient_path: '調整路徑',\n ungroup: '取消群組',\n docprops: '文件屬性',\n editor_homepage: 'SVG-Edit 主頁',\n move_bottom: '移至底部',\n move_top: '移動到頂部',\n node_clone: '增加節點',\n node_delete: '刪除節點',\n node_link: '將控制點連起來',\n add_subpath: 'Add sub-path',\n openclose_path: 'Open/close sub-path',\n source_save: '保存',\n cut: 'Cut',\n copy: 'Copy',\n paste: 'Paste',\n paste_in_place: 'Paste in Place',\n delete: 'Delete',\n group: 'Group',\n move_front: 'Bring to Front',\n move_up: 'Bring Forward',\n move_down: 'Send Backward',\n move_back: 'Send to Back',\n tool_unlink_use: 'Break link to reference element (make unique)',\n ellipse_circle_tool: 'Ellipse/Circle Tool',\n square_rect_tool: 'Square/Rect Tool',\n remember_this_choice: 'Remember this choice?',\n remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.'\n },\n layers: {\n layer: '圖層',\n layers: 'Layers',\n del: '刪除圖層',\n move_down: '向下移動圖層',\n new: '新增圖層',\n rename: '重新命名圖層',\n move_up: '向上移動圖層',\n dupe: 'Duplicate Layer',\n merge_down: 'Merge Down',\n merge_all: 'Merge All',\n move_elems_to: '移動物件到:',\n move_selected: '移動被點選的物件其他圖層'\n },\n config: {\n image_props: '圖片屬性',\n doc_title: '標題',\n doc_dims: '畫布大小',\n included_images: '包含圖像',\n image_opt_embed: '內嵌資料 (本地端檔案)',\n image_opt_ref: '使用檔案參照',\n editor_prefs: '編輯器屬性',\n language: '語言',\n background: '編輯器背景',\n editor_img_url: 'Image URL',\n editor_bg_note: '注意: 編輯器背景不會和圖像一起儲存',\n select_predefined: '使用預設值:',\n units_and_rulers: 'Units & Rulers',\n show_rulers: 'Show rulers',\n base_unit: 'Base Unit:',\n grid: 'Grid',\n snapping_onoff: 'Snapping on/off',\n snapping_stepsize: 'Snapping Step-Size:',\n grid_color: 'Grid color',\n done: 'Done',\n change_xxx_color: 'Change xxx color',\n pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity',\n open_color_picker: 'Click To Open Color Picker',\n jpicker_title: 'Drag Markers To Pick A Color',\n jpicker_new_color: 'new',\n jpicker_current_color: 'current',\n jpicker_tooltip_colors_new_color: 'New Color - Press &ldquo;OK&rdquo; To Commit',\n jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color',\n jpicker_tooltip_buttons_ok: 'Commit To This Color Selection',\n jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color',\n jpicker_tooltip_hue_radio: 'Set To &ldquo;Hue&rdquo; Color Mode',\n jpicker_tooltip_hue_textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)',\n jpicker_tooltip_saturation_radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',\n jpicker_tooltip_saturation_textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)',\n jpicker_tooltip_value_radio: 'Set To &ldquo;Value&rdquo; Color Mode',\n jpicker_tooltip_value_textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)',\n jpicker_tooltip_red_radio: 'Set To &ldquo;Red&rdquo; Color Mode',\n jpicker_tooltip_red_textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)',\n jpicker_tooltip_green_radio: 'Set To &ldquo;Green&rdquo; Color Mode',\n jpicker_tooltip_green_textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)',\n jpicker_tooltip_blue_radio: 'Set To &ldquo;Blue&rdquo; Color Mode',\n jpicker_tooltip_blue_textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)',\n jpicker_tooltip_alpha_radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',\n jpicker_tooltip_alpha_textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)',\n jpicker_tooltip_hex_textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',\n jpicker_tooltip_hex_alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)',\n jgraduate_solid_color: 'Solid Color',\n jgraduate_linear_gradient: 'Linear Gradient',\n jgraduate_radial_gradient: 'Radial Gradient',\n jgraduate_begin_point: 'Begin Point',\n jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0',\n jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0',\n jgraduate_end_point: 'End Point',\n jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0',\n jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0',\n jgraduate_center_point: 'Center Point',\n jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_focal_point: 'Focal Point',\n jgraduate_match_center: 'Match center:',\n jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0',\n jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0',\n jgraduate_spread_method: 'Spread method',\n jgraduate_radius: 'Radius:',\n jgraduate_set_radius: 'Click to set radius',\n jgraduate_ellip: 'Ellip:',\n jgraduate_set_ellip: 'Click to set Ellip',\n jgraduate_angle: 'Angle:',\n jgraduate_set_angle: 'Click to set Angle',\n jgraduate_deg: 'deg:',\n jgraduate_opac: 'Opac:',\n jgraduate_set_opac: 'Click to set Opac'\n },\n notification: {\n invalidAttrValGiven: '數值給定錯誤',\n noContentToFitTo: '找不到符合的內容',\n dupeLayerName: '喔不!已經有另一個同樣名稱的圖層了!',\n enterUniqueLayerName: '請輸入一個名稱不重複的',\n enterNewLayerName: '請輸入新圖層的名稱',\n layerHasThatName: '圖層本來就是這個名稱(抱怨)',\n QmoveElemsToLayer: \"要搬移所選取的物件到'%s'層嗎?\",\n QwantToClear: '要清空圖像嗎?\\n這會順便清空你的回復紀錄',\n QwantToOpen: 'Do you want to open a new file?\\nThis will also erase your undo history!',\n QerrorsRevertToSource: 'SVG原始碼解析錯誤\\n要回復到原本的SVG原始碼嗎',\n QignoreSourceChanges: '要忽略對SVG原始碼的更動嗎',\n featNotSupported: '未提供此功能',\n enterNewImgURL: '輸入新的圖片網址',\n defsFailOnSave: 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.',\n loadingImage: 'Loading image, please wait...',\n saveFromBrowser: \"Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.\",\n noteTheseIssues: 'Also note the following issues: ',\n unsavedChanges: 'There are unsaved changes.',\n enterNewLinkURL: 'Enter the new hyperlink URL',\n errorLoadingSVG: 'Error: Unable to load SVG data',\n URLLoadFail: 'Unable to load from URL',\n retrieving: 'Retrieving \\'%s\\' ...',\n popupWindowBlocked: 'Popup window may be blocked by browser',\n exportNoBlur: 'Blurred elements will appear as un-blurred',\n exportNoforeignObject: 'foreignObject elements will not appear',\n exportNoDashArray: 'Strokes will appear filled',\n exportNoText: 'Text may not appear as expected',\n editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.',\n source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.'\n }\n}\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","create","value","_possibleConstructorReturn","call","assertThisInitialized","_getPrototypeOf","getPrototypeOf","_defineProperty","_arrayLikeToArray","arr","len","arr2","Array","_toArray","_arrayWithHoles","isArray","arrayWithHoles","_iterableToArray","iter","from","iterableToArray","_unsupportedIterableToArray","minLen","arrayLikeToArray","n","toString","slice","name","test","unsupportedIterableToArray","_nonIterableRest","nonIterableRest","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread","arguments","source","forEach","getOwnPropertyDescriptors","defineProperties","consoleLogger","type","log","args","this","output","warn","error","console","Logger","concreteLogger","options","undefined","init","prefix","logger","debug","setDebug","bool","_len","_key","forward","_len2","_key2","_len3","_key3","deprecate","_len4","_key4","lvl","debugOnly","concat","moduleName","baseLogger","EventEmitter","observers","on","events","listener","_this","split","event","off","l","emit","cloned","observer","_cloned","defer","res","rej","promise","Promise","resolve","reject","makeString","copy","a","s","t","m","getLastOfPath","path","Empty","cleanKey","indexOf","replace","canNotTraverseDeeper","stack","shift","hasOwnProperty","k","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","data","defaultData","deepExtend","overwrite","prop","String","regexEscape","str","_entityMap","escape","isIE10","window","navigator","userAgentData","userAgent","chars","ownKeys$1","_objectSpread$1","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","e","_createSuperInternal","result","Super","NewTarget","deepFind","keySeparator","paths","current","j","join","mix","endsWith","joinedPath","ResourceStore","_EventEmitter","_super","ns","defaultNS","ignoreJSONStructure","addNamespaces","removeNamespaces","index","splice","getResource","lng","addResource","silent","addResources","resources","addResourceBundle","deep","pack","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","find","v","toJSON","postProcessor","processors","addPostProcessor","module","handle","translator","processor","process","ownKeys$2","_objectSpread$2","_createSuper$1","_isNativeReflectConstruct$1","checkedLoadedFor","Translator","services","changeLanguage","language","exists","interpolation","resolved","extractFromKey","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","looksLikeObjectPath","possibleChars","c","r","RegExp","map","matched","ki","substring","match","interpolator","nestingRegexp","parts","translate","lastKey","_this2","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","namespace","appendNamespaceToCIMode","toLowerCase","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValue","isValidLookup","missingKeyNoValueFallbackToKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","parse","defaultVariables","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","interpolate","na","nest","context","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","codes","utils","hasLoadedNamespace","code","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","contextKey","contextSeparator","pop","returnNull","returnEmptyString","resourceStore","option","capitalize","string","charAt","toUpperCase","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","part","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","_","Number","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","other","createRules","rules","set","numbers","plurals","PluralResolver","compatibilityJSON","Intl","PluralRules","addRule","getRule","_unused","needsPlural","rule","resolvedOptions","pluralCategories","getPluralFormsOfKey","sort","pluralCategory1","pluralCategory2","pluralCategory","prepend","number","select","getSuffixRetroCompatible","idx","noAbs","Math","abs","simplifyPluralSuffix","returnSuffix","includes","ownKeys$3","_objectSpread$3","Interpolator","format","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","val","handleFormat","interpolationkey","trim","f","missingInterpolationHandler","regex","safeValue","todo","exec","matchedVar","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","JSON","formatters","doReduce","elem","reduce","ownKeys$4","_objectSpread$4","Formatter","formats","NumberFormat","currency","style","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","add","_format","mem","_parseFormatStr","parseFormatStr","formatStr","formatName","formatOptions","optStr","opt","_opt$split2","isNaN","parseInt","formatted","valOptions","formatParams","locale","ownKeys$5","_objectSpread$5","_createSuper$2","_isNativeReflectConstruct$2","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","state","queue","queueLoad","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","errors","err","q","pushPath","_getLastOfPath2","removePending","done","loadedKeys","read","fcName","tried","wait","next","setTimeout","prepareLoading","loadOne","_this5","fallbackValue","isUpdate","get","initImmediate","preload","partialBundledLanguages","ret","tDescription","transformOptions","ownKeys$6","_objectSpread$6","_createSuper$3","_isNativeReflectConstruct$3","noop","bindMemberFunctions","inst","getOwnPropertyNames","bind","I18n","modules","external","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","formatter","lu","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","initializedStoreOnce","loadResources","usedCallback","append","resolvedLanguage","setResolvedLanguage","reloadResources","use","Error","li","lngInLngs","isLanguageChangingTo","setLngProps","setLng","cacheUserLanguage","async","detect","getFixedT","keyPrefix","fixedT","opts","rest","resultKey","_this$translator","_this$translator2","setDefaultNamespace","_this6","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","_this7","loadLanguages","preloaded","newLngs","dir","cloneInstance","_this8","mergedOptions","clone","membersToCopy","createInstance","langParam","putLocale","givenParam","goodLangs","userLanguage","__variableDynamicImportRuntime0__","encodeURIComponent","i18next","translation","default","template","document","createElement","innerHTML","ToolButton","HTMLElement","super","_shadowRoot","attachShadow","mode","content","cloneNode","$div","querySelector","$img","imgPath","svgEditor","configObj","curConfig","observedAttributes","attributeChangedCallback","oldValue","shortcut","getAttribute","setAttribute","classList","remove","title","pressed","hasAttribute","removeAttribute","disabled","src","size","connectedCallback","addEventListener","nodeName","metaKey","ctrlKey","click","preventDefault","customElements","define","FlyingButton","createTemplate","$button","$handle","$overall","$menu","$elements","lastElementChild","assignedElements","opened","activeSlot","shadowRoot","onClickHandler","ev","stopPropagation","rect","getBoundingClientRect","top","className","$click","ExplorerButton","$lib","files","request","XMLHttpRequest","response","fetch","json","lib","menu","updateLib","currentAction","dataset","draw","shape","querySelectorAll","b","toggle","libDir","_json$size","fill","vb","stroke","entries","_ref","encoded","btoa","SeZoom","handleMouseDown","handleMouseUp","handleKeyDown","initPopup","handleInput","slotElement","handleOptionsChange","inputElement","handleClick","clickArea","imageElement","arrowUp","increment","arrowDown","decrement","optionsContainer","handleClose","changedTimeout","dispatchEvent","CustomEvent","detail","selectedValue","textContent","handleSelect","display","zoomPos","popupPos","height","left","position","blur","clearTimeout","triggerInputChanged","isFirst","incrementHold","decrementHold","fragmentFrom","html","strings","substitutions","templateFrom","raw","defaultState","delegatesFocus","firstRender","focusTarget","hasDynamicTemplate","ids","nativeInternals","raiseChangeEvents","render","renderChanges","rendered","rendering","setState","shadowRootMode","stateEffects","attributeToPropertyNames","tabindex","propertyNamesToAttributes","tabIndex","attributesForClass","classFn","baseClass","baseAttributes","diff","propertyName","setterName","propertyNameToAttribute","attribute","uppercaseRegEx","booleanAttributeValue","standardBooleanAttributes","checked","hidden","ismap","multiple","noresize","readonly","selected","stateKey","raiseChangeEventsInNextRenderKey","changedSinceLastRenderKey","fieldsChanged","changes","changed","field","value1","value2","Date","getTime","classTemplateMap","Map","shadowIdProxyKey","proxyElementKey","shadowIdProxyHandler","id","root","getElementById","ReactiveElement","AttributeMarshallingMixin","Base","AttributeMarshalling","attributeName","attributeToPropertyName","hyphenRegEx","parsed","ReactiveMixin","Reactive","render$1","renderChanges$1","saveRaiseChangeEvents","rendered$1","copyStateWithChanges","element","assign","effects","changedByEffects","freeze","willRender","isConnected","stateEffects$1","URLSearchParams","location","search","ShadowTemplateMixin","ShadowTemplate","getTemplate","HTMLTemplateElement","importNode","checkSize","closestAvailableItemIndex","contentSlot","coreInternal","defaultTabIndex","effectEndTarget","getItemText","goDown","goEnd","goFirst","goLast","goLeft","goNext","goPrevious","goRight","goStart","goToItemWithPrefix","goUp","inputDelegate","itemsDelegate","keydown","mouseenter","mouseleave","renderDataToElement","scrollTarget","startEffect","swipeDown","swipeDownComplete","swipeLeft","swipeLeftTransitionEnd","swipeRight","swipeRightTransitionEnd","swipeUp","swipeUpComplete","swipeStart","swipeTarget","tap","toggleSelectedFlag","DelegateInputLabelMixin","DelegateInputLabel","ariaLabel","removingAriaAttribute","ariaLabelledby","inputLabel","refreshInputLabel","requestIdleCallback","selectedText","matches","getLabelFromElement","innerText","rootNode","getRootNode","labels","elementWithId","elementWithFor","labelElement","closest","elix","internal","mousedownListenerKey","closestFocusableNode","node","selfAndComposedAncestors","cast","HTMLSlotElement","deepContains","container","parent","assignedSlot","parentNode","host","firstFocusableElement","walker","walkComposedTree","forwardFocus","origin","removeEventListener","button","focusableTarget","focus","indexOfItemContainingTarget","items","findIndex","item","ownEvent","eventSource","composedPath","composedAncestors","ShadowRoot","setInternalState","toggleAttribute","states","stateName","delete","children","assignedNodes","flatten","childNodes","keyboardActive","focusVisibleChangedListenerKey","FocusVisibleMixin","FocusVisible","then","newFocusedElement","relatedTarget","activeElement","isFocusedElement","containsFocus","focusVisible","refreshFocus","_templateObject","_taggedTemplateLiteral","_templateObject2","updateKeyboardActive","newKeyboardActive","FormElementMixin","FormElement","attachInternals","checkValidity","validationMessage","valid","internals","formAssociated","form","setValidity","customError","setFormValue","reportValidity","localName","validity","willValidate","refreshSelectionState","inner","selectionEnd","selectionStart","DelegateFocusMixin","DelegateFocus","focusOptions","focusElement","capture","extendsKey","delegatedPropertySettersKey","focusableByDefault","area","details","iframe","input","textarea","reraiseEvents","address","blockquote","caption","center","dd","div","dl","dt","fieldset","frame","h1","h2","h3","h4","h5","h6","img","link","ol","script","tbody","tfoot","thead","mouseEventNames","eventBubbles","abort","change","blockElements","attributesWithoutProperties","WrappedStandardElement","innerAttributes","extends","eventName","Event","bubbles","stopImmediatePropagation","applyAttribute","property","tag","static","extendsTag","Wrapped","defineDelegates","cls","names","delegate","createDelegate","createMethodDelegate","createPropertyDelegate","getInnerProperty","setInnerProperty","TrackTextSelectionMixin","TrackTextSelection","refreshListener","wrap","Input","PlainInput","PlainInputMixin","ElixInput","SEInput","$label","$event","$input","label","focusTest","nativeDelegatesFocus","ComposedFocusMixin","ComposedFocus","composeFocus","Element","Button","role","clickEvent","MouseEvent","cancelable","SyntheticMouseEvent","clearRepeat","repeatTimeout","repeatInterval","clearInterval","repeatStart","repeatIntervalDuration","repeatDelayDuration","setInterval","raiseMousedown","clientX","clientY","repeatStop","RepeatButton","RepeatMousedownMixin","RepeatMousedown","PlainButtonMixin","PlainButton","PlainRepeatButton","mapBaseTagToCount","registerCustomElement","baseTag","classNameRegex","classNameMatch","letter","offset","original","replacement","SVGElement","attributes","replaceChild","transmute","DisabledMixin","Disabled","KeyboardDirectionMixin","KeyboardDirection","handleBubblingDirectionKeys","handled","orientation","horizontal","vertical","altKey","KeyboardMixin","Keyboard","DelegateInputSelectionMixin","DelegateInputSelection","setRangeText","setSelectionRange","SpinBox","buttonPartType","canGoDown","canGoUp","inputPartType","step","stepSelect","stepDown","stepUp","renderParts","downButton","upButton","upDisabled","downDisabled","NumberSpinBox","max","parseFloat","min","formatValue","precision","toFixed","parseValue","PlainNumberSpinBox","PlainSpinBoxMixin","PlainSpinBox","ElixNumberSpinBox","SESpinInput","width","shadow","childNode","palette","SEPalette","$strip","rgb","newDiv","backgroundColor","evt","picker","shiftKey","color","paletteEvent","MenuItem","CurrentMixin","Current","SelectableMixin","Selectable","PlainMenuItem","ElixMenuItem","defaultAriaRole","article","hr","progress","table","td","th","ul","defaultScrollTarget","slot","getScrollableElement","ancestor","isElementScrollable","getComputedStyle","overflowX","overflowY","moveToIndex","direction","newIndex","currentIndex","auxiliarycustomTags","getIndexOfItemAtY","y","downward","start","end","itemRect","availableItemFlags","bottom","itemStyle","itemPaddingTop","paddingTop","itemPaddingBottom","paddingBottom","contentTop","contentBottom","clientHeight","scrollOnePage","targetRect","indexOfItemAtEdge","currentRect","pageHeight","saveRaiseChangesEvents","typedPrefixKey","prefixTimeoutKey","resetPrefixTimeout","resetTypedPrefix","setPrefixTimeout","LanguageDirectionMixin","LanguageDirection","rightToLeft","ContentItemsMixin","ContentItems","isSubstantiveElement","SlotContentMixin","SlotContent","AriaMenuMixin","AriaMenu","base","itemRole","CursorAPIMixin","CursorAPI","currentItemRequired","cursorOperationsWrap","currentItem","CursorInViewMixin","CursorInView","scrollCurrentItemIntoView","scrollTargetRect","bottomDelta","leftDelta","rightDelta","right","topDelta","scrollLeft","ceil","scrollTop","DirectionCursorMixin","DirectionCursor","canGoLeft","canGoRight","canGoNext","canGoPrevious","languageDirection","ItemsAPIMixin","ItemsAPI","ItemsCursorMixin","ItemsCursor","desiredCurrentIndex","newDesiredIndex","newItemIndex","newItem","ItemsTextMixin","ItemsText","texts","getDefaultText","getTextsFromItems","getText","KeyboardPagedCursorMixin","KeyboardPagedCursor","pageDown","pageUp","KeyboardPrefixCursorMixin","KeyboardPrefixCursor","searchText","text","substr","previousIndex","handleBackspace","handlePlainCharacter","char","SlotItemsMixin","TapCursorMixin","TapCursor","touchAction","mozUserSelect","msUserSelect","webkitUserSelect","userSelect","Node","targetIndex","Menu","highlightCurrentItem","currentItemFocused","probablyDesktop","matchMedia","flashDuration","isDefaultFocusableItem","documentMouseupListenerKey","handleMouseup","hitTargets","elementsFromPoint","overSource","popup","overPopup","overPopupFrame","dragSelect","close","listenIfOpenAndConnected","availableSpace","sourceRect","boundsRect","align","sourceOrigin","getSourceOrigin","x","layoutPopup","popupRect","normalized","normalizeOptions","logicalAlign","logicalDirection","defaultDirection","physicalDirection","above","below","column","row","crossAxis","defaultAlign","stretch","layouts","prioritizedLayouts","preferredDirection","preferredAlign","flipDirection","flipAlign","possibilties","layout1","layout2","compareLayouts","space1","space2","fitsWidth1","fitsHeight1","fitsEither1","fitsBoth1","fitsWidth2","fitsHeight2","fitsEither2","fitsBoth2","area1","area2","layout","getPositionedRect","boundsLeft","boundsTop","boundsBottom","boundsRight","DOMRect","closePromiseKey","closeResolveKey","OpenCloseMixin","OpenClose","closeResult","closed","closeFinished","defaults","effect","effectPhase","openCloseEffects","open","openedChangeEvent","oldOpenedEvent","openEvent","oldClosedEvent","closeEvent","closeResolve","whenClosed","AriaRoleMixin","AriaRole","Backdrop","OverlayFrame","appendedToDocumentKey","defaultZIndexKey","restoreFocusToElementKey","bringToFront","defaultZIndex","maxZIndexInUse","elements","body","zIndices","zIndex","hasZIndex","computedZIndex","explicitZIndex","isExplicitZIndexNumeric","OverlayMixin","Overlay","autoFocus","persistent","removeChild","backdrop","backdropPartType","framePartType","implicitCloseListenerKey","elixdebugpopup","blurHandler","canceled","closeHandler","handleEvent","closeOnWindowResize","PopupModalityMixin","PopupModality","addEventListeners","removeEventListeners","Popup","mousedownHandler","resizeListenerKey","choosePopupLayout","popupAlign","popupDirection","scrollHeight","scrollWidth","popupLayout","viewportBounds","viewport","visualViewport","offsetLeft","offsetTop","innerWidth","innerHeight","popupPartType","sourcePartType","PopupDragSelectMixin","PopupDragSelect","disconnectedCallback","PopupSource","ariaHasPopup","styling","opacity","gridTemplateRows","gridTemplateColumns","waitThenRenderOpened","documentMousemoveListenerKey","handleMousemove","hasHoveredOverItemSinceOpened","hoverIndex","selectCurrentItemAndClose","originalRaiseChangeEvents","cursorDefined","popupList","flashCurrentItem","PopupListMixin","PopupList","PopupButton","popupFocused","measured","popupHeight","MenuButton","menuPartType","defaultSlot","replaceWith","UpDownToggle","downIcon","upIcon","popupTogglePartType","popupToggle","PlainBorderButton","PlainMenu","PlainOpenCloseToggle","downIconGlyph","firstElementChild","upIconGlyph","_templateObject3","PlainBackdrop","PlainOverlayFrame","PlainPopup","PlainMenuButton","PopupToggleMixin","PopupToggle","toggleDirection","SePlainBorderButton","ElixMenuButton","sePlainBorderButton","SeMenu","image","Image","ElixMenu","SeMenuItem","$menuitem","$svg","SeList","isDropdownOpen","closeDropdown","openDropdown","setDropdownListPosition","$selection","firstChild","$optionsContainer","windowHeight","selectedContainerPosition","optionsContainerPosition","$dropdown","toggleList","updateSelectedValue","currentObj","_e$detail","selectedItem","SeListItem","composed","imgHeight","_mergeNamespaces","tA","eA","AA","rA","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","classname","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","_x","_y","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","x1","y1","x2","y2","_x1","_y1","_x2","_y2","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","r1","r2","angle","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","getPathSegAtLength","distance","isFinite","measurementElement","createElementNS","lastPathSegment","pathSegList","numberOfItems","removeItem","getTotalLength","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","MutationObserver","_updateListFromPathMutations","observe","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","record","hasPathMutations","_writeListToPath","disconnect","_pathSegArrayAsString","pathSeg","clear","initialize","_checkValidIndex","getItem","insertItemBefore","replaceItem","appendItem","pathSegArray","first","Builder","appendSegment","Source","_string","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","_pathSegTypeFromChar","lookahead","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","command","_parseNumber","integer","frac","decimal","sign","expsign","startIndex","startIntPartIndex","multiplier","scanIntPartIndex","exponent","pow","_parseArcFlag","flagChar","flag","parseSegment","points","arcAngle","arcLarge","arcSweep","builder","toFixedNumeric","round","ColorValuePicker","bindedHex","alphaPrecision","that","inputs","keyDown","hex","validateKey","red","keyCode","setValueInRange","green","blue","alpha","hue","saturation","keyUp","ahex","charCodeAt","colorChanged","ui","all","g","h","destroy","unbind","findPos","curleft","curtop","offsetParent","isObject","mergeDeep","isNullish","Slider","bar","fireChangeEvents","changeEvents","changeEvent","mouseDown","timeout","setValuesFromMousePosition","mouseMove","mouseUp","barW","w","barH","locX","pageX","locY","pageY","rangeX","minX","rangeY","minY","newX","newY","maxX","maxY","arrow","newMinX","newMaxX","newMinY","newMaxY","arrowW","arrowH","arrowOffsetX","arrowOffsetY","jPicker","List","Color","ColorMethods","rgbaToHex","nameLength","ch","hexToRgba","newV","hsv","rgbToHsv","hsvToRgb","intToHex","validateHex","hexToInt","rgba","dec","delta","jPickerMethod","commitCallback","liveCallback","cancelCallback","jPickerDefaults","settings","bindToInput","expandable","active","insertAdjacentElement","liveUpdate","isLessThanIE7","appVersion","filters","setColorMode","colorMode","rgbMap","rgbBar","setBG","colorMapDiv","setImgLoc","colorMapL1","setAlpha","colorMapL2","colorBarDiv","colorBarL1","colorBarL2","colorBarL3","colorBarL4","colorBarL6","colorMap","colorBar","activeColorChanged","positionMapAndBarArrows","updatePreview","updateMapVisuals","updateBarVisuals","mapValueChanged","xy","colorBarValueChanged","sv","hv","hs","bg","br","rg","activePreview","colorMapL3","colorBarL5","hva","saturatedColor","hsa","valueColor","hValue","vValue","middle","el","setImg","backgroundImage","visibility","revertColor","commitColor","radioClicked","rChecks","rCheck","currentClicked","cancelClicked","hide","cancelButton","okClicked","okButton","iconImageClicked","show","currentColorChanged","currentPreview","expandableColorChanged","va","iconColor","iconAlpha","updateInputColor","moveBarMouseDown","elementStartX","elementStartY","pageStartX","pageStartY","documentMouseMove","documentMouseUp","prev","previousElementSibling","quickPickClicked","attachIFrame","pELem","getPropertyValue","removeIFrame","nexts","nextElementSibling","win","onselectstart","controlHtml","images","clientPath","file","alphaSupport","insertBefore","poslt","appendChild","colorPicker","preview","grid","radioInputs","radioInput","quickList","quickHex","QuickColorSels","QuickColorSel","icon","iconImage","moveBar","jqQuickColors","jqQuickColor","speed","jGraduate","Paint","SvgCanvas","jGraduateDefaults","paint","pickerTitle","newstop","isGecko","mkElem","attrs","newparent","setAttrs","aname","_ref2","baseVal","jGraduateMethod","okCallback","$this","$settings","idref","alert","linearGradient","radialGradient","$win","solidColor","colPicker","gradPicker","MAX","attrInput","SLIDERW","JQSliderBars","JQSliderBar","svg","xmlns","curType","grad","curGradient","gradalpha","isSolid","stopGroup","mkStop","inverted","inv","opac","cx","cy","fx","fy","previewRect","beginCoord","coord","endCoord","centerCoord","focusCoord","showFocus","onAttrChangeHandler","attr","isRadial","$elem","attrval","colr","sel","stopElem","stop","floor","random","pickerD","pathbg","d","transform","selectStop","drag","curStop","dragColor","remDrags","stopOffset","stopMakerDiv","colorhandle","stopOpacity","stopColor","thisAlpha","jqPickerElem","clr","jqStopEls","jqStopEl","curS","newcolor","newopac","stops","delStop","remStop","scaleX","scaleY","cX","cY","xform","rot","xfStr","sX","last","jqStopElems","jqStopElem","cur","stopMakerSVG","transPattern","patternUnits","transImg","bgImage","setAttributeNS","tagName","spreadMethodOpt","draggingCoord","onCoordDrag","fracx","fracy","grd","onCoordUp","getElementsByTagNameNS","numstops","JQGradCoords","onMouseDownGradCoords","JQGradCoord","lastfx","lastfy","fX","fY","slider","ellipVal","angleVal","tlist","gradientTransform","matrix","sliders","radius","ellip","sInput","dragSlider","stopSlider","isRad","xpos","marginLeft","divi","posx","setSlider","tabs","onTabsClickHandler","tab","innerDivs","innerDiv","tFileds","tFiled","t1Fileds","jOpacInput","newGrad","curStops","sm","jQfocusCoord","PaintBox","docElem","DOMParser","parseFromString","ctr","documentElement","defs","getElementsByTagName","setPaint","ptype","fillAttr","svgCanvas","startsWith","refElem","getRefElem","update","svgcanvas","selectedElement","childs","gPaint","_paintColor","_paintOpacity","defColor","getPaint","SeColorPicker","$logo","$block","paintBox","$picker","$color_picker","SeSelect","$select","optionNode","createTextNode","SeText","previousBodyOverflowKey","previousDocumentMarginRightKey","wrappingFocusKey","FocusCaptureMixin","FocusCapture","firstElement","firstElementIsDocumentActive","contains","shadowActiveElement","firstElementIsShadowActive","focusCatcher","focusCapture","ModalBackdrop","touches","DialogModalityMixin","DialogModality","documentWidth","clientWidth","scrollBarWidth","overflow","marginRight","Dialog","PlainModalBackdrop","PlainModalOverlayMixin","PlainModalOverlay","PlainDialog","ElixDialog","isValidUnit","SeImgPropDialog","eventlisten","$saveBtn","$cancelBtn","$resolution","$canvasTitle","$canvasWidth","$canvasHeight","$imageOptEmbed","$imageOptRef","$dialog","save","dialog","embed","onCancelHandler","selectedIndex","dims","saveOpt","parentElement","SeEditPrefsDialog","colorBlocks","$langSelect","$bgBlocks","$bgURL","$gridSnappingOn","$gridSnappingStep","$gridColor","$showRulers","$baseUnit","blocks","curBg","blk","bgColor","lang","canvasbg","bgurl","gridsnappingon","gridsnappingstep","gridcolor","showrulers","baseunit","newdiv","bgcolor","SeSvgSourceEditorDialog","$copyBtn","$sourceTxt","$copySec","$applySec","$toggleDynamic","dynamicOutput","applysec","copysec","dynamic","SeCMenuDialog","_workarea","$copyLink","$cutLink","$pasteLink","$pasteInPlaceLink","$deleteLink","$groupLink","$ungroupLink","$moveFrontLink","$moveUpLink","$moveDownLink","$moveBackLink","textnode","eles","sdowRoot","eleli","ele","disableallmenu","enablemenuitems","disablemenuitems","onMenuClickHandler","action","triggerEvent","trigger","xOff","screen","yOff","SeCMenuLayerDialog","$sidePanels","$duplicateLink","$mergeDownLink","$mergeAllLink","leftclick","onMenuOpenHandler","onMenuCloseHandler","AlertDialog","choiceButtons","choiceButtonPartType","choices","choice","choiceButtonContainer","updateChildNodes","oldLength","newLength","oldChild","newChild","PlainAlertDialog","SePlainAlertDialog","seSelect","seConfirm","SePromptDialog","seAlert","SeExportDialog","$okBtn","$exportOption","$qualityCont","onSubmitHandler","imgType","quality","onChangeHandler","NSSVG","isChrome_","isMac_","svgroot","svgContent","getStartPositionOfChar","ConfigObj","editor","defaultPrefs","bkgd_color","bkgd_url","img_save","save_notice_done","export_notice_done","defaultConfig","canvasName","canvas_expansion","initFill","initStroke","stroke_width","font_size","font_family","initOpacity","initTool","exportWindowType","wireframe","showlayers","no_save_warning","extPath","dimensions","gridSnapping","gridColor","baseUnit","snappingStep","showRulers","preventAllURLConfig","preventURLContentLoading","lockExtensions","noDefaultExtensions","showGrid","noStorageOnLoad","forceStorage","emptyStorageOnDecline","avoidClientSide","avoidClientSideDownload","avoidClientSideOpen","curPrefs","urldata","defaultExtensions","extensions","userExtensions","allowedOrigins","setupCurPrefs","setupCurConfig","loadFromURL","searchParams","URL","entry","has","pathConfig","setConfig","loadFromDataURI","loadFromString","url","loadContentAndPrefs","cookie","storeKey","storage","widget","preferenceForKey","decodeURIComponent","cfgCfg","extendOrAdd","cfgObj","allowInitialUserOverride","pref","mayBeEmpty","contextMenuExtensions","injectExtendedContextMenuItemsIntoDom","values","menuItem","injectExtendedContextMenuItemIntoDom","$id","getTypeMap","Rulers","rulerIntervals","$svgEditor","rulerX","rulerY","rulerCorner","removeProperty","manageScroll","workarea","updateRulers","scanvas","zoom","getZoom","limit","contentElem","getSvgContent","unit","isX","dim","lentype","contentDim","$hcanvOrig","$hcanv","hcanv","rulerLen","totalLen","ctxArr","num","ctxArrNum","ctx","getContext","fillStyle","fillRect","child","uMulti","rawM","multi","bigInt","font","rulerD","labelPos","ctxNum","curD","moveTo","lineTo","decs","fillText","subD","lineNum","strokeStyle","$qq","convertUnit","$qa","LeftPanel","updateLeftPanel","clickSelect","cursor","setMode","clickFHPath","clickLine","clickSquare","clickRect","clickFHRect","clickCircle","clickEllipse","clickFHEllipse","clickImage","clickZoom","zoomInIcon","dblclickZoom","zoomImage","clickText","clickPath","handler","TopPanel","displayTool","hideTool","multiselected","pathActions","setStrokeOpt","changeElem","bits","pre","setStrokeAttr","gWidth","swidth","bottomPanel","updateColorpickers","_this$selectedElement","opacPerc","updateToolButtonState","promptImgURL","cancelDeletes","curhref","getHref","prompt","setImageURL","deleteSelectedElements","updateContextPanel","_elem","currentLayerName","getCurrentDrawing","getCurrentLayerName","currentMode","getMode","isNode","menuItems","elname","getRotationAngle","blurval","getBlur","addedNew","point","getNodePoint","canDeleteNodes","segType","bb","getStrokedBBox","panels","circle","ellipse","line","linkHref","selements","curPanel","_elem$getAttribute","_elem$getAttribute2","_elem$getAttribute3","_elem$getAttribute4","attrVal","bv","getItalic","getBold","hasTextDecoration","getTitle","getSelectedElements","every","undoMgr","getUndoStackSize","getRedoStackSize","showSourceEditor","forSaving","$editorDialog","origSource","getSvgString","clickWireframe","wfRules","fcRules","updateWireFrame","clickUndo","textActions","undo","layersPanel","populateLayers","clickRedo","redo","changeRectRadius","setRectRadius","changeFontSize","setFontSize","changeRotationAngle","setRotationAngle","changeBlur","setBlur","clickGroup","groupSelectedElements","ungroupSelectedElement","clickClone","cloneSelectedElements","clickAlignEle","alignSelectedElements","clickAlign","pos","attrChanger","convertToNum","unitData","changeSelectedAttribute","convertToPath","reorientPath","reorient","makeHyperlink","linkControlPoints","linked","clonePathNode","deletePathNode","addSubPath","sp","opencloseSubPath","deleteSelected","moveToTopSelected","moveToTopSelectedElement","moveToBottomSelected","moveToBottomSelectedElement","clickBold","setBold","clickItalic","setItalic","clickTextDecoration","removeTextDecoration","addTextDecoration","clickTextAnchor","setTextAnchor","changeLetterSpacing","setLetterSpacing","changeWordSpacing","setWordSpacing","changeTextLength","setTextLength","changeLengthAdjust","setLengthAdjust","defaultImageURL","embedImage","selectOnly","updateTitle","titleElement","togglePathEditMode","editMode","elems","newSeEditorDialog","$container","currentTarget","attrId","BottomPanel","changeStrokeWidth","setStrokeWidth","changeZoom","zoomChanged","zoomlevel","bNoFill","getColor","bNoStroke","buttonsNeedingStroke","buttonsNeedingFillAndStroke","btn","leftPanel","runExtensions","nofill","nostroke","handleColorPicker","handleStrokeAttr","handleOpacity","setOpacity","handlePalette","setColor","getPaintOpacity","setPaintOpacity","LayersPanel","topPanel","lmenuFunc","cloneLayer","deleteLayer","mergeLayer","mergeAllLayers","menuMore","menuLayerBox","newLayer","moveLayer","layerRename","toggleSidePanel","displayFlag","uniqName","getNumLayers","hasLayer","newName","createLayer","deleteCurrentLayer","curPos","indexCurrentLayer","setCurrentLayerPosition","oldName","renameCurrentLayer","toggleHighlightLayer","layerNameToHighlight","curNames","numLayers","getLayerName","curName","setLayerOpacity","clearSelection","layerlist","drawing","layer","layerTr","layerVis","getLayerVisibility","layerName","nelements","trElements","setCurrentLayer","_evt","vis","setLayerVisibility","tlayer","MainMenu","exportWindowCt","hideDocProperties","$imgDialog","docprops","hidePreferences","preferences","saveDocProperties","setDocumentTitle","setResolution","updateCanvas","setBackground","rulers","_e$detail2","_e$detail3","_e$detail4","_e$detail5","openExportWindow","loadingImage","popHTML","popURL","exportWindowName","loadingURL","_URL","createObjectURL","blob","Blob","exportWindow","chrome","customExportPDF","exportPDF","customExportImage","rasterExport","showDocProperties","resolution","getResolution","getDocumentTitle","showPreferences","$editDialog","canvasBg","openHomePage","clickExport","savePreferences","decode64","blankPageObjectURL","common","ok","cancel","key_backspace","key_del","key_down","key_up","more_opts","misc","powered_by","toggle_stroke_tools","palette_info","zoom_level","panel_action","pathNodeTooltip","pathCtrlPtTooltip","pick_stroke_paint_opacity","pick_fill_paint_opacity","group_identify_label","export_type_label","properties","fill_color","stroke_color","stroke_style","pos_x","pos_y","linecap_butt","linecap_round","linecap_square","linejoin_bevel","linejoin_miter","linejoin_round","circle_cx","circle_cy","circle_r","ellipse_cx","ellipse_cy","ellipse_rx","ellipse_ry","line_x1","line_x2","line_y1","line_y2","rect_height","rect_width","corner_radius","image_width","image_height","image_url","node_x","node_y","seg_type","straight_segments","curve_segments","text_contents","font_family_label","bold","text_decoration_underline","text_decoration_linethrough","text_decoration_overline","italic","text_anchor_start","text_anchor_middle","text_anchor_end","text_letter_spacing","text_word_spacing","text_length","text_length_adjust","text_length_adjust_spacing","text_length_adjust_spacing_and_glyphs","class","serif","sans_serif","cursive","fantasy","monospace","courier","helvetica","times","prefs_and_content","prefs_only","no_prefs_or_content","jgraduate_pad","jgraduate_reflect","jgraduate_repeat","tools","main_menu","bkgnd_color_opac","connector_no_arrow","fitToContent","fit_to_all","fit_to_canvas","fit_to_layer_content","fit_to_sel","align_relative_to","relativeTo","page","largest_object","selected_objects","smallest_object","export_img","import_doc","align_to_page","align_bottom","align_center","align_left","align_middle","align_right","align_top","mode_select","mode_fhpath","mode_line","mode_rect","mode_square","mode_fhrect","mode_ellipse","mode_circle","mode_fhellipse","mode_path","mode_text","mode_image","mode_zoom","no_embed","tool_source","wireframe_mode","del","group_elements","make_link","set_link_url","to_path","reorient_path","ungroup","editor_homepage","move_bottom","move_top","node_clone","node_delete","node_link","add_subpath","openclose_path","source_save","cut","paste","paste_in_place","group","move_front","move_up","move_down","move_back","tool_unlink_use","ellipse_circle_tool","square_rect_tool","remember_this_choice","remember_this_choice_title","layers","new","rename","dupe","merge_down","merge_all","move_elems_to","move_selected","config","image_props","doc_title","doc_dims","included_images","image_opt_embed","image_opt_ref","editor_prefs","background","editor_img_url","editor_bg_note","select_predefined","units_and_rulers","show_rulers","base_unit","snapping_onoff","snapping_stepsize","grid_color","change_xxx_color","pick_paint_opavity","open_color_picker","jpicker_title","jpicker_new_color","jpicker_current_color","jpicker_tooltip_colors_new_color","jpicker_tooltip_colors_current_color","jpicker_tooltip_buttons_ok","jpicker_tooltip_buttons_cancel","jpicker_tooltip_hue_radio","jpicker_tooltip_hue_textbox","jpicker_tooltip_saturation_radio","jpicker_tooltip_saturation_textbox","jpicker_tooltip_value_radio","jpicker_tooltip_value_textbox","jpicker_tooltip_red_radio","jpicker_tooltip_red_textbox","jpicker_tooltip_green_radio","jpicker_tooltip_green_textbox","jpicker_tooltip_blue_radio","jpicker_tooltip_blue_textbox","jpicker_tooltip_alpha_radio","jpicker_tooltip_alpha_textbox","jpicker_tooltip_hex_textbox","jpicker_tooltip_hex_alpha","jgraduate_solid_color","jgraduate_linear_gradient","jgraduate_radial_gradient","jgraduate_begin_point","jgraduate_enter_starting_x","jgraduate_enter_starting_y","jgraduate_end_point","jgraduate_enter_ending_x","jgraduate_enter_ending_y","jgraduate_center_point","jgraduate_enter_value_x","jgraduate_enter_value_y","jgraduate_focal_point","jgraduate_match_center","jgraduate_enter_focal_x","jgraduate_enter_focal_y","jgraduate_spread_method","jgraduate_radius","jgraduate_set_radius","jgraduate_ellip","jgraduate_set_ellip","jgraduate_angle","jgraduate_set_angle","jgraduate_deg","jgraduate_opac","jgraduate_set_opac","notification","invalidAttrValGiven","noContentToFitTo","dupeLayerName","enterUniqueLayerName","enterNewLayerName","layerHasThatName","QmoveElemsToLayer","QwantToClear","QwantToOpen","QerrorsRevertToSource","QignoreSourceChanges","featNotSupported","enterNewImgURL","defsFailOnSave","saveFromBrowser","noteTheseIssues","unsavedChanges","enterNewLinkURL","errorLoadingSVG","URLLoadFail","retrieving","popupWindowBlocked","exportNoBlur","exportNoforeignObject","exportNoDashArray","exportNoText","editorPreferencesMsg","source_dialog_note","new_doc","open_doc","save_doc","panel","r_label","x_label","y_label","x1_label","y1_label","x2_label","y2_label","rx_label","ry_label","cx_label","cy_label","w_label","h_label","id_label","class_label","author","Delete","Editor","EditorStartup","extensionsAdded","messageQueue","localStorage","newSeImgPropDialog","newSeEditPrefsDialog","dialogBox","alertBox","promptBox","exportDialog","mainMenu","canvMenu","uiContext","opener","svgEditorReadyEvent","readySignal","aLink","leaveContext","setContext","selectedChanged","elementTransition","elementChanged","exportHandler","href","zoomDone","newCtr","contextChanged","extAdded","elementRenamed","beforeClear","afterClear","setInputElem","selElements","promptMoveLayerOnce","destLayer","confirmStr","moveToLayer","moveSelectedToLayer","setFontFamily","setSegType","addListenerMulti","eventNames","setTextContent","setLinkURL","removeHyperlink","setGroupTitle","inp","lastX","lastY","panning","keypan","spaceKey","setPanning","unfocus","liElems","winWh","getWidth","offsetWidth","getHeight","offsetHeight","curval","getElementsByClassName","lineHeight","inputEles","inputEle","selectEles","cancelOverlays","toggleDynamicOutput","hideSourceEditor","saveSourceEditor","cutSelected","copySelected","pasteElements","moveUpDownSelected","handlerKey","getCustomHandler","ready","preTool","regTool","selectTool","enableOrDisableClipboard","showSaveWarning","returnValue","onDragEnter","onDragOver","onDragLeave","extAndLocaleFunc","runCallbacks","imported","import","extname","initfn","addExtension","pathName","_ref3","encodeURI","_win","_data","setAll","storagePromptState","messageObj","langChanged","isReady","callbacks","curContext","modKey","shortcuts","fn","rotateSelected","cycleElement","moveSelected","selectAllInCurrentLayer","pasteInCenter","loadSvgString","noAlert","setSvgString","randomizeIds","arg","keyHandler","keyval","pd","getParents","parentSelector","parents","getButtonData","issues","bloburl","datauri","note","cnvs","wOrig","hOrig","oldCtr","contentW","contentH","oldCanY","oldCanX","newCanY","newCanX","ratio","scrollX","scrollY","scroll","storagePrompt","ang","isSvgElem","isLayer","renameObj","selectedElements","selectorManager","requestSelector","resize","bbox","autoCenter","zInfo","setBBoxZoom","linkStr","getParentsUntil","selector","parentType","selectorType","setIcon","iconId","ext","cbCalled","runCallback","setCurrentZoom","cutSelectedElements","copySelectedElements","dx","dy","moveSelectedElements","selectNext","selectPrev","cw","saveChanges","editingsource","svgeditClipboard","setLang","renameLayer","setTitles","cb","cache","catch","base64","initArgs"],"mappings":"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"}