@syncfusion/ej2-filemanager 25.2.3 → 25.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/ej2-filemanager.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js.map +1 -1
- package/dist/es6/ej2-filemanager.es2015.js +18 -3
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +18 -3
- package/dist/es6/ej2-filemanager.es5.js.map +1 -1
- package/dist/global/ej2-filemanager.min.js +2 -2
- package/dist/global/ej2-filemanager.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/file-manager/actions/virtualization.js +1 -0
- package/src/file-manager/pop-up/context-menu.js +17 -3
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../src/file-manager/models/ajax-settings.js","../src/file-manager/models/toolbar-settings.js","../src/file-manager/models/search-settings.js","../src/file-manager/models/details-view-settings.js","../src/file-manager/models/contextMenu-settings.js","../src/file-manager/models/navigation-pane-settings.js","../src/file-manager/models/upload-settings.js","../src/file-manager/models/column.js","../src/file-manager/base/classes.js","../src/file-manager/base/constant.js","../src/file-manager/layout/large-icons-view.js","../src/file-manager/actions/breadcrumb-bar.js","../src/file-manager/pop-up/context-menu.js","../src/file-manager/models/default-locale.js","../src/file-manager/base/file-manager.js","../src/file-manager/actions/toolbar.js","../src/file-manager/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility function to compare two strings in a way similar to Windows Explorer.\n * Files and folders are sorted separately, with folders coming before files.\n *\n * @param {string} reference - The first string to compare. This could be a file or folder name.\n * @param {string} comparer - The second string to compare. This could be a file or folder name.\n * @returns {number} - A negative number if `reference` should come before `comparer`, a positive number if `comparer` should come before `reference`, and 0 if they are considered equal.\n */\nexport function sortComparer(reference, comparer) {\n // Check if reference and comparer are files or folders\n var referenceIsFile = /\\.\\S+/.test(reference);\n var comparerIsFile = /\\.\\S+/.test(comparer);\n // If one is a file and the other is a folder, the folder should come first\n if (referenceIsFile && !comparerIsFile)\n return 1;\n if (!referenceIsFile && comparerIsFile)\n return -1;\n var referenceParts = [];\n var comparerParts = [];\n (reference + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { referenceParts.push([$1 || Infinity, $2 || \"\"]); return \"\"; });\n (comparer + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { comparerParts.push([$1 || Infinity, $2 || \"\"]); return \"\"; });\n // Compare each part of reference and comparer\n while (referenceParts.length && comparerParts.length) {\n var referencePart = referenceParts.shift();\n var comparerPart = comparerParts.shift();\n var comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult)\n return comparisonResult;\n }\n return referenceParts.length - comparerParts.length;\n}\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = '/';\n var len = matched.length - (2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = '/';\n var i = 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\n// eslint-disable-next-line\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\n// eslint-disable-next-line\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n var imgUrl;\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\n// eslint-disable-next-line\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n // eslint-disable-next-line\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function setDateObject(args, localeString, dateFormat) {\n for (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = \"MM/dd/yyyy\";\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n if (!isNullOrUndefined(data)) {\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n }\n else {\n parent.originalPath = newPath;\n }\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var isRoot = getValue('_fm_id', parent.itemData[0]) == 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n // eslint-disable-next-line\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\n// eslint-disable-next-line\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var srcData = parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute(\"data-uid\");\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\n// eslint-disable-next-line\nexport function getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select(\".\" + nodeClass, scrollParent);\n if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n var scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\n// eslint-disable-next-line\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\n// eslint-disable-next-line\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n // eslint-disable-next-line\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\n// eslint-disable-next-line\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasReadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasEditAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasContentAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasUploadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasDownloadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n","import { Ajax, Fetch, createElement, select, extend, Internationalization } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';\nimport { generatePath } from '../common/utility';\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n // eslint-disable-next-line\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n // eslint-disable-next-line\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n // eslint-disable-next-line\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction getDateFormat(parent) {\n var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\n}\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n var intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(\n// eslint-disable-next-line\nparent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/'));\n parent.itemData[0] = parent.renamedItem;\n read(parent, events.pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/') + parent.renamedItem.name + '/');\n if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {\n parent.pathNames[parent.pathNames.length - 1] = parent.renameText;\n }\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var ajaxSettings = {\n url: downloadUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n else {\n var contentDisposition_1;\n var fileName_1;\n var fetch_1 = new Fetch({\n url: getValue('url', downloadArgs.ajaxSettings),\n type: getValue('type', downloadArgs.ajaxSettings),\n contentType: getValue('contentType', downloadArgs.ajaxSettings),\n responseType: getValue('responseType', downloadArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', downloadArgs.ajaxSettings),\n onLoad: function (e) {\n contentDisposition_1 = e.headers.get('Content-Disposition');\n if (contentDisposition_1) {\n var filenameMatch = contentDisposition_1.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n var extractedFilename = filenameMatch && filenameMatch[1];\n fileName_1 = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName_1;\n }\n else {\n fileName_1 = parent.itemData.length > 1 ? 'files.zip' : getValue('isFile', parent.itemData[0]) ? getValue('name', parent.itemData[0]) : getValue('name', parent.itemData[0]) + '.zip';\n }\n },\n onSuccess: function (e) {\n parent.trigger('success', downloadArgs);\n var blob = e;\n var blobUrl = URL.createObjectURL(blob);\n var link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName_1;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: function (e) {\n var result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.downloadUrl,\n },\n };\n createDialog(parent, 'Error', result);\n parent.trigger('failure', downloadArgs);\n },\n });\n fetch_1.send(JSON.stringify(downloadArgs.data));\n }\n }\n });\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function (e) {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n var index_1;\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index_1 = val.name.indexOf('.') + 1;\n return (index_1 === 0 && (!val.isFile)) ? 'Folder' : ((index_1 !== 0) ? val.name.substr(index_1).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] == undefined) {\n strArr = details.name.split(',').map(function (val) {\n index_1 = val.indexOf('.') + 1;\n return (index_1 === 0) ? 'Folder' : val.substr(index_1).replace(' ', '');\n });\n }\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {SelectedEventArgs} data - specifies the data.\n * @returns {HTMLElement} - returns the HTML element.\n * @private\n */\nfunction getFilesName(data) {\n var parent = createElement('div', { id: 'uploadDialog' });\n var ulElement = createElement('ul');\n var filesData = data.isModified ? data.modifiedFilesData : data.filesData;\n for (var fileCount = 0; fileCount < filesData.length; fileCount++) {\n var liElement = createElement('li', { className: 'dialogFiles' });\n liElement.innerHTML = filesData[fileCount].name;\n ulElement.appendChild(liElement);\n }\n parent.appendChild(ulElement);\n var errorTag = createElement('div', { className: 'e-fe-error' });\n parent.appendChild(errorTag);\n return parent;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\\\"e-fe-text\\\">${name}</span>',\n customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110',\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n }), format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"isPrimaryKey\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n if (this.parent.sortComparer && this.parent.sortBy !== 'None') {\n this.items = this.allItems = DataUtil.sort(this.items, this.parent.sortBy, this.comparer.bind(this));\n }\n else {\n this.items = this.allItems = getSortedData(this.parent, this.items);\n }\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n if (!this.element.style.height) {\n this.adjustHeight();\n }\n this.parent.virtualizationModule.setUIVirtualization();\n }\n // eslint-disable-next-line\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.listElements.setAttribute(\"aria-label\", \"listbox\");\n this.preventImgDrag();\n this.createDragObj();\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.comparer = function (x, y, xObj, yObj) {\n if (this.parent.sortOrder === 'Descending') {\n var z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n };\n ;\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.adjustHeight = function () {\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n proxy_1.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (e.ctrlKey && e.shiftKey) {\n this.isSelectAllCalled = true;\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n // eslint-disable-next-line\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\n var _this = this;\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n // eslint-disable-next-line\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n // eslint-disable-next-line\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = {\n action: action, fileDetails: data.length > 1 ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1 ? data : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n // eslint-disable-next-line\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n // eslint-disable-next-line\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n // eslint-disable-next-line\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n // eslint-disable-next-line\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n // eslint-disable-next-line\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function () {\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule == 'navigationpane') {\n this.parent.pathId.pop();\n var parentKey = [];\n var itemKeys = Object.keys(this.parent.feParent);\n for (var _i = 0, itemKeys_1 = itemKeys; _i < itemKeys_1.length; _i++) {\n var item = itemKeys_1[_i];\n var itemData = getValue(item, this.parent.feParent);\n if (this.parent.pathNames.indexOf(itemData.name) !== -1) {\n parentKey.push(itemData._fm_id);\n }\n }\n this.parent.pathId.push(parentKey[parentKey.length - 1]);\n this.parent.navigationpaneModule.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n }\n this.isMenuItemClicked = false;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var selected = false;\n var uid;\n // eslint-disable-next-line\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest(\"div\");\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n // eslint:disable-next-line\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n // eslint:disable-next-line\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n // eslint:disable-next-line\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n // eslint-disable-next-line\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n // eslint-disable-next-line\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('data-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n /* istanbul ignore next */\n // eslint:disable-next-line\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n else {\n var pasteIndex = this.disabledItems.indexOf('Paste');\n if (pasteIndex !== -1) {\n this.disabledItems.splice(pasteIndex, 1);\n }\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n }\n else if (this.parent.selectedItems.length !== 1 && this.parent.activeModule !== 'navigationpane') {\n this.disabledItems.push('Rename', 'Paste');\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n else {\n this.disabledItems = this.disabledItems.filter(function (item) { return item !== 'SelectAll'; });\n }\n if (this.parent.selectedNodes.length === 0) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n // eslint-disable-next-line\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n _this.isMenuItemClicked = true;\n // eslint:disable-next-line\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if ((_this.parent.activeModule === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest, Collection } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { ToolbarItem } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n // eslint-disable-next-line\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not \n _this.isMac = false;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this],\n name: 'Toolbar'\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this],\n name: 'NavigationPane'\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this],\n name: 'DetailsView'\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this],\n name: 'Virtualization'\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n // eslint-disable-next-line\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n // eslint-disable-next-line\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n // eslint-disable-next-line\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n // eslint-disable-next-line\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') != -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n refresh(this);\n this.notify(events.sortByChange, {});\n if (this.view === 'Details') {\n this.notify(events.sortColumn, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n // eslint-disable-next-line\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"sortComparer\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Collection([], ToolbarItem)\n ], FileManager.prototype, \"toolbarItems\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n // eslint-disable-next-line\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n var _this = this;\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan_1 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan_1 = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>',\n beforeItemRender: function (args) {\n var tickIcon = args.item.iconCss;\n var viewText = args.item.text === getLocaleText(_this.parent, 'View-LargeIcons');\n var iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan_1 : gridSpan_1) + args.item.text;\n var span = args.element.firstChild;\n if (span && span.className === '') {\n args.element.removeChild(span);\n }\n }\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = __assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n if (this.itemList.length !== 0 && this.largeIconInstance.element.querySelector('.' + CLS.EMPTY)) {\n this.largeIconInstance.element.removeChild(this.largeIconInstance.element.querySelector('.' + CLS.EMPTY));\n }\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add(\"e-virtual-top\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add(\"e-virtual-bottom\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n * @param dataSourceLength The length of the data source.\n * @returns The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount = Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) / (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount * (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n * @param destroy - Set `true` to unwire the scroll event.\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n * @param startingHeight The starting height from which to calculate the scroll position.\n * @returns The current scroll position.\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n * @param listDiff The number of rows to update.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule, getPathId } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n // eslint-disable-next-line\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0 &&\n (directories[0].filterPath == null || this.getTreeData(target)[0].filterPath == null || directories[0].filterPath !== this.getTreeData(target)[0].filterPath)) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute(\"data-uid\")];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n // eslint-disable-next-line\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n this.isNodeExpandCalled = true;\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n // eslint-disable-next-line\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n // eslint-disable-next-line\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n // eslint-disable-next-line\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent[\"portals\"] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent[\"portals\"] = this.parent[\"portals\"].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent[\"portals\"]);\n this.parent[\"renderReactTemplates\"]();\n };\n /**\n * Gets the grid height.\n *\n * @returns The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return \"<div class=\\\"e-fe-text\\\">\" + name + \"</div><div class=\\\"e-fe-date\\\">\" + data._fm_modified + \"</div><span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return \"<span class=\\\"e-fe-icon e-fe-folder\\\"></span>\";\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n // eslint-disable-next-line\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn)) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, (this.parent.enableVirtualization) ? args.result : this.gridObj.dataSource);\n args.result = items;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop == 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n // eslint-disable-next-line\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n // eslint-disable-next-line\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n // eslint-disable-next-line\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n // eslint-disable-next-line\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNOU(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addHeaderFocus(e);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n // eslint-disable-next-line\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus;\n if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNOU(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);\n }\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n"],"names":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","i","length","ids","push","names","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","key","newPath","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","searchWordHandler","isLayoutChange","searchWord","events.pathColumn","args","searchSettings","filterType","itemData","getPathObject","caseSensitive","ignoreCase","hiddenItems","showHiddenItems","Search","events.layoutChange","events.search","filter","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","read","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","pathUrl","fileName","encodeURIComponent","fPath","imgId","replace","eventArgs","fileDetails","imageUrl","Date","getTime","toString","trigger","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","Query","sortBy","group","lists","DataManager","executeLocal","getObject","currFiles","feFiles","where","createEmptyElement","top","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","emptyEle","CLS.EMPTY_CONTENT","dragFile","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","eDiv","style","marginTop","getDirectories","events.isFile","setNodeId","result","rootId","dirs","len","setValue","setDateObject","localeString","dateFormat","createdDate","modifiedDate","formatDate","format","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","field","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","isNullOrUndefined","openSearchFolder","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dropPath","dragPath","subFolder","srcData","dragNodes","tempTarget","dropHandler","dragData","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","target","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","screenY","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","Object","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","click","events.permissionUpload","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","fn","type","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","events.beforeRequest","Ajax","result_1","triggerAjaxFailure","parse","events.afterRequest","rootAliasName","intl","Internationalization","getDateFormat","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","pop","dialogObj","visible","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","Array","isArray","events.renameEndParent","events.pathChanged","renameText","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","useFormPost","responseType","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","filenameMatch","extractedFilename","blob","blobUrl","URL","createObjectURL","link","href","body","status","replaceItems","options","formattedString","strArr","location","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","multipleFiles","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","focusInput","bind","this","events.deleteInit","onDeleteSubmit","onReSubmit","inputEle","txt","index","onFocusRenameInput","modified","CLS.VALUE","size","index_1","undefined","map","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","getOptions","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","changeOptions","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","getExtOptions","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","retryArgs","retry","onKeepBothAll","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","_loop_1","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","headerText","minWidth","template","customAttributes","class","initializeCSPTemplate","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isSelectAllCalled","isPasteOperation","CLS.LARGEICON_ID","addClass","addEventListener","keyConfigs","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","isMac","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","adjustHeight","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","selectItems","activeEle","CLS.ACTIVE","maxHeight","getItemCount","wireEvents","setUlElementHeight","wireScrollEvent","hideSpinner","checkItem","x","xObj","yObj","z","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","getModuleName","dropLi","cwdData","info","pane","bar","removeAttribute","curData","textEle","renderCheckbox","showItemCheckBoxes","checkElement","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","name_1","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","lastItem","getLastItem","doSelection","ctrlKey","shiftKey","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","proxy_1","clickObj","Touch","tap","eve","originalEvent","isDevice","tapEvent","doTapAction","dblClickHandler","clickHandler","tapHold","multiSelect","CLS.MULTI_SELECT","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","parseInt","getPropertyValue","isVisible","liParent","liScrPos","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","ContextMenu","isMenuItemClicked","currentItems","currentElement","disabledItems","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.TREE_ID","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","pasteEle","pasteIndex","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","selectedTreeNode","layout","nameEle","menuClickArgs","sItems","events.downloadInit","openFileOnContextMenuClick","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","previousPath","nextPath","deleteRecords","isSameAction","persistData","isOpened","left","uploadingCount","uploadedCount","FileManager_1","Inject","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","clearAll","fileData","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","autoClose","response","statusText","onInitialEnd","removeEventListeners","setPath","oldProp","ajaxSettingSetModel","localeSetModelOption","refreshing","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Collection","Event","NotifyPropertyChanges","Component","__assign","assign","t","s","n","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","iconClass","firstChild","hideItems","hideStatus","portals","updateSortByButton","itemCount","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","mergedItems","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","filemanagerInstance","largeIconInstance","currentViewItems","lastRowCount","rowItemCount","topElement","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","Math","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","forEach","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","isSameNodeClicked","isNodeExpandCalled","renameParent","previousSelected","isNodeClickCalled","restrictSelecting","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getTreeData","getDragPath","getDropPath","nodeData","addChild","prevent","directories","_fm_icon","childElements","addNodes","selecEventArgs","expandNodeTarget","onPathDrag","selectResultNode","events.nodeExpand","onNodeExpanded","innerHtml","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","nData","id_1","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","obj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","Grid","Resize","Sort","VirtualScroll","checkNameWidth","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enablePersistence","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","includes","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","crtSrlPos","crtFocusIndex","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","treeFocus","nameFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"o6BAiDA,SAAgBA,EAAWC,EAAMC,EAAMC,GACnC,IAAIC,EAAOC,WAAS,OAAQH,GACxBI,EAAKL,EAAKM,aAAa,WACvBC,EAAUC,oBAAMH,GAAMF,EAAOE,EACjCH,EAASO,eAAgBC,KAAMC,EAAQX,EAAMO,EAASL,EAASU,SAAU,GACzEV,EAASW,OAASC,EAAUd,GAC5BE,EAASa,UAAYC,EAAahB,EAAMG,GAW5C,SAAgBQ,EAAQM,EAASd,EAAMS,GAInC,IAAK,IAHDM,EAAUC,EAAWF,EAASd,GAAM,EAAOS,GAC3CF,EAAO,IAEFU,EADCF,EAAQG,SACAD,GAAK,EAAGA,IACtBV,GAAQQ,EAAQE,GAAK,IAEzB,OAAOV,EASX,SAAgBI,EAAUd,GAGtB,IAAK,IAFDkB,EAAUC,EAAWnB,EAAMA,EAAKM,aAAa,aAAa,GAC1DgB,KACKF,EAAIF,EAAQG,OAAS,EAAGD,GAAK,EAAGA,IACrCE,EAAIC,KAAKL,EAAQE,IAErB,OAAOE,EAUX,SAAgBN,EAAaC,EAASd,GAGlC,IAAK,IAFDe,EAAUC,EAAWF,EAASd,GAAM,GACpCqB,KACKJ,EAAIF,EAAQG,OAAS,EAAGD,GAAK,EAAGA,IACrCI,EAAMD,KAAKL,EAAQE,IAEvB,OAAOI,EAYX,SAAgBL,EAAWF,EAASd,EAAMsB,EAAMb,GAG5C,IAFA,IAAIM,GAAWf,GACXuB,EAAKT,EAAQU,YACTnB,oBAAMkB,IAAK,CACf,GAAIE,UAAQF,EAAI,IAAMG,IAAgB,CAClC,IAAIC,EAAaL,EAAOC,EAAGpB,aAAa,YAAeM,EAAQc,EAAGpB,aAAa,WAC3EyB,SAAO,IAAMC,GAAeN,GAAIO,YACpCf,EAAQK,KAAKO,GAGjB,IADAJ,EAAKA,EAAGC,YACDO,UAAUC,SAASC,IACtB,MAGR,OAAOlB,EASX,SAAgBmB,EAAaC,GAIzB,IAHA,IAAIC,EAAMD,EAAO1B,MAAQ,KAAO,OAC5B4B,EAAU,IACVpB,EAAI,EACAA,EAAIkB,EAAOzB,OAAOQ,OAAQD,IAAK,CAEnC,IAAInB,EAAOG,WAASkC,EAAOzB,OAAOO,GAAIkB,EAAOG,UAC7CD,GAAWpC,WAASmC,EAAKtC,GAAQ,IAErCqC,EAAO7B,eAAgBC,KAAM8B,IAAW,GAS5C,SAAgBE,EAAaJ,GACrBA,EAAOK,QACPC,EAAWN,GACXA,EAAOO,iBACPP,EAAOQ,iBACPR,EAAOS,aAAc,EACrBT,EAAOU,OAAOC,QAWtB,SAAgBC,EAAcC,EAAQb,GAKlC,GAJAA,EAAOc,aAAc,EACrBd,EAAOQ,iBACPR,EAAOe,kBACPf,EAAOU,OAAOM,OACuB,IAAjChB,EAAOe,eAAehC,OACtB,OAAO,EAEXuB,EAAWN,GACX,IAAIiB,EAAUjB,EAAOe,eACO,mBAAxBf,EAAOkB,aACPlB,EAAOmB,WAAanB,EAAO5B,KAG3B4B,EAAOmB,WAAaC,EAAcpB,EAAO5B,MAE7C,IAAIU,EAAI,EACR,GAAImC,IACAI,EAAUrB,EAAQiB,EAAQ,IACX,QAAXJ,GACA,KAAO/B,EAAImC,EAAQlC,QACfuC,EAAQL,EAAQnC,IAChBA,IAQZ,IAJAA,EAAI,EACJkB,EAAOO,iBACPP,EAAOS,aAAc,EACrBT,EAAOU,OAAOa,OACPzC,EAAIkB,EAAOwB,cAAczC,QAC5BiB,EAAOQ,cAAcvB,KAAKe,EAAOwB,cAAc1C,IAC/CkB,EAAOO,cAActB,KAAKnB,WAAS,OAAQkC,EAAOwB,cAAc1C,KAChEA,IAEJ,IAA4D,KAAvDkB,EAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAAgB3B,EAAO4B,aAC7C,mBAAxB5B,EAAOkB,aAAmC,CAC1ClB,EAAOO,iBACPP,EAAOc,aAAc,EAErB,IADA,IAAIe,EAAM,EACHA,EAAM7B,EAAO8B,cAAc/C,QAC9BiB,EAAOO,cAActB,KAAKe,EAAO8B,cAAcD,IAC/CA,IAGR,OAAO,EASX,SAAgBP,EAAQS,GACpBA,EAAMnC,UAAUoC,IAAIC,IAUxB,SAAgB3B,EAAWN,EAAQkC,GAI/B,IAHA,IAAIjB,EAAYiB,EACZlC,EAAOrB,QAAQwD,iBAAiB,IAAMC,IADjBpC,EAAOrB,QAAQwD,iBAAiB,IAAMF,IAE3DnD,EAAI,EACDA,EAAImC,EAAQlC,QACfkC,EAAQnC,GAAGc,UAAUyC,OAASH,EAAoBE,GAAXH,IACvCnD,IAWR,SAAgBuC,EAAUrB,EAAQrB,GAC1BA,IACIA,EAAQiB,UAAUC,SAASyC,IAC3BtC,EAAOkB,aAAe,cAEjBqB,UAAQ5D,EAAS,IAAM6D,IAC5BxC,EAAOkB,aAAe,iBAGtBlB,EAAOkB,aAAe,kBAalC,SAAgBuB,EAAkBzC,EAAQ2B,EAAOe,GAC7C,IAAIC,EAeJ,GAdqB,IAAjBhB,EAAM5C,QAAiBiB,EAAO4B,YAC9B5B,EAAOU,OAAOkC,IAAqBC,KAAM7C,IAGzC2C,EADqC,eAArC3C,EAAO8C,eAAeC,WACTpB,EAAQ,IAEqB,aAArC3B,EAAO8C,eAAeC,WACd,IAAMpB,EAGN,IAAMA,EAAQ,IAE/B3B,EAAO2C,WAAaA,EACpB3C,EAAOgD,UAAYC,EAAcjD,IAC7B2B,EAAM5C,OAAS,EAAG,CAClB,IAAImE,EAAgBlD,EAAO8C,eAAeK,WACtCC,EAAcpD,EAAOqD,gBACzBC,GAAOtD,EAAQ0C,EAAiBa,GAAsBC,GAAexD,EAAO5B,KAAMuE,EAAYS,GAAcF,QAGvGlD,EAAO4B,WAUR6B,GAAOzD,EAAQuD,IATXvD,EAAO0D,iBACP1D,EAAOU,OAAO6C,IAAuBI,MAA2B,YAAnB3D,EAAO4D,QAAyB5D,EAAO6D,kBAAkBC,QAAQC,WAAa/D,EAAOgE,qBAAqBC,WACvJjE,EAAO0D,iBAAkB,GAGzBQ,GAAKlE,EAAQ0C,EAAiBa,GAAsBC,GAAexD,EAAO5B,MAgB1F,SAAgB+F,EAAanE,EAAQoE,GACjCpE,EAAO4D,QAAU5D,EAAOoE,KACxBpE,EAAO7B,eAAgBiG,KAAMA,IAAQ,IACsB,KAAvDpE,EAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAAgB3B,EAAO4B,cACpE5B,EAAOqE,oBAAsBrE,EAAO8B,eAExC,IAAIa,EAAa,GACb3C,EAAOyB,oBAAoBC,UAAU/C,QAAQgD,QAC7CgB,EAAa3C,EAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAE9D3B,EAAO0C,gBAAiB,EACxBD,EAAkBzC,EAAQ2C,GAAY,GAW1C,SAAgB2B,EAAgBtE,EAAQrB,GACpC,IAAI4F,EAAgB,GAChB5F,IAEI4F,EADAhC,UAAQ5D,EAAS,IAAM6F,GAAW,IAAMC,GAAc,KAAOC,IAC7C,cAEXnC,UAAQ5D,EAAS,IAAMgG,IACZ,iBAEXhG,EAAQiB,UAAUC,SAAS,cAChClB,EAAQiB,UAAUC,SAAS,qBACX,iBAEX0C,UAAQ5D,EAAS,wBACN,gBAGA,IAGxBqB,EAAO4E,aAAeL,EAU1B,SAAgBM,EAAQ7E,GACpBA,EAAOgD,UAAYC,EAAcjD,IAC5B8E,GAAc9E,EAAOgD,SAAS,IAI/BkB,GAAKlE,EAAQ+E,GAAmB/E,EAAO5B,MAHvC4G,GAAmBhF,EAAQA,EAAOgD,SAAS,GAAIiC,IAavD,SAAgBC,EAAWlF,GACvBkE,GAAKlE,EAAQmF,GAAgBnF,EAAO5B,MAUxC,SAAgB6E,EAAcjD,GAC1B,OAAOlC,WAASkC,EAAOzB,OAAOyB,EAAOzB,OAAOQ,OAAS,GAAIiB,EAAOG,UASpE,SAAgBiF,EAAUpF,GACjBY,EAAc,OAAQZ,KAIvBA,EAAOqF,WAAa,QAU5B,SAAgBC,EAAStF,GAChBY,EAAc,MAAOZ,KAItBA,EAAOK,OAAQ,EACfL,EAAOqF,WAAa,QAW5B,SAAgBE,EAASC,GAErB,IADa1H,WAAS,SAAU0H,GAE5B,OAAOC,GAEX,IAKIC,EAAW5H,WAAS,OAAQ0H,IAED,KAD/BE,EAAWA,EAASC,eACPC,QAAQ,OACjBF,EAAWA,EAASG,MAAM,KAAKC,KAAK,KAkBxC,OAfuC,KAXpB,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,OAAQ,MAAO,OAW5EF,QAAQF,GACTK,IAE6B,KAbzB,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAa/CH,QAAQF,GACdM,IAE6B,KAfzB,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAe9DJ,QAAQF,GACdO,IAE6B,KAjBzB,MAAO,MAAO,OAAQ,KAAM,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,OAAQ,MACrG,OAAQ,MAAO,MAAO,MAAO,OAgBZL,QAAQF,GACd,QAAUA,EAGV,qBAAuBA,EAc1C,SAAgBQ,EAAYlG,EAAQmG,GAChC,IAEIC,EAFAC,EAAUrG,EAAOsG,aAAaJ,YAAclG,EAAOsG,aAAaJ,YAAclG,EAAOsG,aAAaC,IAClGC,GAAqC,IAA1BH,EAAQT,QAAQ,KAAe,SAAW,SAErDa,EAAWC,mBAAmB5I,WAAS,OAAQqI,IAC/CQ,EAAQ7I,WAAS,aAAcqI,GACnC,GAAInG,EAAO1B,MAAO,CACd,IAAIsI,EAAQ9I,WAAS,KAAMqI,GAC3BC,EAASC,EAAUG,EAAUxG,EAAO5B,KAAO,OAASwI,OAMpDR,EAJMlI,oBAAMyI,GAIHN,EAAUG,EAAUxG,EAAO5B,KAAOqI,EAHlCJ,EAAUG,EAAUE,mBAAmBC,EAAME,QAAQ,MAAO,MAAQJ,EAMjF,IAAIK,GACAC,aAAcZ,GACda,SAHJZ,EAASA,EAAS,UAAY,IAAIa,MAAOC,UAAWC,YAMpD,OADAnH,EAAOoH,QAAQ,kBAAmBN,GAC3BA,EAAUE,SAarB,SAAgBK,EAAYrH,EAAQrC,EAAMS,GACtC,IAAIkJ,EAAWxJ,WAASkC,EAAO1B,MAAQ,KAAO,OAAQX,GAAQ,IAC1DgJ,EAAQ7I,WAASkC,EAAO1B,MAAQ,WAAa,aAAcX,GAC/D,OAAKO,oBAAMyI,GAIAvI,EAAOkJ,EAHPX,EAAME,QAAQ,MAAO,KAAOS,EAe3C,SAAgBC,EAAQvH,EAAQrC,GAC5B,IAAI6J,EAAO1J,WAAS,OAAQH,GACxBgJ,EAAQ7I,WAAS,aAAcH,GAKnC,MAJ4D,KAAvDqC,EAAOyB,oBAAoBC,UAAU/C,QAAQgD,QAAgB3B,EAAO4B,YAAgB1D,oBAAMyI,KAE3Fa,GADAb,EAAQA,EAAME,QAAQ,MAAO,MAChBA,QAAQ7G,EAAO5B,KAAM,IAAMoJ,GAErCA,EAWX,SAAgBC,EAAczH,EAAQ0H,GAClC,GAAqB,IAAjBA,EAAM3I,OACN,OAAO2I,EAEX,IAAIC,EAEAA,EADqB,SAArB3H,EAAO4H,WACC,IAAIC,SAAQC,OAAO9H,EAAO8H,OAAQ9H,EAAO4H,UAAUjC,eAAe,GAAMoC,MAAM,WAG9E,IAAIF,SAAQE,MAAM,UAG9B,IAAIC,EAAQ,IAAIC,cAAYP,GAAOQ,aAAaP,GAChD,OAAO7J,WAAS,UAAWkK,GAY/B,SAAgBG,EAAUnI,EAAQC,EAAK0B,GAEnC,IAAIyG,EAAYtK,WAASkC,EAAOzB,OAAOyB,EAAOzB,OAAOQ,OAAS,GAAIiB,EAAOqI,SACrEV,GAAQ,IAAIE,SAAQS,MAAMrI,EAAK,QAAS0B,GAG5C,OADY,IAAIsG,cAAYG,GAAWF,aAAaP,GACvC,GAWjB,SAAgBY,EAAmBvI,EAAQrB,EAASkE,GAChD,IAAI2F,EACAC,EAAgBhJ,SAAO,IAAMO,EAAOrB,QAAQZ,GAAK2K,GAAe1I,EAAOrB,SACvEgK,EAAmBlJ,SAAO,IAAMO,EAAOrB,QAAQZ,GAAK6K,GAAsBH,GAAeI,aAK7F,GAJAL,EAAMC,EAAcI,aAAeF,EACf,YAAhB3I,EAAOoE,OACPoE,GAAY/I,SAAO,IAAMqJ,GAAiBL,GAAeI,cAEzD3K,oBAAMS,EAAQoK,cAAc,IAAMC,KAAa,CAC/C,IAAIC,EAAWC,gBAAc,OAASC,UAAWH,KAC7CI,EAAcF,gBAAc,OAASC,UAAWE,KAChDC,EAAWJ,gBAAc,OAASC,UAAWI,KAC7CC,EAAWN,gBAAc,OAASC,UAAWM,KAC7B,YAAhBzJ,EAAOoE,KACPzF,EAAQoK,cAAc,IAAMW,IAAeC,YAAYV,GAGvDtK,EAAQgL,YAAYV,GAExBA,EAASU,YAAYP,GACrBH,EAASU,YAAYL,GACrBL,EAASU,YAAYH,GAErB7K,EAAQoK,cAAc,IAAMC,MACvB9K,oBAAM2E,EAAK+G,OAIP5J,EAAO4B,YACZjD,EAAQoK,cAAc,IAAMQ,IAAmBM,UAAYC,EAAc9J,EAAQ,gBACjFrB,EAAQoK,cAAc,IAAMU,IAAyBI,UAAYC,EAAc9J,EAAQ,eAE3B,KAAvDA,EAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAClDhD,EAAQoK,cAAc,IAAMQ,IAAmBM,UAAYC,EAAc9J,EAAQ,gBACjFrB,EAAQoK,cAAc,IAAMU,IAAyBI,UAAYC,EAAc9J,EAAQ,gBAGvFrB,EAAQoK,cAAc,IAAMQ,IAAmBM,UAAYC,EAAc9J,EAAQ,gBACjFrB,EAAQoK,cAAc,IAAMU,IAAyBI,UAAYC,EAAc9J,EAAQ,iBAbvFrB,EAAQoK,cAAc,IAAMQ,IAAmBM,UAAYC,EAAc9J,EAAQ,iBACjFrB,EAAQoK,cAAc,IAAMU,IAAyBI,UAAYC,EAAc9J,EAAQ,oBAe/F,IAAI+J,EAAOtK,SAAO,IAAMuJ,GAAWrK,GACnC6J,GAAOA,EAAMuB,EAAKlB,cAAgB,EAClCkB,EAAKC,MAAMC,UAAYzB,EAAM,KAUjC,SAAgB0B,EAAevG,GAC3B,OAAO,IAAIsE,cAAYtE,GAAOuE,cAAa,IAAIL,SAAQS,MAAM6B,GAAe,SAAS,GAAO,IAUhG,SAAgBC,EAAUC,EAAQC,GAG9B,IAAK,IADDC,EAAOL,EAAeG,EAAO1G,OACxB7E,EAAI,EAAG0L,EAAMD,EAAKxL,OAAQD,EAAI0L,EAAK1L,IACxC2L,WAAS,SAAUH,EAAS,IAAMxL,EAAGyL,EAAKzL,IAWlD,SAAgB4L,EAAc7H,EAAM8H,EAAcC,GAC9C,IAAK,IAAI9L,EAAI,EAAGA,EAAI+D,EAAK9D,OAAQD,IAAK,CAClC,IAAI+L,EAAc,IAAI5D,KAAKnJ,WAAS,cAAe+E,EAAK/D,KACpDgM,EAAe,IAAI7D,KAAKnJ,WAAS,eAAgB+E,EAAK/D,KACtDZ,oBAAM0M,KACNA,EAAa,cAEjBH,WAAS,cAAeE,EAAaI,WAAWF,GAAeG,OAAQJ,IAAe/H,EAAK/D,IAC3F2L,WAAS,eAAgBE,EAAaI,WAAWD,GAAgBE,OAAQJ,IAAe/H,EAAK/D,KAWrG,SAAgBgL,EAAc9J,EAAQnC,GAClC,IAAIoN,EAASjL,EAAOkL,UAAUC,YAAYtN,GAC1C,MAAmB,KAAXoN,EAAiBpN,EAAOoN,EAUpC,SAAgBG,EAAYpL,EAAQqL,GAChC,IAAIC,EAAWtL,EAAOsL,SAEtB,OADAA,EAAYpN,oBAAMoN,IAA0B,KAAbA,EAAmBD,EAAOC,EAAW,IAAMD,EAW9E,SAAgBE,EAAmBvL,EAAQ6C,GAEvC7C,EAAO0D,iBAAkB,GACkB,IAAvCb,EAAKsD,KAAKpI,GAAG6H,QAAQ,eAA+D,IAAxC/C,EAAKsD,KAAKpI,GAAG6H,QAAQ,gBAA0D,IAAlC/C,EAAKsD,KAAKpI,GAAG6H,QAAQ,QAU9G5F,EAAO4H,UAAY4D,EAAa3I,EAAKsD,KAAKpI,IAH1CiC,EAAO8H,OAAS0D,EAAa3I,EAAKsD,KAAKpI,GAAIiC,GAK/CA,EAAOgD,UAAYC,EAAcjD,IACb,YAAhBA,EAAOoE,OACHpE,EAAOyL,SACPtH,EAAanE,EAAQ,YAGrBA,EAAOU,OAAOgL,IAAqBC,OAAQ,gBAC3C3L,EAAO0D,iBAAkB,IAGb,eAAhB1D,EAAOoE,MACPD,EAAanE,EAAQ,cAEzBA,EAAOU,OAAOkL,OASlB,SAAgBJ,EAAazN,EAAIiC,GAC7B,IAEI6L,EAFAhO,EAAOE,EAAG+N,UAAU/N,EAAGgO,YAAY,KAAO,GAC1CC,EAAQnO,EAKZ,OAHImC,IACA6L,EAAS7L,EAAOiM,oBAAoBC,SAEhCrO,GACJ,IAAK,OACD,IAAK,IAAIiB,EAAI,EAAG0L,EAAMqB,EAAO9M,OAAQD,EAAI0L,EAAK1L,IAAK,CAC/C,GAAwB,iBAApB+M,EAAO/M,GAAGkN,OAAgD,gBAApBH,EAAO/M,GAAGkN,MAAyB,CACzEA,EAAQH,EAAO/M,GAAGkN,MAClB,MAGAA,EAAQ,eAGhB,MACJ,IAAK,YACDA,EAAQ,YACR,MACJ,IAAK,aACDA,EAAQ,aACR,MACJ,IAAK,OACDA,EAAQ,OAGhB,OAAOA,EAUX,SAAgBG,EAAYnM,EAAQ5B,GAMhC,IAAK,IALDgO,EAAchO,EAAKyH,MAAM,KACzBwG,EAAUrM,EAAOsM,aAAazG,MAAM,KAEpC0G,EAAOzO,WAASkC,EAAOzB,OAAO,GAAIyB,EAAOG,UACzCF,EAAM/B,oBAAMJ,WAAS,KAAMyO,IAAS,OAAS,KACxCzN,EAAIsN,EAAYrN,OAAS,EAAGyL,EAAM6B,EAAQtN,OAAS,EAAGD,EAAI0L,EAAK1L,IAAK,CACzE,IAAI0N,EAAgC,KAAnBH,EAAQvN,EAAI,GAAa2N,GAAqBC,GAC3DxM,EAA0B,KAAfmM,EAAQvN,GAAa,IAAOkB,EAAO5B,KAAOiO,EAAQvN,GAAK,IAElEnB,EAAOwK,EAAUnI,EAAQC,EAAKoM,EAAQvN,IAC1C,GAAK6N,oBAAkBhP,GAQnBqC,EAAOsM,aAAepM,MARI,CAC1B,IAAInC,EAAKD,WAAS,SAAUH,GAC5BqC,EAAO7B,eAAgBC,KAAM8B,IAAW,GACxCF,EAAOzB,OAAOU,KAAKlB,GACnBiC,EAAOgD,UAAYrF,GACnBqC,EAAOvB,UAAUQ,KAAKnB,WAAS,OAAQH,IAK3CuG,GAAKlE,EAAQwM,EAAWxM,EAAO5B,MAC/B,OAYR,SAAgBwO,EAAiB5M,EAAQrC,GACrCqC,EAAOsM,aAAejF,EAAYrH,EAAQrC,EAAMqC,EAAO5B,MACvD,IAAImO,EAAOzO,WAASkC,EAAOzB,OAAO,GAAIyB,EAAOG,UACzC0M,EAAmD,WAA1C/O,WAAS,SAAUkC,EAAOgD,SAAS,IAE5C8J,EAAa3E,EAAUnI,EADjB9B,oBAAMJ,WAAS,KAAMyO,IAAS,OAAS,KACTzO,WAAS,OAAQH,IACzD,GAAIgP,oBAAkBG,GAAa,CAC/B,GAAKD,EAKD,YADAV,EAAYnM,EAAQA,EAAO5B,MAH3B4B,EAAOU,OAAOqM,IAAwBC,aAAchN,EAAOzB,OAAOyB,EAAOzB,OAAOQ,OAAS,SAO5F,CACD,IAAIhB,EAAKD,WAAS,SAAUgP,GAC5B9M,EAAO7B,eAAgBC,KAAM4B,EAAOsM,eAAgB,GACpDtM,EAAOzB,OAAOU,KAAKlB,GACnBiC,EAAOgD,UAAY8J,GACnB9M,EAAOvB,UAAUQ,KAAKnB,WAAS,OAAQgP,IAE3C5I,GAAKlE,EAASA,EAAO5B,OAAS4B,EAAOsM,aAAgBI,GAAoBD,GAAoBzM,EAAO5B,MASxG,SAAgB6O,EAAajN,GAEzB,GADAA,EAAOkN,YAAa,EACgB,IAAhClN,EAAOO,cAAcxB,QAAgBiB,EAAOS,YAAa,CACzD,IAAIrC,EAA8B,KAAtB4B,EAAOmN,WAAqBnN,EAAO5B,KAAO4B,EAAOmN,WAG7D,IADgBC,EAAkBpN,EAAQA,EAAOQ,cAAepC,EAAM4B,EAAO5B,MAEzE,GAA2B,SAAtB4B,EAAOqF,YAAyBrF,EAAOmB,aAAe/C,GAA+B,SAAtB4B,EAAOqF,WACvErF,EAAOU,OAAO2M,OACdC,GAAMtN,EAAQA,EAAOmB,WAAYnB,EAAOO,cAAenC,EAAM4B,EAAOqF,cAAgBrF,EAAOQ,mBAE1F,CACDR,EAAOS,aAAc,EACrBT,EAAOU,OAAOC,OACdL,EAAWN,GASXuN,GAAavN,EAAQ,SAPjB2D,MAAO,KACPiG,OACI4D,KAAM,MACNC,QAAS3D,EAAc9J,EAAQ,qBAC/B0N,WAAY,UAmBpC,SAAgBN,EAAkBpN,EAAQrC,EAAMgQ,EAAUC,GAEtD,IAAK,IADDC,GAAY,EACP/O,EAAI,EAAGA,EAAInB,EAAKoB,OAAQD,IAC7B,GAAKhB,WAAS,SAAUH,EAAKmB,IAgBxB,CACD,IAAIgP,EAAU9N,EAAO+N,UAAUjP,GAC3B0L,EAAM,EACNsD,IACAtD,EAAMsD,EAAQ/B,YAAY,MAE9B,IAAI3N,EAAO,GAIX,GAHIoM,EAAM,IACNpM,EAAOwP,EAAWE,EAAQhC,UAAU,EAAGtB,EAAM,IAE7CpM,IAASuP,EAAU,CASnBJ,GAAavN,EAAQ,SAPjB2D,MAAO,KACPiG,OACI4D,KAAM,MACNC,QAAS3D,EAAc9J,EAAQ,qBAC/B0N,WAAY,QAIpBG,GAAY,EACZ,WArC0B,CAC9B,IAAIG,EAAa3G,EAAYrH,EAAQrC,EAAKmB,GAAI8O,GAC9C,GAAqC,IAAjCD,EAAS/H,QAAQoI,GAAmB,CASpCT,GAAavN,EAAQ,SAPjB2D,MAAO,KACPiG,OACI4D,KAAM,MACNC,QAAS3D,EAAc9J,EAAQ,oBAC/B0N,WAAY,QAIpBG,GAAY,EACZ,OA4BZ,OAAOA,EASX,SAAgBI,EAAYjO,GAExB,GADAA,EAAOkN,YAAa,EACW,IAA3BlN,EAAOkO,SAASnP,OAAc,CAC9BiB,EAAO4N,SAAW5N,EAAO4N,SAAS/G,QAAQ,MAAO,KACjD7G,EAAO2N,SAAW3N,EAAO2N,SAAS9G,QAAQ,MAAO,KACjCuG,EAAkBpN,EAAQA,EAAOkO,SAAUlO,EAAO2N,SAAU3N,EAAO4N,WAChE5N,EAAO4N,WAAa5N,EAAO2N,WAC1C3N,EAAOgD,UAAYhD,EAAOmO,UAC1Bb,GAAMtN,EAAQA,EAAO4N,SAAU5N,EAAO+N,UAAW/N,EAAO2N,SAAU,UAAY3N,EAAOkO,UACrFlO,EAAOU,OAAO2M,SAW1B,SAAgBjM,EAAcgN,GAG1B,IAAK,IAFDhQ,EAAOgQ,EAAQvI,MAAM,KACrB3F,EAAU9B,EAAK,GAAK,IACfU,EAAI,EAAGA,EAAIV,EAAKW,OAAS,EAAGD,IACjCoB,GAAW9B,EAAKU,GAAK,IAEzB,OAAOoB,EAUX,SAAgBmO,EAAiBrO,EAAQ6C,GACrC,IAAIyE,EAAWxJ,WAASkC,EAAO1B,MAAQ,KAAO,OAAQuE,EAAKyL,KAAO,IAC9D3H,EAAQ7I,WAASkC,EAAO1B,MAAQ,WAAa,aAAcuE,EAAKyL,KACpE,OAAKpQ,oBAAMyI,GAOA3G,EAAO5B,KAAOkJ,EANP,KAAVX,EACO3G,EAAO1B,MAAQgJ,EAAW,IAE9BX,EAAME,QAAQ,MAAO,KAAOS,EAe3C,SAAgBiH,EAAcvO,EAAQwO,EAAWnE,GAC3B,SAAdmE,IACKxO,EAAOkN,WAMRlN,EAAOU,OAAO+N,GAAgBpE,IAL9BrK,EAAOS,aAAc,EACrBT,EAAOU,OAAOC,OACdX,EAAOU,OAAOgO,GAAerE,KAMA,IAAjCrK,EAAO2O,eAAe5P,SACtBiB,EAAO4O,eAGX,IAAK,IAAIC,EAAQ,EAAIA,EAAQxE,EAAO1G,MAAM5E,OAAkB8P,IACxD7O,EAAO4O,WAAW3P,KAAKoL,EAAO1G,MAAMkL,GAAO7O,EAAO1B,MAAQ,KAAO,SAC7D0B,EAAOkN,YACPlN,EAAO8O,eAAe7P,KAAKoL,EAAO1G,MAAMkL,IAGhD7O,EAAO2O,kBACP3O,EAAO+O,oBACH/O,EAAOkN,aAAelN,EAAOgP,aAC7BhP,EAAOiP,WAAY,EAGnBjP,EAAOiP,WAAY,GAElBjP,EAAOkN,YAAelN,EAAO5B,OAAS4B,EAAO4N,UAAc5N,EAAO5B,OAAS4B,EAAO2N,UAChF3N,EAAOkP,cACVlP,EAAOmP,YAAa,EACpBjL,GAAKlE,EAAQoP,GAAiBpP,EAAO5B,OAGrCiR,EAAarP,GAEjBA,EAAOoH,QAAQ,WAAavG,OAAQ2N,EAAWnE,OAAQA,IAS3D,SAAgBgF,EAAarP,GACzB,IAAIzB,EAAST,WAAS,SAAUkC,EAAOmO,UAGvC,GAFAnO,EAAOsP,WAAa/Q,EACpByB,EAAOgD,UAAYhD,EAAOmO,UACtBnO,EAAOmP,WACPnP,EAAOU,OAAO6O,GAAiBvP,EAAOgD,cAErC,CACD,GAAIhD,EAAOwP,qBAAsB,CAC7B,IAAI9R,EAAO+B,SAAO,cAAgBlB,EAAS,KAAMyB,EAAOwP,qBAAqBC,QAAQ9Q,SACrF,IAAKjB,EAAM,CAEPa,EADgBmR,SAAS3G,cAAc,eAAiBjL,WAAS,KAAMkC,EAAOmO,UAAY,MACvEnQ,aAAa,YAChCN,EAAO+B,SAAO,cAAgBlB,EAAS,KAAMyB,EAAOwP,qBAAqBC,QAAQ9Q,SAErFlB,EAAWC,EAAMsC,EAAOmO,SAAUnO,GAEtCkE,GAAKlE,EAAQ2P,GAAiB3P,EAAO2N,WAY7C,SAAgBiC,EAAiB5P,EAAQwH,GAKrC,IAAK,IAHD7J,EAAO,KAEPkS,EAAU7P,EAAOkN,WAAalN,EAAOkO,SAAWlO,EAAOQ,cAClD1B,EAAI,EAAGA,EAAI+Q,EAAQ9Q,OAAQD,IAChC,GAAIhB,WAAS,OAAQ+R,EAAQ/Q,MAAQ0I,EAAM,CACvC7J,EAAOkS,EAAQ/Q,GACf,MAGR,OAAOnB,EASX,SAAgBmS,GAAyB9P,GAKrC,GAJAA,EAAOkP,cAAe,EACqC,KAAvDlP,EAAOyB,oBAAoBC,UAAU/C,QAAQgD,QAC7C3B,EAAOkP,cAAe,GAEE,mBAAxBlP,EAAOkB,aAAmC,CAC1ClB,EAAO+N,aAEP,IADA,IAAIjP,EAAI,EACDA,EAAIkB,EAAO8B,cAAc/C,QAC5BiB,EAAO+N,UAAU9O,KAAKe,EAAO8B,cAAchD,IAC3CA,IAEgC,IAAhCkB,EAAO8B,cAAc/C,QAAgBiB,EAAOkO,UAAuC,IAA3BlO,EAAOkO,SAASnP,QACxEiB,EAAO+N,UAAU9O,KAAK8Q,GAAY/P,EAAQA,EAAOkO,SAAS,KAGlE,IAAI8B,EAAYhQ,EAAOkJ,cAAc,OACjCC,UAAW,aAAe5D,EAASvF,EAAOkO,SAAS,MAEnD+B,EAAYjQ,EAAOkJ,cAAc,OACjCC,UAAW,YACXU,UAAW7J,EAAOkO,SAAS,GAAG1G,OAE9B0I,EAAalQ,EAAOkJ,cAAc,OAClCC,UAAW,iBAEf+G,EAAWvG,YAAYqG,GACvBE,EAAWvG,YAAYsG,GACvB,IAAIE,EAAMnQ,EAAOkJ,cAAc,OAC3BC,UAAWiH,KAGf,GADAD,EAAIxG,YAAYuG,GACZlQ,EAAO+N,UAAUhP,OAAS,EAAG,CAC7B,IAAIsR,EAAQrQ,EAAOkJ,cAAc,QAC7BC,UAAW,aACXU,UAAY7J,EAAO+N,UAAgB,OAAE5G,SAAS,MAElDgJ,EAAIxG,YAAY0G,GAEpBrQ,EAAOsQ,mBAAqBH,EAC5BnQ,EAAOrB,QAAQgL,YAAY3J,EAAOsQ,oBAUtC,SAAgBC,GAAgBvQ,EAAQ6C,GACpC,IAAI2N,EAAW3N,EACf2N,EAASC,QAAS,EACY,MAA1BzQ,EAAO0Q,kBACPC,OAAOC,aAAa5Q,EAAO0Q,iBAC3B1Q,EAAO0Q,gBAAkB,MAE7BG,GAAiB7Q,GACjBA,EAAOrB,QAAQiB,UAAUyC,OAAO,YAAa,aAC7C/B,EAAWN,GACXA,EAAO8Q,UAAUC,SAAWtR,SAAO,IAAMO,EAAOrB,QAAQZ,GAAKiT,GAAgBhR,EAAOrB,SACpF,IAAIuR,EAAazQ,SAAO,IAAM2Q,GAAWpQ,EAAOrB,SAC5CuR,GACAe,SAAOf,GAEX5L,EAAgBtE,EAAQ6C,EAAKqO,QAC7BlR,EAAOU,OAAOyQ,GAAiBtO,GAC/BvC,EAAWN,EAAQ,SACnBwQ,EAASzJ,YAAc/G,EAAOkO,SAC9BlO,EAAOoH,QAAQ,eAAgBoJ,EAAU,SAAUA,IAC1CA,EAASC,SAAWvS,oBAAM8B,EAAO4E,eAAyC,KAAxB5E,EAAO4E,cAAuB5E,EAAOoR,UAAY,GACpGnD,EAAYjO,GAEhBA,EAAOoR,UAAY,IAY3B,SAAgBC,GAAiBrR,EAAQ6C,EAAMyO,GAC3C,IAAId,EAAW3N,EAiBf,GAhBA2N,EAASC,QAAS,EAClBD,EAASzJ,YAAc/G,EAAOkO,SAC9BlO,EAAOoR,UAAY,EACnBpR,EAAO8O,oBACF9O,EAAOuR,kBAA8C,mBAAxBvR,EAAOkB,cACpCqB,UAAQM,EAAKlE,QAAS,MAAMX,aAAa,cAAgBgC,EAAOzB,OAAO,MACxEiS,EAASC,QAAS,GAEO,mBAAxBzQ,EAAOkB,eAC0E,IAAjFlB,EAAOzB,OAAOqH,QAAQrD,UAAQM,EAAKlE,QAAS,MAAMX,aAAa,aAChEgC,EAAOmP,YAAa,EAGpBnP,EAAOmP,YAAa,EAExB7O,EAAWN,GACPwQ,EAASC,OACTa,EAAQE,WAAW3O,EAAK4O,OACxBC,GAAW1R,QAEV,IAAKwQ,EAASC,OAAQ,CAEvB,IADA,IAAI3R,EAAI,EACDA,EAAIkB,EAAOe,eAAehC,QAC7BuC,EAAQtB,EAAOe,eAAejC,IAC9BA,IAEJkB,EAAOoH,QAAQ,gBAAiBoJ,EAAU,SAAUA,GAC5CA,EAASC,QACTa,EAAQE,WAAW3O,EAAK4O,OACxBC,GAAW1R,IAGXA,EAAO8Q,UAAUC,SAAW,QAY5C,SAAgBW,GAAW1R,GACvBM,EAAWN,GACX,IAAIkQ,EAAazQ,SAAO,IAAM2Q,GAAWpQ,EAAOrB,SAC5CuR,GACAe,SAAOf,GAUf,SAAgBW,GAAiB7Q,GAC7B2R,GAAgB3R,EAAQ4R,IACxBD,GAAgB3R,EAAQ6R,IAU5B,SAAgBF,GAAgB3R,EAAQ2B,GAEpC,IAAK,IADDwO,EAAMnQ,EAAOrB,QAAQwD,iBAAiB,IAAMR,GACvC7C,EAAI,EAAGA,EAAIqR,EAAIpR,OAAQD,IAC5BqR,EAAIrR,GAAGc,UAAUyC,OAAOV,GAchC,SAAgBmQ,GAAcC,EAAc/R,EAAQgS,EAAWC,EAASC,GACpE,IAAIC,EACAC,EAAcL,EAAaM,wBAC3B3U,EAAO+B,SAAO,IAAMuS,EAAWD,GAC9BE,GAAYG,EAAY5J,IAAMuJ,EAAaO,aAAe,KAAS3F,oBAAkBjP,KACtFyU,EAAoC,mBAAxBnS,EAAO4E,cAA6D,gBAAxB5E,EAAO4E,aAAkClH,EAAKmL,aAAe,IAAMnL,EAAKmL,aAAe,IAC/IkJ,EAAaQ,SAAS,EAAGJ,KAExBxF,oBAAkBjP,IAAUwU,GAAYE,EAAY5J,IAAM,KAC3D2J,EAAoC,mBAAxBnS,EAAO4E,cAA6D,gBAAxB5E,EAAO4E,aAAkClH,EAAKmL,aAAe,IAAMnL,EAAKmL,aAAe,IAC/IkJ,EAAaQ,SAAS,GAAIJ,IAWlC,SAAgBK,GAAgBxS,EAAQ6C,GACpC,IAAI2N,EAAW3N,EACf2N,EAASzJ,YAAc/G,EAAOkO,SAC9B,IAAIuE,GAAU,EACdnO,EAAgBtE,EAAQ6C,EAAKqO,QAC7BL,GAAiB7Q,GACa,MAA1BA,EAAO0Q,kBACPC,OAAOC,aAAa5Q,EAAO0Q,iBAC3B1Q,EAAO0Q,gBAAkB,MAE7BpQ,EAAWN,EAAQ,SACnB,IAAItC,EAAO,KAEiB,mBAAxBsC,EAAO4E,eACPlH,EAAO6E,UAAQM,EAAKqO,OAAQ,OACvBtR,UAAUoC,IAAII,GAAWwP,IAC9Ba,GAAU,EAEVzS,EAAO0Q,gBAAkBC,OAAO+B,WAAW,WAAc1S,EAAOU,OAAOiS,GAAiB9P,IAAU,KAElGiP,GADe9R,EAAOwP,qBAAqBC,QAAQ9Q,QAAQiU,cAC/B5S,EAAQ,YAAa6C,EAAK4O,MAAMQ,QAASpP,EAAK4O,MAAMoB,IAEnD,gBAAxB7S,EAAO4E,eACZlH,EAAO6E,UAAQM,EAAKqO,OAAQ,QAChBxT,EAAKqL,cAAc,IAAMtD,MAAgB/H,EAAKkC,UAAUC,SAASoC,IACzEvE,EAAKkC,UAAUoC,IAAI4P,KAEdlU,GAASA,EAAKqL,cAAc,IAAMtD,KAAgB/H,EAAKkC,UAAUC,SAASoC,KAC/EvE,EAAKkC,UAAUoC,IAAI6P,IAEvBY,GAAU,EAEVX,GADe9R,EAAO6D,kBAAkBC,QAAQnF,QAAQoK,cAAc,cAC1C/I,EAAQ,QAAS6C,EAAK4O,MAAMQ,QAASpP,EAAK4O,MAAMoB,IAE/C,mBAAxB7S,EAAO4E,eACZlH,EAAO6E,UAAQM,EAAKqO,OAAQ,QAChBxT,EAAKqL,cAAc,IAAMtD,MAAgB/H,EAAKkC,UAAUC,SAASoC,KACzEvE,EAAKkC,UAAUoC,IAAII,GAAWwP,IAElCa,GAAU,EAEVX,GADe9R,EAAOgE,qBAAqBrF,QAAQmU,kBACvB9S,EAAQ,eAAgB6C,EAAK4O,MAAMQ,QAASpP,EAAK4O,MAAMoB,IAGtD,kBAAxB7S,EAAO4E,eACZ6N,GAAU,GAEdzS,EAAOrB,QAAQiB,UAAUyC,OAAO,YAAa,aAC7CrC,EAAOrB,QAAQiB,UAAUoC,IAAIyQ,EAAU,YAAc,aACrDzS,EAAOoR,UAAYpR,EAAOoR,UAAY,EACtCpR,EAAOoH,QAAQ,eAAgBoJ,GAWnC,SAAgBuC,GAAepV,GAG3B,IAAK,IAFDqV,EAAM,GACNC,EAAOC,OAAOD,KAAKtV,GACdmB,EAAI,EAAGA,EAAImU,EAAKlU,OAAQD,IACb,YAAZmU,EAAKnU,KACLkU,IAAc,IAANlU,EAAU,GAAK,MAAQmU,EAAKnU,GAAK,KAAOhB,WAASmV,EAAKnU,GAAInB,IAG1E,OAAOqV,EAWX,SAAgBjD,GAAY/P,EAAQrC,GAChC,OAAIqC,EAAO1B,MACAR,WAAS,KAAMH,GAEnB4J,EAAQvH,EAAQrC,GAW3B,SAAgBwV,GAAmBnT,EAAQrC,GACvCqC,EAAOgD,UAAYrF,GACnBqC,EAAOoT,gBAAkBtV,WAAS,OAAQH,GAC1CqC,EAAOqT,OAASvV,WAAS,SAAUH,GACnCqC,EAAOsT,WAAaxV,WAAS,aAAcH,GAS/C,SAAgB4V,GAASvT,GAChBwT,GAAcxT,EAAOgD,SAAS,IAI/BuK,GAAavN,EAAQ,UAHrBgF,GAAmBhF,EAAQA,EAAOgD,SAAS,GAAIyQ,IAcvD,SAAgBC,GAAW1T,GAGvB,IAAK,IADD0H,EAAQ1H,EAAOgD,SACVlE,EAAI,EAAGA,EAAI4I,EAAM3I,OAAQD,IAC9B,IAAK6U,GAAkBjM,EAAM5I,IAEzB,YADAkG,GAAmBhF,EAAQ0H,EAAM5I,GAAI8U,IAIzC5T,EAAO8B,cAAc/C,OAAS,GAC9B8U,GAAS7T,EAAQA,EAAO5B,KAAM4B,EAAO8B,eAa7C,SAAgBgS,GAAc9T,EAAQrC,EAAMoW,GACxC,IAAK,IAAIjV,EAAI,EAAGA,EAAInB,EAAKoB,OAAQD,IAC7B,IAAK0U,GAAc7V,EAAKmB,IAEpB,YADAkG,GAAmBhF,EAAQrC,EAAKmB,GAAI2U,IAI5CzT,EAAOgD,SAAWrF,EAClBqW,GAAOhU,EAAQ+T,EAAQ/T,EAAO5B,KAAM,UAaxC,SAAgB6V,GAAgBjU,EAAQrC,EAAMoW,GAC1C,IAAK,IAAIjV,EAAI,EAAGA,EAAInB,EAAKoB,OAAQD,IAC7B,IAAK6U,GAAkBhW,EAAKmB,IAExB,YADAkG,GAAmBhF,EAAQrC,EAAKmB,GAAI8U,IAI5C5T,EAAOgD,SAAWrF,EACdoW,EAAOhV,OAAS,GAChB8U,GAAS7T,EAAQA,EAAO5B,KAAM2V,GAatC,SAAgB/O,GAAmBhF,EAAQrC,EAAMkD,GAC7C,IAAI4M,EAAU3P,WAAS,UAAWA,WAAS,aAAcH,IACzC,KAAZ8P,IACAA,EAAU3D,EAAc9J,EAAQ,kBAAkB6G,QAAQ,MAAO/I,WAAS,OAAQH,IAAOkJ,QAAQ,MAAOhG,IAS5G0M,GAAavN,EAAQ,SANjB4J,OACI4D,KAAM,MACNE,WAAY,KACZD,QAASA,KAarB,SAAgByG,GAAevW,GAC3B,OAAQmH,GAAcnH,GAAoC,cAA5B,0BAUlC,SAAgBmH,GAAcnH,GAE1B,IAAIwW,EAAarW,WAAS,aAAcH,GACxC,QAAQwW,IAAerW,WAAS,OAAQqW,IAU5C,SAAgBX,GAAc7V,GAE1B,IAAIwW,EAAarW,WAAS,aAAcH,GACxC,OAAOwW,GAAerW,WAAS,OAAQqW,IAAerW,WAAS,QAASqW,GAU5E,SAAgBC,GAAiBzW,GAE7B,IAAIwW,EAAarW,WAAS,aAAcH,GACxC,OAAOwW,GAAerW,WAAS,OAAQqW,IAAerW,WAAS,gBAAiBqW,GAUpF,SAAgBE,GAAgB1W,GAE5B,IAAIwW,EAAarW,WAAS,aAAcH,GACxC,OAAOwW,GAAerW,WAAS,OAAQqW,IAAerW,WAAS,SAAUqW,GAU7E,SAAgBR,GAAkBhW,GAE9B,IAAIwW,EAAarW,WAAS,aAAcH,GACxC,OAAOwW,GAAerW,WAAS,OAAQqW,IAAerW,WAAS,WAAYqW,GAS/E,SAAgBG,GAAgBtU,GAE5B,IAAIuU,EAAUvU,EAAOgD,SAAS,GACzBoR,GAAiBG,GAIlBhH,GAAavN,EAAQ,aAHrBgF,GAAmBhF,EAAQuU,EAASC,IAa5C,SAAgBC,GAAWzU,GAEvB,IAAIuU,EAAUvU,EAAOgD,SAAS,GAC9B,GAAKqR,GAAgBE,GAGhB,CACD,IAAIG,EAAQ,IAAM1U,EAAOrB,QAAQZ,GAAK4W,GACtBjF,SAAS3G,cAAc2L,GAC7BE,aALV5P,GAAmBhF,EAAQuU,EAASM,IC7jD5C,SAAgB3Q,GAAKlE,EAAQyR,EAAOrT,GAGhC,IAAK,IADD4E,EAAWhD,EAAOgD,SACblE,EAAI,EAAGA,EAAIkE,EAASjE,OAAQD,IAC7BZ,oBAAMJ,WAAS,WAAYkF,EAASlE,MACpC2L,WAAS,YAAY,EAAOzH,EAASlE,IAK7CgW,GAAW9U,GADEa,OAAQ,OAAQzC,KAAMA,EAAMiF,gBAAiBrD,EAAOqD,gBAAiB1F,KAAMqF,GAC/D+R,GAAatD,GAU1C,SAAgBuD,GAAahV,EAAQiV,GAGjCH,GAAW9U,GADEa,OAAQ,SAAUzC,KAAM4B,EAAO5B,KAAMoJ,KAAMyN,EAAUtX,KAAMqC,EAAOgD,UACtDkS,GAAeD,GAU5C,SAAgBxR,GAAOzD,EAAQyR,GAE3B,IAAI9T,GAASkD,OAAQ,SAAUzC,KAAM4B,EAAO5B,KAAMiF,gBAAiBrD,EAAOqD,gBAAiB1F,MAAOsF,EAAcjD,KAI5GmV,EAAgBnV,EAAOoV,WAAaC,cAFpCD,EAEuDzX,EAAMqC,EAAOoV,YAAczX,EACtFmX,GAAW9U,EAAQmV,EAAeG,GAAe7D,EAAO3T,WAAS,SAAUqX,IAW/E,SAAgBI,GAAOvV,EAAQ5B,EAAMoX,GACjC,IAAIhO,EACAiO,EACJ,GAA2D,KAAvDzV,EAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAAiB3B,EAAO4B,WAIpE,CACD,IAAI+E,EAAQ3G,EAAOsT,WACftT,EAAO1B,OACPkJ,EAAOxH,EAAOoT,gBACdqC,EAAUD,IAIVhO,GADAb,EAAQA,EAAME,QAAQ,MAAO,MAChBA,QAAQzI,EAAM,IAAM4B,EAAOoT,gBACxCqC,EAAU9O,EAAME,QAAQzI,EAAM,IAAMoX,QAZxChO,EAAOxH,EAAOoT,gBACdqC,EAAUD,EAkBdV,GAAW9U,GAFPa,OAAQ,SAAUzC,KAAMA,EAAMoJ,KAAMA,EAAMiO,QAASA,EAAS9X,KAAMqC,EAAOgD,SAAU0S,kBAAmB1V,EAAO0V,mBAExFC,GAAevX,GAe5C,SAAgBkP,GAAMtN,EAAQ5B,EAAMc,EAAOiC,EAAYyU,EAEvDC,EAAarV,GAET,IAAI7C,GACAkD,OAAQ+U,EAAgBxX,KAAMA,EAAM0X,WAAY9V,EAAOgD,SAAS,GAChE7B,WAAYA,EAAYjC,MAAOA,EAAO6W,YAAaF,EAAalY,KAAM6C,GAE1ER,EAAOgW,gBAAkB7U,EACzB2T,GAAW9U,EAAQrC,EAAMsY,GAAc7X,EAAMwX,EAAgBzU,GAYjE,SAAgB6S,GAAOhU,EAAQ0H,EAAOtJ,EAAMoQ,GAGxCsG,GAAW9U,GADEa,OAAQ2N,EAAWpQ,KAAMA,EAAMc,MAAOwI,EAAO/J,KAAMqC,EAAOgD,UAC9CkT,GAAe9X,GAa5C,SAAgB+X,GAAWnW,EAAQd,EAAOd,EAAMoQ,GAG5CsG,GAAW9U,GADEa,OAAQ2N,EAAWpQ,KAAMA,EAAMc,MAAOA,EAAOvB,KAAMqC,EAAOgD,UAC9CoT,GAAgBhY,EAAMoQ,GA2BnD,SAASsG,GAET9U,EAAQrC,EAAM0Y,EAAI5E,EAAOjD,EAAWrN,GAEhC,IAAImF,GACAC,IAAKvG,EAAOsG,aAAaC,IACzB+P,KAAM,OACNC,MAAM,EACNC,SAAU,OACVC,YAAa,mBACb9Y,KAAM+Y,KAAKC,UAAUhZ,GACrBiZ,UAAW,KACXC,UAAW,KACXC,WAAY,MAEZhQ,GAAcjG,OAAQ/C,WAAS,SAAUH,GAAO2I,aAAcA,EAAcmK,QAAQ,GACxFzQ,EAAOoH,QAAQ,aAAcN,EAAW,SAAUiQ,GAC9C,IAAKA,EAAetG,OAAQ,CACxBzQ,EAAOU,OAAOsW,OACH,IAAIC,QACX1Q,IAAKzI,WAAS,MAAOiZ,EAAezQ,cACpCgQ,KAAMxY,WAAS,OAAQiZ,EAAezQ,cACtCiQ,KAAMzY,WAAS,OAAQiZ,EAAezQ,cACtCkQ,SAAU1Y,WAAS,WAAYiZ,EAAezQ,cAC9CmQ,YAAa3Y,WAAS,cAAeiZ,EAAezQ,cACpD3I,KAAMG,WAAS,OAAQiZ,EAAezQ,cACtCwQ,WAAYhZ,WAAS,aAAciZ,EAAezQ,cAClDsQ,UAAW,SAAUvM,GACjB,GAAInM,oBAAMmM,GAAV,CACI,IAAI6M,GACAtN,OACI8D,WAAY,KACZD,QAAS3D,EAAc9J,EAAQ,gBAAkB,IAAMA,EAAOsG,aAAaC,IAC3EiH,KAAM,OAEV7J,MAAO,MAEXwT,GAAmBnX,EAAQ+W,EAAgBV,EAAIa,EAAUzF,EAAOjD,EAAWrN,OAT/E,CAYwB,qBACpBkJ,EAASqM,KAAKU,MAAM/M,IAExBrK,EAAOU,OAAO2W,IAAuBxW,OAAQ,YAC7C,IAAI9C,EAAKiC,EAAOsP,WAAatP,EAAOsP,WAAatP,EAAOzB,OAAOyB,EAAOzB,OAAOQ,OAAS,GACtF,IAAKb,oBAAMmM,EAAOiE,MAAsC,SAA7BxQ,WAAS,SAAUH,KAC1C0M,EAAOiE,IAAI9G,KAAiC,IAAzBxH,EAAOzB,OAAOQ,OAAiBiB,EAAOsX,eAAiBjN,EAAOiE,IAAI9G,KAAQ6C,EAAOiE,IAAI9G,KACxGiD,WAAS,SAAU1M,EAAIsM,EAAOiE,KAC9B7D,WAAS1M,EAAIsM,EAAOiE,IAAKtO,EAAOG,WAC3BjC,oBAAMmM,EAAO1G,QAAgC,QAAtB0G,EAAOT,MAAM4D,MAAgB,CACrD,IAAe,iBAAViE,GAAsC,gBAAVA,IAAwD,IAA5BzR,EAAOvB,UAAUM,OAAc,CAExF,IAAIwN,EAAOzO,WAASkC,EAAOzB,OAAO,GAAIyB,EAAOG,UAC7CH,EAAOvB,UAAU,GAAKX,WAAS,OAAQyO,GACvCvM,EAAO1B,OAASJ,oBAAMJ,WAAS,KAAMyO,IAE3B,iBAAVkF,GACA1R,EAAaC,GAIzB,IAAIuX,EAAO,IAAIC,uBAAqBxX,EAAOiL,QAC3C,IAAK/M,oBAAMmM,EAAO1G,OAAQ,CACtB+G,EAAcL,EAAO1G,MAAO4T,EA5EpD,SAAuBvX,GAGnB,IAAK,IADD4K,EADAsB,EAAUlM,EAAOiM,oBAAoBC,QAEhCpN,EAAI,EAAGA,EAAIoN,EAAQnN,OAAQD,IAChC,GAAyB,iBAArBoN,EAAQpN,GAAGkN,MAA0B,CAChC9N,oBAAMgO,EAAQpN,GAAGkM,UAClBJ,EAAasB,EAAQpN,GAAGkM,OAAO7D,YAEnC,MAGR,OAAOyD,EAiE+C6M,CAAczX,IAChD,IAAK,IAAIlB,EAAI,EAAG0L,EAAMH,EAAO1G,MAAM5E,OAAQD,EAAI0L,EAAK1L,IAAK,CAErD,IAAIqH,EAAOkE,EAAO1G,MAAM7E,GACxB2L,WAAS,gBAAiBlF,EAASY,GAAOA,GAEb,SAA7BrI,WAAS,SAAUH,KACnByM,EAAUC,EAAQtM,GAClB0M,WAAS1M,EAAIsM,EAAO1G,MAAO3D,EAAOqI,UAG1C,IAAKnK,oBAAMmM,EAAOkK,WAAarW,oBAAM8B,EAAOsX,eAAgB,CACxD,IAAII,EAAW1X,EAAOsX,eAAiBxZ,WAAS,OAAQuM,EAAOkK,SAC3DoD,EAAa7Z,WAAS,WAAYuM,EAAOkK,SAAS1N,QAAQ,IAAI+Q,OAAO,IAAK,KAAM,OACpD,MAA3B9Z,WAAS,OAAQH,IAAmBqC,EAAO1B,OAAyD,IAAhDR,WAAS,OAAQH,GAAMka,MAAM,QAAQ9Y,SACnD,IAAnCjB,WAAS,QAASH,GAAMoB,QACxB0L,WAAS,OAAQiN,EAAUrN,EAAOkK,SAClCoD,EAAaD,GAOjBC,EAAaA,EAAW9Q,QAAQ8Q,EAAW7L,UAAU,EAAG6L,EAAW/R,QAAQ,OAAQ8R,GAEvFjN,WAAS,WAAYkN,EAAYtN,EAAOkK,SAE5C8B,EAAGrW,EAAQqK,EAAQoH,EAAOjD,EAAWrN,GAChCjD,oBAAMmM,EAAO1G,QAAqB,iBAAV8N,GAAsC,iBAAVA,GAAsC,aAAVA,GAAkC,cAAVA,GACzGzR,EAAOU,OAAOoX,GAAyBzN,GAEuB,mBAAvDvM,WAAS,YAAaiZ,EAAezQ,eAC5CxI,WAAS,YAAaiZ,EAAezQ,aAArCxI,KAGR+Y,UAAW,WACP,IAAIxM,GACA1G,MAAO,KACPiG,OACI4D,KAAM,MACNC,QAAS3D,EAAc9J,EAAQ,iBAAmB,IAAMA,EAAOsG,aAAaC,IAC5EmH,WAAY,OAGpByJ,GAAmBnX,EAAQ+W,EAAgBV,EAAIhM,EAAQoH,EAAOjD,EAAWrN,MAG5E4W,UAiBjB,SAASZ,GAETnX,EAAQ+W,EAAgBV,EAAIhM,EAAQoH,EAAOjD,EAAWrN,GAClDnB,EAAOU,OAAO2W,IAAuBxW,OAAQ,YAC7CwV,EAAGrW,EAAQqK,EAAQoH,EAAOjD,EAAWrN,GAC6B,mBAAvDrD,WAAS,YAAaiZ,EAAezQ,eAC5CxI,WAAS,YAAaiZ,EAAezQ,aAArCxI,GAYR,SAASiX,GAAY/U,EAAQqK,EAAQoH,GACjC,GAAKvT,oBAAMmM,EAAO1G,OAOY,QAAtB0G,EAAOT,MAAM4D,OACbnD,EAAO1G,SACP3D,EAAOU,OAAO+Q,EAAOpH,GACrBrK,EAAOU,OAAOsX,QAElBnB,GAAU7W,EAAQqK,EAAQ,QAC1BrK,EAAO7B,eAAgBC,KAAM4B,EAAOoO,UAAW,GAC/CpO,EAAOvB,UAAUwZ,UAdK,CACtBjY,EAAOU,OAAO+Q,EAAOpH,GACrBrK,EAAOU,OAAOsX,OACd,IAAInV,GAAShC,OAAQ,OAAQwJ,OAAQA,GACrCrK,EAAOoH,QAAQ,UAAWvE,GAY9B,GAAI7C,EAAOkN,YAAclN,EAAOiP,UAAW,CACvC,GAAqC,IAAjCjP,EAAO8O,eAAe/P,OAAc,CAChC8D,GAASkE,YAAa/G,EAAO8O,gBACjC9O,EAAOoH,QAAQ,cAAevE,GAElC7C,EAAOiP,UAAYjP,EAAOkN,YAAa,GAa/C,SAASoI,GAActV,EAAQqK,EAAQoH,EAAO5Q,GAC1C,GAAK3C,oBAAMmM,EAAO1G,OAMdkT,GAAU7W,EAAQqK,EAAQxJ,OANJ,CACtBb,EAAOU,OAAO+Q,EAAOpH,GACrB,IAAIxH,GAAShC,OAAQA,EAAQwJ,OAAQA,GACrCrK,EAAOoH,QAAQ,UAAWvE,IAgBlC,SAASqS,GAAclV,EAAQqK,EAAQ4K,GACnC,GAAK/W,oBAAMmM,EAAO1G,OAYd,GAA0B,QAAtB0G,EAAOT,MAAM4D,KAAgB,CAC7B,GAAIxN,EAAOkY,WAAalY,EAAOkY,UAAUC,QAAS,CAC9C,IAAIhI,EAAM1Q,SAAO,WAAYO,EAAOkY,UAAUvZ,SAC1CiL,EAAQE,EAAc9J,EAAQ,+BAA+B6G,QAAQ,MAAO,IAAMsJ,EAAIxO,MAAQ,KAClGwO,EAAIyC,cAAcwF,mBAAmBvO,UAAYD,MAEhD,CASD2D,GAAavN,EAAQ,SAPjB2D,MAAO,KACPiG,OACI4D,KAAM,MACNC,QAAS3D,EAAc9J,EAAQ,+BAA+B6G,QAAQ,MAAO,IAAMoO,EAAW,KAC9FvH,WAAY,QAKpB7K,GAAShC,OAAQ,SAAU+I,MAAOS,EAAOT,OAC7C5J,EAAOoH,QAAQ,UAAWvE,QAGtB7C,EAAOkY,WAAalY,EAAOkY,UAAUC,SACrCnY,EAAOkY,UAAUG,OAErBxB,GAAU7W,EAAQqK,EAAQ,cApCR,CAClBrK,EAAOkY,WAAalY,EAAOkY,UAAUC,SACrCnY,EAAOkY,UAAUG,OAErBrY,EAAOsY,YAAcjO,EAAO1G,MAAM,GAClC3D,EAAOyB,oBAAoBC,UAAUC,MAAQ,GAC7C,IAAIkB,GAAShC,OAAQ,SAAUwJ,OAAQA,GACvCrK,EAAOoH,QAAQ,UAAWvE,GAC1B7C,EAAOgD,UAAYC,EAAcjD,IACjCkE,GAAKlE,EAAQuY,GAAkBvY,EAAO5B,OAyC9C,SAASuX,GAAc3V,EAAQqK,EAAQjM,GACnC,GAAKF,oBAAMmM,EAAO1G,OAiCd,GAA0B,QAAtB0G,EAAOT,MAAM4D,MAAkBxN,EAAOkY,WAAalY,EAAOkY,UAAUC,QAAS,CAC7E,IAAIhI,EAAM1Q,SAAO,UAAWO,EAAOkY,UAAUvZ,SACzCiL,EAAQE,EAAc9J,EAAQ,4BAA4B6G,QAAQ,MAAO,IAAM7G,EAAOoT,gBAAkB,KAC5GxJ,EAAQA,EAAM/C,QAAQ,MAAO,IAAMsJ,EAAIxO,MAAQ,KAC/CwO,EAAIyC,cAAcwF,mBAAmBvO,UAAYD,EAC7C/G,GAAShC,OAAQ,SAAU+I,MAAOS,EAAOT,OAC7C5J,EAAOoH,QAAQ,UAAWvE,QAGrB3E,oBAAM8B,EAAOkY,YACdlY,EAAOkY,UAAUG,OAErBxB,GAAU7W,EAAQqK,EAAQ,cA7CR,CACjBnM,oBAAM8B,EAAOkY,YACdlY,EAAOkY,UAAUG,OAErB,IAAIxV,GAAShC,OAAQ,SAAUwJ,OAAQA,GACvCrK,EAAOoH,QAAQ,UAAWvE,GAC1B7C,EAAOwY,YAAcC,MAAMC,QAAQrO,EAAO1G,OAAS0G,EAAO1G,MAAM,GAAK0G,EAAO1G,MAChD,mBAAxB3D,EAAOkB,cACPlB,EAAOzB,OAAO0Z,MACdjY,EAAOgD,UAAYlF,WAASkC,EAAOzB,OAAOyB,EAAOzB,OAAOQ,OAAS,GAAIiB,EAAOG,WAC5E+D,GAAKlE,EAAQ2Y,GAAwB7a,WAAS,aAAckC,EAAOwY,aAAa3R,QAAQ,MAAO,MAC/F7G,EAAOgD,SAAS,GAAKhD,EAAOwY,YAC5BtU,GAAKlE,EAAQ4Y,GAAoC,MAAhB5Y,EAAO5B,KAAe4B,EAAO5B,KAAON,WAAS,aAAckC,EAAOwY,aAAa3R,QAAQ,MAAO,KAAO7G,EAAOwY,YAAYhR,KAAO,KAC5J1J,WAAS,aAAckC,EAAOwY,eAAiB1a,WAAS,aAAckC,EAAOgD,SAAS,KAAOhD,EAAOvB,UAAUM,OAAS,IACvHiB,EAAOvB,UAAUuB,EAAOvB,UAAUM,OAAS,GAAKiB,EAAO6Y,cAI3D7Y,EAAOgD,UAAYC,EAAcjD,IACkB,KAA/CA,EAAOyB,oBAAoBC,UAAUC,MACrC2B,GAAOtD,EAAQ8Y,GAAkB9Y,EAAO5B,KAAM4B,EAAO2C,WAAY3C,EAAOqD,iBAAkBrD,EAAO8C,eAAeK,YAG5GnD,EAAO4B,WACP6B,GAAOzD,EAAQ8Y,IAGf5U,GAAKlE,EAAQ8Y,GAAkB9Y,EAAO5B,QAiC1D,SAAS6X,GAAajW,EAAQqK,EAAQjM,EAAMoQ,GACpCnE,EAAOT,OAASS,EAAOT,MAAM8D,YAC7B1N,EAAO+Y,WAAa,EACf7a,oBAAMmM,EAAO1G,SACd3D,EAAOgP,cAAe,EACtBT,EAAcvO,EAAQwO,EAAWnE,IAErC2O,GAAgBhZ,EAAQ,iBAAkBqK,EAAOT,MAAM8D,YAC7B,QAAtBrD,EAAOT,MAAM4D,MACbD,GAAavN,EAAQ,QAASqK,IAG5BA,EAAOT,OAAU1L,oBAAMmM,EAAO1G,OAI/B0G,EAAOT,QAAU1L,oBAAMmM,EAAO1G,QACnC3D,EAAOgP,cAAe,EACtBT,EAAcvO,EAAQwO,EAAWnE,GACjCkD,GAAavN,EAAQ,QAASqK,IAG9BwM,GAAU7W,EAAQqK,EAAQmE,IAT1BxO,EAAOgP,cAAe,EACtBT,EAAcvO,EAAQwO,EAAWnE,IAoBzC,SAAS6L,GAAclW,EAAQqK,EAAQjM,GACnC,GAAKF,oBAAMmM,EAAO1G,OAadkT,GAAU7W,EAAQqK,EAAQ,eAT1B,GAHArK,EAAO7B,eAAgBC,KAAMA,IAAQ,GACrC4B,EAAOgD,UAAYC,EAAcjD,IACjCkE,GAAKlE,EAAQiZ,GAAkBjZ,EAAO5B,MAClCiM,EAAOT,MACPiN,GAAU7W,EAAQqK,EAAQ,cAEzB,CACD,IAAIxH,GAAShC,OAAQ,SAAUwJ,OAAQA,GACvCrK,EAAOoH,QAAQ,UAAWvE,IAiBtC,SAASuT,GAETpW,EAAQqK,EAAQjM,EAAMoQ,GAClB,GAAKtQ,oBAAMmM,EAAOkK,SAMdsC,GAAU7W,EAAQqK,EAAQ,eANF,CACxBkD,GAAavN,EAAQwO,EAAW,KAAMnE,EAAOkK,SAC7C,IAAI1R,GAAShC,OAAQ,UAAWwJ,OAAQA,GACxCrK,EAAOoH,QAAQ,UAAWvE,IAelC,SAASgU,GAAU7W,EAAQqK,EAAQxJ,GAC/B0M,GAAavN,EAAQ,QAASqK,GAC9B,IAAIxH,GAAShC,OAAQA,EAAQ+I,MAAOS,EAAOT,OAC3C5J,EAAOoH,QAAQ,UAAWvE,GAc9B,SAAgBS,GAEhBtD,EAAQyR,EAAOrT,EAAM8a,EAAc7V,EAAiBH,GAMhD4R,GAAW9U,GAHPa,OAAQ,SAAUzC,KAAMA,EAAM8a,aAAcA,EAAc7V,gBAAiBA,EAAiBH,cAAeA,EAC3GvF,KAAMqC,EAAOgD,UAEQmW,GAAe1H,GAY5C,SAAS0H,GAAcnZ,EAAQqK,EAAQoH,GACnC,GAAKvT,oBAAMmM,EAAO1G,OAMdkT,GAAU7W,EAAQqK,EAAQ,cANJ,CACtBrK,EAAOU,OAAO+Q,EAAOpH,GACrB,IAAIxH,GAAShC,OAAQ,SAAUwJ,OAAQA,GACvCrK,EAAOoH,QAAQ,UAAWvE,IAgBlC,SAAgBgR,GAAS7T,EAAQ5B,EAAMsJ,GACnC,IAAI0R,EAAcpZ,EAAOsG,aAAa8S,YAAcpZ,EAAOsG,aAAa8S,YAAcpZ,EAAOsG,aAAaC,IAEtG5I,GAASkD,OAAU,WAAYzC,KAAQA,EAAMc,MAASwI,EAAO/J,KAAQqC,EAAOgD,UAW5E8D,GAAcnJ,KAAMA,EAAM8S,QAAQ,EAAO4I,aAAa,EAAM/S,cAT5DC,IAAK6S,EACL9C,KAAM,OACNG,YAAa,mBACb6C,aAAc,OACd3b,KAAM+Y,KAAKC,UAAUhZ,GACrBiZ,UAAW,KACXC,UAAW,KACXC,WAAY,OAGhB9W,EAAOoH,QAAQ,iBAAkBN,EAAW,SAAUyS,GAClD,IAAKA,EAAa9I,OACd,GAAI8I,EAAaF,YAAa,CAC1B,IAAIG,EAAOtQ,gBAAc,QACrBnL,GAAIiC,EAAOrB,QAAQZ,GAAK,gBACxB0b,OAAS5Y,OAAQuY,EAAaM,OAAQ,OAAQlS,KAAM,eAAgBmS,SAAY,MAEhFC,EAAQ1Q,gBAAc,SACtBnL,GAAIiC,EAAOrB,QAAQZ,GAAK,cACxB0b,OAASjS,KAAM,gBAAiB7F,MAAO+U,KAAKC,UAAU4C,EAAa5b,MAAO2Y,KAAM,YAEpFkD,EAAK7P,YAAYiQ,GACjB5Z,EAAOrB,QAAQgL,YAAY6P,GAC3B9J,SAASmK,MAAMC,UAAU,gBAAgBC,SACzC/Z,EAAOrB,QAAQqb,YAAYR,OAE1B,CACD,IAAIS,EACAC,EACU,IAAIC,SACd5T,IAAKzI,WAAS,MAAOyb,EAAajT,cAClCgQ,KAAMxY,WAAS,OAAQyb,EAAajT,cACpCmQ,YAAa3Y,WAAS,cAAeyb,EAAajT,cAClDgT,aAAcxb,WAAS,eAAgByb,EAAajT,cACpDwQ,WAAYhZ,WAAS,aAAcyb,EAAajT,cAChD8T,OAAQ,SAAUC,GAEd,GADAJ,EAAuBI,EAAEC,QAAQC,IAAI,uBACX,CACtB,IAAIC,EAAgBP,EAAqBpC,MAAM,0CAC3C4C,EAAoBD,GAAiBA,EAAc,GACvDN,EAAaO,EAAoBA,EAAkB5T,QAAQ,QAAS,IAAMqT,OAG1EA,EAAala,EAAOgD,SAASjE,OAAS,EAAI,YAAcjB,WAAS,SAAUkC,EAAOgD,SAAS,IAAMlF,WAAS,OAAQkC,EAAOgD,SAAS,IAAMlF,WAAS,OAAQkC,EAAOgD,SAAS,IAAM,QAGvL4T,UAAW,SAAUyD,GACjBra,EAAOoH,QAAQ,UAAWmS,GAC1B,IAAImB,EAAOL,EACPM,EAAUC,IAAIC,gBAAgBH,GAC9BI,EAAOpL,SAASxG,cAAc,KAClC4R,EAAKC,KAAOJ,EACZG,EAAKnB,SAAWO,EAChBxK,SAASsL,KAAKrR,YAAYmR,GAC1BA,EAAKlG,QACLlF,SAASsL,KAAKhB,YAAYc,IAE9BjE,UAAW,SAAUwD,GACjB,IAAIhQ,GACAT,OACI4D,KAAM6M,EAAEY,OAAO9T,WACfsG,QAAS3D,EAAc9J,EAAQ,iBAAmB,IAAMA,EAAOsG,aAAa8S,cAGpF7L,GAAavN,EAAQ,QAASqK,GAC9BrK,EAAOoH,QAAQ,UAAWmS,MAG1BxB,KAAKrB,KAAKC,UAAU4C,EAAa5b,UCpqBzD,SAAgB4P,GAAavN,EAAQnC,EAAMwc,EAAG9F,EAAS2G,GACnD,IAAIC,EA6gBR,SAAoBnb,EAAQnC,EAAMwc,EAAG9F,EAAS2G,GAC1C,IAGI/G,EACAiH,EACA7D,EACA8D,EACA9V,EACA+V,EARAH,GACAI,OAAQ,GAAIC,QAAS,GAAIC,WAAaC,WAAY,IAWtD,OAHAP,EAAQQ,KAAO,WAAcC,GAAiB5b,EAAQA,EAAOkY,UAAWiD,EAAQO,aAChFP,EAAQU,MAAQ,WAAcC,GAAkB9b,EAAQA,EAAOkY,UAAWiD,EAAQO,aAClF7d,EAAQ0W,IAAqC,IAA1BA,EAAQwH,cAA0B,sBAAwBle,GAEzE,IAAK,YACDsd,EAAQO,WAAa,gBACrBP,EAAQI,OAASzR,EAAc9J,EAAQ,oBACvCmb,EAAQK,QAAU,oFAClBL,EAAQM,UAEAO,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,kBAC/D4U,MAAO,SAAUyF,GACE,YAAXA,EAAE/D,MAGN4F,GAASlc,MAIrBmb,EAAQQ,KAzHpB,SAA4B3b,GACxB,IAAImQ,EAAM1Q,SAAO,WAAYO,EAAOkY,UAAUvZ,SACzCwR,EAAIyC,cAAchT,UAAUC,SAAS,sBACtCsc,GAAYhM,EAAKrG,EAAc9J,EAAQ,sBAE3CmQ,EAAIyC,cAAcwF,mBAAmBvO,UAAY,GACjDsG,EAAIiM,QAAU,WACVC,GAAWrc,EAAQmQ,IAEvBA,EAAImM,QAAU,SAAUjC,GACpB,IAAI7M,EAAO+O,GAAWlC,GACT,KAAT7M,GACA0O,GAASlc,IAzBrB,SAAoBA,GAChB,IAAImQ,EAAM1Q,SAAO,WAAYO,EAAOkY,UAAUvZ,SAC9CwR,EAAIqM,QACJrM,EAAIxO,MAAQ,GACZ,IAAI6I,EAAM2F,EAAIxO,MAAM5C,OACpBoR,EAAIsM,kBAAkB,EAAGjS,GAuBzBkS,CAAW1c,GACX4b,GAAiB5b,EAAQA,EAAOkY,UAAW,kBAyGDyE,KAAKC,KAAM5c,GAC7C,MACJ,IAAK,SACDmb,EAAQO,WAAa,SACjB1b,EAAO8B,cAAc/C,OAAS,GAC9Boc,EAAQK,SAAW,QAAU1R,EAAc9J,EAAQ,2BAA6B,UAC3E6G,QAAQ,MAAO7G,EAAO8B,cAAc/C,OAAOoI,YAChDgU,EAAQI,OAASzR,EAAc9J,EAAQ,4BAGvCmb,EAAQK,QAAU,QAAU1R,EAAc9J,EAAQA,EAAOqT,OAAS,iBAAmB,yBAA2B,SAChH8H,EAAQI,OAASzR,EAAc9J,EAAQA,EAAOqT,OAAS,gBAAkB,yBAE7E8H,EAAQM,UAEAO,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,eAC/D4U,MAAO,SAAUyF,IA6QrC,SAAwBra,GACpBA,EAAOkY,UAAUG,OACjBrY,EAAOU,OAAOmc,OA9QMC,CAAe9c,MAInBgc,aAAeR,QAAS1R,EAAc9J,EAAQ,cAC9C4U,MAAO,WACH5U,EAAOkY,UAAUG,UAI7B,MACJ,IAAK,SACD8C,EAAQO,WAAa,SACrBP,EAAQI,OAASzR,EAAc9J,EAAQ,iBACvCmb,EAAQK,QAAU,gFAClBL,EAAQM,UAEAO,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,gBAC/D4U,MAAO,SAAUyF,GACE,YAAXA,EAAE/D,MAGNyG,GAAW/c,MAIvBmb,EAAQQ,KA5IpB,SAA4B3b,GACxB,IAAIgd,EAAWvd,SAAO,UAAWO,EAAOkY,UAAUvZ,SAC7Cqe,EAASpK,cAAchT,UAAUC,SAAS,sBAC3Csc,GAAYa,EAAUlT,EAAc9J,EAAQ,mBAEhDgd,EAASpK,cAAcwF,mBAAmBvO,UAAY,GACtDmT,EAASZ,QAAU,WACfC,GAAWrc,EAAQgd,IAEvBA,EAASV,QAAU,SAAUjC,GACzB,IAAI7M,EAAO+O,GAAWlC,GACT,KAAT7M,GACAuP,GAAW/c,IAavB,SAA4BA,EAAQgd,GAChCA,EAASR,QACT,IAAIS,EAAM,GACV,GAAIjd,EAAOqT,SAAWrT,EAAO0V,kBAAmB,CAC5C,IAAIwH,EAAQld,EAAOoT,gBAAgBrH,YAAY,KAC/CkR,GAAkB,IAAXC,EAAgBld,EAAOoT,gBAAkBpT,EAAOoT,gBAAgBtH,UAAU,EAAGoR,QAGpFD,EAAMjd,EAAOoT,gBAEjB4J,EAASrb,MAAQsb,EACbjd,EAAOqT,QAAUrT,EAAO0V,oBAAuD,IAAjCsH,EAASrb,MAAMiE,QAAQ,KACrEoX,EAASP,kBAAkB,EAAGO,EAASrb,MAAMoK,YAAY,MAGzDiR,EAASP,kBAAkB,EAAGO,EAASrb,MAAM5C,QAzBjDoe,CAAmBnd,EAAQgd,GAC3BpB,GAAiB5b,EAAQA,EAAOkY,UAAW,WA4HDyE,KAAKC,KAAM5c,GAC7C,MACJ,IAAK,UACDmb,EAAQO,WAAa,eACrBnE,EAAO,IAAIC,uBAAqBxX,EAAOiL,QACvCmQ,EAAkB7D,EAAKxM,WAAW,IAAI9D,KAAKsN,EAAQ6I,WAAapS,OAAQ,2BACxEmJ,EAAa,GACRjW,oBAAMqW,EAAQJ,cACfA,EAAa,WAAarK,EAAc9J,EAAQ,cAAgB,mBAAqBqd,GAAY,MAC3FtK,GAAewB,EAAQJ,YAAc,cAE/CgH,EAAQI,OAAShH,EAAQ/M,KACzB2T,EAAQK,QAAU,kBACD1R,EAAc9J,EAAQ,QAAU,mBAAqBqd,GAAY,aAC7E9I,EAAQlB,OAAS,OAAS,UAAY,MAAQkB,EAAQlB,OAAS,OAAS,UAAY,qBACxEvJ,EAAc9J,EAAQ,QAAU,yBAA2Bqd,GAAY,aACpF9I,EAAQ+I,KAAO,KAAO/I,EAAQ+I,KAAO,4BACxBxT,EAAc9J,EAAQ,YAAc,mBAAqBqd,GAAY,YAClF9I,EAAQ+G,SAAW,KAAO/G,EAAQ+G,SAAW,qBAChCxR,EAAc9J,EAAQ,YAAc,mBAAqBqd,GAAY,MAChFjC,EAAkB,aAClBjH,EAAa,WACnBgH,EAAQM,UAEAO,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,cAC/D4U,MAAO,SAAUyF,GACbra,EAAOkY,UAAUG,UAI7B,MACJ,IAAK,sBACD,IAAIkF,EACJpC,EAAQO,WAAa,oBAKJ8B,IAJjBnC,EAASrb,EAAOgD,SAASya,IAAI,SAAUC,GAEnC,OAAoB,KADpBH,EAAUG,EAAIlW,KAAK5B,QAAQ,KAAO,IACP8X,EAAIrK,OAAoC,IAAZkK,EAAiBG,EAAIlW,KAAKmW,OAAOJ,GAAS1W,QAAQ,IAAK,IAAM,eAA1E,YAEnC,KACPwU,EAAS9G,EAAQ/M,KAAK3B,MAAM,KAAK4X,IAAI,SAAUC,GAE3C,OAAoB,KADpBH,EAAUG,EAAI9X,QAAQ,KAAO,GACJ,SAAW8X,EAAIC,OAAOJ,GAAS1W,QAAQ,IAAK,OAG7EtB,EAAW8V,EAAOuC,MAAM,SAAUF,EAAK5e,EAAG+e,GAAO,OAAOH,IAAQG,EAAI,KAChD,WAAdxC,EAAO,GAAmB,SAAWA,EAAO,GAAGyC,oBAAsB,QAAW,iBACtFxC,EAAW/G,EAAQ+G,SACnBH,EAAQI,OAAShH,EAAQ/M,KACzB2T,EAAQK,QAAU,kBAAoB1R,EAAc9J,EAAQ,QACtD,oBAAsBqd,GAAY,KAAO9X,EAAW,qBACzCuE,EAAc9J,EAAQ,QAAU,aAC7CuU,EAAQ+I,KAAO,gBAAkBD,GAAY,aAAe9I,EAAQ+I,KAClE,8BAAqCxT,EAAc9J,EAAQ,YAC7D,oBAAsBqd,GAAY,YAAc/B,EAAW,KACzDA,EAAW,qBACjBH,EAAQM,UAEAO,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,cAC/D4U,MAAO,SAAUyF,GACE,YAAXA,EAAE/D,MAGNtW,EAAOkY,UAAUG,UAI7B,MACJ,IAAK,QACDrY,EAAOU,OAAOqd,OACd5C,EAAQO,WAAa,QACA,QAAjBrB,EAAEzQ,MAAM4D,KACR2N,EAAQI,OAAS,oFACbzR,EAAc9J,EAAQ,iBAAmB,SAG7Cmb,EAAQI,OAASzR,EAAc9J,EAAQ,SAE3Cmb,EAAQK,QAAU,eAAiBwC,GAAoB,KAAO3D,EAAEzQ,MAAM6D,QAAU,SAChF0N,EAAQM,UAEAO,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,cAC/D4U,MAAO,SAAUyF,GACbra,EAAOkY,UAAUG,UAMrC,OAAO8C,EA7qBO8C,CAAWje,EAAQnC,EAAMwc,EAAG9F,GACtCrW,oBAAM8B,EAAOkY,YACblY,EAAOkY,UAAY,IAAIgG,UACnBC,WAAYC,GAAczB,KAAKC,KAAM5c,EAAQmb,EAAQO,YACrD2C,YAAa,SAAUxb,GACnByb,GAAwBte,EAAQA,EAAOkY,UAAWrV,EAAMsY,EAAQO,aAEpEH,OAAQJ,EAAQI,OAChBC,QAASL,EAAQK,QACjBC,QAASN,EAAQM,QACjB8C,mBAAqBC,OAAQ,QAC7BC,eAAe,EACfC,eAAe,EACfvG,SAAS,EACTwG,eAAe,EACfC,SAAS,EACT1N,OAAQlR,EAAO6e,YAAc7e,EAAO6e,YAAc,IAAM7e,EAAOrB,QAAQZ,GACvEuN,SAAUF,EAAYpL,EAAQA,EAAOyL,SAAWqT,GAAgBC,IAChEC,MAAO,QACPrD,KAAMR,EAAQQ,KACdE,MAAOV,EAAQU,MACfoD,UAAWjf,EAAOif,UAClBC,oBAAqBlf,EAAOkf,oBAC5BjU,OAAQjL,EAAOiL,SAEnBjL,EAAOkY,UAAUiH,kBAAmB,EACpCnf,EAAOkY,UAAUkH,SAAS,IAAMpf,EAAOrB,QAAQZ,GAAKshB,KAkuB5D,SAAuBrf,EAAQmb,GAC3Bnb,EAAOkY,UAAUqD,OAASJ,EAAQI,OAClCvb,EAAOkY,UAAUsD,QAAUL,EAAQK,QACnCxb,EAAOkY,UAAUuD,QAAUN,EAAQM,QACnCzb,EAAOkY,UAAU+G,UAAYjf,EAAOif,UACpCjf,EAAOkY,UAAUyD,KAAOR,EAAQQ,KAChC3b,EAAOkY,UAAU2D,MAAQV,EAAQU,MACjC7b,EAAOkY,UAAUiG,WAAaC,GAAczB,KAAKC,KAAM5c,EAAQmb,EAAQO,YACvE1b,EAAOkY,UAAUmG,YAAc,SAAUxb,GACrCyb,GAAwBte,EAAQA,EAAOkY,UAAWrV,EAAMsY,EAAQO,aAEpE1b,EAAOkY,UAAUoH,WACjBtf,EAAOkY,UAAUqH,OA3uBbC,CAAcxf,EAAQmb,GAY9B,SAAgBnC,GAAgBhZ,EAAQnC,EAAMqd,EAAchb,GACxD,IAAIuf,EAmHR,SAAuBzf,EAAQnC,EAAMqd,EAAchb,GAC/C,IAGIwf,EACAvZ,EACA+W,EALA/B,GACAI,OAAQ,GAAIC,QAAS,GAAIC,WAAaC,WAAY,IAOtD,OAFAP,EAAQQ,KAAO,WAAcC,GAAiB5b,EAAQA,EAAO2f,aAAcxE,EAAQO,aACnFP,EAAQU,MAAQ,WAAcC,GAAkB9b,EAAQA,EAAO2f,aAAcxE,EAAQO,aAC7E7d,GACJ,IAAK,YACDsd,EAAQI,OAASzR,EAAc9J,EAAQ,8BACvCmb,EAAQK,QAAU,QAAU1R,EAAc9J,EAAQ,+BAAiC,SACnFmb,EAAQM,UACAO,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,eAC/D4U,MAAO,WACH5U,EAAO2f,aAAatH,OACpB9C,GAAOvV,EAAQE,EAASF,EAAO6Y,eAInCmD,aAAeR,QAAS1R,EAAc9J,EAAQ,cAC9C4U,MAAO,WACH5U,EAAO2f,aAAatH,OACpBrY,EAAOkY,UAAUG,UAG7B8C,EAAQO,WAAa,mBACrB,MACJ,IAAK,iBACDP,EAAQO,WAAa,kBACrB1b,EAAOkb,aAAeA,EACtB/U,EAAOnG,EAAOkb,aAAalb,EAAO+Y,YAClCmE,EAAQ/W,EAAK4F,YAAY,KACzB5F,GAAkB,IAAX+W,EAAe/W,EAAOA,EAAK2F,UAAUoR,GAC5C/B,EAAQI,OAASzR,EAAc9J,EAAQ,oBACvC0f,EAAmB,QAAU5V,EAAc9J,EAAQ,qBAAuB,SAC1Emb,EAAQK,QAAU,EAAmB3U,QAAQ,MAAOV,GACpDgV,EAAQU,MAAQ,WACZ,IAAK7b,EAAOiP,WAA8C,IAAjCjP,EAAO2O,eAAe5P,OAAc,CACzD,IAAI8D,GAASkE,YAAa/G,EAAO8O,gBACjC9O,EAAOoH,QAAQ,cAAevE,GAC9B7C,EAAOiP,UAAYjP,EAAOkN,YAAa,EAE3C4O,GAAkB9b,EAAQA,EAAO2f,aAAcxE,EAAQO,aAE3DP,EAAQM,UAEAO,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,eAC/D4U,MAAO,WAIH,GAHA5U,EAAO2O,eAAe1P,KAAKe,EAAOkb,aAAalb,EAAO+Y,aACtD/Y,EAAO+O,iBAAiB9P,KAAK2Q,EAAiB5P,EAAQA,EAAOkb,aAAalb,EAAO+Y,cACjF/Y,EAAO+Y,aACHmC,EAAalb,EAAO+Y,YAAa,CACjC,IAAI6G,EAAS5f,EAAOkb,aAAalb,EAAO+Y,YACpC8G,EAAWD,EAAO7T,YAAY,KAClC6T,GAAuB,IAAdC,EAAkBD,EAASA,EAAO9T,UAAU+T,GACrD7f,EAAO2f,aAAanE,QAAU,EAAmB3U,QAAQ,MAAO+Y,GAChE5f,EAAO2f,aAAaJ,WAEnB,CACDvf,EAAO2f,aAAatH,OACpB,IAAIlX,EAAanB,EAAOkN,WAAalN,EAAO4N,SAAW5N,EAAOmB,WAC1D/C,EAAO4B,EAAOkN,WAAalN,EAAO2N,SAAmC,KAAtB3N,EAAOmN,WAAqBnN,EAAO5B,KAClF4B,EAAOmN,WACPtM,EAASb,EAAOkN,WAAa,OAASlN,EAAOqF,WACjDiI,GAAMtN,EAAQmB,EAAYnB,EAAO2O,eAAgBvQ,EAAMyC,EAAQb,EAAO2O,eAAgB3O,EAAO+O,sBAKrGiN,aAAeR,QAAS1R,EAAc9J,EAAQ,cAC9C4U,MAAO,WAEH,GADA5U,EAAO+Y,aACHmC,EAAalb,EAAO+Y,YAAa,CACjC,IAAI+G,EAAS9f,EAAOkb,aAAalb,EAAO+Y,YACpCgH,EAAMD,EAAO/T,YAAY,KAC7B+T,GAAkB,IAATC,EAAaD,EAASA,EAAOhU,UAAUiU,GAChD/f,EAAO2f,aAAanE,QAAU,EAAmB3U,QAAQ,MAAOiZ,GAChE9f,EAAO2f,aAAaJ,YAIpB,GADAvf,EAAO2f,aAAatH,OACiB,IAAjCrY,EAAO2O,eAAe5P,OAAc,CACpC,IAAI8B,EAASb,EAAOkN,WAAa,OAASlN,EAAOqF,WAC7ClE,EAAanB,EAAOkN,WAAalN,EAAO4N,SAAW5N,EAAOmB,WAC1D/C,EAAO4B,EAAOkN,WAAalN,EAAO2N,SAAmC,KAAtB3N,EAAOmN,WAAqBnN,EAAO5B,KAClF4B,EAAOmN,WACXG,GAAMtN,EAAQmB,EAAYnB,EAAO2O,eAAgBvQ,EAAMyC,EAAQb,EAAO2O,eAAgB3O,EAAO+O,sBAMjH,MACJ,IAAK,cACDoM,EAAQO,WAAa,eACrBP,EAAQI,OAASzR,EAAc9J,EAAQ,gBACvCmb,EAAQK,QAAUxb,EAAOggB,WAAW,GAAGxY,KAAO,kCACzCsC,EAAc9J,EAAQ,iBAAoB,SAC/Cmb,EAAQQ,KA8GpB,SAAqB3b,EAAQ6C,GACzB7C,EAAOigB,eAAgB,EACvB,IAAIC,EAAYpiB,WAAS,UAAW+E,GAChCsd,EAAY1gB,SAAO,iBAAkBygB,GACrCE,EAAiBpgB,EAAOkJ,cAAc,OACtCC,UAAW,mBAEXkX,EAAWrgB,EAAOkJ,cAAc,SAChCnL,GAAIiC,EAAOrB,QAAQZ,GAAK,cAE5BqiB,EAAezW,YAAY0W,GAC3BF,EAAUxW,YAAYyW,GACJ,IAAIE,YAClBC,MAAOzW,EAAc9J,EAAQ,kBAC7BwgB,OAAQ,SAAU3d,GACd7C,EAAOygB,YAAc5d,EAAK6d,WAGtBtB,SAAS,IAAMpf,EAAOrB,QAAQZ,GAAK,aAC/C6d,GAAiB5b,EAAQA,EAAO2f,aAAc,iBAjIXhD,KAAKC,KAAM5c,GACtCmb,EAAQU,MAAQ,WACZ7b,EAAOigB,eAAgB,EACvBU,GAAc3gB,GACd8b,GAAkB9b,EAAQA,EAAO2f,aAAcxE,EAAQO,aAE3DP,EAAQM,UAEAO,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,qBAC/D4U,MAAO,WACHgM,GAAe5gB,GAAQ,MAI3Bgc,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,mBAC/D4U,MAAO,WACHgM,GAAe5gB,GAAQ,MAI3Bgc,aAAeC,WAAW,EAAMT,QAAS1R,EAAc9J,EAAQ,gBAC/D4U,MAAO,WACH,IAAI/F,EAAQ,EACR7O,EAAOygB,aACP5R,EAAQ7O,EAAOggB,WAAWjhB,OAC1BiB,EAAOggB,cACPW,GAAc3gB,KAGd6O,EAAQ,EACR7O,EAAOggB,WAAWa,OAAO,EAAG,GACK,IAA7B7gB,EAAOggB,WAAWjhB,OAClBia,GAAgBhZ,EAAQ,eAGxB2gB,GAAc3gB,IAGtBA,EAAOU,OAAOogB,IAAqBjS,MAAOA,OAM9D,OAAOsM,EAnQU4F,CAAc/gB,EAAQnC,EAAMqd,EAAchb,GAC3DF,EAAOygB,aAAc,EACjBviB,oBAAM8B,EAAO2f,eACb3f,EAAO2f,aAAe,IAAIzB,UACtBC,WAAY6C,GAAcrE,KAAKC,KAAM5c,EAAQyf,EAAW/D,YACxD2C,YAAa,SAAUxb,GACnByb,GAAwBte,EAAQA,EAAO2f,aAAc9c,EAAM4c,EAAW/D,aAE1EF,QAASiE,EAAWjE,QACpBD,OAAQkE,EAAWlE,OACnBmD,eAAe,EACfC,eAAe,EACfJ,mBAAqBC,OAAQ,QAC7BtN,OAAQlR,EAAO6e,YAAc7e,EAAO6e,YAAc,IAAM7e,EAAOrB,QAAQZ,GACvEuN,SAAUF,EAAYpL,EAAQA,EAAOyL,SAAWqT,GAAgBC,IAChEE,UAAWjf,EAAOif,UAClBR,eAAe,EACfG,SAAS,EACTI,MAAO,IACPvD,QAASgE,EAAWhE,QACpBE,KAAM8D,EAAW9D,KACjBE,MAAO4D,EAAW5D,MAClBqD,oBAAqBlf,EAAOkf,oBAC5BjU,OAAQjL,EAAOiL,SAEnBjL,EAAO2f,aAAaR,kBAAmB,EACvCnf,EAAO2f,aAAaP,SAAS,IAAMpf,EAAOrB,QAAQZ,GAAKkjB,MAGvDjhB,EAAO2f,aAAapE,OAASkE,EAAWlE,OACxCvb,EAAO2f,aAAa9D,MAAQ4D,EAAW5D,MACvC7b,EAAO2f,aAAahE,KAAO8D,EAAW9D,KACtC3b,EAAO2f,aAAa9D,MAAQ4D,EAAW5D,MACvC7b,EAAO2f,aAAanE,QAAUiE,EAAWjE,QACzCxb,EAAO2f,aAAalE,QAAUgE,EAAWhE,QACzCzb,EAAO2f,aAAaV,UAAYjf,EAAOif,UACvCjf,EAAO2f,aAAa1U,OAASjL,EAAOiL,OACpCjL,EAAO2f,aAAaxB,WAAa6C,GAAcrE,KAAKC,KAAM5c,EAAQyf,EAAW/D,YAC7E1b,EAAO2f,aAAatB,YAAc,SAAUxb,GACxCyb,GAAwBte,EAAQA,EAAO2f,aAAc9c,EAAM4c,EAAW/D,aAE1E1b,EAAO2f,aAAaL,WACpBtf,EAAO2f,aAAaJ,QAY5B,SAAS2B,GAAuBlhB,EAAQmhB,EAAWte,EAAM6Y,GACrD,IAAI5U,GACA2J,OAAQ5N,EAAK4N,OAAQ2Q,UAAW1F,EAAY2F,YAAaF,GAE7DnhB,EAAOoH,QAAQ,kBAAmBN,EAAW,SAAUwa,GACnDze,EAAK4N,OAAS6Q,EAAU7Q,SAYhC,SAAS6N,GAAwBte,EAAQmhB,EAAWte,EAAM6Y,GACtD,IAAI5U,GACA2J,OAAQ5N,EAAK4N,OAAQ4Q,YAAaF,EAAWC,UAAW1F,GAE5D1b,EAAOoH,QAAQ,mBAAoBN,EAAW,SAAUwa,GACpDze,EAAK4N,OAAS6Q,EAAU7Q,OACnB5N,EAAK4N,SAAU5N,EAAK0e,cAAiC,WAAf7F,GAA4C,kBAAfA,GACpE1b,EAAOoH,QAAQ2W,SAY3B,SAASnC,GAAiB5b,EAAQmhB,EAAWzF,GACzC,IAAI7Y,GAASwe,YAAaF,EAAWxiB,QAASwiB,EAAUxiB,QAASyiB,UAAW1F,GAC5E1b,EAAOoH,QAAQ,YAAavE,GAUhC,SAASiZ,GAAkB9b,EAAQmhB,EAAWzF,GAC1C,IAAI7Y,GAASwe,YAAaF,EAAWxiB,QAASwiB,EAAUxiB,QAASyiB,UAAW1F,GAC5E1b,EAAOoH,QAAQ,aAAcvE,GAoKjC,SAAS+d,GAAe5gB,EAAQwhB,GACxBxhB,EAAOygB,aACHe,EAkFZ,SAAuBxhB,GACnB,KAAoC,IAA7BA,EAAOggB,WAAWjhB,QACrBiB,EAAOyhB,UAAUxiB,MAAO4B,OAAQ,WAAY2E,KAAMxF,EAAOggB,WAAW,KACpEhgB,EAAO8Q,UAAU4Q,MAAM1hB,EAAOggB,WAAW,IACzChgB,EAAOggB,WAAWa,OAAO,EAAG,GArFxBc,CAAc3hB,GA8F1B,SAAsBA,GAClB,KAAoC,IAA7BA,EAAOggB,WAAWjhB,QACrBiB,EAAOyhB,UAAUxiB,MAAO4B,OAAQ,UAAW2E,KAAMxF,EAAOggB,WAAW,KACnEhgB,EAAO8Q,UAAU4Q,MAAM1hB,EAAOggB,WAAW,IACzChgB,EAAOggB,WAAWa,OAAO,EAAG,GA/FxBe,CAAa5hB,GAEjB2gB,GAAc3gB,KAGdA,EAAOyhB,UAAUxiB,MACb4B,OAAQ2gB,EAAa,WAAa,UAClChc,KAAMxF,EAAOggB,WAAW,KAE5BhgB,EAAO8Q,UAAU4Q,MAAM1hB,EAAOggB,WAAW,IACzChgB,EAAOggB,WAAWa,OAAO,EAAG,GACK,IAA7B7gB,EAAOggB,WAAWjhB,OAClBia,GAAgBhZ,EAAQ,eAGxB2gB,GAAc3gB,IAU1B,SAAS2gB,GAAc3gB,GACnB,IAAI6hB,GAAO,EACP7hB,EAAOigB,cACPjgB,EAAOigB,eAAgB,EAGvB4B,GAAO,EAEX,IAAI1R,EAAM1Q,SAAO,kBAAmBO,EAAO2f,aAAahhB,SACpDwR,GACA9N,SAAO8N,GAEP0R,EACA7hB,EAAO2f,aAAatH,OAGpBrY,EAAOggB,cAsJf,SAAS7D,GAAYhM,EAAK2R,GACtBC,QAAM5F,aACFxd,QAASwR,EACT6R,YACIF,YAAaA,KAwLzB,SAAS1D,GAAcpe,EAAQ0b,EAAY7Y,GAEvCof,GADiBC,YAAU,SAAUliB,EAAOkY,UAAUvZ,UAEtDuiB,GAAuBlhB,EAAQA,EAAOkY,UAAWrV,EAAM6Y,GAU3D,SAASsF,GAAchhB,EAAQmiB,EAAStf,GAEpCof,GADiBC,YAAU,SAAUliB,EAAO2f,aAAahhB,UAEzDuiB,GAAuBlhB,EAAQA,EAAO2f,aAAc9c,EAAMsf,GAQ9D,SAASF,GAAeG,GAapB,IAAK,IAZDC,EAAU,SAAUC,GACpBF,EAAWE,GAAUC,UAAY,SAAUlI,GACrB,KAAdA,EAAEmI,SACFnI,EAAEoI,kBAGVL,EAAWE,GAAUhG,QAAU,SAAUjC,GACnB,KAAdA,EAAEmI,SACFJ,EAAWE,GAAU1N,UAIxB0N,EAAW,EAAGA,EAAWF,EAAWrjB,OAAQujB,IACjDD,EAAQC,GAmDhB,SAASpG,GAASlc,GACd,IAAImQ,EAAM1Q,SAAO,WAAYO,EAAOkY,UAAUvZ,SAC9C+jB,GAAiB1iB,EAAQmQ,GAC8B,KAAnDA,EAAIyC,cAAcwF,mBAAmBvO,WAGzCmL,GAAahV,EAAQmQ,EAAIxO,OAS7B,SAASob,GAAW/c,GAChB,IAAImQ,EAAM1Q,SAAO,UAAWO,EAAOkY,UAAUvZ,SAE7C,GADA+jB,GAAiB1iB,EAAQmQ,GAC8B,KAAnDA,EAAIyC,cAAcwF,mBAAmBvO,UAAzC,CAGA,IAAIhM,EAAOsS,EAAIxO,MACXghB,EAAS3iB,EAAOoT,gBAAgBrH,YAAY,KAChD,GAAI/L,EAAOqT,SAAWrT,EAAO0V,kBAAmB,CAE5C7X,IADwB,IAAZ8kB,EAAiB,GAAK3iB,EAAOoT,gBAAgBuK,OAAOgF,GAIpE,GADA3iB,EAAO6Y,WAAahb,EAChBmC,EAAOoT,kBAAoBvV,EAA/B,CAIA,IAAIqC,EAAmC,mBAAxBF,EAAOkB,aAAqCpD,WAAS,aAAckC,EAAOgD,SAAS,IAAI6D,QAAQ,MAAO,KAAO7G,EAAO5B,KAEnI,GADA4B,EAAO4iB,UAAY9kB,WAAS,KAAMkC,EAAOgD,SAAS,IAC9ChD,EAAOqT,OAAQ,CACf,IAAIwP,GAA4B,IAAZF,EAAiB,GAAK3iB,EAAOoT,gBAAgBuK,OAAOgF,GACpEG,EAASjlB,EAAKkO,YAAY,KAC1BgX,GAA4B,IAAZD,EAAiB,GAAKjlB,EAAK8f,OAAOmF,GAClD9iB,EAAO0V,mBAAqBmN,IAAiBE,EAC7C/J,GAAgBhZ,EAAQ,YAAa,KAAME,GAG3CqV,GAAOvV,EAAQE,EAASrC,QAI5B0X,GAAOvV,EAAQE,EAASrC,QAjBxBmC,EAAOkY,UAAUG,QAqCzB,SAASgE,GAAWrc,EAAQmQ,GACpB,eAAe6S,KAAK7S,EAAIxO,OACxBshB,GAAWjjB,EAAQmQ,GAEA,KAAdA,EAAIxO,MACTwO,EAAIyC,cAAcwF,mBAAmBvO,UAAYC,EAAc9J,EAAQ,oBAGvEmQ,EAAIyC,cAAcwF,mBAAmBvO,UAAY,GAUzD,SAAS6Y,GAAiB1iB,EAAQmQ,GAC9BkM,GAAWrc,EAAQmQ,GACnB,IAAI3F,EAAM2F,EAAIxO,MAAM5C,OAAS,EACX,KAAdoR,EAAIxO,OAAkBwO,EAAIxO,MAAMoK,YAAY,OAASvB,GAAS2F,EAAIxO,MAAMoK,YAAY,OAASvB,IAC5FxK,EAAO0V,oBAAsD,IAAhCvF,EAAIxO,MAAMoK,YAAY,MAA0E,IAA3DoE,EAAIxO,MAAMmK,UAAUqE,EAAIxO,MAAMiE,QAAQ,KAAO,GAAG7G,QACnHkkB,GAAWjjB,EAAQmQ,GAU3B,SAAS8S,GAAWjjB,EAAQmQ,GACxB,IAAIvG,EAAQE,EAAc9J,EAAQ,sBAAsB6G,QAAQ,MAAO,IAAMsJ,EAAIxO,MAAQ,KACrF3B,EAAOkf,oBACP/O,EAAIyC,cAAcwF,mBAAmBzY,YAAciK,EAGnDuG,EAAIyC,cAAcwF,mBAAmBvO,UAAYD,EASzD,SAAS2S,GAAWlC,GAWhB,OATIA,EAAEmI,QACKnI,EAAEmI,QAEJnI,EAAE6I,MACA7I,EAAE6I,MAGF7I,EAAE8I,SAYjB,SAAgBC,GAAkBpjB,EAAQub,EAAQvU,GAC9C,IAAIwU,EAAUtS,gBAAc,OAASC,UAAW,iBAC5Cka,EAAQna,gBAAc,OAASC,UAAW,UAAWsQ,OAAS6J,IAAKtc,EAAUuc,IAAKhI,KACtFC,EAAQ7R,YAAY0Z,GAChBnlB,oBAAM8B,EAAOwjB,YACbxjB,EAAOwjB,UAAY,IAAItF,UACnB3C,OAAQA,EACRC,QAASA,EACT+C,mBAAqBC,OAAQ,QAC7BC,eAAe,EACfC,eAAe,EACfvG,SAAS,EACTyG,SAAS,EACTI,MAAO,QACPyE,OAAQ,QACRvS,OAAQlR,EAAO6e,YAAc7e,EAAO6e,YAAc,IAAM7e,EAAOrB,QAAQZ,GACvEuN,SAAUF,EAAYpL,EAAQA,EAAOyL,SAAWqT,GAAgBC,IAChE9T,OAAQjL,EAAOiL,OACfyY,cAAc,EACd/E,eAAe,EACfO,oBAAqBlf,EAAOkf,oBAC5B/M,UAAYwR,EAAG,SAAUC,EAAG,UAC5B3E,UAAWjf,EAAOif,UAClBtD,KA6BZ,SAAmB3b,GACf0S,WAAW,WACH1S,EAAOwjB,WACPxjB,EAAOwjB,UAAU7kB,QAAQ6d,UAGjCqH,GAAY7jB,GACZ4b,GAAiB5b,EAAQA,EAAOwjB,UAAW,kBApCnB7G,KAAKC,KAAM5c,GAC3B6b,MAAO,WAAcC,GAAkB9b,EAAQA,EAAOwjB,UAAW,kBACjErF,WAAY,SAAUtb,GAClBqe,GAAuBlhB,EAAQA,EAAOwjB,UAAW3gB,EAAM,kBAE3Dwb,YAAa,SAAUxb,GACnByb,GAAwBte,EAAQA,EAAOwjB,UAAW3gB,EAAM,kBAE5DihB,SAAUD,GAAYlH,KAAKC,KAAM5c,GACjC+jB,WAAYF,GAAYlH,KAAKC,KAAM5c,KAEvCA,EAAOwjB,UAAUrE,kBAAmB,EACpCnf,EAAOwjB,UAAUpE,SAAS,IAAMpf,EAAOrB,QAAQZ,GAAKimB,MAGpDhkB,EAAOwjB,UAAU3e,UACjB7E,EAAOwjB,UAAUjI,OAASA,EAC1Bvb,EAAOwjB,UAAUhI,QAAUA,EAC3Bxb,EAAOwjB,UAAUvE,UAAYjf,EAAOif,UACpCjf,EAAOwjB,UAAUlE,WACjBtf,EAAOwjB,UAAUjE,QAwBzB,SAASsE,GAAY7jB,GACjB,IAAIwb,EAAU/b,SAAO,iBAAkBO,EAAOwjB,UAAU7kB,SACpDslB,EAAUxkB,SAAO,gBAAiBO,EAAOwjB,UAAU7kB,SACnDulB,EAASvT,OAAOwT,iBAAiB3I,EAAS,MAC1C4I,EAAeF,EAAU,EAAIG,WAAWH,EAAOI,cAAiB,GAChEC,EAAgBL,EAAU,EAAIG,WAAWH,EAAOM,eAAkB,GACtEP,EAAQja,MAAMgV,MAASxD,EAAQiJ,YAAcL,EAAgB,KAC7DH,EAAQja,MAAMyZ,OAAUjI,EAAQ3S,aAAe0b,EAAiB,KCt/BpE,IAAIG,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBzR,OAAO4R,iBAChBC,wBAA2BtM,OAAS,SAAUmM,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAEI,eAAeD,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASK,IAAOtI,KAAKuI,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAa3R,OAAOmS,OAAOR,IAAMK,EAAGE,UAAYP,EAAEO,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYrU,EAAQjR,EAAKulB,GAC7E,IAA2HZ,EAAvHa,EAAIC,UAAU3mB,OAAQ4mB,EAAIF,EAAI,EAAIvU,EAAkB,OAATsU,EAAgBA,EAAOtS,OAAO0S,yBAAyB1U,EAAQjR,GAAOulB,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrU,EAAQjR,EAAKulB,QACpH,IAAK,IAAI1mB,EAAIymB,EAAWxmB,OAAS,EAAGD,GAAK,EAAGA,KAAS8lB,EAAIW,EAAWzmB,MAAI6mB,GAAKF,EAAI,EAAIb,EAAEe,GAAKF,EAAI,EAAIb,EAAE1T,EAAQjR,EAAK0lB,GAAKf,EAAE1T,EAAQjR,KAAS0lB,GAChJ,OAAOF,EAAI,GAAKE,GAAKzS,OAAO6S,eAAe7U,EAAQjR,EAAK0lB,GAAIA,GAM5DK,GAA8B,SAAUC,GAExC,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAOC,MAAMtJ,KAAM8I,YAAc9I,KAc/D,OAhBA8H,GAAUsB,EAAcC,GAIxBX,IACIa,WAAS,OACVH,EAAaZ,UAAW,mBAAe,GAC1CE,IACIa,WAAS,OACVH,EAAaZ,UAAW,mBAAe,GAC1CE,IACIa,WAAS,OACVH,EAAaZ,UAAW,iBAAa,GACxCE,IACIa,WAAS,OACVH,EAAaZ,UAAW,WAAO,GAC3BY,GACTI,iBCzCE1B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBzR,OAAO4R,iBAChBC,wBAA2BtM,OAAS,SAAUmM,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAEI,eAAeD,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASK,IAAOtI,KAAKuI,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAa3R,OAAOmS,OAAOR,IAAMK,EAAGE,UAAYP,EAAEO,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYrU,EAAQjR,EAAKulB,GAC7E,IAA2HZ,EAAvHa,EAAIC,UAAU3mB,OAAQ4mB,EAAIF,EAAI,EAAIvU,EAAkB,OAATsU,EAAgBA,EAAOtS,OAAO0S,yBAAyB1U,EAAQjR,GAAOulB,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrU,EAAQjR,EAAKulB,QACpH,IAAK,IAAI1mB,EAAIymB,EAAWxmB,OAAS,EAAGD,GAAK,EAAGA,KAAS8lB,EAAIW,EAAWzmB,MAAI6mB,GAAKF,EAAI,EAAIb,EAAEe,GAAKF,EAAI,EAAIb,EAAE1T,EAAQjR,EAAK0lB,GAAKf,EAAE1T,EAAQjR,KAAS0lB,GAChJ,OAAOF,EAAI,GAAKE,GAAKzS,OAAO6S,eAAe7U,EAAQjR,EAAK0lB,GAAIA,GAGrDU,IAAuB,YAAa,SAAU,MAAO,OAAQ,QAAS,SAAU,WAAY,SACnG,SAAU,UAAW,YAAa,OAAQ,WAI1CC,GAAiC,SAAUL,GAE3C,SAASK,IACL,OAAkB,OAAXL,GAAmBA,EAAOC,MAAMtJ,KAAM8I,YAAc9I,KAQ/D,OAVA8H,GAAU4B,EAAiBL,GAI3BX,IACIa,WAASE,KACVC,EAAgBlB,UAAW,aAAS,GACvCE,IACIa,YAAS,IACVG,EAAgBlB,UAAW,eAAW,GAClCkB,GACTF,iBAEEG,GAA6B,SAAUN,GAEvC,SAASM,IACL,OAAkB,OAAXN,GAAmBA,EAAOC,MAAMtJ,KAAM8I,YAAc9I,KAwD/D,OA1DA8H,GAAU6B,EAAaN,GAIvBX,IACIa,WAAS,KACVI,EAAYnB,UAAW,UAAM,GAChCE,IACIa,WAAS,KACVI,EAAYnB,UAAW,YAAQ,GAClCE,IACIa,WAAS,SACVI,EAAYnB,UAAW,aAAS,GACnCE,IACIa,WAAS,KACVI,EAAYnB,UAAW,gBAAY,GACtCE,IACIa,YAAS,IACVI,EAAYnB,UAAW,yBAAqB,GAC/CE,IACIa,YAAS,IACVI,EAAYnB,UAAW,gBAAY,GACtCE,IACIa,WAAS,KACVI,EAAYnB,UAAW,kBAAc,GACxCE,IACIa,WAAS,KACVI,EAAYnB,UAAW,kBAAc,GACxCE,IACIa,YAAS,IACVI,EAAYnB,UAAW,eAAW,GACrCE,IACIa,WAAS,SACVI,EAAYnB,UAAW,gBAAY,GACtCE,IACIa,WAAS,KACVI,EAAYnB,UAAW,gBAAY,GACtCE,IACIa,WAAS,WACVI,EAAYnB,UAAW,YAAQ,GAClCE,IACIa,WAAS,SACVI,EAAYnB,UAAW,kBAAc,GACxCE,IACIa,WAAS,OACVI,EAAYnB,UAAW,sBAAkB,GAC5CE,IACIa,WAAS,KACVI,EAAYnB,UAAW,mBAAe,GACzCE,IACIa,WAAS,SACVI,EAAYnB,UAAW,aAAS,GACnCE,IACIa,YAAU,IACXI,EAAYnB,UAAW,gBAAY,GACtCE,IACIa,cACDI,EAAYnB,UAAW,YAAQ,GAC3BmB,GACTH,iBCnGE1B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBzR,OAAO4R,iBAChBC,wBAA2BtM,OAAS,SAAUmM,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAEI,eAAeD,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASK,IAAOtI,KAAKuI,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAa3R,OAAOmS,OAAOR,IAAMK,EAAGE,UAAYP,EAAEO,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYrU,EAAQjR,EAAKulB,GAC7E,IAA2HZ,EAAvHa,EAAIC,UAAU3mB,OAAQ4mB,EAAIF,EAAI,EAAIvU,EAAkB,OAATsU,EAAgBA,EAAOtS,OAAO0S,yBAAyB1U,EAAQjR,GAAOulB,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrU,EAAQjR,EAAKulB,QACpH,IAAK,IAAI1mB,EAAIymB,EAAWxmB,OAAS,EAAGD,GAAK,EAAGA,KAAS8lB,EAAIW,EAAWzmB,MAAI6mB,GAAKF,EAAI,EAAIb,EAAEe,GAAKF,EAAI,EAAIb,EAAE1T,EAAQjR,EAAK0lB,GAAKf,EAAE1T,EAAQjR,KAAS0lB,GAChJ,OAAOF,EAAI,GAAKE,GAAKzS,OAAO6S,eAAe7U,EAAQjR,EAAK0lB,GAAIA,GAM5Da,GAAgC,SAAUP,GAE1C,SAASO,IACL,OAAkB,OAAXP,GAAmBA,EAAOC,MAAMtJ,KAAM8I,YAAc9I,KAc/D,OAhBA8H,GAAU8B,EAAgBP,GAI1BX,IACIa,YAAS,IACVK,EAAepB,UAAW,2BAAuB,GACpDE,IACIa,WAAS,aACVK,EAAepB,UAAW,kBAAc,GAC3CE,IACIa,YAAS,IACVK,EAAepB,UAAW,kBAAc,GAC3CE,IACIa,WAAS,OACVK,EAAepB,UAAW,mBAAe,GACrCoB,GACTJ,iBCzCE1B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBzR,OAAO4R,iBAChBC,wBAA2BtM,OAAS,SAAUmM,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAEI,eAAeD,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASK,IAAOtI,KAAKuI,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAa3R,OAAOmS,OAAOR,IAAMK,EAAGE,UAAYP,EAAEO,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYrU,EAAQjR,EAAKulB,GAC7E,IAA2HZ,EAAvHa,EAAIC,UAAU3mB,OAAQ4mB,EAAIF,EAAI,EAAIvU,EAAkB,OAATsU,EAAgBA,EAAOtS,OAAO0S,yBAAyB1U,EAAQjR,GAAOulB,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrU,EAAQjR,EAAKulB,QACpH,IAAK,IAAI1mB,EAAIymB,EAAWxmB,OAAS,EAAGD,GAAK,EAAGA,KAAS8lB,EAAIW,EAAWzmB,MAAI6mB,GAAKF,EAAI,EAAIb,EAAEe,GAAKF,EAAI,EAAIb,EAAE1T,EAAQjR,EAAK0lB,GAAKf,EAAE1T,EAAQjR,KAAS0lB,GAChJ,OAAOF,EAAI,GAAKE,GAAKzS,OAAO6S,eAAe7U,EAAQjR,EAAK0lB,GAAIA,GAMrDc,KAEHza,MAAO,OAAQ0a,WAAY,OAAQC,SAAU,IAC7CC,SAAU,yCACVC,kBAAoBC,MAAO,oBAG3B9a,MAAO,eAAgB0a,WAAY,eAAgBpQ,KAAM,WACzDtL,OAAQ,sBAAuB2b,SAAU,IAAK3H,MAAO,QAGrDhT,MAAO,OAAQ0a,WAAY,OAAQC,SAAU,GAAI3H,MAAO,MACxD4H,SAAUG,wBAAsB,SAAUppB,GACtC,MAAO,2BAA+BA,EAAK2f,KAAO,YAClDtS,OAAQ,OAMhBgc,GAAqC,SAAUf,GAE/C,SAASe,IACL,OAAkB,OAAXf,GAAmBA,EAAOC,MAAMtJ,KAAM8I,YAAc9I,KAQ/D,OAVA8H,GAAUsC,EAAqBf,GAI/BX,IACIa,YAAS,IACVa,EAAoB5B,UAAW,sBAAkB,GACpDE,IACIa,WAASM,KACVO,EAAoB5B,UAAW,eAAW,GACtC4B,GACTZ,iBCvDE1B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBzR,OAAO4R,iBAChBC,wBAA2BtM,OAAS,SAAUmM,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAEI,eAAeD,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASK,IAAOtI,KAAKuI,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAa3R,OAAOmS,OAAOR,IAAMK,EAAGE,UAAYP,EAAEO,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYrU,EAAQjR,EAAKulB,GAC7E,IAA2HZ,EAAvHa,EAAIC,UAAU3mB,OAAQ4mB,EAAIF,EAAI,EAAIvU,EAAkB,OAATsU,EAAgBA,EAAOtS,OAAO0S,yBAAyB1U,EAAQjR,GAAOulB,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrU,EAAQjR,EAAKulB,QACpH,IAAK,IAAI1mB,EAAIymB,EAAWxmB,OAAS,EAAGD,GAAK,EAAGA,KAAS8lB,EAAIW,EAAWzmB,MAAI6mB,GAAKF,EAAI,EAAIb,EAAEe,GAAKF,EAAI,EAAIb,EAAE1T,EAAQjR,EAAK0lB,GAAKf,EAAE1T,EAAQjR,KAAS0lB,GAChJ,OAAOF,EAAI,GAAKE,GAAKzS,OAAO6S,eAAe7U,EAAQjR,EAAK0lB,GAAIA,GAGrDsB,IAAa,OAAQ,IAAK,MAAO,OAAQ,IAAK,SAAU,WAAY,SAAU,IAAK,WACnFC,IAAe,OAAQ,IAAK,MAAO,OAAQ,QAAS,IAAK,SAAU,SAAU,WAAY,IAAK,WAC9FC,IACP,SAAU,OAAQ,UAAW,IAAK,QAAS,IAAK,YAAa,SAAU,IAAK,UAAW,IAAK,aAK5FC,GAAqC,SAAUnB,GAE/C,SAASmB,IACL,OAAkB,OAAXnB,GAAmBA,EAAOC,MAAMtJ,KAAM8I,YAAc9I,KAc/D,OAhBA8H,GAAU0C,EAAqBnB,GAI/BX,IACIa,WAASc,KACVG,EAAoBhC,UAAW,YAAQ,GAC1CE,IACIa,WAASe,KACVE,EAAoBhC,UAAW,cAAU,GAC5CE,IACIa,WAASgB,KACVC,EAAoBhC,UAAW,cAAU,GAC5CE,IACIa,YAAS,IACViB,EAAoBhC,UAAW,eAAW,GACtCgC,GACThB,iBC9CE1B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBzR,OAAO4R,iBAChBC,wBAA2BtM,OAAS,SAAUmM,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAEI,eAAeD,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASK,IAAOtI,KAAKuI,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAa3R,OAAOmS,OAAOR,IAAMK,EAAGE,UAAYP,EAAEO,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYrU,EAAQjR,EAAKulB,GAC7E,IAA2HZ,EAAvHa,EAAIC,UAAU3mB,OAAQ4mB,EAAIF,EAAI,EAAIvU,EAAkB,OAATsU,EAAgBA,EAAOtS,OAAO0S,yBAAyB1U,EAAQjR,GAAOulB,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrU,EAAQjR,EAAKulB,QACpH,IAAK,IAAI1mB,EAAIymB,EAAWxmB,OAAS,EAAGD,GAAK,EAAGA,KAAS8lB,EAAIW,EAAWzmB,MAAI6mB,GAAKF,EAAI,EAAIb,EAAEe,GAAKF,EAAI,EAAIb,EAAE1T,EAAQjR,EAAK0lB,GAAKf,EAAE1T,EAAQjR,KAAS0lB,GAChJ,OAAOF,EAAI,GAAKE,GAAKzS,OAAO6S,eAAe7U,EAAQjR,EAAK0lB,GAAIA,GAM5D0B,GAAwC,SAAUpB,GAElD,SAASoB,IACL,OAAkB,OAAXpB,GAAmBA,EAAOC,MAAMtJ,KAAM8I,YAAc9I,KAc/D,OAhBA8H,GAAU2C,EAAwBpB,GAIlCX,IACIa,WAAS,UACVkB,EAAuBjC,UAAW,gBAAY,GACjDE,IACIa,WAAS,UACVkB,EAAuBjC,UAAW,gBAAY,GACjDE,IACIa,YAAS,IACVkB,EAAuBjC,UAAW,eAAW,GAChDE,IACIa,WAAS,SACVkB,EAAuBjC,UAAW,iBAAa,GAC3CiC,GACTjB,iBCzCE1B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBzR,OAAO4R,iBAChBC,wBAA2BtM,OAAS,SAAUmM,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAEI,eAAeD,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASK,IAAOtI,KAAKuI,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAa3R,OAAOmS,OAAOR,IAAMK,EAAGE,UAAYP,EAAEO,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYrU,EAAQjR,EAAKulB,GAC7E,IAA2HZ,EAAvHa,EAAIC,UAAU3mB,OAAQ4mB,EAAIF,EAAI,EAAIvU,EAAkB,OAATsU,EAAgBA,EAAOtS,OAAO0S,yBAAyB1U,EAAQjR,GAAOulB,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrU,EAAQjR,EAAKulB,QACpH,IAAK,IAAI1mB,EAAIymB,EAAWxmB,OAAS,EAAGD,GAAK,EAAGA,KAAS8lB,EAAIW,EAAWzmB,MAAI6mB,GAAKF,EAAI,EAAIb,EAAEe,GAAKF,EAAI,EAAIb,EAAE1T,EAAQjR,EAAK0lB,GAAKf,EAAE1T,EAAQjR,KAAS0lB,GAChJ,OAAOF,EAAI,GAAKE,GAAKzS,OAAO6S,eAAe7U,EAAQjR,EAAK0lB,GAAIA,GAM5D2B,GAAgC,SAAUrB,GAE1C,SAASqB,IACL,OAAkB,OAAXrB,GAAmBA,EAAOC,MAAMtJ,KAAM8I,YAAc9I,KAoB/D,OAtBA8H,GAAU4C,EAAgBrB,GAI1BX,IACIa,WAAS,KACVmB,EAAelC,UAAW,yBAAqB,GAClDE,IACIa,YAAS,IACVmB,EAAelC,UAAW,kBAAc,GAC3CE,IACIa,YAAS,IACVmB,EAAelC,UAAW,iBAAa,GAC1CE,IACIa,YAAS,IACVmB,EAAelC,UAAW,uBAAmB,GAChDE,IACIa,WAAS,IACVmB,EAAelC,UAAW,mBAAe,GAC5CE,IACIa,WAAS,MACVmB,EAAelC,UAAW,mBAAe,GACrCkC,GACTlB,iBC/CE1B,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBzR,OAAO4R,iBAChBC,wBAA2BtM,OAAS,SAAUmM,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAEI,eAAeD,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASK,IAAOtI,KAAKuI,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAa3R,OAAOmS,OAAOR,IAAMK,EAAGE,UAAYP,EAAEO,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYrU,EAAQjR,EAAKulB,GAC7E,IAA2HZ,EAAvHa,EAAIC,UAAU3mB,OAAQ4mB,EAAIF,EAAI,EAAIvU,EAAkB,OAATsU,EAAgBA,EAAOtS,OAAO0S,yBAAyB1U,EAAQjR,GAAOulB,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrU,EAAQjR,EAAKulB,QACpH,IAAK,IAAI1mB,EAAIymB,EAAWxmB,OAAS,EAAGD,GAAK,EAAGA,KAAS8lB,EAAIW,EAAWzmB,MAAI6mB,GAAKF,EAAI,EAAIb,EAAEe,GAAKF,EAAI,EAAIb,EAAE1T,EAAQjR,EAAK0lB,GAAKf,EAAE1T,EAAQjR,KAAS0lB,GAChJ,OAAOF,EAAI,GAAKE,GAAKzS,OAAO6S,eAAe7U,EAAQjR,EAAK0lB,GAAIA,GAO5D4B,GAAwB,SAAUtB,GAElC,SAASsB,IACL,OAAkB,OAAXtB,GAAmBA,EAAOC,MAAMtJ,KAAM8I,YAAc9I,KAwD/D,OA1DA8H,GAAU6C,EAAQtB,GAIlBX,IACIa,WAAS,KACVoB,EAAOnC,UAAW,aAAS,GAC9BE,IACIa,WAAS,KACVoB,EAAOnC,UAAW,kBAAc,GACnCE,IACIa,WAAS,KACVoB,EAAOnC,UAAW,aAAS,GAC9BE,IACIa,WAAS,KACVoB,EAAOnC,UAAW,gBAAY,GACjCE,IACIa,WAAS,KACVoB,EAAOnC,UAAW,gBAAY,GACjCE,IACIa,WAAS,SACVoB,EAAOnC,UAAW,iBAAa,GAClCE,IACIa,WAAS,OACVoB,EAAOnC,UAAW,uBAAmB,GACxCE,IACIa,WAAS,OACVoB,EAAOnC,UAAW,YAAQ,GAC7BE,IACIa,WAAS,OACVoB,EAAOnC,UAAW,cAAU,GAC/BE,IACIa,WAAS,OACVoB,EAAOnC,UAAW,gBAAY,GACjCE,IACIa,WAAS,OACVoB,EAAOnC,UAAW,oBAAgB,GACrCE,IACIa,WAAS,OACVoB,EAAOnC,UAAW,sBAAkB,GACvCE,IACIa,YAAS,IACVoB,EAAOnC,UAAW,oBAAgB,GACrCE,IACIa,YAAS,IACVoB,EAAOnC,UAAW,qBAAiB,GACtCE,IACIa,WAAS,OACVoB,EAAOnC,UAAW,wBAAoB,GACzCE,IACIa,WAAS,KACVoB,EAAOnC,UAAW,mBAAe,GACpCE,IACIa,WAAS,OACVoB,EAAOnC,UAAW,oBAAgB,GACrCE,IACIa,YAAS,IACVoB,EAAOnC,UAAW,oBAAgB,GAC9BmC,GACTnB,iBChFSoB,GAAa,WAEbC,GAAY,UAIZC,GAAU,QAEVC,GAAU,QAEVC,GAAe,cAEfC,GAAY,UAIZC,GAAgB,cAEhBC,GAAiB,eAEjBC,GAAmB,iBAInBC,GAAkB,eAQlBC,GAAa,WAEbC,GAAmB,iBAEnBC,GAAY,UASZC,GAAO,gBAEPC,GAAU,YAEVC,GAAe,iBAEfC,GAAa,aAEbC,GAAS,cAETC,GAAY,yBAEZC,GAAe,gBAEfC,GAAS,gBAMTC,GAAiB,mBAEjBC,GAAc,gBAEdC,GAAU,iBAEVC,GAAY,cAEZC,GAAY,cAEZC,GAAc,gBAEdC,GAAiB,oBAEjBC,GAAgB,mBAEhBC,GAAO,SAEPC,GAAS,WAETC,GAAQ,UAERC,GAAQ,UAERC,GAAU,YAEVC,GAAQ,UAIRC,GAAU,qBAEVC,GAAM,QAINC,GAAQ,UAERC,GAAgB,kBAEhBC,GAAsB,wBAEtBC,GAAQ,aAERC,GAAc,mBAEdC,GAAY,iBAEZC,GAAS,cAETC,GAAa,aAEbC,GAAa,aAEbC,GAAa,aAEbC,GAAa,eAEbC,GAAqB,2BAUrBC,GAAc,eAIdC,GAAY,aAEZC,GAAY,cAEZC,GAAY,cAIZC,GAAY,YAEZC,GAAe,gBAEfC,GAAY,gBAEZC,GAAY,oBAEZC,GAAc,sBAEdC,GAAW,mBAEXC,GAAY,oBAEZC,GAAa,qBAEbC,GAAc,sBAEdC,GAAc,sBAEdC,GAAiB,yBAEjBC,GAAe,uBAEfC,GAAe,oBAEfC,GAAe,uBAEfC,GAAiB,sBAEjBC,GAAgB,wBAIhBC,GAAY,oBAEZC,GAAa,qBAEbC,GAAkB,0BAElBC,GAAa,qBAQbC,GAAQ,UAIRC,GAAgB,oBAQhBC,GAAe,iBAIfC,GAAU,YAIVC,GAAY,cAEZC,GAAe,gBAIfC,GAAQ,aC3NRlZ,GAAS,SAKTmZ,GAAe,gBAEfC,GAAa,cAEbC,GAAc,eAEdC,GAAY,aAEZC,GAAY,aAIZC,GAAW,YAEXC,GAAa,cAEbC,GAAY,aAEZC,GAAa,cAEbC,GAAY,aAEZC,GAAiB,kBAEjBC,GAAc,eAEdC,GAAU,UAEVC,GAAgB,iBAIhBC,GAAa,cAEbC,GAAe,gBAIfC,GAAgB,iBAEhBC,GAAgB,gBAEhBC,GAAS,SAETC,GAAW,YAEXC,GAAU,WAEVC,GAAmB,oBAEnBC,GAAgB,kBAEhBC,GAAe,iBAEfC,GAAgB,kBAEhBC,GAAe,gBAEfC,GAAe,iBAEfC,GAAa,cAEbC,GAAc,eAEdC,GAAe,iBAEfC,GAAa,cAEbC,GAAkB,oBAElBC,GAAY,aAEZC,GAAY,aAEZC,GAAY,aAEZC,GAAe,gBAEfC,GAAc,gBAEdC,GAAY,aAEZC,GAAW,YAEXC,GAAS,UAETC,GAAa,cAEbC,GAAsB,wBAItBC,GAAa,cAEbC,GAAa,cAEbC,GAAmB,gBAInBC,GAAe,gBAEfC,GAAW,YAEXC,GAAU,WAEV5hB,GAAW,YAIX6hB,GAAW,WAEXC,GAAsB,wBAEtBC,GAAa,cAEbC,GAAiB,OAEjBC,GAAiB,QAEjBC,GAAyB,gBAIzBC,GAAmB,SAEnBC,GAAqB,WCnH5BC,GAAgC,WAOhC,SAASA,EAAehwB,GACpB4c,KAAKqT,eAAgB,EACrBrT,KAAKsT,iBAAkB,EACvBtT,KAAK/N,MAAQ,EACb+N,KAAKuT,YAAa,EAClBvT,KAAKwT,SAAW,EAChBxT,KAAKyT,mBAAoB,EACzBzT,KAAK0T,kBAAmB,EACxB1T,KAAK2E,cAAe,EACpB3E,KAAK5c,OAASA,EACd4c,KAAKje,QAAUc,SAAO,IAAMmd,KAAK5c,OAAOrB,QAAQZ,GAAKwyB,GAAkB3T,KAAK5c,OAAOrB,SACnF6xB,YAAU5T,KAAKje,SAAUgG,IACzBiY,KAAK6T,mBACL7T,KAAK8T,YACDC,IAAK,MACLC,KAAM,OACNC,IAAK,MACLC,SAAU,YACVC,SAAU,YACVC,UAAW,aACXC,OAAQ,UACRC,QAAS,WACTC,SAAU,YACVC,SAAU,iBACVC,SAAU,iBACVC,UAAW,kBACXC,OAAQ,eACRC,SAAU,YACVC,UAAW,aACXC,UAAW,kBACXC,UAAW,kBACXC,WAAY,mBACZC,QAAS,gBACTC,MAAO,iBACPC,OAAQ,kBACRC,OAAQ,uBACRC,OAAQ,uBACRC,QAAS,wBACTC,KAAM,qBACNC,MAAO,QACPC,UAAW,aACXC,WAAY,cACZC,QAAS,mBACTC,MAAO,SACPC,MAAO,QACPC,SAAU,YACVC,IAAK,SACLC,IAAK,SACLC,MAAOjW,KAAK5c,OAAO8yB,MAAQ,QAAU,SACrCC,MAAOnW,KAAK5c,OAAO8yB,MAAQ,QAAU,SACrCE,MAAOpW,KAAK5c,OAAO8yB,MAAQ,QAAU,SACrCG,GAAI,KACJC,SAAU,eACVC,KAAM,YACNC,MAAO,UAihDf,OA9gDApD,EAAe5K,UAAUiO,OAAS,SAAUxwB,GAIxC,GAHA+Z,KAAK5c,OAAOszB,YAAc,KAC1B1W,KAAK2W,UAAY,KACjBC,cAAY5W,KAAK5c,OAAOrB,SACC,eAArBie,KAAK5c,OAAOoE,KAAuB,CACnCwY,KAAK6W,mBACL7W,KAAKje,QAAQ+0B,aAAa,WAAY,KAClC9W,KAAK+W,UACL/W,KAAKgX,eACLhX,KAAKiX,uBAETjX,KAAK5c,OAAOU,OAAOozB,OACnB,IAAIC,EAAYt0B,SAAO,IAAMmd,KAAK5c,OAAOrB,QAAQZ,GAAKwyB,GAAkB3T,KAAK5c,OAAOrB,SAChFq1B,EAAKv0B,SAAO,KAAMs0B,GAqCtB,GApCIC,GACA3xB,SAAO2xB,GAEXpX,KAAK+W,SACDM,gBACIC,SAAU,SAAUC,SAAU,UAAWC,SAAU,GACnDC,cAAe,QAASC,YAAa,IAEzCC,UAAU,EACVC,QAAU32B,KAAM,OAAQ42B,QAAS,WAAYztB,SAAU,eAAgB0tB,eAAgB,gBACvF9sB,UAAWgV,KAAK5c,OAAO4H,UACvB+sB,YAAa/X,KAAKgY,cAAcjY,KAAKC,MACrCsC,oBAAqBtC,KAAK5c,OAAOkf,qBAErCtC,KAAKlV,SACLkV,KAAKlV,MAAQkV,KAAKiY,WAAWhyB,GACzB+Z,KAAK5c,OAAO80B,cAAuC,SAAvBlY,KAAK5c,OAAO8H,OACxC8U,KAAKlV,MAAQkV,KAAK3Y,SAAW8wB,WAASC,KAAKpY,KAAKlV,MAAOkV,KAAK5c,OAAO8H,OAAQ8U,KAAKqY,SAAStY,KAAKC,OAG9FA,KAAKlV,MAAQkV,KAAK3Y,SAAWwD,EAAcmV,KAAK5c,OAAQ4c,KAAKlV,OAEjEqsB,EAAUn0B,UAAUyC,OAAO6yB,IACvBtY,KAAK5c,OAAOm1B,sBAAwBvY,KAAK3Y,SAASlF,OAAS,IACtD6d,KAAKje,QAAQqL,MAAMyZ,QACpB7G,KAAKwY,eAETxY,KAAK5c,OAAOq1B,qBAAqBC,uBAGrC1Y,KAAK2Y,aAAeC,WAASC,mBAAmBvsB,gBAAe0T,KAAKlV,MAAOkV,KAAK+W,SAChF/W,KAAK8Y,SAAWjd,MAAM2M,UAAUuQ,MAAMC,KAAK1T,YAAU,IAAM3iB,GAAeqd,KAAK2Y,eAC/E3Y,KAAKje,QAAQgL,YAAYiT,KAAK2Y,cAC9B3Y,KAAK2Y,aAAa7B,aAAa,aAAc,WAC7C9W,KAAKiZ,iBACLjZ,KAAKkZ,gBACwB,IAAzBlZ,KAAK8Y,SAAS32B,OAAc,CAC5B,IAAIg3B,EAAYnZ,KAAKje,QAAQoK,cAAc,IAAMitB,IACjDpZ,KAAKje,QAAQqb,YAAY+b,GACzBxtB,EAAmBqU,KAAK5c,OAAQ4c,KAAKje,QAASkE,QAEhB,IAAzB+Z,KAAK8Y,SAAS32B,QAAgB6d,KAAKje,QAAQoK,cAAc,IAAMC,KACpE4T,KAAKje,QAAQqb,YAAY4C,KAAKje,QAAQoK,cAAc,IAAMC,MAEhC,IAA1B4T,KAAK0T,mBACL1T,KAAKqZ,YAAYrZ,KAAK5c,OAAO4O,YAC7BgO,KAAK0T,kBAAmB,IAGC,IAAzB1T,KAAKsT,kBACLtT,KAAKqZ,YAAYrZ,KAAK5c,OAAOyU,YAC7BmI,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GACjD8a,KAAK/N,QACD+N,KAAK/N,QAAU+N,KAAK5c,OAAOyU,WAAW1V,SACtC6d,KAAKsT,iBAAkB,EACvBtT,KAAK5c,OAAOyU,gBAGpB,IAAIyhB,EAAYtZ,KAAKje,QAAQwD,iBAAiB,IAAMg0B,IAC3B,IAArBD,EAAUn3B,SACV6d,KAAK5c,OAAOkB,aAAe,kBAE/B,IAAK,IAAIpC,EAAI,EAAGA,EAAIo3B,EAAUn3B,OAAQD,IAClCo3B,EAAUp3B,GAAG40B,aAAa,gBAAiB,QAE/C9W,KAAKwY,eACLxY,KAAKje,QAAQqL,MAAMosB,UAAY,OAC/BxZ,KAAKyZ,eACLzZ,KAAK6T,mBACL7T,KAAK0Z,aACD1Z,KAAK5c,OAAOm1B,sBAAwBvY,KAAK3Y,SAASlF,OAAS,IAC3D6d,KAAK5c,OAAOq1B,qBAAqBkB,qBACjC3Z,KAAK5c,OAAOq1B,qBAAqBmB,iBAAgB,IAErD5Z,KAAKuT,YAAa,EAClBsG,cAAY7Z,KAAK5c,OAAOrB,SACpBie,KAAK5c,OAAO8B,cAAc/C,QAC1B6d,KAAK8Z,cAIjB1G,EAAe5K,UAAU6P,SAAW,SAAU0B,EAAG9jB,EAAG+jB,EAAMC,GACtD,GAA8B,eAA1Bja,KAAK5c,OAAO4H,UAA4B,CACxC,IAAIkvB,EAAIH,EACRA,EAAI9jB,EACJA,EAAIikB,EAER,OAAOla,KAAK5c,OAAO80B,aAAa6B,EAAG9jB,IAGvCmd,EAAe5K,UAAUyQ,eAAiB,WAEtC,IADA,IAAI/2B,EAAI,EACDA,EAAI8d,KAAK8Y,SAAS32B,QACjB6d,KAAK8Y,SAAS52B,GAAGiK,cAAc,SAE/B6T,KAAK8Y,SAAS52B,GAAGi4B,YAAc,WAAc,OAAO,IAExDj4B,KAGRkxB,EAAe5K,UAAU0Q,cAAgB,WACrC,IAAIkB,EAAQpa,KACRA,KAAK+W,UACD/W,KAAK5c,OAAOuR,kBACRqL,KAAKtL,SACLsL,KAAKtL,QAAQ8b,UAEjBxQ,KAAKtL,QAAU,IAAI2lB,YAAUra,KAAK2Y,cAC9B2B,gBAAgB,EAChBC,SAAU,EACVC,kBAAkB,EAClBC,WAAY,IAAM70B,GAClB80B,OAAQ1a,KAAK2a,WAAW5a,KAAKC,MAC7B4a,SAAU5a,KAAK5c,OAAOy3B,mBACtBC,SAAU9a,KAAK5c,OAAOrB,QACtBg5B,SAAUpnB,GAAgBoM,KAAKC,KAAMA,KAAK5c,QAC1C43B,KAAMplB,GAAgBmK,KAAKC,KAAMA,KAAK5c,QACtC63B,OAAO,EACPC,UAAW,SAAUj1B,GACjBwO,GAAiB2lB,EAAMh3B,OAAQ6C,EAAMm0B,EAAM1lB,aAI9CsL,KAAKtL,UAAYsL,KAAK5c,OAAOuR,kBAClCqL,KAAKtL,QAAQ8b,YAIzB4C,EAAe5K,UAAUmS,WAAa,SAAU10B,GAC5C,IAAIw0B,EAAax0B,EAAKk1B,OAAO7mB,OACzB8mB,EAASz1B,UAAQ80B,EAAY,gBACjC,IAAKW,EACD,OAAO,KAEPA,IAAWA,EAAOp4B,UAAUC,SAAS,aACrC+c,KAAKqb,SAASD,GAElB,IAAI9B,EAAYtZ,KAAKje,QAAQwD,iBAAiB,IAAMg0B,IACpDvZ,KAAK5c,OAAOe,kBACZ6b,KAAK5c,OAAOkO,YACZ,IAAK,IAAIpP,EAAI,EAAGA,EAAIo3B,EAAUn3B,OAAQD,IAElC8d,KAAK5c,OAAOkO,SAASjP,KAAK2d,KAAKsb,cAAchC,EAAUp3B,KACvD8d,KAAK5c,OAAOe,eAAe9B,KAAKi3B,EAAUp3B,IAK9C,OAHAuC,EAAUub,KAAK5c,OAAQg4B,GACvBpb,KAAK5c,OAAO4N,SAAWgP,KAAK5c,OAAO5B,KACnC0R,GAAyB8M,KAAK5c,QACvB4c,KAAK5c,OAAOsQ,oBAEvB0f,EAAe5K,UAAU+S,WAAa,SAAUt1B,GAC5C,GAAI+Z,KAAK5c,OAAO4E,eAAiBgY,KAAKwb,gBAAiB,CACnD,IAAIC,EAAS91B,UAAQM,EAAKqO,OAAQ,gBAE9BonB,EAAUx6B,WAAS8e,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAAI6d,KAAK5c,OAAOG,UACtF,GAAIk4B,EAAQ,CAER,IAAIE,EAAO3b,KAAKsb,cAAcG,GAC9Bzb,KAAK5c,OAAO2N,SAAW4qB,EAAKllB,OAASuJ,KAAK5c,OAAO5B,KAAOiJ,EAAYuV,KAAK5c,OAAQu4B,EAAM3b,KAAK5c,OAAO5B,MACnGwe,KAAK5c,OAAOmO,SAAWoqB,EAAKllB,OAASilB,EAAUC,OAG/C3b,KAAK5c,OAAO2N,SAAWiP,KAAK5c,OAAO5B,KACnCwe,KAAK5c,OAAOmO,SAAWmqB,IAUnCtI,EAAe5K,UAAUgT,cAAgB,WACrC,MAAO,kBAEXpI,EAAe5K,UAAUgQ,aAAe,WACpC,IAAIoD,EAAO/4B,SAAO,IAAMmd,KAAK5c,OAAOrB,QAAQZ,GAAKiT,GAAgB4L,KAAK5c,OAAOrB,SACzE85B,EAAMh5B,SAAO,IAAMmd,KAAK5c,OAAOrB,QAAQZ,GAAK6K,GAAsBgU,KAAK5c,OAAOrB,SAClFie,KAAKje,QAAQqL,MAAMyZ,OAAU+U,EAAK3vB,aAAe4vB,EAAI5vB,aAAgB,MAEzEmnB,EAAe5K,UAAUwP,cAAgB,SAAU/xB,GAE/C,GADAA,EAAKsD,KAAKuyB,gBAAgB,eACrB9b,KAAK5c,OAAO0V,mBAAqB5X,WAAS,SAAU+E,EAAK81B,SAAU,CACpE,IAAIC,EAAU/1B,EAAKsD,KAAK4C,cAAc,IAAMrJ,IACxCud,EAAMnf,WAAS,OAAQ+E,EAAK81B,SAC5BriB,EAAOxY,WAAS,OAAQ+E,EAAK81B,SACjCC,EAAQ/uB,UAAYoT,EAAIU,OAAO,EAAGV,EAAIle,OAASuX,EAAKvX,QAExD6d,KAAKic,eAAeh2B,GACpB,IAAIiE,GACAnI,QAASkE,EAAKsD,KACdY,YAAalE,EAAK81B,QAClBhtB,OAAQ,kBAEZiR,KAAK5c,OAAOoH,QAAQ,WAAYN,IAEpCkpB,EAAe5K,UAAUyT,eAAiB,SAAUh2B,GAChD,GAAK+Z,KAAK5c,OAAO84B,mBAAjB,CAGA,IAAIC,EAAeC,iBAAe9vB,iBAAe,GAC7CwX,SAAS,EACTpV,SAAU,YAEdytB,EAAarF,aAAa,OAAQ,YAClCqF,EAAarF,aAAa,eAAgB,SAC1CqF,EAAarF,aAAa,aAAc,YACxC7wB,EAAKsD,KAAK2M,kBAAkBmmB,aAAaF,EAAcl2B,EAAKsD,KAAK2M,kBAAkBomB,WAAW,MAElGlJ,EAAe5K,UAAU+T,eAAiB,SAAUt2B,GAChD,GAAyB,eAArB+Z,KAAK5c,OAAOoE,KAAuB,CAOnC,GANAwY,KAAKwQ,UACDxQ,KAAK5c,OAAOm1B,sBACZvY,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GAErD8a,KAAKyW,OAAOxwB,GAEmB,kBAA3B/E,WAAS,OAAQ+E,IAAwD,SAA3B+Z,KAAK5c,OAAOqF,YAC1DuX,KAAK5c,OAAOK,OAASuc,KAAK5c,OAAOO,eAAsD,IAArCqc,KAAK5c,OAAOO,cAAcxB,OAG5E,IAFA,IAAIq6B,EAAUxc,KAAKyc,WAAWzc,KAAK5c,OAAOO,eACtC+4B,EAAW,EACRA,EAAWF,EAAQr6B,QACtBuC,EAAQsb,KAAK8Y,SAAS0D,EAAQE,KAC9BA,IAIiB,IADT1c,KAAKje,QAAQwD,iBAAiB,IAAMg0B,IACtCp3B,QACV6d,KAAKje,QAAQ6d,QAEjBI,KAAK8Z,YACL9Z,KAAK5c,OAAO0C,gBAAiB,OAG7Bka,KAAKje,QAAQ+0B,aAAa,WAAY,OAG9C1D,EAAe5K,UAAUsR,UAAY,WACjC,IAAI6C,EAAW3c,KAAKje,QAAQwD,iBAAiB,IAAMg0B,IACnD,GAAIoD,EAEA,IADA,IAAIC,EAAc,EACXA,EAAcD,EAASx6B,QAC1B6d,KAAK6c,WAAWF,EAASC,IAAc,GACvCA,KAKZxJ,EAAe5K,UAAUyP,WAAa,SAAUhyB,GAI5C,IAHA,IAAI/D,EAAI,EAEJ4I,EAAQgP,KAAKU,MAAMV,KAAKC,UAAU9T,EAAKc,QACpC7E,EAAI4I,EAAM3I,QAAQ,CACrB,IAAI26B,EAAOn0B,EAASmC,EAAM5I,IACtB66B,EAAS77B,WAAS,OAAQ4J,EAAM5I,IAChC86B,EAAW7pB,GAAY6M,KAAK5c,OAAQ0H,EAAM5I,IAC1CqK,EAAcyT,KAAK5c,OAAO8B,gBACuB,IAAjD8a,KAAK5c,OAAO8B,cAAc8D,QAAQg0B,GAClCp3B,GAAiB,YAAcA,GAInC,GAHKgR,GAAc9L,EAAM5I,MACrBqK,GAAa,IAAM+K,GAAexM,EAAM5I,KAExC46B,IAAS3zB,IAAkB6W,KAAK5c,OAAO65B,eAAiB/0B,GAAc4C,EAAM5I,IAAK,CACjF,IAAIsH,EAASF,EAAY0W,KAAK5c,OAAQ0H,EAAM5I,IAC5C2L,WAAS,eAAgBrE,EAAQsB,EAAM5I,IACvC2L,WAAS,iBAAmB8Y,IAAKoW,GAAUjyB,EAAM5I,SAGjD2L,WAAS,WAAYivB,EAAMhyB,EAAM5I,IAErC2L,WAAS,gBAAkBqc,MAAO3d,EAAW2wB,MAAOH,GAAUjyB,EAAM5I,IACpEA,IAEJ,OAAO4I,GAEXsoB,EAAe5K,UAAU2U,cAAgB,SAAUl3B,GAC/C+Z,KAAKyW,OAAOxwB,IAEhBmtB,EAAe5K,UAAU4U,YAAc,SAAUn3B,GACpB,eAArB+Z,KAAK5c,OAAOoE,OAGhBwY,KAAKuc,eAAet2B,GACpB+Z,KAAKqd,cACLrd,KAAKqZ,aAAan4B,WAAS8e,KAAK5c,OAAO1B,MAAQ,KAAO,OAAQse,KAAK5c,OAAOsY,eAC1EsE,KAAK5c,OAAOsY,YAAc,KAC1BsE,KAAK5c,OAAOgE,qBAAqBrF,QAAQ6d,QACzCI,KAAK5c,OAAOkB,aAAe,mBAE/B8uB,EAAe5K,UAAU8U,eAAiB,WACL,mBAA7Btd,KAAK5c,OAAOkB,cACZ0b,KAAKud,sBAGbnK,EAAe5K,UAAUgV,aAAe,WACH,mBAA7Bxd,KAAK5c,OAAOkB,cACZ8S,GAAO4I,KAAK5c,OAAQ4c,KAAK5c,OAAO8B,cAAe8a,KAAK5c,OAAO5B,KAAM,WAIzE4xB,EAAe5K,UAAUiV,YAAc,SAAUx3B,GACpB,eAArB+Z,KAAK5c,OAAOoE,OAGhBwY,KAAKuc,eAAet2B,GACpB+Z,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GACjD8a,KAAKqd,gBAETjK,EAAe5K,UAAUkV,aAAe,SAAUz3B,GACrB,eAArB+Z,KAAK5c,OAAOoE,MAGhBwY,KAAKuc,eAAet2B,IAExBmtB,EAAe5K,UAAUmV,aAAe,WACH,mBAA7B3d,KAAK5c,OAAOkB,cAA0E,IAArC0b,KAAK5c,OAAO8B,cAAc/C,QAC3E6d,KAAK4d,oBAGbxK,EAAe5K,UAAUqV,cAAgB,SAAU53B,GAC/C+Z,KAAK5c,OAAOK,OAAQ,EAE4C,KAA5Duc,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,QAClDib,KAAK5c,OAAO06B,kBAES,eAArB9d,KAAK5c,OAAOoE,OACZ9D,EAAWsc,KAAK5c,QAChB4c,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GACjD8a,KAAKuc,eAAet2B,GAChB+Z,KAAK5c,OAAOwY,cACZoE,KAAKqd,cACLrd,KAAK+d,aAAa/d,KAAK5c,OAAOwY,aAC9BoE,KAAK5c,OAAOwY,YAAc,QAItCwX,EAAe5K,UAAUwV,WAAa,SAAU/3B,GACX,mBAA7B+Z,KAAK5c,OAAOkB,cACZ0b,KAAKie,aAAah4B,EAAKqO,SAG/B8e,EAAe5K,UAAU0V,aAAe,WACX,eAArBle,KAAK5c,OAAOoE,MAAyBwY,KAAKje,SAC1Cie,KAAKje,QAAQiB,UAAUoC,IAAIkzB,KAGnClF,EAAe5K,UAAU2V,gBAAkB,WACvC,GAAyB,eAArBne,KAAK5c,OAAOoE,KAAuB,CACnCwY,KAAK2W,UAAY3W,KAAKoe,eACtB,IAAIC,EAAWre,KAAKse,cAEpBte,KAAKue,YAAYF,GADDG,SAAS,EAAMC,UAAU,IAEzCze,KAAKqT,eAAgB,EACrBrT,KAAK2E,cAAe,IAG5ByO,EAAe5K,UAAUkW,eAAiB,WACb,eAArB1e,KAAK5c,OAAOoE,OACZwY,KAAK2e,iBACL3e,KAAKqT,eAAgB,EACrBrT,KAAK2E,cAAe,IAG5ByO,EAAe5K,UAAUoW,gBAAkB,WACvC5e,KAAKuT,YAAa,GAEtBH,EAAe5K,UAAUqW,eAAiB,WACtC7e,KAAKuT,YAAa,GAGtBH,EAAe5K,UAAUsW,SAAW,SAAU74B,GACjB,eAArB+Z,KAAK5c,OAAOoE,OACZwY,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GACjD8a,KAAK5c,OAAOU,OAAOsX,OACnB4E,KAAK5c,OAAO06B,cAAgB73B,EAAKc,MACjCiZ,KAAKuc,eAAet2B,KAG5BmtB,EAAe5K,UAAUuW,gBAAkB,WACd,eAArB/e,KAAK5c,OAAOoE,MAGhBwY,KAAKwY,gBAETpF,EAAe5K,UAAUwW,sBAAwB,WACpB,eAArBhf,KAAK5c,OAAOoE,MAGhBwY,KAAKud,sBAETnK,EAAe5K,UAAUyW,aAAe,WACX,eAArBjf,KAAK5c,OAAOoE,MAA0BlG,oBAAM0e,KAAK+W,UACW,KAA5D/W,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAAiBib,KAAK5c,OAAO4B,YACrD,eAAvBgb,KAAK5c,OAAO8H,SACf8U,KAAK5c,OAAO8H,OAAS,OACrB8U,KAAK5c,OAAOU,OAAOkL,SAG3BokB,EAAe5K,UAAUyO,oBAAsB,WACvCjX,KAAK5c,OAAO87B,cAGhBlf,KAAK5c,OAAO+7B,IAAIn5B,GAAmBga,KAAKif,cACxCjf,KAAK5c,OAAO+7B,IAAItvB,GAAoBmQ,KAAKmd,eACzCnd,KAAK5c,OAAO+7B,IAAIxjB,GAAkBqE,KAAKod,aACvCpd,KAAK5c,OAAO+7B,IAAIC,GAAqBpf,KAAKsd,gBAC1Ctd,KAAK5c,OAAO+7B,IAAIlf,GAAmBD,KAAKwd,cACxCxd,KAAK5c,OAAO+7B,IAAI9iB,GAAkB2D,KAAKyd,aACvCzd,KAAK5c,OAAO+7B,IAAIh3B,GAAmB6X,KAAK0d,cACxC1d,KAAK5c,OAAO+7B,IAAInjB,GAAoBgE,KAAK6d,eACzC7d,KAAK5c,OAAO+7B,IAAIx4B,GAAqBqZ,KAAKuc,gBAC1Cvc,KAAK5c,OAAO+7B,IAAIv4B,GAAeoZ,KAAK8e,UACpC9e,KAAK5c,OAAO+7B,IAAIE,GAAiBrf,KAAKge,YACtChe,KAAK5c,OAAO+7B,IAAI52B,GAAgByX,KAAK6d,eACrC7d,KAAK5c,OAAO+7B,IAAIG,GAAqBtf,KAAKuf,mBAC1Cvf,KAAK5c,OAAO+7B,IAAIK,GAAmBxf,KAAKyf,cACxCzf,KAAK5c,OAAO+7B,IAAIhe,GAAsBnB,KAAK0f,iBAC3C1f,KAAK5c,OAAO+7B,IAAIQ,GAAmB3f,KAAK2d,cACxC3d,KAAK5c,OAAO+7B,IAAIjjB,GAAkB8D,KAAK6d,eACvC7d,KAAK5c,OAAO+7B,IAAIjI,GAAmBlX,KAAKke,cACxCle,KAAK5c,OAAO+7B,IAAIS,GAAsB5f,KAAKme,iBAC3Cne,KAAK5c,OAAO+7B,IAAIU,GAAqB7f,KAAK0e,gBAC1C1e,KAAK5c,OAAO+7B,IAAIW,GAAqB9f,KAAK+f,gBAC1C/f,KAAK5c,OAAO+7B,IAAI/kB,GAAsB4F,KAAK4e,iBAC3C5e,KAAK5c,OAAO+7B,IAAI1kB,GAAqBuF,KAAK6e,gBAC1C7e,KAAK5c,OAAO+7B,IAAIa,GAAuBhgB,KAAKigB,uBAC5CjgB,KAAK5c,OAAO+7B,IAAIe,GAAkBlgB,KAAKmgB,eACvCngB,KAAK5c,OAAO+7B,IAAI1uB,GAAkBuP,KAAKogB,aACvCpgB,KAAK5c,OAAO+7B,IAAI3sB,GAAiBwN,KAAKqgB,YACtCrgB,KAAK5c,OAAO+7B,IAAI/6B,GAAoB4b,KAAKsgB,eACzCtgB,KAAK5c,OAAO+7B,IAAI5qB,GAAiByL,KAAKub,YACtCvb,KAAK5c,OAAO+7B,IAAIoB,GAAoBvgB,KAAKwgB,eACzCxgB,KAAK5c,OAAO+7B,IAAIsB,GAAsBzgB,KAAK+e,iBAC3C/e,KAAK5c,OAAO+7B,IAAIpsB,GAAiBiN,KAAK0gB,YACtC1gB,KAAK5c,OAAO+7B,IAAIwB,GAA4B3gB,KAAKgf,uBACjDhf,KAAK5c,OAAO+7B,IAAIyB,GAAkB5gB,KAAK6d,iBAE3CzK,EAAe5K,UAAUqL,iBAAmB,WACxC7T,KAAK5c,OAAOy9B,GAAG76B,GAAmBga,KAAKif,aAAcjf,MACrDA,KAAK5c,OAAOy9B,GAAGhxB,GAAoBmQ,KAAKmd,cAAend,MACvDA,KAAK5c,OAAOy9B,GAAGllB,GAAkBqE,KAAKod,YAAapd,MACnDA,KAAK5c,OAAOy9B,GAAG14B,GAAmB6X,KAAK0d,aAAc1d,MACrDA,KAAK5c,OAAOy9B,GAAGzB,GAAqBpf,KAAKsd,eAAgBtd,MACzDA,KAAK5c,OAAOy9B,GAAG7kB,GAAoBgE,KAAK6d,cAAe7d,MACvDA,KAAK5c,OAAOy9B,GAAG5gB,GAAmBD,KAAKwd,aAAcxd,MACrDA,KAAK5c,OAAOy9B,GAAGpwB,GAAkBuP,KAAKogB,YAAapgB,MACnDA,KAAK5c,OAAOy9B,GAAGxkB,GAAkB2D,KAAKyd,YAAazd,MACnDA,KAAK5c,OAAOy9B,GAAGl6B,GAAqBqZ,KAAKuc,eAAgBvc,MACzDA,KAAK5c,OAAOy9B,GAAGj6B,GAAeoZ,KAAK8e,SAAU9e,MAC7CA,KAAK5c,OAAOy9B,GAAGxB,GAAiBrf,KAAKge,WAAYhe,MACjDA,KAAK5c,OAAOy9B,GAAGlB,GAAmB3f,KAAK2d,aAAc3d,MACrDA,KAAK5c,OAAOy9B,GAAG3kB,GAAkB8D,KAAK6d,cAAe7d,MACrDA,KAAK5c,OAAOy9B,GAAGt4B,GAAgByX,KAAK6d,cAAe7d,MACnDA,KAAK5c,OAAOy9B,GAAGvB,GAAqBtf,KAAKuf,kBAAmBvf,MAC5DA,KAAK5c,OAAOy9B,GAAGrB,GAAmBxf,KAAKyf,aAAczf,MACrDA,KAAK5c,OAAOy9B,GAAG1f,GAAsBnB,KAAK0f,gBAAiB1f,MAC3DA,KAAK5c,OAAOy9B,GAAG3J,GAAmBlX,KAAKke,aAAcle,MACrDA,KAAK5c,OAAOy9B,GAAGjB,GAAsB5f,KAAKme,gBAAiBne,MAC3DA,KAAK5c,OAAOy9B,GAAGhB,GAAqB7f,KAAK0e,eAAgB1e,MACzDA,KAAK5c,OAAOy9B,GAAGf,GAAqB9f,KAAK+f,eAAgB/f,MACzDA,KAAK5c,OAAOy9B,GAAGzmB,GAAsB4F,KAAK4e,gBAAiB5e,MAC3DA,KAAK5c,OAAOy9B,GAAGpmB,GAAqBuF,KAAK6e,eAAgB7e,MACzDA,KAAK5c,OAAOy9B,GAAGtsB,GAAiByL,KAAKub,WAAYvb,MACjDA,KAAK5c,OAAOy9B,GAAGN,GAAoBvgB,KAAKwgB,cAAexgB,MACvDA,KAAK5c,OAAOy9B,GAAGb,GAAuBhgB,KAAKigB,sBAAuBjgB,MAClEA,KAAK5c,OAAOy9B,GAAGX,GAAkBlgB,KAAKmgB,cAAengB,MACrDA,KAAK5c,OAAOy9B,GAAGruB,GAAiBwN,KAAKqgB,WAAYrgB,MACjDA,KAAK5c,OAAOy9B,GAAGz8B,GAAoB4b,KAAKsgB,cAAetgB,MACvDA,KAAK5c,OAAOy9B,GAAGJ,GAAsBzgB,KAAK+e,gBAAiB/e,MAC3DA,KAAK5c,OAAOy9B,GAAG9tB,GAAiBiN,KAAK0gB,WAAY1gB,MACjDA,KAAK5c,OAAOy9B,GAAGF,GAA4B3gB,KAAKgf,sBAAuBhf,MACvEA,KAAK5c,OAAOy9B,GAAGD,GAAkB5gB,KAAK6d,cAAe7d,OAEzDoT,EAAe5K,UAAUkX,gBAAkB,WAAc1f,KAAKqT,eAAgB,EAAMrT,KAAK2E,cAAe,GAExGyO,EAAe5K,UAAUuX,eAAiB,SAAU95B,GAChD,GAAI+Z,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,gBAAiB,CACnD,IAAIjoB,EAAM5N,UAAQM,EAAKqO,OAAQ,MAC/B0L,KAAK5c,OAAOgD,UAAY4Z,KAAKsb,cAAc/nB,MAGnD6f,EAAe5K,UAAUgY,cAAgB,WACjCxgB,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,kBACO,IAArCxb,KAAK5c,OAAO8B,cAAc/C,OAC1B6d,KAAKud,qBAGLvd,KAAK5c,OAAOgD,UAAYlF,WAAS8e,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAAI6d,KAAK5c,OAAOG,aAI5G6vB,EAAe5K,UAAU4X,YAAc,WAC/BpgB,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,kBAClCxb,KAAK5c,OAAOgD,SAAuC,KAA3B4Z,KAAK5c,OAAOmN,YAAsBlK,EAAc2Z,KAAK5c,UACxE4c,KAAKsb,cAAcz4B,SAAO,YAAamd,KAAKje,aAGzDqxB,EAAe5K,UAAU8X,cAAgB,WACrC,GAAItgB,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,gBAAiB,CACnD,IAAIlC,EAAYtZ,KAAKje,QAAQwD,iBAAiB,IAAMg0B,IACpDvZ,KAAK5c,OAAOwB,iBACZob,KAAK5c,OAAOe,kBACZ,IAAK,IAAIjC,EAAI,EAAGA,EAAIo3B,EAAUn3B,OAAQD,IAClC8d,KAAK5c,OAAOe,eAAe9B,KAAKi3B,EAAUp3B,IAC1C8d,KAAK5c,OAAOwB,cAAcvC,KAAK2d,KAAKsb,cAAchC,EAAUp3B,OAIxEkxB,EAAe5K,UAAU6X,WAAa,SAAUp6B,GACnB,eAArB+Z,KAAK5c,OAAOoE,OACZwY,KAAK0T,kBAAmB,EACpB1T,KAAK5c,OAAO5B,OAASwe,KAAK5c,OAAOgW,iBAAmB4G,KAAK5c,OAAO5B,OAASiQ,EAAiBuO,KAAK5c,OAAQ6C,IACvG+Z,KAAK6d,cAAc53B,KAI/BmtB,EAAe5K,UAAUkY,WAAa,SAAUz6B,GACnB,eAArB+Z,KAAK5c,OAAOoE,OACZwY,KAAK0T,kBAAmB,EACxB1T,KAAK6d,cAAc53B,KAG3BmtB,EAAe5K,UAAU+W,kBAAoB,SAAU9hB,GACnD,IAAIqjB,EACJ,GAAIrjB,EAAE1O,SAAWiR,KAAKwb,iBAAgC,WAAb/d,EAAE1O,OAG3C,IAAK,IAAIgyB,EAAK,EAAGC,EAAK1qB,OAAOD,KAAKoH,EAAEwjB,SAAUF,EAAKC,EAAG7+B,OAAQ4+B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,mBACD/gB,KAAKkZ,gBACL,MACJ,IAAK,SACDlZ,KAAKwY,eACL,MACJ,IAAK,gBACDxY,KAAKqT,eAAgB,EACrBrT,KAAK2E,cAAe,EACpBmc,EAAkBx/B,oBAAM0e,KAAK5c,OAAO8B,kBAAsB8a,KAAK5c,OAAO8B,cAAc6zB,MAAM,GAC1F+H,EAAkB9gB,KAAK5c,OAAO89B,oBAAsBJ,EAChDA,EAAgB/H,MAAM+H,EAAgB3+B,OAAS,GACnD6d,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GACjD8a,KAAK0e,iBACDoC,EAAgB3+B,QAChB6d,KAAKqZ,YAAYyH,GAErB9gB,KAAK5c,OAAO7B,eAAgB2D,cAAe8a,KAAK5c,OAAO8B,gBAAiB,GACxE8a,KAAKqT,eAAgB,EACrBrT,KAAK2E,cAAe,EACpB,MACJ,IAAK,gBACD1c,EAAQ+X,KAAK5c,QACb,MACJ,IAAK,oBAGL,IAAK,kBACDkE,GAAK0Y,KAAK5c,OAAQ4Y,GAAoBgE,KAAK5c,OAAO5B,MAClD,MACJ,IAAK,sBACD,GAAyB,eAArBwe,KAAK5c,OAAOoE,KACZ,MAEJS,EAAQ+X,KAAK5c,QACb,MACJ,IAAK,OACDmE,EAAayY,KAAK5c,OAAQ,iBAK1CgwB,EAAe5K,UAAUgI,QAAU,WAC3BxQ,KAAK5c,OAAO87B,cAGhBlf,KAAKiX,sBACDjX,KAAK+W,SACL/W,KAAKgX,eAEThX,KAAK2W,UAAY,KACjB3W,KAAK2Y,aAAe,OAExBvF,EAAe5K,UAAUkR,WAAa,WAClC1Z,KAAKmhB,gBAAe,GACpBnhB,KAAKohB,eAAiB,IAAIC,iBAAerhB,KAAKje,SAC1Cu/B,UAAWthB,KAAKuhB,iBAAiBxhB,KAAKC,MACtC8T,WAAY9T,KAAK8T,WACjBlkB,UAAW,UAEfoQ,KAAKwhB,mBAAqB,IAAIH,iBAAerhB,KAAKje,SAC9Cu/B,UAAWthB,KAAKyhB,qBAAqB1hB,KAAKC,MAC1C8T,WAAY9T,KAAK8T,WACjBlkB,UAAW,YAEf8xB,eAAat8B,IAAI4a,KAAKje,QAAS,YAAaie,KAAK2hB,YAAa3hB,OAElEoT,EAAe5K,UAAUwO,aAAe,WACpChX,KAAKmhB,gBAAe,GACpBO,eAAaj8B,OAAOua,KAAKje,QAAS,YAAaie,KAAK2hB,aACpD3hB,KAAKohB,eAAe5Q,UACpBxQ,KAAKwhB,mBAAmBhR,WAG5B4C,EAAe5K,UAAUmZ,YAAc,SAAUlkB,GAC7C,IAAImkB,EAAYj8B,UAAQ8X,EAAEnJ,OAAQ,gBAClC5Q,EAAWsc,KAAK5c,OAAQ,SACN,OAAdw+B,GACAA,EAAU5+B,UAAUoC,IAAII,KAGhC4tB,EAAe5K,UAAU2Y,eAAiB,SAAUU,GAChD,GAAIA,EAAQ,CAER,IAAIC,EAAU9hB,KACdA,KAAK+hB,SAAW,IAAIC,QAAMhiB,KAAKje,SAC3BkgC,IAAK,SAAUC,GACXA,EAAIC,cAActc,iBACdic,EAAQ1+B,OAAOg/B,UACfN,EAAQtO,SAAW0O,EAAI1O,SACvBsO,EAAQO,SAAWH,EACnBpsB,WAAW,WACHgsB,EAAQtO,SAAW,GACnBsO,EAAQQ,YAAYR,EAAQO,UAEhCP,EAAQtO,SAAW,GACpB,MAGkB,IAAjB0O,EAAI1O,UAA8C,IAA5B0O,EAAIC,cAAc7b,MACxCwb,EAAQS,gBAAgBL,GAGxBJ,EAAQU,aAAaN,IAIjCO,QAAS,SAAUhlB,GACXqkB,EAAQ1+B,OAAOg/B,WACfN,EAAQY,cAAcZ,EAAQ1+B,OAAO89B,oBACjCY,EAAQ1+B,OAAO89B,qBACftN,YAAUkO,EAAQ1+B,OAAOrB,SAAU4gC,IAEvCb,EAAQU,aAAa/kB,YAM7BuC,KAAK+hB,UACL/hB,KAAK+hB,SAASvR,WAI1B4C,EAAe5K,UAAU8Z,YAAc,SAAUJ,GAC7C,IAAI5tB,EAAS4tB,EAAIC,cAAc7tB,OAC3B/K,EAAO5D,UAAQ2O,EAAQ,IAAM3R,IAC7Bqd,KAAK0iB,aAAepuB,EAAOtR,UAAUC,SAASm2B,KAAoB93B,oBAAMiI,GACxEyW,KAAKwiB,aAAaN,IAGlBliB,KAAK5c,OAAOqT,QAAS,EACrBuJ,KAAK4iB,WAAWr5B,GACXyW,KAAK5c,OAAOqT,OAGS,IAAjByrB,EAAI1O,UACTxT,KAAKwiB,aAAaN,GAClBliB,KAAKuiB,gBAAgBL,IAGrBliB,KAAKwiB,aAAaN,GAPlBliB,KAAKuiB,gBAAgBL,KAWjC9O,EAAe5K,UAAUga,aAAe,SAAU/kB,GAC9C,IAAInJ,EAASmJ,EAAE0kB,cAAc7tB,OAC7B5Q,EAAWsc,KAAK5c,OAAQ,SACxB4c,KAAKue,YAAYjqB,EAAQmJ,EAAE0kB,eAC3BniB,KAAK5c,OAAOkB,aAAe,kBAS/B8uB,EAAe5K,UAAU+V,YAAc,SAAUjqB,EAAQmJ,GACrD,IAAIlU,EAAO5D,UAAQ2O,EAAQ,IAAM3R,IAC7BkgC,EAAQvuB,EAAOtR,UACnBgd,KAAK5c,OAAOqT,QAAS,EACrB,IAAIxS,EAAS,SACb,GAAgB,IAAZwZ,EAAE6I,OAAgBhlB,oBAAMiI,KAASA,EAAKvG,UAAUC,SAASs2B,IAA7D,CAIK,GAAKj4B,oBAAMiI,GAsDRyW,KAAK5c,OAAO8B,cAAc/C,SAAW6d,KAAK8Y,SAAS32B,SACnD6d,KAAKyT,mBAAoB,GAE7BzT,KAAK2e,qBAzDc,CACf3e,KAAK5c,OAAO89B,qBAAuB33B,EAAKvG,UAAUC,SAASs2B,MACvD9b,EAAE+gB,SAAWlqB,EAAOtR,UAAUC,SAAS6/B,OAC3C7+B,EAAS,YAETwZ,EAAE+gB,SAAW/gB,EAAEghB,WACfze,KAAKyT,mBAAoB,GAG7B,IAAiC,IADTzT,KAAK+iB,iBAAiB9+B,EAAQsF,GAChCsK,OAAiB,CAMnC,GALMmM,KAAK5c,OAAO89B,sBAAyBlhB,KAAK0iB,cAAgBjlB,GAAMA,EAAE+gB,UAChEqE,EAAM5/B,SFtsBX,aEusBC+c,KAAK4iB,WAAWr5B,GAChByW,KAAKqd,eAELrd,KAAK5c,OAAO89B,qBAAuBzjB,EAAEghB,SAAU,CACzChhB,GAAKA,EAAE+gB,SACTxe,KAAKqd,cAEJrd,KAAK2W,YACN3W,KAAK2W,UAAYptB,GAErB,IAAIy5B,EAAahjB,KAAK8Y,SAAS9vB,QAAQgX,KAAK2W,WACxCsM,EAAWjjB,KAAK8Y,SAAS9vB,QAAQO,GACrC,GAAIy5B,EAAaC,EACb,IAAK,IAAI/gC,EAAI8gC,EAAY9gC,GAAK+gC,EAAU/gC,IACpC8d,KAAKkjB,UAAUljB,KAAK8Y,SAAS52B,SAIjC,IAASA,EAAI8gC,EAAY9gC,GAAK+gC,EAAU/gC,IACpC8d,KAAKkjB,UAAUljB,KAAK8Y,SAAS52B,IAGrC8d,KAAKmjB,SAASnjB,KAAK8Y,SAASmK,SAG5BjjB,KAAK2W,UAAYptB,EACbyW,KAAK5c,OAAO89B,qBAAuB33B,EAAKvG,UAAUC,SAASs2B,IAC3DvZ,KAAKxc,aAAa+F,GAGlByW,KAAKkjB,UAAU35B,GAEnByW,KAAKmjB,SAAS55B,GAEuB,IAArCyW,KAAK5c,OAAO8B,cAAc/C,QAC1B6d,KAAK6W,mBAET7W,KAAK5c,OAAOU,OAAOsX,OACnB4E,KAAKojB,cAAcn/B,EAAQsF,IAS9BjI,oBAAMiI,KACPyW,KAAKyT,mBAAoB,EACzBzT,KAAK4iB,WAAWr5B,SAhEhByW,KAAK4iB,WAAWr5B,IAmExB6pB,EAAe5K,UAAU+Z,gBAAkB,SAAU9kB,GACjDuC,KAAK5c,OAAOkB,aAAe,iBAC3B,IAAIgQ,EAASmJ,EAAE0kB,cAAc7tB,OAC7B0L,KAAKie,aAAa3pB,IAEtB8e,EAAe5K,UAAUmW,eAAiB,WACtC3e,KAAKqd,cACLrd,KAAK6W,mBACL7W,KAAK5c,OAAOU,OAAOsX,QAEvBgY,EAAe5K,UAAUqO,iBAAmB,WACxC7W,KAAK0iB,aAAc,EACnBW,eAAarjB,KAAK5c,OAAOrB,SAAU4gC,KAEvCvP,EAAe5K,UAAUyV,aAAe,SAAU3pB,GAC9C,IAAI8lB,EAAQpa,KACZ,IAAI1e,oBAAMgT,GAAV,CAGA,IAAI/K,EAAO5D,UAAQ2O,EAAQ,IAAM3R,IAEjC,GADAqd,KAAK5c,OAAOqT,QAAS,GAChBnV,oBAAMiI,GAAO,CACdyW,KAAK4iB,WAAWr5B,GAEhB,IAAI+5B,EAAYtjB,KAAKsb,cAAc/xB,GACnC,IAAKrB,GAAco7B,GAEf,YADAl7B,GAAmB4X,KAAK5c,OAAQkgC,EAAWj7B,IAG/C,IAAI6B,GAAc2J,QAAQ,EAAO1J,YAAam5B,EAAWv0B,OAAQ,kBACjEiR,KAAK5c,OAAOoH,QAAQ,WAAYN,EAAW,SAAUq5B,GACjD,IAAKA,EAAa1vB,OAAQ,CACtB,IAAI5S,EAAOC,WAAS,OAAQoiC,GAC5B,GAAKlJ,EAAMh3B,OAAOqT,OAkBb,CAED,GADW9N,EAAS26B,KACPn6B,GAAgB,CACzB,IAAIK,EAASF,EAAY8wB,EAAMh3B,OAAQkgC,GACvC9c,GAAkB4T,EAAMh3B,OAAQnC,EAAMuI,QAtBpB,CAEtB,GAAY,KADF4wB,EAAMh3B,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAC1Cq1B,EAAMh3B,OAAO4B,WAW5BgL,EAAiBoqB,EAAMh3B,OAAQkgC,OAXS,CACxC,IAAIniC,EAAKD,WAAS,KAAMoiC,GACxBlJ,EAAMh3B,OAAOoO,QAAU4oB,EAAMh3B,OAAO5B,KACpC,IAAI8B,EAAU82B,EAAMh3B,OAAO5B,MAAQF,oBAAMH,GAAMF,EAAOE,GAAM,IAC5Di5B,EAAMh3B,OAAO7B,eAAgBC,KAAM8B,IAAW,GAC9C82B,EAAMh3B,OAAOvB,UAAUQ,KAAKpB,GAC5Bm5B,EAAMh3B,OAAOzB,OAAOU,KAAKnB,WAAS,SAAUoiC,IAC5ClJ,EAAMh3B,OAAOgD,UAAYk9B,GACzBh7B,EAAW8xB,EAAMh3B,QAKrBg3B,EAAMh3B,OAAO4B,YAAa,EAC1Bo1B,EAAMh3B,OAAO7B,eAAgB2D,mBAAqB,UAatEkuB,EAAe5K,UAAUoa,WAAa,SAAUr5B,GAC5C,IAAIi6B,EAAS3gC,SAAO,IAAMgG,GAAYU,GACtCyW,KAAK5c,OAAOqT,SAASnV,oBAAMkiC,IAI/BpQ,EAAe5K,UAAUiZ,qBAAuB,SAAUhkB,GACtD,GAAKuC,KAAKuT,WAGV,OAAQ9V,EAAExZ,QACN,IAAK,MACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,MACL,IAAK,MACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,KACL,IAAK,QACDwZ,EAAEoI,mBAQduN,EAAe5K,UAAU+Y,iBAAmB,SAAU9jB,GAClD,IAAI2c,EAAQpa,KACZ,GAAKA,KAAKuT,WAAV,CAGA,IAAIkQ,EAAQzjB,KAAK0jB,iBACbC,EAAY3jB,KAAKoe,eACjBC,EAAWre,KAAKse,cACpB,OAAQ7gB,EAAExZ,QACN,IAAK,MACG+b,KAAK5c,OAAOm1B,sBACZvY,KAAKqd,cACLrd,KAAKje,QAAQmU,kBAAkB0tB,SAAS,EAAG5jB,KAAKje,QAAQmU,kBAAkB2tB,cAC1E/tB,WAAW,WACPskB,EAAM0J,aAAa1J,EAAMtB,SAASsB,EAAMtB,SAAS32B,OAAS,KAC3D,KAGH6d,KAAK8jB,aAAazF,GAEtB,MACJ,IAAK,OACGre,KAAK5c,OAAOm1B,sBACZvY,KAAKqd,cACLrd,KAAKje,QAAQmU,kBAAkB6tB,UAAY,EAC3CjuB,WAAW,WACPskB,EAAM0J,aAAa1J,EAAMtB,SAAS,KACnC,KAGH9Y,KAAK8jB,aAAaH,GAEtB,MACJ,IAAK,MACIriC,oBAAMmiC,GAGDniC,oBAAMqiC,IACZ3jB,KAAKmjB,SAASQ,GAHd3jB,KAAKmjB,SAASM,GAKlB,MACJ,IAAK,WACDzjB,KAAKgkB,aAAaP,GAAO,GACzB,MACJ,IAAK,WACDzjB,KAAKikB,cAAcR,GAAO,GAC1B,MACJ,IAAK,YACDzjB,KAAKikB,cAAcR,GAAO,GAC1B,MACJ,IAAK,SACDzjB,KAAKgkB,aAAaP,GAAO,GACzB,MACJ,IAAK,UACL,IAAK,WACL,IAAK,QACDzjB,KAAKkkB,SAAS7F,EAAU5gB,GACxB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDuC,KAAKmkB,UAAUR,EAAWlmB,GAC1B,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDuC,KAAKokB,UAAUX,EAAOhmB,GACtB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDuC,KAAKqkB,UAAUZ,EAAOhmB,GACtB,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACDuC,KAAKskB,WAAWb,EAAOhmB,GACvB,MACJ,IAAK,SACL,IAAK,UACL,IAAK,OACDuC,KAAKukB,QAAQd,EAAOhmB,GACpB,MACJ,IAAK,QACDuC,KAAKwkB,SAASf,GACd,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACIniC,oBAAMmiC,IACPzjB,KAAKue,YAAYkF,EAAOhmB,GAE5B,MACJ,IAAK,QACDuC,KAAKykB,SAASd,EAAWtF,GACzB,MACJ,IAAK,QACDre,KAAKie,aAAaje,KAAK5c,OAAOszB,YAAc1W,KAAK5c,OAAOszB,YAAc1W,KAAK0kB,kBAC3E,MACJ,IAAK,WACD1kB,KAAK5c,OAAOU,OAAOy8B,OACnBhnB,GAAWyG,KAAK5c,OAAQ4c,KAAK5c,OAAO8B,cAAe8a,KAAK5c,OAAO5B,KAAM,WACrE,MACJ,IAAK,MACDgC,EAAawc,KAAK5c,QAClB,MACJ,IAAK,MACL,IAAK,WACD4c,KAAK2kB,gBACL,MACJ,IAAK,QACDn8B,EAAUwX,KAAK5c,QACf,MACJ,IAAK,QACD4c,KAAK5c,OAAOmN,WAAa,GACzBF,EAAa2P,KAAK5c,QAClB,MACJ,IAAK,QACDsF,EAASsX,KAAK5c,QACd,MACJ,IAAK,KACD4c,KAAK4kB,gBACL,MACJ,IAAK,QACD5kB,KAAKlJ,gBAIjBsc,EAAe5K,UAAU1R,WAAa,WAClCkJ,KAAKud,qBACLzmB,GAAWkJ,KAAK5c,SAEpBgwB,EAAe5K,UAAUmc,cAAgB,WACrC,GAAI3kB,KAAK5c,OAAO8B,eAAiB8a,KAAK5c,OAAO8B,cAAc/C,OAAS,EAAG,CACnE6d,KAAKud,qBAGL,IAAK,IADDx8B,EAAOif,KAAK5c,OAAOgD,SACdlE,EAAI,EAAGA,EAAInB,EAAKoB,OAAQD,IAC7B,IAAK0U,GAAc7V,EAAKmB,IAEpB,YADAkG,GAAmB4X,KAAK5c,OAAQrC,EAAKmB,GAAI2U,IAIjDlG,GAAaqP,KAAK5c,OAAQ,YAGlCgwB,EAAe5K,UAAUoc,cAAgB,WACI,IAArC5kB,KAAK5c,OAAO8B,cAAc/C,SAC1B6d,KAAK4d,mBACLjnB,GAASqJ,KAAK5c,UAGtBgwB,EAAe5K,UAAUoV,iBAAmB,WACxC,IAAIr0B,EAAO1G,SAAO,IAAMF,GAAgB,IAAM42B,GAAYvZ,KAAKje,SAE3DhB,EAAOif,KAAKsb,cAAc/xB,GAC9BgN,GAAmByJ,KAAK5c,OAAQrC,IAEpCqyB,EAAe5K,UAAUkc,eAAiB,WACtC,IAAIn7B,EAAOyW,KAAK5c,OAAO8B,cAAc8a,KAAK5c,OAAO8B,cAAc/C,OAAS,GACpEq6B,EAAUxc,KAAKyc,YAAYlzB,GAAOyW,KAAK5c,OAAO1B,OAClD,OAAOse,KAAK8Y,SAAS0D,EAAQ,KAEjCpJ,EAAe5K,UAAUkb,eAAiB,WACtC,OAAO7gC,SAAO,IAAMF,GAAgB,IAAMkiC,GAAW7kB,KAAKje,UAE9DqxB,EAAe5K,UAAUsc,cAAgB,WACrC,OAAOjiC,SAAO,IAAMF,GAAgB,IAAM42B,GAAYvZ,KAAKje,UAE/DqxB,EAAe5K,UAAU4V,aAAe,WACpC,OAAOpe,KAAK8Y,SAAS,IAEzB1F,EAAe5K,UAAU8V,YAAc,WACnC,OAAOte,KAAK8Y,SAAS9Y,KAAK8Y,SAAS32B,OAAS,IAEhDixB,EAAe5K,UAAUsb,aAAe,SAAUv6B,GAC9CyW,KAAKqb,SAAS9xB,IAElB6pB,EAAe5K,UAAUwb,aAAe,SAAUP,EAAOsB,GACrD,IAAIC,EAAQhlB,KAAKilB,YAAYxB,EAAOsB,EAAW/kB,KAAKklB,QACpDllB,KAAKqb,SAAS2J,IAElB5R,EAAe5K,UAAUyb,cAAgB,SAAUR,EAAOsB,GACtD,IAAIC,EAAQhlB,KAAKilB,YAAYxB,EAAOsB,GACpC/kB,KAAKqb,SAAS2J,IAElB5R,EAAe5K,UAAUyc,YAAc,SAAUE,EAAIJ,EAAWG,GAC5D,GAAI5jC,oBAAM6jC,GACN,OAAOnlB,KAAK0jB,kBAAoB1jB,KAAK8kB,iBAAmB9kB,KAAKoe,eAEjE,IACIgH,EADA9kB,EAAQN,KAAK8Y,SAAS9vB,QAAQm8B,GAElC,EAAG,CAQC,GANI7kB,EADAykB,EACQG,EAAS5kB,EAAQ4kB,EAAS5kB,EAAQ,EAGlC4kB,EAAS5kB,EAAQ4kB,EAAS5kB,EAAQ,EAE9C8kB,EAAWplB,KAAK8Y,SAASxY,GACrBN,KAAK5c,OAAOm1B,sBAAwBj3B,oBAAM8jC,GAAW,CACrD,IAAIC,EAAcC,SAASvxB,OAAOwT,iBAAiBvH,KAAK8Y,SAAS,IAAIyM,iBAAiB,cAAe,IACjGD,SAASvxB,OAAOwT,iBAAiBvH,KAAK8Y,SAAS,IAAIyM,iBAAiB,iBAAkB,IACtF1B,EAAe7jB,KAAK8Y,SAAS,GAAGrjB,wBAAwBoR,OAASwe,EACrErlB,KAAKje,QAAQmU,kBAAkB0tB,SAAS5jB,KAAKje,QAAQmU,kBAAkB6tB,UAAW/jB,KAAKje,QAAQmU,kBAAkB6tB,UAAYF,GAEjI,GAAIviC,oBAAM8jC,GACN,OAAOD,SAELK,YAAUJ,IACpB,OAAOA,GAEXhS,EAAe5K,UAAU6S,SAAW,SAAU+J,GAC1C,IAAK9jC,oBAAM8jC,GAAW,EAEe,IADTplB,KAAK+iB,iBAAiB,SAAUqC,GAClCvxB,SAClBmM,KAAK2W,UAAYyO,EACjBplB,KAAKqd,cACLrd,KAAKkjB,UAAUkC,GACfplB,KAAKmjB,SAASiC,GACdplB,KAAK5c,OAAOU,OAAOsX,OACnB4E,KAAKojB,cAAc,SAAUgC,MAIzChS,EAAe5K,UAAUgc,SAAW,SAAUf,GAC1C,IAAKniC,oBAAMmiC,KAAWA,EAAMzgC,UAAUC,SAASs2B,IAAa,EAEvB,IADTvZ,KAAK+iB,iBAAiB,SAAUU,GAClC5vB,SAClBmM,KAAKkjB,UAAUO,GACfzjB,KAAK5c,OAAOU,OAAOsX,OACnB4E,KAAKojB,cAAc,SAAUK,MAIzCrQ,EAAe5K,UAAUic,SAAW,SAAUd,EAAWtF,GACrD,GAAIre,KAAK5c,OAAO89B,sBAAwB5/B,oBAAMqiC,GAAY,CACtD3jB,KAAK2W,UAAYgN,EACjB,IACI8B,EAAWzlB,KAAKje,QAAQoK,cAAc,IAAMitB,IAC5CsM,EAAWD,EAAS1B,UACpB4B,EAAoB3lB,KAAK0jB,iBAC7B1jB,KAAKue,YAAYF,GAJDG,SAAS,EAAMC,UAAU,IAKzCgH,EAAS1B,UAAY2B,EAChBpkC,oBAAMqkC,IACP3lB,KAAKmjB,SAASwC,KAI1BvS,EAAe5K,UAAU0b,SAAW,SAAU7F,EAAU5gB,GAC/CuC,KAAK5c,OAAO89B,oBAGP5/B,oBAAM+8B,KACK,YAAb5gB,EAAExZ,OACF+b,KAAKmjB,SAAS9E,GAGdre,KAAKue,YAAYF,EAAU5gB,IAP/BuC,KAAK8jB,aAAazF,IAW1BjL,EAAe5K,UAAU2b,UAAY,SAAUR,EAAWlmB,GACjDuC,KAAK5c,OAAO89B,oBAGP5/B,oBAAMqiC,KACK,aAAblmB,EAAExZ,OACF+b,KAAKmjB,SAASQ,GAGd3jB,KAAKue,YAAYoF,EAAWlmB,IAPhCuC,KAAK8jB,aAAaH,IAW1BvQ,EAAe5K,UAAU4b,UAAY,SAAUX,EAAOhmB,GAClD,GAAKuC,KAAK5c,OAAO89B,oBAGZ,CACD,IAAI0E,EAAQ5lB,KAAKilB,YAAYxB,GAAO,EAAMzjB,KAAKklB,QAC1C5jC,oBAAMskC,KACU,aAAbnoB,EAAExZ,OACF+b,KAAKmjB,SAASyC,GAGd5lB,KAAKue,YAAYqH,EAAOnoB,SAThCuC,KAAKgkB,aAAaP,GAAO,IAcjCrQ,EAAe5K,UAAU6b,UAAY,SAAUZ,EAAOhmB,GAClD,GAAKuC,KAAK5c,OAAO89B,oBAGZ,CACD,IAAI2E,EAAQ7lB,KAAKilB,YAAYxB,GAAO,GAC/BniC,oBAAMukC,KACU,aAAbpoB,EAAExZ,OACF+b,KAAKmjB,SAAS0C,GAGd7lB,KAAKue,YAAYsH,EAAOpoB,SAThCuC,KAAKikB,cAAcR,GAAO,IAclCrQ,EAAe5K,UAAU8b,WAAa,SAAUb,EAAOhmB,GACnD,GAAKuC,KAAK5c,OAAO89B,oBAGZ,CACD,IAAI4E,EAAQ9lB,KAAKilB,YAAYxB,GAAO,GAC/BniC,oBAAMwkC,KACU,cAAbroB,EAAExZ,OACF+b,KAAKmjB,SAAS2C,GAGd9lB,KAAKue,YAAYuH,EAAOroB,SAThCuC,KAAKikB,cAAcR,GAAO,IAclCrQ,EAAe5K,UAAU+b,QAAU,SAAUd,EAAOhmB,GAChD,GAAKuC,KAAK5c,OAAO89B,oBAGZ,CACD,IAAI6E,EAAQ/lB,KAAKilB,YAAYxB,GAAO,EAAOzjB,KAAKklB,QAC3C5jC,oBAAMykC,KACU,WAAbtoB,EAAExZ,OACF+b,KAAKmjB,SAAS4C,GAGd/lB,KAAKue,YAAYwH,EAAOtoB,SAThCuC,KAAKgkB,aAAaP,GAAO,IAcjCrQ,EAAe5K,UAAU0a,UAAY,SAAUkC,GACtC9jC,oBAAM8jC,KACFA,EAASpiC,UAAUC,SAASs2B,MAC7BvZ,KAAK5c,OAAO8B,cAAc7C,KAAK2d,KAAKgmB,YAAYZ,IAChDplB,KAAK5c,OAAO7B,eAAgB2D,cAAe8a,KAAK5c,OAAO8B,gBAAiB,GACxE0uB,YAAUwR,IAAY7L,KACtB6L,EAAStO,aAAa,gBAAiB,QACvC9W,KAAK6c,WAAWuI,GAAU,IAE9BplB,KAAK5c,OAAOszB,YAAc0O,IAGlChS,EAAe5K,UAAUhlB,aAAe,SAAUyiC,GAC9C,IAAK3kC,oBAAM2kC,GAAU,CACjB5C,eAAa4C,IAAW1M,KACpBvZ,KAAK5c,OAAO89B,oBACZ+E,EAAQnP,aAAa,gBAAiB,SAGtCmP,EAAQnK,gBAAgB,iBAE5B9b,KAAK6c,WAAWoJ,GAAS,GACzB,IAAI3lB,EAAQN,KAAK5c,OAAO8B,cAAc8D,QAAQgX,KAAKgmB,YAAYC,IAC3D3lB,GAAS,IACTN,KAAK5c,OAAO8B,cAAc+e,OAAO3D,EAAO,GACxCN,KAAK5c,OAAO7B,eAAgB2D,cAAe8a,KAAK5c,OAAO8B,gBAAiB,IAE5E8a,KAAK5c,OAAOszB,YAAc,OAGlCtD,EAAe5K,UAAUwd,YAAc,SAAUz8B,GAE7C,IAAIxI,EAAOif,KAAKsb,cAAc/xB,GAC9B,OAAO4J,GAAY6M,KAAK5c,OAAQrC,IAEpCqyB,EAAe5K,UAAU2a,SAAW,SAAU55B,GAC1CyW,KAAKje,QAAQ+0B,aAAa,WAAY,MACtC,IAAI2M,EAAQzjB,KAAK0jB,iBACbD,IACAA,EAAM3H,gBAAgB,YACtBuH,eAAaI,IAASoB,MAE1BjR,YAAUrqB,IAAQs7B,KAClBt7B,EAAKutB,aAAa,WAAY,KAC9BvtB,EAAKqW,SAETwT,EAAe5K,UAAUqU,WAAa,SAAUtzB,EAAM28B,GAClD,GAAKlmB,KAAK5c,OAAO84B,mBAAjB,CAGA,IAAIS,EAAW95B,SAAO,WAAiB0G,GACnCjI,oBAAMq7B,KAGNuJ,EACKvJ,EAAS35B,UAAUC,SAAS6/B,MAC7BlP,YAAU+I,GAAWmG,IACrBn9B,UAAQg3B,EAAU,IAAMwJ,IAAarP,aAAa,eAAgB,SAIlE6F,EAAS35B,UAAUC,SAAS6/B,MAC5BO,eAAa1G,GAAWmG,IACxBn9B,UAAQg3B,EAAU,IAAMwJ,IAAarP,aAAa,eAAgB,aAI9E1D,EAAe5K,UAAU6U,YAAc,WACnC,IAAI+I,EAAOvqB,MAAM2M,UAAUuQ,MAAMC,KAAK1T,YAAU,IAAMiU,GAAYvZ,KAAK2Y,eAEvE,GAAoB,IAAhByN,EAAKjkC,OAAc,CAEnB,IAAiC,IADb6d,KAAK+iB,iBAAiB,WAAYqD,EAAK,IACrCvyB,OAClB,IAAK,IAAI3R,EAAI,EAAG0L,EAAMw4B,EAAKjkC,OAAQD,EAAI0L,EAAK1L,IACxC8d,KAAKxc,aAAa4iC,EAAKlkC,IAG/B8d,KAAKojB,cAAc,WAAYgD,EAAK,MAG5ChT,EAAe5K,UAAU2X,cAAgB,WACrCngB,KAAKyZ,eACAn4B,oBAAM0e,KAAK+W,UACZ/W,KAAKwY,gBAGbpF,EAAe5K,UAAUyX,sBAAwB,WAC7CjgB,KAAKyZ,gBAETrG,EAAe5K,UAAUiR,aAAe,WACpC,IAAIyL,EAAS,EACb,GAAIllB,KAAK8Y,SACL,IAAK,IAAI52B,EAAI,EAAG0L,EAAMoS,KAAK8Y,SAAS32B,OAAS,EAAGD,EAAI0L,GAC5CoS,KAAK8Y,SAAS52B,GAAGuT,wBAAwB7J,MAAQoU,KAAK8Y,SAAS52B,EAAI,GAAGuT,wBAAwB7J,IAD7C1J,IAEjDgjC,IAOZllB,KAAKklB,OAASA,GAElB9R,EAAe5K,UAAUua,iBAAmB,SAAU9+B,EAAQsF,GAE1D,IAAIxI,KACJ,GAAIif,KAAKyT,kBACL,IAAK,IAAIvxB,EAAI,EAAG0L,EAAMoS,KAAK8Y,SAAS32B,OAAQD,EAAI0L,EAAK1L,IACjDnB,EAAKmB,GAAK8d,KAAKsb,cAActb,KAAK8Y,SAAS52B,SAI/CnB,EAAK,GAAKif,KAAKsb,cAAc/xB,GAEjC,IAAIW,GACAjG,OAAQA,EAAQkG,YAAapJ,EAAKoB,OAAS,EAAIpB,EAAOA,EAAK,GAAI4jB,aAAc3E,KAAKqT,cAAexf,QAAQ,EAAOS,OAAQ0L,KAAKyT,kBAAoB,KAAOlqB,GAI5J,OAFAyW,KAAK5c,OAAOoH,QAAQ,gBAAiBN,GACrC8V,KAAKqT,eAAgB,EACdnpB,GAEXkpB,EAAe5K,UAAU4a,cAAgB,SAAUn/B,EAAQsF,GAEvD,IAAIxI,KACJ,GAAIif,KAAKyT,kBAAmB,CACxB,IAAK,IAAIvxB,EAAI,EAAG0L,EAAMoS,KAAK8Y,SAAS32B,OAAQD,EAAI0L,EAAK1L,IACjDnB,EAAKmB,GAAK8d,KAAKsb,cAActb,KAAK8Y,SAAS52B,IAE/C8d,KAAKyT,mBAAoB,OAGzB1yB,EAAK,GAAKif,KAAKsb,cAAc/xB,GAEjCyW,KAAK5c,OAAOijC,YAActlC,EAAKoB,OAAS,EAAIpB,EAAKA,EAAKoB,OAAS,GAAKpB,EAAK,GACzE,IAAImJ,GAAcjG,OAAQA,EAAQkG,YAAapJ,EAAKoB,OAAS,EAAIpB,EAAOA,EAAK,GAAI4jB,aAAc3E,KAAK2E,cACpG3E,KAAK5c,OAAOoH,QAAQ,aAAcN,GAClC8V,KAAK2E,cAAe,GAExByO,EAAe5K,UAAU6Q,YAAc,SAAUvuB,GAE7C,IAAK,IADD0xB,EAAUxc,KAAKyc,WAAW3xB,EAAOkV,KAAK5c,OAAO1B,OACxC4kC,EAAI,EAAG14B,EAAM4uB,EAAQr6B,OAAQmkC,EAAI14B,EAAK04B,IAAK,CAEhDtmB,KAAKue,YAAYve,KAAK8Y,SAAS0D,EAAQ8J,KADvB9H,SAAS,EAAMC,UAAU,MAIjDrL,EAAe5K,UAAUiU,WAAa,SAAU3xB,EAAOy7B,GAGnD,IAAK,IAFD/J,KACA31B,EAAS0/B,EAAO,KAAO,OAClBrkC,EAAI,EAAG0L,EAAMoS,KAAKlV,MAAM3I,OAAQD,EAAI0L,EAAK1L,KACU,IAApD4I,EAAM9B,QAAQ9H,WAAS2F,EAAQmZ,KAAKlV,MAAM5I,MAC1Cs6B,EAAQn6B,KAAKH,GAGrB,OAAOs6B,GAGXpJ,EAAe5K,UAAU8S,cAAgB,SAAU/xB,GAC/C,IAAI+W,EAAQN,KAAK8Y,SAAS9vB,QAAQO,GAClC,OAAOyW,KAAKlV,MAAMwV,IAGtB8S,EAAe5K,UAAUuV,aAAe,SAAUh9B,GAE9C,IAAIylC,KACJ,GAAIxmB,KAAK5c,OAAO1B,MACZ8kC,EAAa,IAAIn7B,cAAY2U,KAAKlV,OAC9BQ,cAAa,IAAIL,SAAQS,MAAM,KAAM,QAASsU,KAAK5c,OAAO4iB,WAAW,QAExE,CAED,IAAIygB,EAAU,IAAIp7B,cAAY2U,KAAKlV,OAC/BQ,cAAa,IAAIL,SAAQS,MAAM,OAAQ,QAASxK,WAAS,OAAQH,IAAO,IACxE0lC,EAAQtkC,OAAS,IACjBqkC,EAAa,IAAIn7B,cAAYo7B,GACzBn7B,cAAa,IAAIL,SAAQS,MAAM,aAAc,QAASsU,KAAK5c,OAAOsT,YAAY,KAG1F,GAAI8vB,EAAWrkC,OAAS,EAAG,CACvB,IAAIme,EAAQN,KAAKlV,MAAM9B,QAAQw9B,EAAW,IAE1CxmB,KAAKue,YAAYve,KAAK8Y,SAASxY,IADfke,SAAS,EAAMC,UAAU,MAIjDrL,EAAe5K,UAAU+U,mBAAqB,WAI1C,IAAK,IAFDx8B,KACA+J,EAAQwa,YAAU,IAAM3iB,GAAgB,IAAM42B,GAAYvZ,KAAKje,SAC1DG,EAAI,EAAGA,EAAI4I,EAAM3I,OAAQD,IAC9BnB,EAAKmB,GAAK8d,KAAKsb,cAAcxwB,EAAM5I,IAEvC8d,KAAK5c,OAAOgD,SAAWrF,GAG3BqyB,EAAe5K,UAAUiX,aAAe,SAAUx5B,GAC9C,GAAyB,eAArB+Z,KAAK5c,OAAOoE,KAAhB,CAIA,OADatG,WAAS,SAAU+E,IAE5B,IAAK,cACD+Z,KAAK0mB,YAAYxlC,WAAS,MAAO+E,IACjC,MACJ,IAAK,gBACD+Z,KAAK2mB,cAAczlC,WAAS,MAAO+E,IACnC,MACJ,IAAK,WACD+Z,KAAK4mB,SAAS1lC,WAAS,KAAM+E,IAC7B,MACJ,IAAK,aACD+Z,KAAKqT,eAAgB,EACrBrT,KAAK2E,cAAe,EACpB3E,KAAK6mB,WAAW3lC,WAAS,KAAM+E,GAAO/E,WAAS,UAAW+E,IAC1D,MACJ,IAAK,eACD+Z,KAAKqT,eAAgB,EACrBrT,KAAK2E,cAAe,EACpB,MACJ,IAAK,iBACD3E,KAAKqT,eAAgB,EACrBrT,KAAK2E,cAAe,EACpB3E,KAAK0e,iBACL,MACJ,IAAK,YACD1e,KAAKqT,eAAgB,EACrBrT,KAAK2E,cAAe,EACpB3E,KAAKme,qBAIjB/K,EAAe5K,UAAUse,cAAgB,SAAUh8B,GAC/C,IAAI0xB,KACAuK,IAAwE,KAA5D/mB,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,QAAgBib,KAAK5c,OAAO4B,YAC1FgiC,EAAahnB,KAAK5c,OAAO1B,MAAQ,KAAO,OAC5C,GAAIse,KAAK5c,OAAO1B,QAAUqlC,EACtB,IAAK,IAAI7kC,EAAI,EAAG0L,EAAMoS,KAAKlV,MAAM3I,OAAQD,EAAI0L,EAAK1L,KACc,IAAxD4I,EAAM9B,QAAQ9H,WAAS8lC,EAAYhnB,KAAKlV,MAAM5I,MAC9Cs6B,EAAQn6B,KAAKH,QAKrB,IAASA,EAAI,EAAG0L,EAAMoS,KAAKlV,MAAM3I,OAAQD,EAAI0L,EAAK1L,IAAK,CACnD,IAAI+kC,EAAS/lC,WAAS,aAAc8e,KAAKlV,MAAM5I,IAAMhB,WAAS,OAAQ8e,KAAKlV,MAAM5I,KACjD,IAA3B4I,EAAM9B,QAAQi+B,KAA4E,IAAxDn8B,EAAM9B,QAAQ9H,WAAS8lC,EAAYhnB,KAAKlV,MAAM5I,MACjFs6B,EAAQn6B,KAAKH,GAIzB,OAAOs6B,GAEXpJ,EAAe5K,UAAUke,YAAc,SAAUtkC,GAE7C,GADA4d,KAAK5c,OAAOkB,aAAe,iBACvBhD,oBAAMc,GACN4d,KAAK2kB,oBADT,CAIA,IAAInI,EAAUxc,KAAK8mB,cAAc1kC,GACjC,GAAuB,IAAnBo6B,EAAQr6B,OAAZ,CAMA,IAAK,IAFDpB,KACAoW,KACKjV,EAAI,EAAGA,EAAIs6B,EAAQr6B,OAAQD,IAChCnB,EAAKmB,GAAK8d,KAAKlV,MAAM0xB,EAAQt6B,IAC7BiV,EAAOjV,GAAKiR,GAAY6M,KAAK5c,OAAQrC,EAAKmB,IAE9CgV,GAAc8I,KAAK5c,OAAQrC,EAAMoW,MAErCic,EAAe5K,UAAUme,cAAgB,SAAUvkC,GAC/C,GAAId,oBAAMc,GACN4d,KAAKlJ,iBADT,CAIA,IAAIwJ,EAAQN,KAAK8mB,cAAc1kC,GAC/B,GAAqB,IAAjBke,EAAMne,OAAV,CAMA,IAAK,IAFDpB,KACAoW,KACKjV,EAAI,EAAGA,EAAIoe,EAAMne,OAAQD,IAC9BnB,EAAKmB,GAAK8d,KAAKlV,MAAMwV,EAAMpe,IAC3BiV,EAAOjV,GAAKiR,GAAY6M,KAAK5c,OAAQrC,EAAKmB,IAE9CmV,GAAgB2I,KAAK5c,OAAQrC,EAAMoW,MAEvCic,EAAe5K,UAAUoe,SAAW,SAAUzlC,GAC1C,IAAIG,oBAAMH,GAAV,CAGA,IAAIq7B,EAAUxc,KAAK8mB,eAAe3lC,IAC9Bq7B,EAAQr6B,OAAS,GACjB6d,KAAKie,aAAaje,KAAK8Y,SAAS0D,EAAQ,OAGhDpJ,EAAe5K,UAAUqe,WAAa,SAAU1lC,EAAIyJ,GAEhD,GADAoV,KAAK5c,OAAOkB,aAAe,iBACvBhD,oBAAMH,GACN6e,KAAK4kB,oBADT,CAIA,IAAIpI,EAAUxc,KAAK8mB,eAAe3lC,IAC9Bq7B,EAAQr6B,OAAS,IACjBoU,GAAmByJ,KAAK5c,OAAQ4c,KAAKlV,MAAM0xB,EAAQ,KAC/Cl7B,oBAAMsJ,GACN+L,GAASqJ,KAAK5c,QAGTwT,GAAcoJ,KAAK5c,OAAOgD,SAAS,IAIpCuS,GAAOqH,KAAK5c,OAAQ4c,KAAK5c,OAAO5B,KAAMoJ,GAHtCxC,GAAmB4X,KAAK5c,OAAQ4c,KAAK5c,OAAOgD,SAAS,GAAIyQ,OAQlEuc,KCvlDP8T,GAA+B,WAS/B,SAASA,EAAc9jC,GACnB4c,KAAKmnB,YAAc,GACnBnnB,KAAKonB,eAAiB,GACtBpnB,KAAKqnB,YAAc,KACnBrnB,KAAKsnB,gBAAkB,KACvBtnB,KAAK5c,OAASA,EACd4c,KAAK8T,YACD+B,MAAO,SAEX7V,KAAKyW,SA4XT,OA1XAyQ,EAAc1e,UAAU+W,kBAAoB,SAAU9hB,GAClD,GAAIA,EAAE1O,SAAWiR,KAAKwb,iBAAgC,WAAb/d,EAAE1O,OAG3C,IAAK,IAAIgyB,EAAK,EAAGC,EAAK1qB,OAAOD,KAAKoH,EAAEwjB,SAAUF,EAAKC,EAAG7+B,OAAQ4+B,IAAM,CAChE,IAAIwG,EAAOvG,EAAGD,GACVh8B,EAAQ0Y,EAAEwjB,QAAQ/6B,eACtB,OAAQqhC,GACJ,IAAK,iBACIx3B,oBAAkBhL,EAAMyiC,sBACzBxnB,KAAKynB,gBAAgB1iC,EAAMyiC,sBAE3BxnB,KAAK5c,OAAOyB,oBAAoBC,UAAUC,OAA6D,KAApDib,KAAK5c,OAAOyB,oBAAoBC,UAAUC,QAC1FgL,oBAAkBhL,EAAMyiC,sBAAwBz3B,oBAAkBhL,EAAMoB,aACvE4J,oBAAkBhL,EAAMwB,aAC5BV,EAAkBma,KAAK5c,OAAQ4c,KAAK5c,OAAOyB,oBAAoBC,UAAUC,OAAO,MAMpGmiC,EAAc1e,UAAUiO,OAAS,WAC7BzW,KAAK6T,oBAETqT,EAAc1e,UAAUkf,aAAe,WACnC,IAAI7lC,EAAYme,KAAK5c,OAAOvB,UACxB8lC,EAAQ3nB,KAAK5c,OAAO5B,KAAKyH,MAAM,KAC/B2+B,EAAe5nB,KAAK5c,OAAOkJ,cAAc,MAAQC,UAAW,oBAC5Ds7B,EAAe,KACfC,EAAejmC,EAAUM,OAC7B,GAAIN,EAAUM,OAAS,EAAG,CAEtB,IAAK,IADDhB,EAAK,GACAe,EAAI,EAAGA,EAAI4lC,EAAc5lC,IAAK,CACnC,IAAI6lC,EAAc,KAClBF,EAAe7nB,KAAK5c,OAAOkJ,cAAc,MAAQC,UAAW,wBAC5D,IAAK,IAAI+5B,EAAI,EAAGA,GAAKpkC,EAAGokC,IACpBnlC,EAAKA,EAAKwmC,EAAMrB,GAAK,IAGzB,GADAuB,EAAa/Q,aAAa,aAAc31B,GAC9B,IAANe,EAAS,CACT,IAAI46B,EAAOxwB,gBAAc,QAAUC,UAAWy7B,KAC9CH,EAAa96B,YAAY+vB,GAEzBgL,EAAe5lC,GAAM,GACrB6lC,EAAcz7B,gBAAc,KAAOC,UAAWzJ,KAC9C+kC,EAAa/Q,aAAa,WAAY,MAGtCiR,EAAcz7B,gBAAc,QAAUC,UAAWzJ,KAErD3B,EAAK,GACL4mC,EAAYE,UAAYpmC,EAAUK,GAClC2lC,EAAa96B,YAAYg7B,GACzBH,EAAa76B,YAAY86B,GAE7B,IAAIK,EAAYloB,KAAK5c,OAAO+kC,wBAAwBh8B,cAAc,oBAC7D4D,oBAAkBm4B,KACdn4B,oBAAkBiQ,KAAKooB,aACxBpoB,KAAKooB,WAAW5X,UAEpB/qB,SAAOyiC,IAEX,IAAIG,EAAaroB,KAAK5c,OAAO+kC,wBAAwBh8B,cAAc,kBAC9Dk8B,EAIDroB,KAAK5c,OAAO+kC,wBAAwBp7B,YAAY66B,GAHhD5nB,KAAK5c,OAAO+kC,wBAAwB9L,aAAauL,EAAcS,GAKnEroB,KAAKsoB,oBAAoBV,KAIjCV,EAAc1e,UAAU8f,oBAAsB,SAAUC,GAUpD,IAAK,IATDC,EAAaD,EAAYhjC,iBAAiB,MAC1C2iC,EAAYloB,KAAK5c,OAAO+kC,wBAAwBh8B,cAAc,oBAC9DiB,EAAQ2G,OAAOwT,iBAAiB2gB,EAAW,MAC3CO,EAAShhB,WAAWra,EAAMm4B,iBAAiB,kBAC3CmD,EAAQjhB,WAAWra,EAAMm4B,iBAAiB,iBAC1CoD,EAAqBT,EAAUrgB,YAAc4gB,EAASC,EACtDd,EAAe5nB,KAAK5c,OAAOkJ,cAAc,MAAQC,UAAW,oBAC5Dq8B,EAAkB,EAClBC,KACK3mC,EAAI,EAAGA,EAAIsmC,EAAWrmC,OAAQD,IAAK,CACxC,IAAIkgB,EAAQomB,EAAWtmC,GAAG4mC,YAC1BD,EAAiBxmC,KAAK+f,GACtBwmB,GAAoCxmB,EAEnCrS,oBAAkBm4B,IACnBziC,SAAOyiC,GAEX,IAAIa,EAAkB/oB,KAAK5c,OAAOkJ,cAAc,OAChDy8B,EAAgBjS,aAAa,QAAS,iBACtC,IAAI31B,EAAK6e,KAAK5c,OAAOrB,QAAQZ,GHhFd,UGiFX6nC,EAAc18B,gBAAc,SAAWnL,GAAIA,EAC3C0b,OAASosB,aAAc,MAAOC,aAAch8B,EAAc8S,KAAK5c,OAAQ,aAC3E2lC,EAAgBh8B,YAAYi8B,GAC5B,IAAIG,EAAYnpB,KAAK5c,OAAO+kC,wBAAwBh8B,cAAc,2BAClE,GAAI4D,oBAAkBo5B,GAAY,CAC9BnpB,KAAK5c,OAAO+kC,wBAAwBp7B,YAAYg8B,GAChD,IAAIK,EAAO98B,gBAAc,QAAUC,UAAW,wBAC9Cm1B,eAAat8B,IAAIgkC,EAAM,QAASppB,KAAKqpB,YAAarpB,MAClDgpB,EAAYhzB,cAAcqmB,aAAa+M,EAAMJ,GAC7ChpB,KAAKlb,UAAY,IAAIwkC,WACjBvkC,MAAO,GACPwkC,iBAAiB,EACjBrkB,YAAahY,EAAc8S,KAAK5c,OAAQ,UACxCwc,MAAOI,KAAKwpB,QAAQzpB,KAAKC,MACzBypB,KAAMzpB,KAAK0pB,OAAO3pB,KAAKC,QAE3BA,KAAKlb,UAAU0d,SAAS,IAAMxC,KAAK5c,OAAOrB,QAAQZ,GHjGvC,WGkGX6e,KAAKynB,gBAAgBznB,KAAK5c,OAAO8C,eAAeshC,qBAChD,IAAI1W,EAAS9Q,KAAKlb,UAAU/C,QAAQyZ,mBACpCkmB,eAAat8B,IAAI0rB,EAAQ,YAAa9Q,KAAK2pB,oBAAoB5pB,KAAKC,MAAOA,MAC3E0hB,eAAat8B,IAAI4a,KAAKlb,UAAU/C,QAAS,QAASie,KAAK4pB,QAAQ7pB,KAAKC,MAAOA,MAE/E,IAAIqoB,EAAaroB,KAAK5c,OAAO+kC,wBAAwBh8B,cAAc,kBAEnE,GADAw8B,GAA2C3oB,KAAKsnB,gBAAkBtnB,KAAKsnB,gBAAkBe,EAAWxgB,YAChG+gB,EAAkBD,EAAoB,CAEtC,IADIzmC,EAAIsmC,EAAWrmC,OACZD,KAAK,CACR,IAAI2nC,EAAOlB,EAAqBE,EAAiB3mC,GACjD,KAAI2nC,EAAO,IAIN,CAGD,IAAK,IADD/+B,KACKw7B,EAAI,EAAGA,GAAKpkC,EAAGokC,IAAK,CACzB,IAAIwD,EAAYtB,EAAWlC,GAC3Bx7B,EAAMzI,MACFpB,KAAM6oC,EAAU7B,UAChB8B,MAAOD,EAAU1oC,aAAa,gBAGtC,IAAI4oC,EAAYhqB,KAAK5c,OAAOkJ,cAAc,MAAQC,UAAW,sBAGzD09B,EAAcjqB,KAAK5c,OAAOkJ,cAAc,UADzBC,UAAW,yBAE9By9B,EAAUj9B,YAAYk9B,GACtBrC,EAAavL,aAAa2N,EAAWpC,EAAaz7B,cAAc,OAChE6T,KAAKooB,WAAa,IAAI8B,kBAClBp/B,MAAOA,EACP4D,SAAU,yBACVmpB,QAASsS,GACTC,aAAc,MACd9nB,oBAAqBtC,KAAK5c,OAAOkf,oBACjC+nB,iBAAkBrqB,KAAKsqB,qBAAqBvqB,KAAKC,MACjDnd,OAAQmd,KAAKuqB,wBAAwBxqB,KAAKC,QAE9CA,KAAKooB,WAAW7lB,kBAAmB,EACnCvC,KAAKooB,WAAW5lB,SAASynB,GACzB,MA9BArC,EAAavL,aAAamM,EAAWtmC,GAAI0lC,EAAaz7B,cAAc,OACpEw8B,EAAqBkB,EAgC7B7pB,KAAK5c,OAAO+kC,wBAAwB9L,aAAauL,EAAcS,QAG/DroB,KAAK5c,OAAO+kC,wBAAwB9L,aAAakM,EAAaF,IAItEnB,EAAc1e,UAAUghB,QAAU,WACnB7jC,UAAQqa,KAAKlb,UAAU/C,QAAS,kBACtCiB,UAAUoC,IAAI,YAGvB8hC,EAAc1e,UAAUohB,QAAU,WAC9B5pB,KAAK5c,OAAOU,OAAOkC,IAAqBC,KAAM+Z,KAAK5c,UAGvD8jC,EAAc1e,UAAUkhB,OAAS,WAClB/jC,UAAQqa,KAAKlb,UAAU/C,QAAS,kBACtCiB,UAAUyC,OAAO,YAG1ByhC,EAAc1e,UAAU+hB,wBAA0B,SAAU11B,GAExD,IAAI5O,GAASqO,OAAQO,EAAM9S,SAC3Bie,KAAKwqB,wBAAwBvkC,IAGjCihC,EAAc1e,UAAU8hB,qBAAuB,SAAUrkC,GACrDA,EAAKlE,QAAQ+0B,aAAa,aAAc51B,WAAS,QAAS+E,EAAKsD,OAC/D,IAAIkhC,EAASzqB,KAAK5c,OAAOkJ,cAAc,KAAOC,UAAW,gBACzDtG,EAAKlE,QAAQgL,YAAY09B,IAE7BvD,EAAc1e,UAAUif,gBAAkB,SAAUiD,GAC5CA,GACA1qB,KAAKlb,UAAUkY,MAAQgD,KAAK2pB,oBAAoB5pB,KAAKC,MACrDA,KAAKlb,UAAU8e,OAAS,OAGxB5D,KAAKlb,UAAU8e,OAAS5D,KAAK2pB,oBAAoB5pB,KAAKC,MACtDA,KAAKlb,UAAUkY,MAAQ,OAG/BkqB,EAAc1e,UAAUmhB,oBAAsB,SAAU1jC,GACpD,IAAIm0B,EAAQpa,KACPjQ,oBAAkB9J,EAAKlB,SACxBib,KAAK5c,OAAO4B,YAAa,EACrBgb,KAAK5c,OAAO8C,eAAeshC,qBAC3BzzB,OAAOC,aAAagM,KAAKqnB,aACzBrnB,KAAKqnB,YAActzB,OAAO+B,WAAW,WAAcjQ,EAAkBu0B,EAAMh3B,OAAQ6C,EAAKlB,OAAO,IAAW,MAG1Gc,EAAkBma,KAAK5c,OAAQ6C,EAAKlB,OAAO,KAIvDmiC,EAAc1e,UAAUgiB,wBAA0B,SAAU/sB,GACxD,IAAI0nB,EAAK1nB,EAAEnJ,OACX,GAAoB,OAAhB6wB,EAAGwF,UAAqC,MAAhBxF,EAAGwF,SAAkB,CAC7C,IAAI7pC,EAAuB,OAAhBqkC,EAAGwF,SAAoBxF,EAAGyF,SAAS,GAAKzF,EACnD,IAAKp1B,oBAAkBjP,GAAO,CAC1Bkf,KAAK5c,OAAO4B,YAAa,EACzB,IAAI6lC,EAAc7qB,KAAKnf,WAAWC,GAClCkf,KAAK5c,OAAOgD,UAAYlF,WAAS8e,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAAI6d,KAAK5c,OAAOG,WAChGyc,KAAK8qB,gBAAgB9qB,KAAK5c,OAAOgD,SAAS,IAC1CkB,GAAK0Y,KAAK5c,OAAQ4Y,GAAoB6uB,GACtC,IAAIE,EAAa/qB,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAChE6d,KAAK5c,OAAOU,OAAOknC,IAA8Bj8B,OAAQ,WAAYqB,aAAc26B,OAK/F7D,EAAc1e,UAAUsiB,gBAAkB,SAAU/pC,GAChD,IAAImJ,GAAc2J,QAAQ,EAAO1J,YAAapJ,EAAMgO,OAAQ,wBACrD7E,EAAU2J,OACjBmM,KAAK5c,OAAOoH,QAAQ,WAAYN,IAGpCg9B,EAAc1e,UAAU6gB,YAAc,WAClC,GAAIrpB,KAAK5c,OAAOyL,SACZ,GAAImR,KAAK5c,OAAOrB,QAAQiB,UAAUC,SAASgoC,IACvC5H,eAAarjB,KAAK5c,OAAOrB,SAAUkpC,IACnCjrB,KAAKsnB,gBAAkB,SAEtB,CACD,IAAIe,EAAaroB,KAAK5c,OAAO+kC,wBAAwBh8B,cAAc,kBACnE6T,KAAKsnB,gBAAkBe,EAAWxgB,YAClC+L,YAAU5T,KAAK5c,OAAOrB,SAAUkpC,IAChCjrB,KAAKlb,UAAU/C,QAAQ6d,UAInCsnB,EAAc1e,UAAU3nB,WAAa,SAAUqqC,GAC3C,IACIC,EADKxlC,UAAQulC,EAAM,MACF9pC,aAAa,cAClC4e,KAAKonB,eAAiB+D,EACtB,IAAIjtB,EAAO8B,KAAKonB,eAAen+B,MAAM,KACjC7G,EAAM4d,KAAK5c,OAAOzB,OAClBW,EAAQ0d,KAAK5c,OAAOvB,UACxBme,KAAK5c,OAAOzB,UACZqe,KAAK5c,OAAOvB,aAEZ,IAAK,IADDupC,EAAU,GACLlpC,EAAI,EAAG0L,EAAMsQ,EAAK/b,OAAS,EAAGD,EAAI0L,EAAK1L,IAC5C8d,KAAK5c,OAAOzB,OAAOU,KAAKD,EAAIF,IAC5B8d,KAAK5c,OAAOvB,UAAUQ,KAAKC,EAAMJ,IACjCkpC,GAAWltB,EAAKhc,GAAK,IAGzB,OADA8d,KAAK5c,OAAO7B,eAAgBC,KAAM4pC,IAAW,GACtCA,GAEXlE,EAAc1e,UAAU6iB,aAAe,WACnCrrB,KAAK0nB,eACL1nB,KAAKsrB,qBAETpE,EAAc1e,UAAU4U,YAAc,WAClCpd,KAAK0nB,gBAETR,EAAc1e,UAAU+iB,YAAc,WAClCvrB,KAAK0nB,gBAGTR,EAAc1e,UAAUiV,YAAc,WAClCzd,KAAKqrB,gBAGTnE,EAAc1e,UAAU8iB,kBAAoB,WACxCtrB,KAAK5c,OAAO4B,YAAa,GACrBgb,KAAKlb,WAAuC,KAAzBkb,KAAKlb,UAAUC,OAAiD,KAAjCib,KAAKlb,UAAU/C,QAAQgD,QACzEib,KAAKlb,UAAUC,MAAQ,GACvBib,KAAKlb,UAAU/C,QAAQgD,MAAQ,GAC/Bib,KAAKlb,UAAU4d,aAGvBwkB,EAAc1e,UAAUgjB,SAAW,WAC/BxrB,KAAK0nB,gBAETR,EAAc1e,UAAUijB,WAAa,WACjCzrB,KAAK0nB,gBAETR,EAAc1e,UAAUqL,iBAAmB,WACvC7T,KAAKohB,eAAiB,IAAIC,iBAAerhB,KAAK5c,OAAO+kC,yBACjD7G,UAAWthB,KAAKuhB,iBAAiBxhB,KAAKC,MACtC8T,WAAY9T,KAAK8T,WACjBlkB,UAAW,YAEfoQ,KAAK5c,OAAOy9B,GAAGvB,GAAqBtf,KAAKuf,kBAAmBvf,MAC5D0hB,eAAat8B,IAAI4a,KAAK5c,OAAO+kC,wBAAyB,QAASnoB,KAAKwqB,wBAAyBxqB,MAC7FA,KAAK5c,OAAOy9B,GAAG6K,GAAgB1rB,KAAKwQ,QAASxQ,MAC7CA,KAAK5c,OAAOy9B,GAAG7kB,GAAoBgE,KAAKqrB,aAAcrrB,MACtDA,KAAK5c,OAAOy9B,GAAGhxB,GAAoBmQ,KAAKqrB,aAAcrrB,MACtDA,KAAK5c,OAAOy9B,GAAG14B,GAAmB6X,KAAKqrB,aAAcrrB,MACrDA,KAAK5c,OAAOy9B,GAAGt4B,GAAgByX,KAAKqrB,aAAcrrB,MAClDA,KAAK5c,OAAOy9B,GAAGllB,GAAkBqE,KAAKod,YAAapd,MACnDA,KAAK5c,OAAOy9B,GAAG3kB,GAAkB8D,KAAKurB,YAAavrB,MACnDA,KAAK5c,OAAOy9B,GAAGxkB,GAAkB2D,KAAKyd,YAAazd,MACnDA,KAAK5c,OAAOy9B,GAAGb,GAAuBhgB,KAAKwrB,SAAUxrB,MACrDA,KAAK5c,OAAOy9B,GAAGruB,GAAiBwN,KAAKyrB,WAAYzrB,MACjDA,KAAK5c,OAAOy9B,GAAGX,GAAkBlgB,KAAKwrB,SAAUxrB,MAChDA,KAAK5c,OAAOy9B,GAAG3lB,GAAyB8E,KAAK2rB,mBAAoB3rB,MACjEA,KAAK5c,OAAOy9B,GAAGtsB,GAAiByL,KAAKub,WAAYvb,MACjDA,KAAK5c,OAAOy9B,GAAGJ,GAAsBzgB,KAAKwrB,SAAUxrB,MACpDA,KAAK5c,OAAOy9B,GAAG9tB,GAAiBiN,KAAK0nB,aAAc1nB,OAEvDknB,EAAc1e,UAAU+Y,iBAAmB,SAAU9jB,GACjD,OAAQA,EAAExZ,QACN,IAAK,QACD+b,KAAKwqB,wBAAwB/sB,KAIzCypB,EAAc1e,UAAUyO,oBAAsB,WAC1CjX,KAAKohB,eAAe5Q,UACpBxQ,KAAK5c,OAAO+7B,IAAInjB,GAAoBgE,KAAKqrB,cACzCrrB,KAAK5c,OAAO+7B,IAAItvB,GAAoBmQ,KAAKqrB,cACzCrrB,KAAK5c,OAAO+7B,IAAIh3B,GAAmB6X,KAAKqrB,cACxCrrB,KAAK5c,OAAO+7B,IAAI52B,GAAgByX,KAAKqrB,cACrCrrB,KAAK5c,OAAO+7B,IAAI3sB,GAAiBwN,KAAKyrB,YACtCzrB,KAAK5c,OAAO+7B,IAAIxjB,GAAkBqE,KAAKod,aACvCpd,KAAK5c,OAAO+7B,IAAIjjB,GAAkB8D,KAAKurB,aACvCvrB,KAAK5c,OAAO+7B,IAAI9iB,GAAkB2D,KAAKyd,aACvCzd,KAAK5c,OAAO+7B,IAAIa,GAAuBhgB,KAAKwrB,UAC5CxrB,KAAK5c,OAAO+7B,IAAIe,GAAkBlgB,KAAKwrB,UACvCxrB,KAAK5c,OAAO+7B,IAAIjkB,GAAyB8E,KAAK2rB,oBAC9C3rB,KAAK5c,OAAO+7B,IAAI5qB,GAAiByL,KAAKub,YACtCvb,KAAK5c,OAAO+7B,IAAIsB,GAAsBzgB,KAAKwrB,UAC3CxrB,KAAK5c,OAAO+7B,IAAIpsB,GAAiBiN,KAAK0nB,eAG1CR,EAAc1e,UAAU+S,WAAa,SAAUt1B,GAC3C,GAAI+Z,KAAK5c,OAAO4E,eAAiBgY,KAAKwb,gBAAiB,CACnD,IAAIoQ,EAAQ3lC,EAAKqO,OAAO3O,QAAQ,MAChCqa,KAAK5c,OAAO2N,SAAWiP,KAAKnf,WAAY+qC,EAAMhB,SAAS,IACvD5qB,KAAK5c,OAAOmO,SAAWrQ,WAAS8e,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAAI6d,KAAK5c,OAAOG,UAC/Fyc,KAAK8qB,gBAAgB9qB,KAAK5c,OAAOmO,UACjC,IAAIw5B,EAAa/qB,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAChE6d,KAAK5c,OAAOU,OAAOknC,IAA8Bj8B,OAAQ,WAAYqB,aAAc26B,MAS3F7D,EAAc1e,UAAUgT,cAAgB,WACpC,MAAO,iBAEX0L,EAAc1e,UAAUgI,QAAU,WAC1BxQ,KAAK5c,OAAO87B,cAGhBlf,KAAKiX,sBAEAlnB,oBAAkBiQ,KAAKooB,aACxBpoB,KAAKooB,WAAW5X,UAEfzgB,oBAAkBiQ,KAAKlb,YACxBkb,KAAKlb,UAAU0rB,YAGvB0W,EAAc1e,UAAUmjB,mBAAqB,SAAU1lC,GACnD+Z,KAAKlb,UAAU/C,QAAQmjB,YAAyD,MAA1ClF,KAAK5c,OAAO8C,eAAegf,YAAuBlF,KAAK5c,OAAO8C,eAAegf,YAAchY,EAAc8S,KAAK5c,OAAQ,UAAY,IAAM8J,EAAc8S,KAAK5c,OAAQ6C,EAAKyL,IAAI9G,KAAKL,aAEpN28B,KC5YP2E,GAA6B,WAO7B,SAASA,EAAYzoC,GACjB4c,KAAK8rB,mBAAoB,EACzB9rB,KAAK+rB,gBACL/rB,KAAKgsB,eAAiB,KACtBhsB,KAAKisB,iBACLjsB,KAAK5c,OAASA,EACd4c,KAAKyW,SA2mBT,OAzmBAoV,EAAYrjB,UAAUiO,OAAS,WAC3BzW,KAAK8T,YACDoY,UAAW,YACXC,QAAS,YAEbnsB,KAAKosB,YAAc,IAAIC,eACnBhqB,UAAWrC,KAAK5c,OAAOif,UACvBhU,OAAQ2R,KAAK5c,OAAOiL,OACpBiG,OAAQ,IAAM0L,KAAK5c,OAAOrB,QAAQZ,GAClCmhB,oBAAqBtC,KAAK5c,OAAOkf,oBACjC+nB,iBAAkBrqB,KAAKssB,mBAAmBvsB,KAAKC,MAC/Cnd,OAAQmd,KAAKusB,SAASxsB,KAAKC,MAC3BuB,WAAYvB,KAAKwsB,aAAazsB,KAAKC,MACnCyB,YAAazB,KAAKysB,cAAc1sB,KAAKC,MACrCtR,SAAUF,EAAYwR,KAAK5c,OAAQ+e,MAEvCnC,KAAKosB,YAAY7pB,kBAAmB,EACpCvC,KAAKosB,YAAY5pB,SAAS,IAAMxC,KAAK5c,OAAOrB,QAAQZ,GAAKurC,IACzD1sB,KAAK6T,oBAGTgY,EAAYrjB,UAAU8jB,mBAAqB,SAAUrmC,GACjD,GAAIA,EAAKsD,KAAKpI,KAAO6e,KAAK2sB,UAAU,kBAAmB,CACnD,IAAIC,EAAWtgC,gBAAc,SACzBvK,EAAUkE,EAAKlE,SACXs6B,aAAauQ,EAA+B,eAArB5sB,KAAK5c,OAAOoE,KAAwBzF,EAAQu6B,WAAW,GAAKv6B,EAAQu6B,WAAW,IAC9GsQ,EAAS9V,aAAa,QAAS+V,GAAiB,IAAMC,IAE1D,GAAI7mC,EAAKsD,KAAKpI,KAAO6e,KAAK2sB,UAAU,eAAgB,CAChD,IACI5qC,EADA6qC,EAAWtgC,gBAAc,SACzBvK,EAAUkE,EAAKlE,SACXs6B,aAAauQ,EAA+B,YAArB5sB,KAAK5c,OAAOoE,KAAqBzF,EAAQu6B,WAAW,GAAKv6B,EAAQu6B,WAAW,IAC3GsQ,EAAS9V,aAAa,QAASiW,GAAgB,IAAMD,MAG7DjB,EAAYrjB,UAAUikB,cAAgB,WAElC,GADAzsB,KAAKgtB,WAAa,MACbhtB,KAAK8rB,mBAAqB9rB,KAAK5c,OAAOzB,OAAOQ,OAAS,GAAiC,kBAA5B6d,KAAK5c,OAAOkB,aAAkC,CAC1G0b,KAAK5c,OAAOzB,OAAO0Z,MAGnB,IAAK,IAFD4xB,KAEKlM,EAAK,EAAGmM,EADF52B,OAAOD,KAAK2J,KAAK5c,OAAOG,UACCw9B,EAAKmM,EAAW/qC,OAAQ4+B,IAAM,CAClE,IAAIx3B,EAAO2jC,EAAWnM,GAClB36B,EAAWlF,WAASqI,EAAMyW,KAAK5c,OAAOG,WACY,IAAlDyc,KAAK5c,OAAOvB,UAAUmH,QAAQ5C,EAASwE,OACvCqiC,EAAU5qC,KAAK+D,EAAS+mC,QAGhCntB,KAAK5c,OAAOzB,OAAOU,KAAK4qC,EAAUA,EAAU9qC,OAAS,IACrD6d,KAAK5c,OAAOwP,qBAAqBC,QAAQlP,eAAiBqc,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,IAE7G6d,KAAK8rB,mBAAoB,GAG7BD,EAAYrjB,UAAUgkB,aAAe,SAAUvmC,GAC3C,IAEImnC,EAEArsC,EAJAq5B,EAAQpa,KACRgd,GAAW,EAIXqQ,GAAa,EACb/4B,EAASrO,EAAK4O,MAAMP,OACxB0L,KAAKgtB,WAAahtB,KAAKstB,kBAAoBh5B,EAC3C0L,KAAKgsB,eAAiB/lC,EAAKlE,QACvBuS,EAAOtR,UAAUC,SAAS,oBAC1BqR,EAAS0L,KAAK5c,OAAOwP,qBAAqB26B,WAAWC,uBAAuBC,IAAa,GACzFztB,KAAKgtB,WAAahtB,KAAKstB,kBAAoBh5B,GAE/C0L,KAAK0tB,cAAqC,YAArB1tB,KAAK5c,OAAOoE,KAAqB7B,UAAQ2O,EAAQ,YAAcA,EAChF0L,KAAK5c,OAAOm1B,uBAAyBjkB,EAAOtR,UAAUC,SAAS,qBAAuBqR,EAAOtR,UAAUC,SAAS,qBAChHqR,EAASA,EAAO0B,cAAcrQ,QAAQ,QAE1C,IAAI6B,EAAOwY,KAAK2tB,cAAcr5B,GAG9B,GAFA0L,KAAK4tB,qBAEDt5B,EAAOtR,UAAUC,SAASC,KAAkByC,UAAQ2O,EAAQ,OAC3D3O,UAAQ2O,EAAQ,IAAM0L,KAAK5c,OAAOrB,QAAQZ,GAAK6K,KAC/CrG,UAAQ2O,EAAQ,IAAM0L,KAAK5c,OAAOrB,QAAQZ,GAAK0sC,IAChD5nC,EAAK4N,QAAS,OAGb,GAA2B,eAArBmM,KAAK5c,OAAOoE,MAA0BwY,KAAK0tB,eAClD1tB,KAAK0tB,cAAc1qC,UAAUC,SAAS,cACtC+c,KAAK8tB,cAAcx5B,QAGlB,GAAI3O,UAAQ2O,EAAQ,IAAMlI,IAC3B4T,KAAK8tB,cAAcx5B,QAGlB,IAAKA,EAAOtR,UAAUC,SAAS8qC,MAC/Bz5B,EAAOtR,UAAUC,SAAS6pC,MAAmBx4B,EAAOtR,UAAUC,SJ4BjD,WI5B6E,CAG3F,GAAyB,eAArB+c,KAAK5c,OAAOoE,MAA0BlG,oBAAMqE,UAAQ2O,EAAQ,QAAW3O,UAAQ2O,EAAQ,IAAM0L,KAAK5c,OAAOrB,QAAQZ,GAAK6sC,IAShH1sC,oBAAMqE,UAAQ2O,EAAQ,aAWvB3O,UAAQ2O,EAAQ,IAAM0L,KAAK5c,OAAOrB,QAAQZ,GAAK6sC,MACpDZ,EAAMznC,UAAQ2O,EAAQ,MAAMlT,aAAa,YACzCisC,GAAa,IAZbD,EAAMptB,KAAK0tB,cAActsC,aAAa,YAEtCL,EAAOif,KAAK5c,OAAO6D,kBAAkBC,QAAQ+mC,oBAAoBb,GAAKrsC,KAClEO,oBAAM0e,KAAK0tB,cAActsC,aAAa,mBAEtC4e,KAAK5c,OAAO6D,kBAAkBC,QAAQgnC,YAAY5I,SAAStlB,KAAK0tB,cAActsC,aAAa,iBAAkB,MAEjH47B,GAAW,OAjByH,CAE/Hr3B,UAAQ2O,EAAQ,MAAMtR,UAAUC,SAAS,aAC1C+c,KAAK5c,OAAOgE,qBAAqBm3B,YAAYjqB,GAFjCkqB,SAAS,EAAMC,UAAU,IAKzC19B,EAAOif,KAAK5c,OAAOijC,YACnBrJ,GAAW,EAkBXA,GACiC,IAA7B97B,WAAS,SAAUH,GACnBif,KAAKmuB,cAGLnuB,KAAKouB,eAAc,GAIlBf,GACLrtB,KAAKouB,eAAc,GACfhB,IAAQptB,KAAK5c,OAAOzB,OAAO,IAC3Bqe,KAAKisB,cAAc5pC,KAAK,SAAU,SAAU,MAAO,SAKzC,aAATmF,GAAgC,aAATA,GAAgC,cAATA,EACnDwY,KAAK8tB,cAAcx5B,GAInBrO,EAAK4N,QAAS,EAGtB,IAAIw6B,EAAWxrC,SAAO,IAAMmd,KAAK2sB,UAAU,SAAU3sB,KAAKosB,YAAYrqC,SACtE,GAAKkE,EAAK4N,QAAWmM,KAAK5c,OAAOS,cAC7BwqC,GAAaA,EAASrrC,UAAUC,SAAS,cAKxC,CACD,IAAIqrC,EAAatuB,KAAKisB,cAAcjjC,QAAQ,UACxB,IAAhBslC,GACAtuB,KAAKisB,cAAchoB,OAAOqqB,EAAY,QAPG,IAAzCtuB,KAAKisB,cAAcjjC,QAAQ,UAC3BgX,KAAKisB,cAAc5pC,KAAK,SAShC,GAAI4D,EAAK4N,OACLmM,KAAKgtB,WAAahtB,KAAKgsB,eAAiB,SAD5C,CAIAhsB,KAAKosB,YAAY1pB,WACjB,IAAI6rB,GAAY,GACZj6B,EAAOtR,UAAUC,SAAS8qC,KAC1Bz5B,EAAOtR,UAAUC,SAAS6pC,KAAkBx4B,EAAOtR,UAAUC,SJ7C/C,cI8CdsrC,GAAY,GAEhBvuB,KAAKyR,aAAe8c,EAAYvuB,KAAKyR,aAAezR,KAAKwuB,kBACzD,IAAItkC,GACAC,aAAc6V,KAAKyR,cACnB1vB,QAASkE,EAAKlE,QACduS,OAAQA,EACRxJ,MAAOyjC,EAAYtoC,EAAK6E,MAAQkV,KAAKosB,YAAYthC,MACjD2jC,WAAYzuB,KAAKosB,YACjBv4B,QAAQ,EACR66B,SAAU1uB,KAAK0uB,SACfH,UAAWA,GAEfvuB,KAAK+rB,aAAe7hC,EAAUY,MAC9BkV,KAAK5c,OAAOoH,QAAQ,WAAYN,EAAW,SAAUykC,GAC5CJ,IACDnU,EAAMgS,YAAY1pB,WAClB0X,EAAMgS,YAAYthC,MAAQ6jC,EAAa7jC,MACvCsvB,EAAMgS,YAAY1pB,YAEtB0X,EAAMwU,YAAYxU,EAAM6R,eAAe,GAAO,GAC9ChmC,EAAK4N,OAAS86B,EAAa96B,OACvB86B,EAAa96B,SACbumB,EAAM4S,WAAa5S,EAAMkT,kBAAoBlT,EAAM4R,eAAiB,UAIhFH,EAAYrjB,UAAUolB,mBAAqB,WACvC5tB,KAAK5c,OAAOkB,aAAeqB,UAAQqa,KAAKgtB,WAAY,IAAMhtB,KAAK5c,OAAOrB,QAAQZ,GAAK6sC,IAC/E,iBAAmBroC,UAAQqa,KAAKgtB,WAAY,IAAMhtB,KAAK5c,OAAOrB,QAAQZ,GAAK0tC,IAC3E,cAAgBlpC,UAAQqa,KAAKgtB,WAAY,IAAMhtB,KAAK5c,OAAOrB,QAAQZ,GAAKwyB,IACxE,iBAAmB3T,KAAK5c,OAAOkB,cASvCunC,EAAYrjB,UAAUmlB,cAAgB,SAAUr5B,GAC5C,OAAOA,EAAOtR,UAAUC,SAASC,IAC7B,WAAaoR,EAAOtR,UAAUC,SAAS6J,IACvC,WAAawH,EAAOtR,UAAUC,SAAS6rC,IACvC,YAAcx6B,EAAOtR,UAAUC,SAAS8E,IACxC,YAAc,IAEtB8jC,EAAYrjB,UAAUumB,aAAe,SAAUxlC,GAE3C,IAAK,IADDylC,EAAShvB,KAAK2sB,UAAUpjC,GACnBrH,EAAI,EAAGA,EAAI8d,KAAK+rB,aAAa5pC,OAAQD,IAC1C,GAAK8d,KAAK+rB,aAAa7pC,GAAGf,KAAO6tC,GAAYhvB,KAAK+rB,aAAa7pC,GAAGf,KAAOoI,EACrE,OAAOrH,EAGf,OAAQ,GAEZ2pC,EAAYrjB,UAAUymB,YAAc,SAAUnkC,GACrB,IAAjBA,EAAM3I,SACN6d,KAAKisB,cAAgBjsB,KAAKisB,cAAciD,OAAOpkC,KAGvD+gC,EAAYrjB,UAAUomB,YAAc,SAAU9jC,EAAOqkC,EAAQC,GACzD,IAAK,IAAIltC,EAAI,EAAGA,EAAI4I,EAAM3I,OAAQD,IACQ,IAAlC8d,KAAKqvB,eAAevkC,EAAM5I,IAC1B8d,KAAKosB,YAAYwC,aAAa5uB,KAAK2sB,UAAU7hC,EAAM5I,KAAMitC,EAAQC,GAE1B,IAAlCpvB,KAAKqvB,eAAevkC,EAAM5I,KAC/B8d,KAAKosB,YAAYwC,aAAa9jC,EAAM5I,IAAKitC,EAAQC,IAI7DvD,EAAYrjB,UAAU4lB,cAAgB,SAAUkB,GAI5C,GAHAtvB,KAAK0uB,SAAW,SAChB1uB,KAAKosB,YAAYthC,MAAQkV,KAAKuvB,YAAYvvB,KAAK5c,OAAOosC,oBAAoBhM,OAAO3iB,IAAI,SAAUtX,GAAQ,OAAOA,EAAKkmC,UACnHzvB,KAAKosB,YAAY1pB,WACb4sB,EAAQ,CACR,IAAII,EAAmB7sC,SAAO,cAAgBmd,KAAK5c,OAAOwP,qBAAqBC,QAAQlP,cAAc,GAAK,KAAMqc,KAAK5c,OAAOwP,qBAAqBC,QAAQ9Q,SACrJie,KAAK5c,OAAOvB,UAAUme,KAAK5c,OAAOvB,UAAUM,OAAS,KAAOutC,EAAiBvjC,cAAc,gBAAgBc,WAA0C,mBAA7B+S,KAAK5c,OAAOkB,cACpI0b,KAAKisB,cAAc5pC,KAAK,aAGc,IAArC2d,KAAK5c,OAAO8B,cAAc/C,QAA6C,mBAA7B6d,KAAK5c,OAAOkB,cAC3D0b,KAAKisB,cAAc5pC,KAAK,SAAU,UAG1CwpC,EAAYrjB,UAAU2lB,YAAc,WAChCnuB,KAAK0uB,SAAW,OAChB1uB,KAAKosB,YAAYthC,MAAQkV,KAAKuvB,YAAYvvB,KAAK5c,OAAOosC,oBAAoB5mC,KAAKiY,IAAI,SAAUtX,GAAQ,OAAOA,EAAKkmC,UACjHzvB,KAAKosB,YAAY1pB,WACwB,IAArC1C,KAAK5c,OAAO8B,cAAc/C,QAC1B6d,KAAKisB,cAAc5pC,KAAK,WAGhCwpC,EAAYrjB,UAAUslB,cAAgB,SAAUx5B,GAC5C0L,KAAK0uB,SAAW,SAChB1uB,KAAKosB,YAAYthC,MAAQkV,KAAKuvB,YAAYvvB,KAAK5c,OAAOosC,oBAAoBG,OAAO9uB,IAAI,SAAUtX,GAAQ,OAAOA,EAAKkmC,UACnHzvB,KAAKosB,YAAY1pB,YACZ1C,KAAK5c,OAAO89B,qBAA8C,eAArBlhB,KAAK5c,OAAOoE,MAC6D,IAA9G7B,UAAQ2O,EAAQ,IAAM0L,KAAK5c,OAAOrB,QAAQZ,GAAKwyB,IAAkB6Z,uBAAuBphC,IAAWjK,QAC3E,YAArB6d,KAAK5c,OAAOoE,MAC8F,IAAzG7B,UAAQ2O,EAAQ,IAAM0L,KAAK5c,OAAOrB,QAAQZ,GAAK0tC,IAAarB,uBAAuBphC,IAAWjK,OACnG6d,KAAKisB,cAAc5pC,KAAK,aAGxB2d,KAAKisB,cAAgBjsB,KAAKisB,cAAcplC,OAAO,SAAU0C,GAAQ,MAAgB,cAATA,IAEnC,IAArCyW,KAAK5c,OAAOO,cAAcxB,SACmB,IAAzC6d,KAAKisB,cAAcjjC,QAAQ,UAC3BgX,KAAKisB,cAAc5pC,KAAK,SAGhC2d,KAAKosB,YAAY1pB,YAErBmpB,EAAYrjB,UAAU6mB,eAAiB,SAAUO,GAC7C,OAAKtuC,oBAAMuB,SAAO,IAAMmd,KAAK2sB,UAAUiD,GAAU5vB,KAAKgsB,iBAG5C1qC,oBAAMuB,SAAO,IAAM+sC,EAAS5vB,KAAKgsB,kBAI/B,EAHD,EAHA,GAUfH,EAAYrjB,UAAUgmB,gBAAkB,WACpC,GAAsB,WAAlBxuB,KAAK0uB,SACL,OAAOroC,EAAc2Z,KAAK5c,QAI1B,IAAI6C,GAASqO,OAAQ0L,KAAKgtB,YAE1B,OADAhtB,KAAK5c,OAAOU,OAAOg8B,GAAqB75B,GACjC+Z,KAAK5c,OAAOgD,SAAS,IAIpCylC,EAAYrjB,UAAU+jB,SAAW,SAAUtmC,GACvC,IAAIm0B,EAAQpa,KACZ,IAAI1e,oBAAM2E,EAAKsD,OAAUtD,EAAKsD,KAAKpI,GAAnC,CAGA,IAEIwW,EAFA6f,EAAWvxB,EAAKsD,KAAKpI,GAAG4f,QAAQf,KAAK5c,OAAOrB,QAAQZ,GAAK,QAAQgB,QAGpD,YAAbq1B,GAAuC,cAAbA,GAAyC,WAAbA,GACtD7f,GAAWtR,EAAc2Z,KAAK5c,SAC9B4c,KAAK5c,OAAOgD,SAAWuR,IAGvBqI,KAAK5c,OAAOU,OAAOs7B,OAEfznB,EAD6B,mBAA7BqI,KAAK5c,OAAOkB,cAAkD,SAAbkzB,GACtCxX,KAAKyR,cAGNzR,KAAK5c,OAAOgD,UAG9B,IAAI8D,GACA2J,QAAQ,EACR9R,QAASkE,EAAKlE,QACdoI,YAAawN,EACbpO,KAAMtD,EAAKsD,MAEfyW,KAAK5c,OAAOoH,QAAQ,YAAaN,EAAW,SAAU2lC,GAClD,IAAIC,EACJ,IAAKD,EAAch8B,OAGf,OAFAumB,EAAM0R,mBAAoB,EAElBtU,GACJ,IAAK,MACD9uB,EAAS0xB,EAAMh3B,QACf,MACJ,IAAK,OACDoF,EAAU4xB,EAAMh3B,QAChB,MACJ,IAAK,QACsB,WAAnBg3B,EAAMsU,WAC6B,mBAA9BtU,EAAMh3B,OAAOkB,cAAqE,gBAA9B81B,EAAMh3B,OAAOkB,cAClE81B,EAAMh3B,OAAOmN,WAAa9F,EAAY2vB,EAAMh3B,OAAQg3B,EAAM3I,aAAc2I,EAAMh3B,OAAO5B,MAOzF44B,EAAMh3B,OAAOmN,WAAa,GAE9BF,EAAa+pB,EAAMh3B,QACnB,MACJ,IAAK,SACD,IAAK,IAAIkjC,EAAI,EAAGA,EAAI3uB,EAAQxV,OAAQmkC,IAChC,IAAK1vB,GAAce,EAAQ2uB,IAEvB,YADAl+B,GAAmBgyB,EAAMh3B,OAAQuU,EAAQ2uB,GAAIzvB,IAIrDlG,GAAaypB,EAAMh3B,OAAQ,UAC3B,MAEJ,IAAK,WACD,IAAK,IAAIlB,EAAI,EAAGA,EAAIyV,EAAQxV,OAAQD,IAChC,IAAK6U,GAAkBY,EAAQzV,IAE3B,YADAkG,GAAmBgyB,EAAMh3B,OAAQuU,EAAQzV,GAAI8U,IAInB,mBAA9BojB,EAAMh3B,OAAOkB,aACb81B,EAAMh3B,OAAOU,OAAOisC,OAEf3V,EAAMh3B,OAAO8B,cAAc/C,OAAS,GACzC8U,GAASmjB,EAAMh3B,OAAQg3B,EAAMh3B,OAAO5B,KAAM44B,EAAMh3B,OAAO8B,eAE3D,MACJ,IAAK,SACI0R,GAAce,EAAQ,KAIvByiB,EAAMh3B,OAAOU,OAAO67B,OACpBhvB,GAAaypB,EAAMh3B,OAAQ,WAJ3BgF,GAAmBgyB,EAAMh3B,OAAQuU,EAAQ,GAAId,IAMjD,MACJ,IAAK,YAEDujB,EAAMh3B,OAAOU,OAAO87B,OACpB,MACJ,IAAK,UACD33B,EAAQmyB,EAAMh3B,QACd,MACJ,IAAK,OACGg3B,EAAMh3B,OAAOszB,aAA6C,mBAA9B0D,EAAMh3B,OAAOkB,aACzC81B,EAAMh3B,OAAOU,OAAOu7B,IAAmB/qB,OAAQ8lB,EAAMh3B,OAAOszB,cAEzB,mBAA9B0D,EAAMh3B,OAAOkB,eACd81B,EAAMh3B,OAAOszB,aACb0D,EAAMh3B,OAAOU,OAAOu7B,IAAmB/qB,OAAQ8lB,EAAMh3B,OAAOszB,cAEhE0D,EAAMh3B,OAAOwP,qBAAqBo9B,2BAA2BrqC,UAAQy0B,EAAMkT,kBAAmB,QAElG,MACJ,IAAK,UACDlT,EAAMh3B,OAAOU,OAAOy8B,OACpBuP,EAAS1V,EAAMh3B,OAAO8B,cACY,mBAA9Bk1B,EAAMh3B,OAAOkB,eACbwrC,KACA1V,EAAMh3B,OAAOwP,qBAAqBo9B,2BAA2BrqC,UAAQy0B,EAAMkT,kBAAmB,QAElG/zB,GAAW6gB,EAAMh3B,OAAQ0sC,EAAQ1V,EAAMh3B,OAAO5B,KAAM,WACpD,MACJ,IAAK,YACDkW,GAAgB0iB,EAAMh3B,QACtB,MACJ,IAAK,SACDyU,GAAWuiB,EAAMh3B,QACjB,MAEJ,IAAK,OAGL,IAAK,OAGL,IAAK,OAGL,IAAK,YAGL,IAAK,aAKL,IAAK,OAEDuL,EAAmByrB,EAAMh3B,OAAQ6C,GACjC,MAGJ,IAAK,iBACDsB,EAAa6yB,EAAMh3B,OAAQ,cAC3B,MAGJ,IAAK,cACDmE,EAAa6yB,EAAMh3B,OAAQ,gBAM/CyoC,EAAYrjB,UAAU+W,kBAAoB,SAAU9hB,GAChD,GAAIA,EAAE1O,SAAWiR,KAAKwb,iBAAgC,WAAb/d,EAAE1O,OAI3C,IAAK,IAAIgyB,EAAK,EAAGC,EAAK1qB,OAAOD,KAAKoH,EAAEwjB,SAAUF,EAAKC,EAAG7+B,OAAQ4+B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,WACD/gB,KAAKosB,YAAY19B,SAAWF,EAAYwR,KAAK5c,OAAQ+e,OAKrE0pB,EAAYrjB,UAAUqL,iBAAmB,WACrC7T,KAAK5c,OAAOy9B,GAAG6K,GAAgB1rB,KAAKwQ,QAASxQ,MAC7CA,KAAK5c,OAAOy9B,GAAGvB,GAAqBtf,KAAKuf,kBAAmBvf,MAC5DA,KAAKohB,eAAiB,IAAIC,iBAAerhB,KAAKosB,YAAYrqC,SACtDu/B,UAAWthB,KAAKuhB,iBAAiBxhB,KAAKC,MACtC8T,WAAY9T,KAAK8T,WACjBlkB,UAAW,aAGnBi8B,EAAYrjB,UAAUyO,oBAAsB,WACxCjX,KAAK5c,OAAO+7B,IAAIuM,GAAgB1rB,KAAKwQ,SACrCxQ,KAAK5c,OAAO+7B,IAAIG,GAAqBtf,KAAKuf,mBAC1Cvf,KAAKohB,eAAe5Q,WAExBqb,EAAYrjB,UAAU+Y,iBAAmB,SAAU9jB,GAC/C,OAAQA,EAAExZ,QACN,IAAK,UACL,IAAK,YACDwZ,EAAEoI,mBASdgmB,EAAYrjB,UAAUgT,cAAgB,WAClC,MAAO,eAEXqQ,EAAYrjB,UAAUgI,QAAU,WACxBxQ,KAAK5c,OAAO87B,cAGhBlf,KAAKiX,sBACLjX,KAAKosB,YAAY5b,UACjBxQ,KAAK0tB,cAAgB,OAGzB7B,EAAYrjB,UAAU+mB,YAAc,SAAUxuC,GAE1C,IAAK,IADD+J,KACK5I,EAAI,EAAGA,EAAInB,EAAKoB,OAAQD,IAAK,CAClC,IAAIqH,OAAO,EACPylC,EAAShvB,KAAK2sB,UAAU5rC,EAAKmB,IAC7Bs1B,EAAWtqB,EAAc8S,KAAK5c,OAAQrC,EAAKmB,IAC/C,OAAQnB,EAAKmB,IACT,IAAK,IACDqH,GAAS0mC,WAAW,GACpB,MACJ,IAAK,OACD1mC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAASqY,IAC9C,MACJ,IAAK,SACD3mC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAASsY,IAC9C,MACJ,IAAK,MACD5mC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAASuY,IAC9C,MACJ,IAAK,OACD7mC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAASwY,IAC9C,MACJ,IAAK,QACD9mC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAASyY,IAC9C,MACJ,IAAK,SACD/mC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAAS0Y,IAC9C,MACJ,IAAK,SACDhnC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAAS2Y,IAC9C,MACJ,IAAK,YACDjnC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAAS4Y,IAC9C,MACJ,IAAK,UACDlnC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAAS6Y,IAC9C,MACJ,IAAK,SACDnnC,GACIpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAAS8Y,GACrC7lC,QAEQ3J,GAAI6e,KAAK2sB,UAAU,QAAS1rC,KAAMiM,EAAc8S,KAAK5c,OAAQ,QAC7Dy0B,QAAgC,SAAvB7X,KAAK5c,OAAO8H,OAAoB0lC,GAAoB,OAG7DzvC,GAAI6e,KAAK2sB,UAAU,QAAS1rC,KAAMiM,EAAc8S,KAAK5c,OAAQ,QAC7Dy0B,QAAgC,SAAvB7X,KAAK5c,OAAO8H,OAAoB0lC,GAAoB,OAG7DzvC,GAAI6e,KAAK2sB,UAAU,QAAS1rC,KAAMiM,EAAc8S,KAAK5c,OAAQ,gBAC7Dy0B,QAAgC,iBAAvB7X,KAAK5c,OAAO8H,OAA4B0lC,GAAoB,OAEvEX,WAAW,IAET9uC,GAAI6e,KAAK2sB,UAAU,aAAc1rC,KAAMiM,EAAc8S,KAAK5c,OAAQ,aAClEy0B,QAAmC,cAA1B7X,KAAK5c,OAAO4H,UAA4B6lC,GAAqB,OAGtE1vC,GAAI6e,KAAK2sB,UAAU,cAAe1rC,KAAMiM,EAAc8S,KAAK5c,OAAQ,cACnEy0B,QAAmC,eAA1B7X,KAAK5c,OAAO4H,UAA6B6lC,GAAqB,OAGvE1vC,GAAI6e,KAAK2sB,UAAU,QAAS1rC,KAAMiM,EAAc8S,KAAK5c,OAAQ,QAC7Dy0B,QAAmC,SAA1B7X,KAAK5c,OAAO4H,UAAuB6lC,GAAqB,QAI7E,MAEJ,IAAK,OACDtnC,GACIpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAA8B,YAArB7X,KAAK5c,OAAOoE,KAAqBulC,GAAgBF,GACtF/hC,QAEQ3J,GAAI6e,KAAK2sB,UAAU,kBAAmB1rC,KAAMiM,EAAc8S,KAAK5c,OAAQ,mBACvEy0B,QAA8B,YAArB7X,KAAK5c,OAAOoE,KAAqB,KAAOqpC,KAGjD1vC,GAAI6e,KAAK2sB,UAAU,eAAgB1rC,KAAMiM,EAAc8S,KAAK5c,OAAQ,gBACpEy0B,QAA8B,YAArB7X,KAAK5c,OAAOoE,KAAqBqpC,GAAqB,QAI3E,MACJ,IAAK,UACDtnC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAASiZ,IAC9C,MACJ,IAAK,YACDvnC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAASkZ,IAC9C,MAEJ,IAAK,WACDxnC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUK,QAASmZ,IAC9C,MAEJ,QACIznC,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,GAGnC1sB,EAAMzI,KAAKkH,GAEf,OAAOuB,GAEX+gC,EAAYrjB,UAAUmkB,UAAY,SAAUxrC,GACxC,OAAO6e,KAAK5c,OAAOrB,QAAQZ,GAAK,OAASA,EAAG8H,MAAM,KAAKC,KAAK,IAAIH,eAE7D8iC,KCjoBAoF,IACPC,UAAa,aACbC,OAAU,SACV/5B,OAAU,SACVg6B,OAAU,SACVn6B,SAAY,WACZo6B,IAAO,MACPC,KAAQ,OACRC,MAAS,QACTC,OAAU,UACVC,QAAW,UACXC,iBAAkB,gBAClBC,kBAAmB,iBACnBC,KAAQ,OACRC,QAAW,UACXC,UAAa,aACbC,KAAQ,OACRC,oBAAqB,aACrBC,iBAAkB,SAClBC,iBAAkB,SAClBC,iBAAkB,SAClBC,mBAAoB,WACpBC,cAAe,MACfC,eAAgB,OAChBC,gBAAiB,QACjBC,iBAAkB,UAClBC,kBAAmB,UACnBC,oBAAqB,kBACrBC,eAAgB,OAChBC,kBAAmB,UACnBC,oBAAqB,aACrBC,KAAQ,OACRC,KAAQ,OACRC,aAAgB,WAChBC,YAAe,eACfC,KAAQ,OACRC,SAAY,WACZC,QAAW,UACXC,SAAY,WACZC,KAAQ,OACRC,WAAc,aACdC,UAAa,YACbC,WAAc,aACdC,KAAQ,OACRC,kBAAmB,cACnBC,eAAgB,UAChBltC,OAAU,SACVmtC,YAAa,KACbC,gBAAiB,SACjBC,aAAc,MACdC,YAAa,KACbC,gBAAiB,SACjBC,cAAe,OACfC,mBAAoB,SACpBC,oBAAqB,yBACrBC,gBAAiB,SACjBC,iBAAkB,sBAClBC,6BAA8B,sBAC9BC,8BAA+B,2GAE/BC,gBAAiB,cACjBC,iBAAkB,6CAClBC,uBAAwB,gBACxBC,wBAAyB,+CACzBC,yBAA0B,wBAC1BC,0BAA2B,mDAC3BC,mBAAoB,qBACpBC,oBAAqB,uDACrBC,gBAAiB,eACjBC,MAAS,QACTC,mBAAoB,2CACpBC,qBAAsB,kNAGtBC,8BAA+B,qDAC/BC,2BAA4B,wDAC5BC,eAAgB,uBAChBC,cAAe,4BACfC,eAAgB,mBAChBC,aAAc,8BACdC,eAAgB,mBAChBC,aAAc,4BACdC,mBAAoB,gEACpBC,oBAAqB,2DACrBC,gBAAiB,gBACjBC,iBAAkB,mDAClBC,eAAgB,sBAChBC,gBAAiB,kFACjBC,mBAAoB,YACpBC,iBAAkB,UAClBC,cAAe,OACfC,iBAAkB,gCAClBC,GAAM,KACNC,iBAAkB,wEAClBC,gBAAiB,iEACjBC,eAAgB,sCCnGhB5uB,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBzR,OAAO4R,iBAChBC,wBAA2BtM,OAAS,SAAUmM,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAEI,eAAeD,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASK,IAAOtI,KAAKuI,YAAcP,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAa3R,OAAOmS,OAAOR,IAAMK,EAAGE,UAAYP,EAAEO,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYrU,EAAQjR,EAAKulB,GAC7E,IAA2HZ,EAAvHa,EAAIC,UAAU3mB,OAAQ4mB,EAAIF,EAAI,EAAIvU,EAAkB,OAATsU,EAAgBA,EAAOtS,OAAO0S,yBAAyB1U,EAAQjR,GAAOulB,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASP,EAAYrU,EAAQjR,EAAKulB,QACpH,IAAK,IAAI1mB,EAAIymB,EAAWxmB,OAAS,EAAGD,GAAK,EAAGA,KAAS8lB,EAAIW,EAAWzmB,MAAI6mB,GAAKF,EAAI,EAAIb,EAAEe,GAAKF,EAAI,EAAIb,EAAE1T,EAAQjR,EAAK0lB,GAAKf,EAAE1T,EAAQjR,KAAS0lB,GAChJ,OAAOF,EAAI,GAAKE,GAAKzS,OAAO6S,eAAe7U,EAAQjR,EAAK0lB,GAAIA,GAqC5D4tB,GAA6B,SAAUttB,GAEvC,SAASstB,EAAYp4B,EAASxc,GAC1B,IAAIq4B,EAAQ/Q,EAAO2P,KAAKhZ,KAAMzB,EAASxc,IAAYie,KAmDnD,OAjDAoa,EAAM5hB,WAAa,KACnB4hB,EAAMz2B,iBACNy2B,EAAMroB,kBAENqoB,EAAMjoB,oBACNioB,EAAMwc,gBACNxc,EAAMyc,YACNzc,EAAMt0B,gBAAiB,EACvBs0B,EAAM3yB,uBACN2yB,EAAMpU,UAAY,KAClBoU,EAAMviB,cACNuiB,EAAM0c,iBACN1c,EAAM3jB,QAAS,EACf2jB,EAAM32B,OAAQ,EACd22B,EAAMl2B,aAAc,EACpBk2B,EAAM9nB,cAAe,EACrB8nB,EAAMhoB,cAAe,EACrBgoB,EAAM7pB,WAAa,GACnB6pB,EAAM2c,cAAe,EACrB3c,EAAMp1B,YAAa,EAEnBo1B,EAAMtzB,iBAAkB,EACxBszB,EAAMv2B,aAAc,EACpBu2B,EAAM4c,aAAc,EACpB5c,EAAMvV,aACNuV,EAAM6c,UAAW,EACjB7c,EAAM/W,eAAgB,EACtB+W,EAAM7nB,YAAa,EAEnB6nB,EAAM0D,iBACN1D,EAAMhX,cACNgX,EAAMvW,aAAc,EAEpBuW,EAAM9oB,YACN8oB,EAAMjpB,aACNipB,EAAMppB,SAAW,GACjBopB,EAAMrpB,SAAW,GACjBqpB,EAAM9pB,YAAa,EACnB8pB,EAAMtmB,gBAAkB,KACxBsmB,EAAMS,oBAAuBqc,KAAM,GAAItrC,IAAK,IAC5CwuB,EAAM/nB,WAAY,EAClB+nB,EAAM5lB,UAAY,EAElB4lB,EAAMloB,kBACNkoB,EAAM+c,eAAiB,EACvB/c,EAAMgd,cAAgB,EAEtBhd,EAAMlE,OAAQ,EACdmhB,EAAcC,OAAOpQ,GAAe9T,GAAgByY,IAC7CzR,EArDXtS,GAAU6uB,EAAattB,GAuDvBguB,EAAgBV,EAOhBA,EAAYnuB,UAAUgT,cAAgB,WAClC,MAAO,eAOXmb,EAAYnuB,UAAU+uB,UAAY,YAC1Bj2C,oBAAM0e,KAAKje,QAAQZ,KAA2B,KAApB6e,KAAKje,QAAQZ,KACvC6e,KAAKje,QAAQ+0B,aAAa,KAAM0gB,cAAY,gBAEhDx3B,KAAKy3B,aACLz3B,KAAKzc,YACLyc,KAAKvU,WACLisC,oBAAQ13B,KAAKje,SAAWqgB,MAASu1B,aAAW33B,KAAKoC,OAAQyE,OAAU8wB,aAAW33B,KAAK6G,UACnF7G,KAAKoiB,SAAWwV,UAAQxV,SACxBpiB,KAAKnR,SAAWmR,KAAK63B,cACjB73B,KAAKnR,UACLmR,KAAKze,eAAgBu2C,wBAA0Bv8B,SAAS,KAAW,GAEvE,IAAIhI,EAAM5N,UAAQqa,KAAKje,QAAS,aAChCie,KAAK+3B,WAAWxkC,EAChByM,KAAK1b,aAA8B,eAAd0b,KAAKxY,KAAyB,iBAAmB,cACtEwwC,iBAAgB1jC,OAAQ0L,KAAKje,SAAWuK,iBACxC0T,KAAKi4B,aACLj4B,KAAK8T,YACDokB,KAAM,QACNC,GAAI,KACJC,WAAY,eACZC,WAAY,eACZC,MAAO,UAEXt4B,KAAK1R,UAAY,IAAIiqC,OAAKv4B,KAAKwb,gBAAiByV,GAAejxB,KAAK3R,SAQxEsoC,EAAYnuB,UAAUgwB,eAAiB,WAEnC,OAAOx4B,KAAKy4B,cADK,OAAQ,OAAQ,mBASrC9B,EAAYnuB,UAAUkwB,gBAAkB,WACpC,IAAIC,KA4CJ,OA3CAA,EAAQt2C,MACJu2C,OAAQ,gBACR3yC,MAAO+Z,QAEX24B,EAAQt2C,MACJu2C,OAAQ,iBACR3yC,MAAO+Z,QAEPA,KAAK64B,gBAAgBt9B,SACrBo9B,EAAQt2C,MACJu2C,OAAQ,UACR3yC,MAAO+Z,MACPpV,KAAM,YAGVoV,KAAK83B,uBAAuBv8B,SAC5Bo9B,EAAQt2C,MACJu2C,OAAQ,iBACR3yC,MAAO+Z,MACPpV,KAAM,mBAGVoV,KAAKxY,MACLmxC,EAAQt2C,MACJu2C,OAAQ,cACR3yC,MAAO+Z,MACPpV,KAAM,gBAGVoV,KAAKwvB,oBAAoBj0B,UAAYyE,KAAKoiB,UAC1CuW,EAAQt2C,MACJu2C,OAAQ,cACR3yC,MAAO+Z,MACPpV,KAAM,gBAGVoV,KAAKuY,sBACLogB,EAAQt2C,MACJu2C,OAAQ,iBACR3yC,MAAO+Z,MACPpV,KAAM,mBAGP+tC,GAQXhC,EAAYnuB,UAAUiO,OAAS,WAC3BzW,KAAK84B,aACL,IAAIC,EAAUz3C,oBAAM0e,KAAK9a,kBACrB8a,KAAKkhB,oBAAsBlhB,KAAK9a,cAAgB8a,KAAK9a,cAAc6zB,MAAM/Y,KAAK9a,cAAc/C,OAAS,GAQzG,GAPA6d,KAAKze,eAAgB2D,cAAe6zC,IAAW,GAC/C/4B,KAAKg5B,SAAWh5B,KAAKxY,KACrBwY,KAAKkW,MAAQ+iB,UAAUC,SAASC,cAAcnwC,QAAQ,QAAU,EAChEgX,KAAKo5B,OAAOp5B,KAAKqC,WACjBrC,KAAKq5B,oBACL/xC,GAAK0Y,KAAOA,KAAKxe,OAASwe,KAAKtQ,aAAgBI,GAAoBD,GAAoBmQ,KAAKxe,MAC5Fwe,KAAKwY,eACDl3B,oBAAM0e,KAAKpN,sBAAuB,CAClCoN,KAAKs5B,YAAYC,SAASv5B,KAAKqC,UAAY,EAAI,GACrCxf,SAAO,IAAM22C,GAAex5B,KAAKje,SACvCiB,UAAUoC,IAAIkzB,IAEtBtY,KAAK0Z,aACL1Z,KAAKy5B,kBAET9C,EAAYnuB,UAAUivB,WAAa,WAC/B,IAAI5M,EAAc7qB,KAAKxe,KACnBF,oBAAMupC,KACNA,EAAc,KAEdA,EAAY17B,YAAY,OAAU07B,EAAY1oC,OAAS,IACvD0oC,GAA4B,KAEhC7qB,KAAKtQ,aAAem7B,EACpB,IAAIlD,EAAQkD,EAAY5hC,MAAM,KAC9B+W,KAAKze,eAAgBC,KAAMmmC,EAAM,GAAK,MAAO,GAC7C3nB,KAAKne,aACLme,KAAKre,QAAU,WACfqe,KAAK5Z,aAETuwC,EAAYnuB,UAAUswB,WAAa,WAC3B94B,KAAKnR,UACL+kB,YAAU5T,KAAKje,SAAU23C,IAEzB15B,KAAKkhB,qBACLtN,YAAU5T,KAAKje,SAAU43C,IAE7B35B,KAAK45B,YAAY,KAAM55B,KAAKtR,UAC5BsR,KAAK65B,oBAETlD,EAAYnuB,UAAUyvB,WAAa,WAC/B,IAAI6B,EAAa95B,KAAK1T,cAAc,OAASnL,GAAI6e,KAAKje,QAAQZ,GAAK0sC,KACnE7tB,KAAKje,QAAQgL,YAAY+sC,GACzB,IAAIC,EAAa/5B,KAAK1T,cAAc,OAChCnL,GAAI6e,KAAKje,QAAQZ,GAAK2K,GAAeS,UN5M7B,aM8MZyT,KAAKje,QAAQgL,YAAYgtC,GACzB,IAAIC,EAAiBh6B,KAAK1T,cAAc,OACpCnL,GAAI6e,KAAKje,QAAQZ,GNzQF,cMyQ0BoL,UN9M7B,iBMgNZ0tC,EAAWj6B,KAAK1T,cAAc,OAC9BnL,GAAI6e,KAAKje,QAAQZ,GAAK6sC,KAE1BgM,EAAejtC,YAAYktC,GAC3B,IAAIC,EAAcl6B,KAAK1T,cAAc,OACjCnL,GAAI6e,KAAKje,QAAQZ,GAAKiT,GAAgB7H,UAAW4tC,KAErDn6B,KAAKmoB,wBAA0BnoB,KAAK1T,cAAc,OAC9CnL,GAAI6e,KAAKje,QAAQZ,GAAK6K,GACtBO,UN/Ea,cMiFjB2tC,EAAYntC,YAAYiT,KAAKmoB,yBAC7B,IAAIiS,EAAWp6B,KAAK1T,cAAc,OAC9BnL,GAAI6e,KAAKje,QAAQZ,GAAK0tC,KAE1BqL,EAAYntC,YAAYqtC,GACxB,IAAIC,EAAgBr6B,KAAK1T,cAAc,OACnCnL,GAAI6e,KAAKje,QAAQZ,GAAKwyB,GACtBpnB,UAAWxE,GAAiB8U,OAASy9B,KAAQ,WAEjDJ,EAAYntC,YAAYstC,GACxB,IAAIE,EAAUv6B,KAAK1T,cAAc,QAAUC,UN3E9B,iBM4Eb2tC,EAAYntC,YAAYwtC,GACxB,IAAIC,EACCx6B,KAAKqC,WAYN03B,EAAWhtC,YAAYmtC,GACvBH,EAAWhtC,YAAYitC,GACvBQ,IACM95B,KAAM,MAAO+5B,IAAK,UAEhB/5B,KAAM,MAAO+5B,IAAKz6B,KAAK83B,uBAAuB/tB,SAASxf,WACvDmwC,IAAK16B,KAAK83B,uBAAuB6C,SAASpwC,eAjBlDwvC,EAAWhtC,YAAYitC,GACvBD,EAAWhtC,YAAYmtC,GACvBM,IAEQ95B,KAAM,MAAO+5B,IAAKz6B,KAAK83B,uBAAuB/tB,SAASxf,WACvDmwC,IAAK16B,KAAK83B,uBAAuB6C,SAASpwC,aAE5CmW,KAAM,MAAO+5B,IAAK,WAc5Bz6B,KAAKs5B,YAAc,IAAIsB,YACnBJ,aAAcA,EACdp4B,MAAO,OACPC,WAAW,EACXC,oBAAqBtC,KAAKsC,oBAC1B4E,SAAUlH,KAAKsQ,eAAevQ,KAAKC,QAEvCA,KAAKs5B,YAAY/2B,kBAAmB,EACpCvC,KAAKs5B,YAAY92B,SAASu3B,GAC1B,IAAIc,EAAa76B,KAAK1T,cAAc,OAASnL,GAAI6e,KAAKje,QAAQZ,GAAKshB,KACnEzC,KAAKje,QAAQgL,YAAY8tC,GACzB,IAAIC,EAAW96B,KAAK1T,cAAc,MAAQnL,GAAI6e,KAAKje,QAAQZ,GAAKurC,KAChE1sB,KAAKje,QAAQgL,YAAY+tC,GACzB,IAAIC,EAAgB/6B,KAAK1T,cAAc,OAASnL,GAAI6e,KAAKje,QAAQZ,GAAKimB,KACtEpH,KAAKje,QAAQgL,YAAYguC,GACzB,IAAIC,EAAiBh7B,KAAK1T,cAAc,OAASnL,GAAI6e,KAAKje,QAAQZ,GAAKkjB,KACvErE,KAAKje,QAAQgL,YAAYiuC,GACzB,IAAIC,EAAmBj7B,KAAK1T,cAAc,OAASnL,GAAI6e,KAAKje,QAAQZ,GAAK+5C,KACzEl7B,KAAKje,QAAQgL,YAAYkuC,IAE7BtE,EAAYnuB,UAAUgQ,aAAe,WACjC,IAAI2iB,EAAUt4C,SAAO,IAAMmd,KAAKje,QAAQZ,GAAK0sC,GAAgB7tB,KAAKje,SAC9Dq5C,EAAgBD,EAAUA,EAAQlvC,aAAe,EACjD+T,KAAKs5B,cACLt5B,KAAKs5B,YAAYzyB,QAAU7G,KAAKje,QAAQ2T,aAAe0lC,GAAe7wC,WACtEyV,KAAKs5B,YAAY52B,aAIzBi0B,EAAYnuB,UAAU8H,eAAiB,WACnCtQ,KAAKlc,OAAOk8B,QAEhB2W,EAAYnuB,UAAU6yB,eAAiB,WACnC,IAAIxf,EAAMh5B,SAAO,IAAM22C,GAAex5B,KAAKje,SACvCie,KAAK83B,uBAAuBv8B,SAC5ByE,KAAKs5B,YAAYgC,OAAOt7B,KAAKqC,UAAY,EAAI,GAC7CwZ,EAAI74B,UAAUyC,OAAO6yB,MAGrBtY,KAAKs5B,YAAYC,SAASv5B,KAAKqC,UAAY,EAAI,GAC/CwZ,EAAI74B,UAAUoC,IAAIkzB,MAG1Bqe,EAAYnuB,UAAUoxB,YAAc,SAAU2B,EAAQC,GAC7Cl6C,oBAAMi6C,IAAsB,KAAXA,GAClBlY,eAAarjB,KAAKje,SAAUw5C,EAAOtyC,MAAM,MAExC3H,oBAAMk6C,IAAsB,KAAXA,GAClB5nB,YAAU5T,KAAKje,SAAUy5C,EAAOvyC,MAAM,OAG9C0tC,EAAYnuB,UAAUoO,YAAc,WAChCA,cAAY5W,KAAKje,UAErB40C,EAAYnuB,UAAUqR,YAAc,WAChCA,cAAY7Z,KAAKje,UAErB40C,EAAYnuB,UAAUizB,cAAgB,SAAUh+B,GAC5CA,EAAEoI,kBAEN8wB,EAAYnuB,UAAUqvB,YAAc,WAChC,MAAQ,kFAAkFzxB,KAAKwxB,UAAQ8D,UAAU3yC,gBAC1G,UAAUqd,KAAKwxB,UAAQ8D,UAAU3yC,gBAE5C4tC,EAAYnuB,UAAUqxB,iBAAmB,WACrC,IAAI14C,EAAK6e,KAAKje,QAAQZ,GAAK4W,GACvB4jC,EAAY37B,KAAK1T,cAAc,SAAWnL,GAAIA,EAAI0b,OAASjS,KAAM,cAAe8O,KAAM,UAC1FsG,KAAKje,QAAQgL,YAAY4uC,GACzB37B,KAAK47B,gBAAkB,IAAIt6B,UACvB3C,OAAQzR,EAAc8S,KAAM,iBAC5BpB,QAAS+8B,EACTh6B,mBAAqBC,OAAQ,QAC7BC,eAAe,EACfC,eAAe,EACfvG,SAAS,EACTyG,SAAS,EACTI,MAAO,QACP9N,OAAQ0L,KAAKiC,YAAcjC,KAAKiC,YAAc,IAAMjC,KAAKje,QAAQZ,GACjEuN,SAAUF,EAAYwR,KAAMA,KAAKnR,SAAWqT,GAAgBC,IAC5D9T,OAAQ2R,KAAK3R,OACb0T,eAAe,EACfxM,UAAYwR,EAAG,SAAUC,EAAG,UAC5B3E,UAAWrC,KAAKqC,UAChBC,oBAAqBtC,KAAKsC,oBAC1BvD,KAAMiB,KAAK67B,OAAO97B,KAAKC,MACvBf,MAAOe,KAAK87B,QAAQ/7B,KAAKC,MACzBuB,WAAYvB,KAAKwsB,aAAazsB,KAAKC,MACnCyB,YAAazB,KAAKysB,cAAc1sB,KAAKC,QAEzCA,KAAK47B,gBAAgBp5B,SAAS,IAAMxC,KAAKje,QAAQZ,GAAK+5C,IACtDl7B,KAAK+7B,mBAETpF,EAAYnuB,UAAUuzB,gBAAkB,WACpC,IAAIC,EAAYh8B,KAAKtW,aAAasyC,UAAYh8B,KAAKtW,aAAasyC,UAAYh8B,KAAKtW,aAAaC,IAC9FqW,KAAK9L,UAAY,IAAI+nC,YACjB9nC,SAAUtR,SAAO,IAAMmd,KAAKje,QAAQZ,GAAKiT,GAAgB4L,KAAKje,SAC9Dm6C,eACIC,QAASH,EACTI,UAAWJ,GAEf3tC,OAAQ2R,KAAK3R,OACbgU,UAAWrC,KAAKqC,UAChBg6B,UAAWr8B,KAAKs8B,YAAYv8B,KAAKC,MACjCu8B,SAAUv8B,KAAKw8B,WAAWz8B,KAAKC,MAC/By8B,UAAWz8B,KAAK08B,SAAS38B,KAAKC,MAC9B28B,SAAU38B,KAAK48B,WAAW78B,KAAKC,MAC/Bgd,SAAUhd,KAAK68B,WAAW98B,KAAKC,MAC/B88B,QAAS98B,KAAK+8B,gBAAgBh9B,KAAKC,MACnCg9B,QAASh9B,KAAKi9B,gBAAgBl9B,KAAKC,MACnCk9B,WAAYl9B,KAAKm9B,eAAeD,WAChCE,YAAap9B,KAAKm9B,eAAeC,YACjCC,YAAar9B,KAAKm9B,eAAeE,YACjCC,kBAAmBt9B,KAAKm9B,eAAeG,kBACvCC,gBAAiBv9B,KAAKm9B,eAAeI,gBACrCC,kBAAmBx9B,KAAKy9B,iBAAiB19B,KAAKC,QAElDA,KAAK9L,UAAUsO,SAAS,IAAMxC,KAAKje,QAAQZ,GAAK4W,KAEpD4+B,EAAYnuB,UAAUi1B,iBAAmB,SAAUx3C,GAC/C+Z,KAAKxV,QAAQ,mBAAoBvE,IAErC0wC,EAAYnuB,UAAUk1B,eAAiB,WACnC19B,KAAK9L,UAAUgpC,WAAal9B,KAAKm9B,eAAeD,WAChDl9B,KAAK9L,UAAUkpC,YAAcp9B,KAAKm9B,eAAeC,YACjDp9B,KAAK9L,UAAUmpC,YAAcr9B,KAAKm9B,eAAeE,YACjDr9B,KAAK9L,UAAUopC,kBAAoBt9B,KAAKm9B,eAAeG,kBACvDt9B,KAAK9L,UAAUqpC,gBAAkBv9B,KAAKm9B,eAAeI,gBACrDv9B,KAAK9L,UAAUwO,YAEnBi0B,EAAYnuB,UAAUgkB,aAAe,SAAUvmC,GAC3C,IAAIiE,GACA2J,OAAQ5N,EAAK4N,OAAQ2Q,UAAW,SAAUC,YAAazE,KAAK47B,iBAEhE57B,KAAKxV,QAAQ,kBAAmBN,EAAW,SAAUwa,GACjDze,EAAK4N,OAAS6Q,EAAU7Q,UAGhC8iC,EAAYnuB,UAAUikB,cAAgB,SAAUxmC,GAC5C,IAAIiE,GACA2J,OAAQ5N,EAAK4N,OAAQ2Q,UAAW,SAAUC,YAAazE,KAAK47B,iBAEhE57B,KAAKxV,QAAQ,mBAAoBN,EAAW,SAAUwa,GAClDze,EAAK4N,OAAS6Q,EAAU7Q,UAGhC8iC,EAAYnuB,UAAUqzB,OAAS,WAC3B77B,KAAKi3B,UAAW,EAChBj3B,KAAK47B,gBAAgB75C,QAAQ6d,QAC7B,IAAI3Z,GACAwe,YAAazE,KAAK47B,gBAAiBp3B,UAAW,SAC9CziB,QAASie,KAAK47B,gBAAgB75C,SAElCie,KAAKxV,QAAQ,YAAavE,IAE9B0wC,EAAYnuB,UAAUszB,QAAU,WAC5B97B,KAAKi3B,UAAW,EAChBj3B,KAAK9L,UAAUypC,WACf,IAAI13C,GACAwe,YAAazE,KAAK47B,gBAAiBp3B,UAAW,SAC9CziB,QAASie,KAAK47B,gBAAgB75C,SAElCie,KAAKxV,QAAQ,aAAcvE,IAG/B0wC,EAAYnuB,UAAU8zB,YAAc,SAAUr2C,GAC1C,IAAIhC,EAAS,OACb,GAA+B,IAA1B+b,KAAK6E,UAAU1iB,OAChB,IAAK,IAAID,EAAI,EAAGA,EAAI8d,KAAK6E,UAAU1iB,OAAQD,IACnC+D,EAAK23C,SAAShzC,OAASoV,KAAK6E,UAAU3iB,GAAG0G,KAAKgC,OAC9C3G,EAAS+b,KAAK6E,UAAU3iB,GAAG+B,OAC3B+b,KAAK6E,UAAUZ,OAAO/hB,EAAG,GACzBA,EAAI8d,KAAK6E,UAAU1iB,QAI/B,IAAIpB,EAAO+Y,KAAKC,UAAU7Y,WAAS8e,KAAKre,OAAOqe,KAAKre,OAAOQ,OAAS,GAAI6d,KAAKzc,WAC7E0C,EAAK43C,iBAAoBr8C,KAAQwe,KAAKxe,OAAUyC,OAAUA,IAAYlD,KAAQA,IAAU+8C,SAAY73C,EAAK23C,SAAShzC,OAClH,IAEIlB,GACAC,IAHYqW,KAAKtW,aAAasyC,UAAYh8B,KAAKtW,aAAasyC,UAAYh8B,KAAKtW,aAAaC,IAI1F+P,KAAM,OACNC,MAAM,EACNC,SAAU,KACVC,YAAa,KACb9Y,KAAM+Y,KAAKC,UAAU9T,EAAK43C,gBAC1B7jC,UAAW,KACXC,UAAW,KACXC,WAAY,MAEhB8F,KAAK+9B,iBAAoB95C,OAAQ,SAAUyF,aAAcA,EAAcmK,QAAQ,GAC/EmM,KAAKxV,QAAQ,aAAcwV,KAAK+9B,gBAAiB,SAAUA,GACvD93C,EAAK43C,eAAiB/jC,KAAKU,MAAMtZ,WAAS,OAAQ68C,EAAgBr0C,eAClEzD,EAAK4N,OAASkqC,EAAgBlqC,OAE9B,IAAI3J,GACA2J,QAAQ,EACRmqC,YAAa/3C,EAAKg4C,gBAE8C,mBAAzD/8C,WAAS,aAAc68C,EAAgBr0C,gBAC9CxI,WAAS,aAAc68C,EAAgBr0C,aAAvCxI,CAAqDgJ,GACjDhJ,WAAS,SAAUgJ,KACnBjE,EAAK4N,OAAS3S,WAAS,SAAUgJ,QAKjDysC,EAAYnuB,UAAUg0B,WAAa,WAC/Bx8B,KAAKk+B,qBAAsBjsC,MAAO,IACW,IAAzC+N,KAAK9L,UAAUiqC,eAAeh8C,QAC9B6d,KAAK47B,gBAAgBngC,QAI7Bk7B,EAAYnuB,UAAUk0B,SAAW,SAAUz2C,GACvC,IAAIlF,EAAO+Y,KAAKC,UAAU7Y,WAAS8e,KAAKre,OAAOqe,KAAKre,OAAOQ,OAAS,GAAI6d,KAAKzc,WAC7E0C,EAAK43C,iBAAoBr8C,KAAQwe,KAAKxe,OAAUyC,OAAU,WAAclD,KAAQA,KAGpF41C,EAAYnuB,UAAUo0B,WAAa,WAC3B58B,KAAKi3B,UACLj3B,KAAK47B,gBAAgBngC,QAI7Bk7B,EAAYnuB,UAAUq0B,WAAa,SAAU52C,GACzC,GAA8B,IAA1BA,EAAKm4C,UAAUj8C,OAAnB,CAGA6d,KAAKm3B,eAAiBlxC,EAAKm4C,UAAUj8C,OACrC6d,KAAKo3B,cAAgB,EAErB,IAAIz/B,EAAUtR,EAAc2Z,MAC5B,IAAKvI,GAAgBE,GAGjB,OAFA1R,EAAK4N,QAAS,OACdzL,GAAmB4X,KAAMrI,EAASM,IAGtC+H,KAAK47B,gBAAgBj5B,SAGzBg0B,EAAYnuB,UAAU01B,oBAAsB,SAAUj4C,GAClD+Z,KAAKo3B,cAAgBp3B,KAAKo3B,cAAgBnxC,EAAKgM,MAC3C+N,KAAKm9B,eAAekB,WAAcr+B,KAAKm3B,iBAAmBn3B,KAAKo3B,eAC/Dp3B,KAAK47B,gBAAgBngC,QAK7Bk7B,EAAYnuB,UAAUu0B,gBAAkB,SAAUh2C,GAC9C,IAAId,GAAShC,OAAQ,SAAUwJ,OAAQ1G,GACvCiZ,KAAKxV,QAAQ,UAAWvE,GACxB+Z,KAAK5Z,UAAYlF,WAAS8e,KAAKre,OAAOqe,KAAKre,OAAOQ,OAAS,GAAI6d,KAAKzc,WACpE+D,GAAK0Y,KAAMhE,GAAoBgE,KAAKxe,MACpCwe,KAAKk+B,qBAAsBjsC,MAAO,IACsC,mBAA7D/Q,WAAS,YAAa8e,KAAK+9B,gBAAgBr0C,eAClDxI,WAAS,YAAa8e,KAAK+9B,gBAAgBr0C,aAA3CxI,IAKRy1C,EAAYnuB,UAAUy0B,gBAAkB,SAAUl2C,GAE9C,IAAIu3C,EAAWp9C,WAAS,WAAY6F,GAChCw3C,EAAar9C,WAAS,aAAco9C,GACrB,KAAfC,GACA1wC,WAAS,aAAc0wC,EAAYx3C,GAEvC,IAAId,GAAShC,OAAQ,SAAU+I,MAAOjG,GACtCiZ,KAAKxV,QAAQ,UAAWvE,GACiB,MAArC/E,WAAS,aAAco9C,KACvBt+B,KAAKoD,WAAW/gB,KAAKnB,WAAS,OAAQ6F,IACjCiZ,KAAKqD,eACNjH,GAAgB4D,KAAM,gBAG0C,mBAA7D9e,WAAS,YAAa8e,KAAK+9B,gBAAgBr0C,eAClDxI,WAAS,YAAa8e,KAAK+9B,gBAAgBr0C,aAA3CxI,IAGRy1C,EAAYnuB,UAAUg2B,aAAe,WACjCjvC,EAAYyQ,KAAMA,KAAKxe,OAE3Bm1C,EAAYnuB,UAAU6wB,kBAAoB,WACtCr5B,KAAK6gB,GAAGzmB,GAAsB4F,KAAK4W,YAAa5W,MAChDA,KAAK6gB,GAAGpmB,GAAqBuF,KAAK6Z,YAAa7Z,MAC/CA,KAAK6gB,GAAG/wB,GAAmBkQ,KAAKw+B,aAAcx+B,MAC9CA,KAAK6gB,GAAGN,GAAoBvgB,KAAKwgB,cAAexgB,MAChDA,KAAK6gB,GAAG3c,GAAmBlE,KAAKk+B,oBAAqBl+B,MACrD0hB,eAAat8B,IAAI4a,KAAKje,QAAS,cAAeie,KAAKy7B,cAAez7B,OAEtE22B,EAAYnuB,UAAUi2B,qBAAuB,WACrCz+B,KAAKkf,cAGTlf,KAAKmf,IAAI/kB,GAAsB4F,KAAK4W,aACpC5W,KAAKmf,IAAI1kB,GAAqBuF,KAAK6Z,aACnC7Z,KAAKmf,IAAIrvB,GAAmBkQ,KAAKw+B,cACjCx+B,KAAKmf,IAAIoB,GAAoBvgB,KAAKwgB,eAClCxgB,KAAKmf,IAAIjb,GAAmBlE,KAAKk+B,qBACjCxc,eAAaj8B,OAAOua,KAAKje,QAAS,cAAeie,KAAKy7B,iBAE1D9E,EAAYnuB,UAAUgY,cAAgB,WAC9Bl/B,oBAAM0e,KAAK1b,gBACX0b,KAAK5Z,UAAYlF,WAAS8e,KAAKre,OAAOqe,KAAKre,OAAOQ,OAAS,GAAI6d,KAAKzc,aAG5EozC,EAAYnuB,UAAU2X,cAAgB,WAClCngB,KAAKwY,eACLxY,KAAKlc,OAAOo8B,QAEhByW,EAAYnuB,UAAU+Y,iBAAmB,SAAU9jB,GAE/C,OAAQA,EAAExZ,QACN,IAAK,OACDwZ,EAAEoI,iBACF7F,KAAK5Z,UAAYC,EAAc2Z,OAC1BxI,GAAiBwI,KAAK5Z,SAAS,IAIhCuK,GAAaqP,KAAM,aAHnB5X,GAAmB4X,KAAMA,KAAK5Z,SAAS,GAAIwR,IAK/C,MACJ,IAAK,KACD6F,EAAEoI,iBACF5d,EAAQ+X,MACR,MAEJ,IAAK,aACDvC,EAAEoI,iBACF7F,KAAKg5B,SAAW,UAChBh5B,KAAKze,eAAgBiG,KAAM,YAAa,GACxCovB,cAAY5W,KAAKje,SACjBwF,EAAayY,KAAM,WACnB,MAEJ,IAAK,aACDvC,EAAEoI,iBACF7F,KAAKg5B,SAAW,aAChBh5B,KAAKze,eAAgBiG,KAAM,eAAgB,GAC3CovB,cAAY5W,KAAKje,SACjBwF,EAAayY,KAAM,cACnB,MACJ,IAAK,QACDvC,EAAEoI,kBACmD,GAAjD7F,KAAK64B,gBAAgB/tC,MAAM9B,QAAQ,WACvBnG,SAAO,IAAMmd,KAAKje,QAAQZ,GAAK4W,GAAeiI,KAAKje,SACrDiW,UAK1B2+B,EAAYnuB,UAAUkR,WAAa,WAC/BgI,eAAat8B,IAAI2O,OAAQ,SAAUiM,KAAKmgB,cAAengB,MACvDA,KAAKohB,eAAiB,IAAIC,iBAAerhB,KAAKje,SAC1Cu/B,UAAWthB,KAAKuhB,iBAAiBxhB,KAAKC,MACtC8T,WAAY9T,KAAK8T,WACjBlkB,UAAW,aAGnB+mC,EAAYnuB,UAAUwO,aAAe,WACjC0K,eAAaj8B,OAAOsO,OAAQ,SAAUiM,KAAKmgB,eAC3CngB,KAAKohB,eAAe5Q,WAExBmmB,EAAYnuB,UAAUk2B,QAAU,WAC5B1+B,KAAKze,eAAgB2D,mBAAqB,GAC1C8a,KAAKy3B,aACLz3B,KAAKlc,OAAOqM,IAAwBC,aAAc4P,KAAKre,OAAO,KAC9D2F,GAAK0Y,KAAOA,KAAKxe,OAASwe,KAAKtQ,aAAgBI,GAAoBD,GAAoBmQ,KAAKxe,OAYhGm1C,EAAYnuB,UAAU+W,kBAAoB,SAAU0B,EAAS0d,GAEzD,IAAK,IADD93B,EACKka,EAAK,EAAGC,EAAK1qB,OAAOD,KAAK4qB,GAAUF,EAAKC,EAAG7+B,OAAQ4+B,IAAM,CAE9D,OADWC,EAAGD,IAEV,IAAK,eACD/gB,KAAK4+B,oBAAoB3d,GACzB,MACJ,IAAK,mBACDjhB,KAAKrL,iBAAmBssB,EAAQtsB,iBAChCqL,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,SAAUkyB,QAASA,EAAS0d,QAASA,IAChF,MACJ,IAAK,sBACG3+B,KAAKkhB,oBACLtN,YAAU5T,KAAKje,SAAU43C,KAGrB35B,KAAK9a,cAAc/C,OAAS,GAC5B6d,KAAKze,eAAgB2D,cAAe8a,KAAK9a,cAAc6zB,MAAM/Y,KAAK9a,cAAc/C,OAAS,KAAM,GAEnGkhC,eAAarjB,KAAKje,SAAU43C,KAEhC35B,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,SAAUkyB,QAASA,EAAS0d,QAASA,IAChF,MACJ,IAAK,WACD3+B,KAAK45B,YAAY+E,EAAQjwC,SAAUuyB,EAAQvyB,UAC3CsR,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,SAAUkyB,QAASA,EAAS0d,QAASA,IAChF,MACJ,IAAK,sBACD3+B,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,cAAekyB,QAASA,EAAS0d,QAASA,IACrF,MACJ,IAAK,YACD3+B,KAAKqC,UAAY4e,EAAQ5e,UACzBrC,KAAK/X,UACL,MACJ,IAAK,gBACD+X,KAAKtF,cAAgBumB,EAAQvmB,cAC7BsF,KAAK/X,UACL,MACJ,IAAK,SACD4e,EAAUvlB,oBAAM2/B,EAAQpa,QAAuCoa,EAAQpa,OAArC8wB,aAAW1W,EAAQpa,QACrD6wB,oBAAQ13B,KAAKje,SAAW8kB,OAAUA,IAClC7G,KAAKwY,eACLxY,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,SAAUkyB,QAASA,EAAS0d,QAASA,IAChF,MACJ,IAAK,SACIr9C,oBAAM2/B,EAAQ5e,YACfrC,KAAKze,eAAgB8gB,UAAW4e,EAAQ5e,YAAa,GAEzDrC,KAAK6+B,qBAAqB5d,GAC1B,MACJ,IAAK,yBACDjhB,KAAKq7B,iBACLr7B,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,iBAAkBkyB,QAASA,EAAS0d,QAASA,IACxF,MACJ,IAAK,OACD3+B,KAAK0+B,UACL,MACJ,IAAK,iBACI3uC,oBAAkBkxB,EAAQ/6B,eAAeshC,sBAC1CxnB,KAAKze,eAAgB2E,gBAAkBshC,oBAAqBvG,EAAQ/6B,eAAeshC,uBAAyB,GAE5Gz3B,oBAAkBkxB,EAAQ/6B,eAAeK,aACzCyZ,KAAKze,eAAgB2E,gBAAkBK,WAAY06B,EAAQ/6B,eAAeK,cAAgB,GAE1FwJ,oBAAkBkxB,EAAQ/6B,eAAeC,aACzC6Z,KAAKze,eAAgB2E,gBAAkBC,WAAY86B,EAAQ/6B,eAAeC,cAAgB,GAE9F6Z,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,gBAAiBkyB,QAASA,EAAS0d,QAASA,IACvF,MACJ,IAAK,gBACiB,YAAd3+B,KAAKxY,KACLwY,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,cAAekyB,QAASA,EAAS0d,QAASA,IAElE,eAAd3+B,KAAKxY,MACVwY,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,iBAAkBkyB,QAASA,EAAS0d,QAASA,IAE5F,MACJ,IAAK,oBAGL,IAAK,kBACD3+B,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,SAAUkyB,QAASA,EAAS0d,QAASA,IAChF,MACJ,IAAK,gBACD3+B,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,iBAAkBkyB,QAASA,EAAS0d,QAASA,IACxF,MACJ,IAAK,kBACL,IAAK,eACD3+B,KAAKwY,eACLxY,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,UAAWkyB,QAASA,EAAS0d,QAASA,IACjF,MACJ,IAAK,iBACD3+B,KAAK09B,iBACL,MACJ,IAAK,OACoB,YAAjBzc,EAAQz5B,KACRwY,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,cAAekyB,QAASA,EAAS0d,QAASA,IAE/D,eAAjB1d,EAAQz5B,MACbwY,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,iBAAkBkyB,QAASA,EAAS0d,QAASA,IAE5F,MACJ,IAAK,QACDjH,oBAAQ13B,KAAKje,SAAWqgB,MAAU9gB,oBAAM2/B,EAAQ7e,OAAqC6e,EAAQ7e,MAApCu1B,aAAW1W,EAAQ7e,SAC5EpC,KAAKlc,OAAOw7B,IAAuBvwB,OAAQ,SAAUkyB,QAASA,EAAS0d,QAASA,IAChF,MACJ,IAAK,YACD12C,EAAQ+X,MACRA,KAAKlc,OAAOkL,OACZ,MACJ,IAAK,SACD/G,EAAQ+X,MACRA,KAAKlc,OAAOkL,OACM,YAAdgR,KAAKxY,MACLwY,KAAKlc,OAAOgL,OAEhB,MACJ,IAAK,cACGkR,KAAK47B,kBACL57B,KAAK47B,gBAAgBtnC,OAAS2sB,EAAQhf,aAEtCjC,KAAK1E,YACL0E,KAAK1E,UAAUhH,OAAS2sB,EAAQhf,aAEhCjC,KAAK+C,eACL/C,KAAK+C,aAAazO,OAAS2sB,EAAQhf,aAEnCjC,KAAK4G,YACL5G,KAAK4G,UAAUtS,OAAS2sB,EAAQhf,gBAOpD00B,EAAYnuB,UAAUo2B,oBAAsB,SAAU3d,GAC7ClxB,oBAAkBkxB,EAAQv3B,aAAaC,MACxCqW,KAAKze,eAAgBmI,cAAgBC,IAAKs3B,EAAQv3B,aAAaC,OAAS,GAEvEoG,oBAAkBkxB,EAAQv3B,aAAasyC,YACxCh8B,KAAKze,eAAgBmI,cAAgBsyC,UAAW/a,EAAQv3B,aAAasyC,aAAe,GAEnFjsC,oBAAkBkxB,EAAQv3B,aAAa8S,cACxCwD,KAAKze,eAAgBmI,cAAgB8S,YAAaykB,EAAQv3B,aAAa8S,eAAiB,GAEvFzM,oBAAkBkxB,EAAQv3B,aAAaJ,cACxC0W,KAAKze,eAAgBmI,cAAgBJ,YAAa23B,EAAQv3B,aAAaJ,eAAiB,GAE5F0W,KAAKze,eAAgBC,KAAM,MAAO,GAClCwe,KAAKze,eAAgB2D,mBAAqB,GAC1CmkB,EAAOb,UAAUvgB,QAAQ+wB,KAAKhZ,OAGlC22B,EAAYnuB,UAAUq2B,qBAAuB,SAAU5d,GACnDjhB,KAAK9L,UAAU7F,OAAS4yB,EAAQ5yB,OAChCgb,EAAOb,UAAUvgB,QAAQ+wB,KAAKhZ,OAOlC22B,EAAYnuB,UAAUgI,QAAU,WACxBxQ,KAAKkf,cAGJlf,KAAK8+B,YACN9+B,KAAKlc,OAAO4nC,OAEhB1rB,KAAK9L,UAAUsc,UACfxQ,KAAK9L,UAAY,KACjB8L,KAAK47B,gBAAgBprB,UACrBxQ,KAAK47B,gBAAkB,KACvB57B,KAAKs5B,YAAY9oB,UACjBxQ,KAAKs5B,YAAc,KACft5B,KAAK1E,YACL0E,KAAK1E,UAAUkV,UACfxQ,KAAK1E,UAAY,MAEjB0E,KAAK4G,YACL5G,KAAK4G,UAAU4J,UACfxQ,KAAK4G,UAAY,MAEjB5G,KAAK+C,eACL/C,KAAK+C,aAAayN,UAClBxQ,KAAK+C,aAAe,MAExB/C,KAAKje,QAAQ+5B,gBAAgB,SAC7B9b,KAAKje,QAAQ+5B,gBAAgB,YAC7B9b,KAAKy+B,uBACLz+B,KAAKgX,eACLhX,KAAK45B,YAAY55B,KAAKtR,SAAU,MAChC20B,eAAarjB,KAAKje,UNhrBT,QMgrB6B23C,GAAYC,KAClD35B,KAAKje,QAAQkL,UAAY,GACzB+S,KAAKmoB,wBAA0B,KAC/BnoB,KAAK7b,eAAiB,KACtB6b,KAAKtM,mBAAqB,KAC1BsM,KAAK0W,YAAc,KACnBrN,EAAOb,UAAUgI,QAAQwI,KAAKhZ,MAC9BA,KAAKyY,qBAAuB,KAC5BzY,KAAKpN,qBAAuB,KAC5BoN,KAAK++B,cAAgB,KACrB/+B,KAAKg/B,kBAAoB,KACzBh/B,KAAK5Y,qBAAuB,KAC5B4Y,KAAK/Y,kBAAoB,KACzB+Y,KAAKnb,oBAAsB,OAS/B8xC,EAAYnuB,UAAUpQ,aAAe,SAAUxN,GAC3CoV,KAAKlc,OAAO07B,IAAqBv7B,OAAQ,iBAEzC,IAAI0T,GAAWtR,EAAc2Z,OAE7B,GADAA,KAAK5Z,SAAWuR,EACZ/M,EACA,GAAI,eAAewb,KAAKxb,GAAO,CAS3B+F,GAAaqP,KAAM,SAPfjZ,MAAO,KACPiG,OACI4D,KAAM,MACNC,QAAS3D,EAAc8S,KAAM,sBAAsB/V,QAAQ,MAAO,IAAMW,EAAO,KAC/EkG,WAAY,aAMf0G,GAAiBG,EAAQ,IAI1BS,GAAa4H,KAAMpV,GAHnBxC,GAAmB4X,KAAMrI,EAAQ,GAAIC,SAQ7CF,GAAgBsI,OAaxB22B,EAAYnuB,UAAUke,YAAc,SAAUtkC,GAC1C4d,KAAKlc,OAAO07B,IAAqBv7B,OAAQ,cAAe7B,IAAKA,KAQjEu0C,EAAYnuB,UAAUy2B,oBAAsB,SAAUn0C,IAC7CxJ,oBAAMwJ,IAAUkV,KAAK++B,eACtB/+B,KAAK++B,cAAcnQ,YAAY9jC,GAAO,IAa9C6rC,EAAYnuB,UAAUme,cAAgB,SAAUvkC,GAC5C4d,KAAKlc,OAAO07B,IAAqBv7B,OAAQ,gBAAiB7B,IAAKA,KAQnEu0C,EAAYnuB,UAAU02B,mBAAqB,SAAUp0C,IAC5CxJ,oBAAMwJ,IAAUkV,KAAK++B,eACtB/+B,KAAK++B,cAAcnQ,YAAY9jC,GAAO,IAS9C6rC,EAAYnuB,UAAU22B,iBAAmB,SAAUr0C,GAC1CxJ,oBAAMwJ,IAAWxJ,oBAAM0e,KAAKg/B,kBAAkB5S,cAC/CpsB,KAAKg/B,kBAAkB/P,YAAYnkC,IAS3C6rC,EAAYnuB,UAAU42B,iBAAmB,SAAU71C,GAC/C,OAAIyW,KAAKg/B,kBACEh/B,KAAKg/B,kBAAkBjQ,aAAaxlC,IAGnC,GAShBotC,EAAYnuB,UAAU62B,oBAAsB,SAAU91C,GAClD,OAAIyW,KAAK++B,cACE/+B,KAAK++B,cAAchQ,aAAaxlC,IAG/B,GAYhBotC,EAAYnuB,UAAU82B,YAAc,SAAU9mC,GAC1CwH,KAAKxH,WAAaA,GAA0B,KAC5CwH,KAAKze,eAAgB2D,mBAAqB,GAC1C8a,KAAKlc,OAAOsX,OACZ4E,KAAKhb,YAAa,EACuC,KAArDgb,KAAKnb,oBAAoBC,UAAU/C,QAAQgD,QAC3Cib,KAAKnb,oBAAoBC,UAAU/C,QAAQgD,MAAQ,IAEvD8B,GAAOmZ,KAAM4gB,KAQjB+V,EAAYnuB,UAAU+2B,iBAAmB,WAErC,OADAv/B,KAAKlc,OAAO68B,OACL3gB,KAAK5Z,UAWhBuwC,EAAYnuB,UAAUoe,SAAW,SAAUzlC,GACvC6e,KAAKlc,OAAO07B,IAAqBv7B,OAAQ,WAAY9C,GAAIA,KAO7Dw1C,EAAYnuB,UAAUg3B,aAAe,WACjCv3C,EAAQ+X,OAOZ22B,EAAYnuB,UAAUi3B,cAAgB,WAClCz/B,KAAKwY,eACLxY,KAAKlc,OAAO28B,QAOhBkW,EAAYnuB,UAAUlD,UAAY,WAC9BtF,KAAKlc,OAAO07B,IAAqBv7B,OAAQ,eAO7C0yC,EAAYnuB,UAAUmW,eAAiB,WACnC3e,KAAKlc,OAAO07B,IAAqBv7B,OAAQ,oBAe7C0yC,EAAYnuB,UAAUqe,WAAa,SAAU1lC,EAAIyJ,GAC7CoV,KAAKlc,OAAO07B,IAAqBv7B,OAAQ,aAAc9C,GAAIA,EAAI0X,QAASjO,KAO5E+rC,EAAYnuB,UAAUk3B,YAAc,WAEhC,IAAI/nC,GAAWtR,EAAc2Z,OAC7BA,KAAK5Z,SAAWuR,EAChBE,GAAWmI,OAQf22B,EAAYnuB,UAAU4wB,OAAS,SAAUuG,GACjCA,EACA3/B,KAAK45B,YAAY,KNx6BZ,SM26BL55B,KAAK45B,YN36BA,QM26BqB,MAE1B55B,KAAK9L,YACL8L,KAAK47B,gBAAgBv5B,UAAYs9B,EACjC3/B,KAAK9L,UAAUmO,UAAYs9B,IAGnC,IAAItI,EAgKJ,OA/JA3uB,IACIk3B,aAAYx2B,KACbutB,EAAYnuB,UAAW,oBAAgB,GAC1CE,IACIa,YAAS,IACVotB,EAAYnuB,UAAW,wBAAoB,GAC9CE,IACIa,YAAS,IACVotB,EAAYnuB,UAAW,2BAAuB,GACjDE,IACIa,YAAS,IACVotB,EAAYnuB,UAAW,0BAAsB,GAChDE,IACIk3B,aAAYp1B,KACbmsB,EAAYnuB,UAAW,2BAAuB,GACjDE,IACIa,WAAS,KACVotB,EAAYnuB,UAAW,gBAAY,GACtCE,IACIk3B,aAAYx1B,KACbusB,EAAYnuB,UAAW,2BAAuB,GACjDE,IACIa,YAAS,IACVotB,EAAYnuB,UAAW,2BAAuB,GACjDE,IACIa,YAAS,IACVotB,EAAYnuB,UAAW,yBAAqB,GAC/CE,IACIa,YAAS,IACVotB,EAAYnuB,UAAW,4BAAwB,GAClDE,IACIa,WAAS,UACVotB,EAAYnuB,UAAW,cAAU,GACpCE,IACIa,WAAS,eACVotB,EAAYnuB,UAAW,YAAQ,GAClCE,IACIk3B,aAAYn1B,KACbksB,EAAYnuB,UAAW,8BAA0B,GACpDE,IACIa,WAAS,MACVotB,EAAYnuB,UAAW,YAAQ,GAClCE,IACIa,WAAS,OACVotB,EAAYnuB,UAAW,mBAAe,GACzCE,IACIk3B,aAAYh2B,KACb+sB,EAAYnuB,UAAW,sBAAkB,GAC5CE,IACIa,cACDotB,EAAYnuB,UAAW,qBAAiB,GAC3CE,IACIa,YAAS,IACVotB,EAAYnuB,UAAW,yBAAqB,GAC/CE,IACIa,WAAS,OACVotB,EAAYnuB,UAAW,qBAAiB,GAC3CE,IACIa,YAAS,IACVotB,EAAYnuB,UAAW,uBAAmB,GAC7CE,IACIa,YAAS,IACVotB,EAAYnuB,UAAW,qBAAiB,GAC3CE,IACIa,WAAS,cACVotB,EAAYnuB,UAAW,iBAAa,GACvCE,IACIa,WAAS,SACVotB,EAAYnuB,UAAW,cAAU,GACpCE,IACIa,WAAS,OACVotB,EAAYnuB,UAAW,oBAAgB,GAC1CE,IACIk3B,aAAYl2B,KACbitB,EAAYnuB,UAAW,uBAAmB,GAC7CE,IACIm3B,gBAAel2B,KAChBgtB,EAAYnuB,UAAW,oBAAgB,GAC1CE,IACIk3B,aAAYl1B,KACbisB,EAAYnuB,UAAW,sBAAkB,GAC5CE,IACIa,WAAS,SACVotB,EAAYnuB,UAAW,aAAS,GACnCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,gBAAY,GACtCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,gBAAY,GACtCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,sBAAkB,GAC5CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,uBAAmB,GAC7CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,wBAAoB,GAC9CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,uBAAmB,GAC7CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,kBAAc,GACxCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,eAAW,GACrCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,iBAAa,GACvCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,qBAAiB,GAC3CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,oBAAgB,GAC1CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,oBAAgB,GAC1CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,mBAAe,GACzCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,qBAAiB,GAC3CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,kBAAc,GACxCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,iBAAa,GACvCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,gBAAY,GACtCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,eAAW,GACrCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,kBAAc,GACxCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,iBAAa,GACvCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,eAAW,GACrCE,IACIo3B,WACDnJ,EAAYnuB,UAAW,oBAAgB,GAC1CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,qBAAiB,GAC3CE,IACIo3B,WACDnJ,EAAYnuB,UAAW,wBAAoB,GAC9CmuB,EAAcU,EAAgB3uB,IAC1Bq3B,yBACDpJ,IAELqJ,aClyCEC,GAAsC,WAStC,OARAA,GAAW3pC,OAAO4pC,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGl+C,EAAI,EAAGm+C,EAAIv3B,UAAU3mB,OAAQD,EAAIm+C,EAAGn+C,IAAK,CACjDk+C,EAAIt3B,UAAU5mB,GACd,IAAK,IAAIkmB,KAAKg4B,EAAO9pC,OAAOkS,UAAUH,eAAe2Q,KAAKonB,EAAGh4B,KACzD+3B,EAAE/3B,GAAKg4B,EAAEh4B,IAEjB,OAAO+3B,IAEK72B,MAAMtJ,KAAM8I,YAiB5Bw3B,GAAyB,WAQzB,SAASA,EAAQl9C,GACb4c,KAAKugC,SAAW,SAAU,SAAU,WAAY,MAAO,OAAQ,SAC/DvgC,KAAKwgC,QAAU,SAAU,SAAU,WAAY,MAAO,QACtDxgC,KAAKygC,UAAY,SAAU,WAAY,MAAO,OAAQ,WACtDzgC,KAAK0gC,WAAa,YAAa,SAAU,SAAU,WACnD1gC,KAAK5c,OAASA,EACd4c,KAAKyW,SACLzW,KAAK6T,mBAskBT,OApkBAysB,EAAQ93B,UAAUiO,OAAS,WACvB,IAAI2D,EAAQpa,KACZA,KAAKlV,MAAQkV,KAAK2gC,gBAAgB3gC,KAAK4gC,SAAS5gC,KAAK5c,OAAOy1C,gBAAgB/tC,MAAM+V,IAAI,SAAUtX,GAAQ,OAAOA,EAAKkmC,WACpH,IAAIvlC,GAAcY,MAAOkV,KAAKlV,OAC9BkV,KAAK5c,OAAOoH,QAAQ,gBAAiBN,EAAW,SAAU22C,GACtDzmB,EAAMtvB,MAAQ+1C,EAAkB/1C,MAChCsvB,EAAM0mB,WAAa,IAAIC,WACnBj2C,MAAOsvB,EAAMtvB,MACbk2C,QAAS5mB,EAAM6mB,qBAAqBlhC,KAAKqa,GACzC8mB,aAAc,QACdC,QAAS/mB,EAAMgnB,UAAUrhC,KAAKqa,GAC9B9X,oBAAqB8X,EAAMh3B,OAAOkf,oBAClCD,UAAW+X,EAAMh3B,OAAOif,YAE5B+X,EAAM0mB,WAAWv+B,kBAAmB,EACpC6X,EAAM0mB,WAAWnxC,KAAOyqB,EAAMh3B,OAAOuM,KAAOyqB,EAAMh3B,OAAOuM,KAAOyqB,EAAMh3B,OACtEg3B,EAAM0mB,WAAWt+B,SAAS,IAAM4X,EAAMh3B,OAAOrB,QAAQZ,GAAK0sC,OAGlEyS,EAAQ93B,UAAUumB,aAAe,SAAUxlC,GAEvC,IAAK,IADDylC,EAAShvB,KAAKqhC,MAAM93C,GACfrH,EAAI,EAAGA,EAAI8d,KAAKlV,MAAM3I,OAAQD,IACnC,GAAI8d,KAAKlV,MAAM5I,GAAGf,KAAO6tC,EACrB,OAAO9sC,EAGf,OAAQ,GAEZo+C,EAAQ93B,UAAUo4B,SAAW,SAAU91C,GACnC,IAAIw2C,EAAYx2C,EAAMiuB,QAOtB,OANI/Y,KAAK5c,OAAOg/B,UAAYpiB,KAAK5c,OAAO89B,qBACpCogB,EAAUj/C,KAAK,aAEf2d,KAAK5c,OAAOm+C,aAAap/C,OAAS,IAClCm/C,EAAYthC,KAAK5c,OAAOm+C,aAAa1gC,IAAI,SAAUtX,GAAQ,OAAOA,EAAKqB,QAEpE02C,GAGXhB,EAAQ93B,UAAU44B,UAAY,SAAUn7C,GACpC,IAAIm0B,EAAQpa,KACZ,IAAI1e,oBAAM2E,EAAKsD,OAAUtD,EAAKsD,KAAKpI,GAAnC,CAGA,IAEIwW,EAFA6pC,EAAOv7C,EAAKsD,KAAKpI,GAAG4f,QAAQf,KAAK5c,OAAOrB,QAAQZ,GAAK,QAAQgB,QAGpD,YAATq/C,GAA+B,cAATA,GAAiC,WAATA,GAC9C7pC,GAAWtR,EAAc2Z,KAAK5c,SAC9B4c,KAAK5c,OAAOgD,SAAWuR,IAGvBqI,KAAK5c,OAAOU,OAAOs7B,OACnBznB,EAAUqI,KAAK5c,OAAOgD,UAE1B,IAAI8D,GAAc2J,QAAQ,EAAO1J,YAAawN,EAASpO,KAAMtD,EAAKsD,MAClEyW,KAAK5c,OAAOoH,QAAQ,eAAgBN,EAAW,SAAUu3C,GACrD,IAAI3R,EACAx7B,EACJ,IAAKmtC,EAAiB5tC,OAClB,OAAQ2tC,GACJ,IAAK,UACDltC,EAAS3O,UAAQM,EAAKk8B,cAAc7tB,OAAQ,IAAMotC,MACpCptC,EAAOtR,UAAUC,SAAS,qBACpCgD,EAAK4N,QAAS,GAElB,MACJ,IAAK,YACD6D,GAAgB0iB,EAAMh3B,QACtB,MACJ,IAAK,MACDsF,EAAS0xB,EAAMh3B,QACf,MACJ,IAAK,OACDoF,EAAU4xB,EAAMh3B,QAChB,MACJ,IAAK,SACD,IAAK,IAAIlB,EAAI,EAAGA,EAAIyV,EAAQxV,OAAQD,IAChC,IAAK0U,GAAce,EAAQzV,IAEvB,YADAkG,GAAmBgyB,EAAMh3B,OAAQuU,EAAQzV,GAAI2U,IAIrDlG,GAAaypB,EAAMh3B,OAAQ,UAC3B,MACJ,IAAK,UACDg3B,EAAMh3B,OAAOU,OAAOy8B,OACpBuP,EAAS1V,EAAMh3B,OAAO8B,cACY,mBAA9Bk1B,EAAMh3B,OAAOkB,eACbwrC,MAEJv2B,GAAW6gB,EAAMh3B,OAAQ0sC,EAAQ1V,EAAMh3B,OAAO5B,KAAM,WACpD,MACJ,IAAK,QACD44B,EAAMh3B,OAAOmN,WAAa,GAC1BF,EAAa+pB,EAAMh3B,QACnB,MACJ,IAAK,UACD6E,EAAQmyB,EAAMh3B,QACd,MACJ,IAAK,WACD0T,GAAWsjB,EAAMh3B,QACjB,MACJ,IAAK,SACIwT,GAAce,EAAQ,KAIvByiB,EAAMh3B,OAAOU,OAAO67B,OACpBhvB,GAAaypB,EAAMh3B,OAAQ,WAJ3BgF,GAAmBgyB,EAAMh3B,OAAQuU,EAAQ,GAAId,IAMjD,MACJ,IAAK,SACDgB,GAAWuiB,EAAMh3B,QACjB,MACJ,IAAK,YACDg3B,EAAMh3B,OAAOU,OAAO87B,OACpB,MACJ,IAAK,YACDxF,EAAMh3B,OAAOU,OAAO+7B,YAMxCygB,EAAQ93B,UAAUy4B,qBAAuB,WACrC,IAAI7mB,EAAQpa,KACZ,IAAK1e,oBAAMuB,SAAO,IAAMmd,KAAKqhC,MAAM,UAAWrhC,KAAK5c,OAAOrB,UAAW,CACjE,IAAI+I,IACE3J,GAAI6e,KAAK2hC,WAAW,QAAS1gD,KAAMiM,EAAc8S,KAAK5c,OAAQ,QAC5Dy0B,QAAgC,SAAvB7X,KAAK5c,OAAO8H,OAAoB0lC,GAAoB,KAC/DzvC,GAAI6e,KAAK2hC,WAAW,QAAS1gD,KAAMiM,EAAc8S,KAAK5c,OAAQ,QAC5Dy0B,QAAgC,SAAvB7X,KAAK5c,OAAO8H,OAAoB0lC,GAAoB,KAC/DzvC,GAAI6e,KAAK2hC,WAAW,QAAS1gD,KAAMiM,EAAc8S,KAAK5c,OAAQ,gBAC5Dy0B,QAAgC,iBAAvB7X,KAAK5c,OAAO8H,OAA4B0lC,GAAoB,KACvEX,WAAW,IACX9uC,GAAI6e,KAAK2hC,WAAW,aAAc1gD,KAAMiM,EAAc8S,KAAK5c,OAAQ,aACjEy0B,QAAmC,cAA1B7X,KAAK5c,OAAO4H,UAA4B6lC,GAAqB,KACxE1vC,GAAI6e,KAAK2hC,WAAW,cAAe1gD,KAAMiM,EAAc8S,KAAK5c,OAAQ,cAClEy0B,QAAmC,eAA1B7X,KAAK5c,OAAO4H,UAA6B6lC,GAAqB,KACzE1vC,GAAI6e,KAAK2hC,WAAW,QAAS1gD,KAAMiM,EAAc8S,KAAK5c,OAAQ,QAC5Dy0B,QAAmC,SAA1B7X,KAAK5c,OAAO4H,UAAuB6lC,GAAqB,KAEzE7wB,KAAK4hC,UAAY,IAAI1X,kBACjBp/B,MAAOA,EAAO4D,SAAUF,EAAYwR,KAAK5c,OAAQ+e,IACjDtf,OAAQ8L,EAAmBoR,KAAKC,KAAMA,KAAK5c,QAC3Ckf,oBAAqBtC,KAAK5c,OAAOkf,oBACjCD,UAAWrC,KAAK5c,OAAOif,UAAWwV,QAAS8Y,KAE/C3wB,KAAK4hC,UAAUr/B,kBAAmB,EAClCvC,KAAK4hC,UAAUp/B,SAAS,IAAMxC,KAAKqhC,MAAM,WAE7C,IAAK//C,oBAAMuB,SAAO,IAAMmd,KAAKqhC,MAAM,QAASrhC,KAAK5c,OAAOrB,UAAW,CAC/D,IAEIwoB,IAEIppB,GAAI6e,KAAK2hC,WAAW,SAAU1gD,KAAMiM,EAAc8S,KAAK5c,OAAQ,mBAC/Dy0B,QAA8B,YAArB7X,KAAK5c,OAAOoE,KAAqB,GAAKqpC,KAG/C1vC,GAAI6e,KAAK2hC,WAAW,WAAY1gD,KAAMiM,EAAc8S,KAAK5c,OAAQ,gBACjEy0B,QAA8B,YAArB7X,KAAK5c,OAAOoE,KAAqBqpC,GAAqB,KAGvE7wB,KAAK6hC,aAAe,IAAI3X,kBACpBrS,QAA8B,YAArB7X,KAAK5c,OAAOoE,KAAqBulC,GAAgBF,GAC1Dn+B,SAAUF,EAAYwR,KAAK5c,OAAQ,gBAAkB+e,IACrDrX,MAAOyf,EAAa1nB,OAAQmd,KAAKqR,aAAatR,KAAKC,MACnDqC,UAAWrC,KAAK5c,OAAOif,UACvBzD,QAAS,iCAAmC1R,EAAc8S,KAAK5c,OAAQ,QAAU,UACjFinC,iBAAkB,SAAUpkC,GACxB,IAAI67C,EAAW77C,EAAKsD,KAAKsuB,QACrBkqB,EAAW97C,EAAKsD,KAAKtI,OAASiM,EAAcktB,EAAMh3B,OAAQ,mBAC1D4+C,EAAYF,EAAW,gBAAkBA,EAAW,GACxD77C,EAAKlE,QAAQkL,UAAY,gBAAkB+0C,EAAY,aAAeD,EArBxD,uDADL,uDAsBwG97C,EAAKsD,KAAKtI,KAC3H,IAAImoC,EAAOnjC,EAAKlE,QAAQkgD,WACpB7Y,GAA2B,KAAnBA,EAAK78B,WACbtG,EAAKlE,QAAQqb,YAAYgsB,MAIrCppB,KAAK6hC,aAAat/B,kBAAmB,EACrCvC,KAAK6hC,aAAar/B,SAAS,IAAMxC,KAAKqhC,MAAM,SAEhDrhC,KAAKkiC,UAAUliC,KAAKugC,SAAS,GAC7BvgC,KAAKmiC,aACDniC,KAAK5c,OAAOg/C,SAAWpiC,KAAK8gC,WAAWsB,UACvCpiC,KAAK5c,OAAOg/C,QAAUpiC,KAAK5c,OAAOg/C,QAAQlT,OAAOlvB,KAAK8gC,WAAWsB,SACjEpiC,KAAK5c,OAA6B,wBAgBtC,IAAK,IAdDoiB,EAAaF,YAAU,SAAUtF,KAAK8gC,WAAW/+C,SACjD0jB,EAAU,SAAUC,GAEpBF,EAAWE,GAAUC,UAAY,SAAUlI,GACrB,KAAdA,EAAEmI,SAAmBnI,EAAEnJ,OAAOtR,UAAUC,SAAS,eACjDwa,EAAEoI,kBAGVL,EAAWE,GAAUhG,QAAU,SAAUjC,GACnB,KAAdA,EAAEmI,SAAmBnI,EAAEnJ,OAAOtR,UAAUC,SAAS,eACjDuiB,EAAWE,GAAU1N,UAIxB0N,EAAW,EAAGA,EAAWF,EAAWrjB,OAAQujB,IACjDD,EAAQC,GAEZ1F,KAAK5c,OAAOq8C,iBAEhBa,EAAQ93B,UAAU65B,mBAAqB,WACnC,GAAIriC,KAAK4hC,UAEL,IAAK,IADD92C,EAAQkV,KAAK4hC,UAAU92C,MAClBw3C,EAAY,EAAGA,EAAYx3C,EAAM3I,OAAQmgD,IAC1Cx3C,EAAMw3C,GAAWnhD,KAAO6e,KAAK2hC,WAAW,QACxC72C,EAAMw3C,GAAWzqB,QAAiC,SAAvB7X,KAAK5c,OAAO8H,OAAoB0lC,GAAoB,GAE1E9lC,EAAMw3C,GAAWnhD,KAAO6e,KAAK2hC,WAAW,QAC7C72C,EAAMw3C,GAAWzqB,QAAiC,SAAvB7X,KAAK5c,OAAO8H,OAAoB0lC,GAAoB,GAE1E9lC,EAAMw3C,GAAWnhD,KAAO6e,KAAK2hC,WAAW,QAClB,iBAAvB3hC,KAAK5c,OAAO8H,QAAoD,gBAAvB8U,KAAK5c,OAAO8H,OACrDJ,EAAMw3C,GAAWzqB,QAAU7X,KAAK5c,OAAO8H,QAAW8U,KAAK5c,OAAO8H,OAAS0lC,GAAoB,GAG3F9lC,EAAMw3C,GAAWzqB,QAAiC,iBAAvB7X,KAAK5c,OAAO8H,OAA4B0lC,GAAoB,GAGtF9lC,EAAMw3C,GAAWnhD,KAAO6e,KAAK2hC,WAAW,aAC7C72C,EAAMw3C,GAAWzqB,QAAoC,cAA1B7X,KAAK5c,OAAO4H,UAA4B6lC,GAAqB,GAEnF/lC,EAAMw3C,GAAWnhD,KAAO6e,KAAK2hC,WAAW,cAC7C72C,EAAMw3C,GAAWzqB,QAAoC,eAA1B7X,KAAK5c,OAAO4H,UAA6B6lC,GAAqB,GAEpF/lC,EAAMw3C,GAAWnhD,KAAO6e,KAAK2hC,WAAW,UAC7C72C,EAAMw3C,GAAWzqB,QAAoC,SAA1B7X,KAAK5c,OAAO4H,UAAuB6lC,GAAqB,KAKnGyP,EAAQ93B,UAAUm5B,WAAa,SAAUxgD,GACrC,OAAO6e,KAAK5c,OAAOrB,QAAQZ,GAAK,QAAUA,EAAG4H,eAEjDu3C,EAAQ93B,UAAU6I,aAAe,SAAUprB,GACd,YAArB+Z,KAAK5c,OAAOoE,KACRvB,EAAKsD,KAAKpI,KAAO6e,KAAK2hC,WAAW,UACjCp6C,EAAayY,KAAK5c,OAAQ,cAI1B6C,EAAKsD,KAAKpI,KAAO6e,KAAK2hC,WAAW,YACjCp6C,EAAayY,KAAK5c,OAAQ,YAItCk9C,EAAQ93B,UAAUm4B,gBAAkB,SAAU5/C,GAC1C,IAAI+J,KACA6O,EAAO,OACPqG,KAAK5c,OAAOyL,WACZ8K,EAAO,YAEX,IAAK,IAAIzX,EAAI,EAAGA,EAAInB,EAAKoB,OAAQD,IAAK,CAClC,IAAIqH,OAAO,EACPg5C,OAAW,EACXviC,KAAK5c,OAAOm+C,aAAap/C,OAAS,IAClCogD,EAAWviC,KAAKwiC,aAAaxiC,KAAK5c,OAAOm+C,aAAajc,SAASpjC,EAAEqI,WAAY,OAEjF,IAAIykC,EAAShvB,KAAKqhC,MAAMtgD,EAAKmB,IACzBs1B,EAAWtqB,EAAc8S,KAAK5c,OAAQrC,EAAKmB,IAC3CugD,EAAcv1C,EAAc8S,KAAK5c,OAAQ,WAAarC,EAAKmB,IAC/D,OAAQnB,EAAKmB,IACT,IAAK,IACDqH,GAASmQ,KAAM,aACf,MACJ,IAAK,SACDnQ,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAYxS,GAAiByS,WAAYjpC,GACxG,MACJ,IAAK,SACD,IAAIkpC,EAAc,iDAAmDrrB,EAAW,UAC5E+qB,GAAYA,EAASthD,OACrB4hD,EAAc,iDAAmDN,EAASthD,KAAO,WAErFsI,GACIpI,GAAI6tC,EAAQ0T,YAAaD,EACzBz4B,SAAU,eAAiBglB,EAAS,iDAAmD6T,EAAc,aAEzG,MAEJ,IAAK,UACDt5C,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAY7R,GAAkB8R,WAAYjpC,GACzG,MACJ,IAAK,YACDpQ,GACIpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaK,WAAYC,GAAgBC,SAAU,OAC5FC,MAAO,SAEX,MACJ,IAAK,OACD,IAAIlB,OAAW,EAEXA,EADAQ,GAAYA,EAASthD,KACVshD,EAASthD,KAGTiM,EAAc8S,KAAK5c,OAAQ,QAE1CmG,GACIpI,GAAI6tC,EAAQ0T,YAAaD,EAAaE,WAAiC,YAArB3iC,KAAK5c,OAAOoE,KAAqBulC,GAAgBF,GACnGmW,SAAU,OAAQC,MAAO,QAAShiD,KAAMu2B,EAAUorB,WAAY,WAC9D54B,SAAU,eAAiBglB,EAAS,4DAChC+S,EAAW,cAEnB,MAEJ,IAAK,UACDx4C,GACIpI,GAAI6tC,EAAQ0T,YAAaD,EAAaE,WAAYjS,GAAkBsS,SAAU,OAAQC,MAAO,QAC7FhiD,KAAMu2B,EAAUorB,WAAY,YAEhC,MACJ,IAAK,YACDr5C,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAYlS,GAAoBmS,WAAYjpC,GAC3G,MACJ,IAAK,MACDpQ,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAYvS,GAAcwS,WAAYjpC,GACrG,MACJ,IAAK,OACDpQ,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAYtS,GAAeuS,WAAYjpC,GACtG,MACJ,IAAK,QACDpQ,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAYrS,GAAgBsS,WAAYjpC,GACvG,MACJ,IAAK,SACDpQ,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAYpS,GAAiBqS,WAAYjpC,GACxG,MACJ,IAAK,SACDpQ,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAYnS,GAAiBoS,WAAYjpC,GACxG,MACJ,IAAK,WACDpQ,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAY3R,GAAmB4R,WAAYjpC,GAC1G,MACJ,IAAK,YACDpQ,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaE,WAAY5R,GAAoB6R,WAAYjpC,GAC3G,MACJ,QACIpQ,GAASpI,GAAI6tC,EAAQ/tC,KAAMu2B,EAAUkrB,YAAaD,EAAaz4B,SAAU,IAGjF,GAAIhK,KAAK5c,OAAOm+C,aAAap/C,OAAS,GAAKogD,EAAU,CACjD,IAAIW,EAAcjD,MAAa12C,EAAMg5C,GACrCz3C,EAAMzI,KAAK6gD,QAGXp4C,EAAMzI,KAAKkH,GAGnB,OAAOuB,GAEXw1C,EAAQ93B,UAAUg6B,aAAe,SAAUD,GACvC,IAAIh5C,KAoDJ,OAnDIg5C,EAASphD,KACToI,EAAKpI,GAAKohD,EAASphD,IAEnBohD,EAASthD,OACTsI,EAAKtI,KAAOshD,EAASthD,MAErBshD,EAASG,cACTn5C,EAAKm5C,YAAcH,EAASG,aAE5BH,EAASI,aACTp5C,EAAKo5C,WAAaJ,EAASI,YAE3BJ,EAAS7zC,WACTnF,EAAKmF,SAAW6zC,EAAS7zC,UAED,SAAxB6zC,EAASK,aACTr5C,EAAKq5C,WAAaL,EAASK,YAE3BL,EAASv4B,WACTzgB,EAAKygB,SAAWu4B,EAASv4B,UAEzBu4B,EAASY,WACT55C,EAAK45C,SAAWZ,EAASY,UAEN,SAAnBZ,EAASngC,QACT7Y,EAAK6Y,MAAQmgC,EAASngC,OAEtBmgC,EAASO,aACTv5C,EAAKu5C,WAAaP,EAASO,YAER,SAAnBP,EAASU,QACT15C,EAAK05C,MAAQV,EAASU,OAEA,SAAtBV,EAASS,WACTz5C,EAAKy5C,SAAWT,EAASS,UAEzBT,EAASzqB,iBACTvuB,EAAKuuB,eAAiByqB,EAASzqB,gBAEb,WAAlByqB,EAAS7oC,OACTnQ,EAAKmQ,KAAO6oC,EAAS7oC,OAEA,IAArB6oC,EAAShnC,UACThS,EAAKgS,QAAUgnC,EAAShnC,SAExBgnC,EAASa,oBACT75C,EAAK65C,kBAAoBb,EAASa,oBAEX,IAAvBb,EAASc,WACT95C,EAAK85C,SAAWd,EAASc,UAEtB95C,GAEX+2C,EAAQ93B,UAAU64B,MAAQ,SAAUlgD,GAChC,OAAO6e,KAAK5c,OAAOrB,QAAQZ,GAAK,OAASA,EAAG4H,eAEhDu3C,EAAQ93B,UAAUqL,iBAAmB,WACjC7T,KAAK5c,OAAOy9B,GAAGvB,GAAqBtf,KAAKuf,kBAAmBvf,MAC5DA,KAAK5c,OAAOy9B,GAAGzlB,GAAyB4E,KAAKsjC,mBAAoBtjC,MACjEA,KAAK5c,OAAOy9B,GAAGl6B,GAAqBqZ,KAAKuc,eAAgBvc,MACzDA,KAAK5c,OAAOy9B,GAAGl8B,GAAkBqb,KAAK6R,UAAW7R,MACjDA,KAAK5c,OAAOy9B,GAAG98B,GAAkBic,KAAK8R,UAAW9R,MACjDA,KAAK5c,OAAOy9B,GAAG6K,GAAgB1rB,KAAKwQ,QAASxQ,MAC7CA,KAAK5c,OAAOy9B,GAAG7xB,GAAqBgR,KAAKqiC,mBAAoBriC,OAEjEsgC,EAAQ93B,UAAU+6B,gBAAkB,SAAU9lC,GAC1C,IAAI2c,EAAQpa,KACRwjC,KAWJ,GAVIxjC,KAAK5c,OAAOm+C,aAAap/C,OAAS,EAClCqhD,EAAiBxjC,KAAK5c,OAAOm+C,aAAa1gC,IAAI,SAAUtX,GACpD,OAAOA,EAAKqB,YAGyBgW,IAApCnD,EAAEwjB,QAAQ4X,gBAAgB/tC,QAC/B04C,EAAiB/lC,EAAEwjB,QAAQ4X,gBAAgB/tC,MAAM+V,IAAI,SAAUtX,GAC3D,OAAOA,EAAKkmC,UAGhB+T,EAAerhD,OAAS,EAAG,CAC3B6d,KAAKlV,MAAQkV,KAAK2gC,gBAAgB3gC,KAAK4gC,SAAS4C,IAChD,IAAIt5C,GAAcY,MAAOkV,KAAKlV,OAC9BkV,KAAK5c,OAAOoH,QAAQ,gBAAiBN,EAAW,SAAU22C,GAClDzmB,EAAMwnB,WACNxnB,EAAMwnB,UAAUpxB,UAEhB4J,EAAMynB,cACNznB,EAAMynB,aAAarxB,UAEvB4J,EAAMtvB,MAAQ+1C,EAAkB/1C,MAChCsvB,EAAM0mB,WAAWh2C,MAAQsvB,EAAMtvB,MAC/BsvB,EAAM0mB,WAAWp+B,WACjB0X,EAAM6mB,2BAIlBX,EAAQ93B,UAAU86B,mBAAqB,WACnCtjC,KAAKmiC,aACLniC,KAAKkiC,UAAUliC,KAAKwgC,QAAQ,GAC5BxgC,KAAKkiC,UAAUliC,KAAK0gC,WAAW,GACU,IAArC1gC,KAAK5c,OAAO8B,cAAc/C,QAC1B6d,KAAKkiC,UAAUliC,KAAKwgC,QAAQ,GAC5BxgC,KAAKkiC,UAAUliC,KAAK0gC,WAAW,IAE1B1gC,KAAK5c,OAAO8B,cAAc/C,OAAS,IACxC6d,KAAKkiC,UAAUliC,KAAKygC,UAAU,GAC9BzgC,KAAKkiC,UAAUliC,KAAK0gC,WAAW,IAEnC,IAAIntC,EAAM1Q,SAAO,IAAMmd,KAAKqhC,MAAM,aAAcrhC,KAAK8gC,WAAW/+C,SAChE,GAAIie,KAAK5c,OAAO8B,cAAc/C,OAAS,GAAKoR,IAAQyM,KAAK5c,OAAOm1B,qBAAsB,CAClF,IAAIlY,OAAM,EAENA,EADqC,IAArCL,KAAK5c,OAAO8B,cAAc/C,OACpB6d,KAAK5c,OAAO8B,cAAc/C,OAAS,IAAM+K,EAAc8S,KAAK5c,OAAQ,kBAGpE4c,KAAK5c,OAAO8B,cAAc/C,OAAS,IAAM+K,EAAc8S,KAAK5c,OAAQ,mBAE9EP,SAAO,mBAAoB0Q,GAAKxQ,YAAcsd,EAC9CL,KAAK8gC,WAAW2C,SAASlwC,EAAIyC,eAAe,KAGpDsqC,EAAQ93B,UAAU05B,UAAY,SAAUwB,EAAOC,GAC3C,IAAK,IAAIzhD,EAAI,EAAGA,EAAIwhD,EAAMvhD,OAAQD,IAAK,CACnC,IAAIqR,EAAM1Q,SAAO,IAAMmd,KAAKqhC,MAAMqC,EAAMxhD,IAAK8d,KAAK5c,OAAOrB,SACrDwR,GACAyM,KAAK8gC,WAAW2C,SAASlwC,EAAIyC,cAAe2tC,KAIxDrD,EAAQ93B,UAAU25B,WAAa,WAC3B,IAAI5uC,EAAM1Q,SAAO,IAAMmd,KAAKqhC,MAAM,aAAcrhC,KAAK8gC,WAAW/+C,SAC5DwR,GACAyM,KAAK8gC,WAAW2C,SAASlwC,EAAIyC,eAAe,IAGpDsqC,EAAQ93B,UAAUqJ,UAAY,WAC1B7R,KAAKkiC,WAAW,UAAU,IAE9B5B,EAAQ93B,UAAUsJ,UAAY,WAC1B9R,KAAKkiC,WAAW,UAAU,IAE9B5B,EAAQ93B,UAAU+T,eAAiB,WAC/B,GAAIvc,KAAK6hC,aAAc,CACnB7hC,KAAK6hC,aAAahqB,QAA+B,YAArB7X,KAAK5c,OAAOoE,KAAqBulC,GAAgBF,GAE7E,IAAK,IADD/hC,EAAQkV,KAAK6hC,aAAa/2C,MACrBw3C,EAAY,EAAGA,EAAYx3C,EAAM3I,OAAQmgD,IAC1Cx3C,EAAMw3C,GAAWnhD,KAAO6e,KAAK2hC,WAAW,SACxC72C,EAAMw3C,GAAWzqB,QAA+B,eAArB7X,KAAK5c,OAAOoE,KAAwBqpC,GAAqB,GAE/E/lC,EAAMw3C,GAAWnhD,KAAO6e,KAAK2hC,WAAW,aAC7C72C,EAAMw3C,GAAWzqB,QAA+B,YAArB7X,KAAK5c,OAAOoE,KAAqBqpC,GAAqB,MAKjGyP,EAAQ93B,UAAUyO,oBAAsB,WACpCjX,KAAK5c,OAAO+7B,IAAIG,GAAqBtf,KAAKuf,mBAC1Cvf,KAAK5c,OAAO+7B,IAAI/jB,GAAyB4E,KAAKsjC,oBAC9CtjC,KAAK5c,OAAO+7B,IAAIx4B,GAAqBqZ,KAAKuc,gBAC1Cvc,KAAK5c,OAAO+7B,IAAIx6B,GAAkBqb,KAAK6R,WACvC7R,KAAK5c,OAAO+7B,IAAIp7B,GAAkBic,KAAK8R,WACvC9R,KAAK5c,OAAO+7B,IAAIuM,GAAgB1rB,KAAKwQ,SACrCxQ,KAAK5c,OAAO+7B,IAAInwB,GAAqBgR,KAAKqiC,qBAQ9C/B,EAAQ93B,UAAUgT,cAAgB,WAC9B,MAAO,WAEX8kB,EAAQ93B,UAAU+W,kBAAoB,SAAU9hB,GAC5C,GAAIA,EAAE1O,SAAWiR,KAAKwb,iBAAgC,WAAb/d,EAAE1O,OAI3C,IAAK,IAAIgyB,EAAK,EAAGC,EAAK1qB,OAAOD,KAAKoH,EAAEwjB,SAAUF,EAAKC,EAAG7+B,OAAQ4+B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,WACG/gB,KAAK4hC,YACL5hC,KAAK4hC,UAAUlzC,SAAWF,EAAYwR,KAAK5c,OAAQ+e,KAEnDnC,KAAK6hC,eACL7hC,KAAK6hC,aAAanzC,SAAWF,EAAYwR,KAAK5c,OAAQ,gBAAkB+e,KAE5E,MACJ,IAAK,SACL,IAAK,QACDnC,KAAK8gC,WAAW8C,kBAChB,MACJ,IAAK,kBACL,IAAK,eACD5jC,KAAKujC,gBAAgB9lC,MAKrC6iC,EAAQ93B,UAAUgI,QAAU,WACpBxQ,KAAK5c,OAAO87B,cAGhBlf,KAAKiX,sBACDjX,KAAK4hC,WACL5hC,KAAK4hC,UAAUpxB,UAEfxQ,KAAK6hC,cACL7hC,KAAK6hC,aAAarxB,UAEtBxQ,KAAK8gC,WAAWtwB,UAChBxQ,KAAK5c,OAAOq8C,kBAEhBa,EAAQ93B,UAAUomB,YAAc,SAAU9jC,EAAO+4C,GAC7C,IAAK,IAAI3hD,EAAI,EAAGA,EAAI4I,EAAM3I,OAAQD,IAAK,CACnC,IAAIqR,EAAM1Q,SAAO,IAAMmd,KAAKqhC,MAAMv2C,EAAM5I,IAAK8d,KAAK5c,OAAOrB,SACrDwR,GACAyM,KAAK8gC,WAAWlS,YAAYr7B,EAAIyC,cAAe6tC,KAIpDvD,KC3mBPwD,GAAgC,WAChC,SAASA,EAAe9iD,GACpBgf,KAAK+jC,oBAAsB/iD,EAC3Bgf,KAAKgkC,kBAAoBhjD,EAASoG,qBAoPtC,OA/OA08C,EAAet7B,UAAUkQ,oBAAsB,WAE3C,IAAIurB,EAAmBjkC,KAAKgkC,kBAAkBl5C,MAE1C64B,EAAYsgB,EAAiBlrB,MAAM,EAAG,GAEtCJ,EAAeC,WAASC,mBAAmBvsB,gBAAeq3B,EAAW3jB,KAAKgkC,kBAAkBjtB,SAEhG/W,KAAK8Y,SAAWjd,MAAM2M,UAAUuQ,MAAMC,KAAK1T,YAAU,IAAM3iB,GAAeg2B,IAE1E3Y,KAAKgkC,kBAAkBjiD,QAAQgL,YAAY4rB,GACd,IAAzB3Y,KAAK8Y,SAAS32B,QAAgB6d,KAAKgkC,kBAAkBjiD,QAAQoK,cAAc,IAAMC,KACjF4T,KAAKgkC,kBAAkBjiD,QAAQqb,YAAY4C,KAAKgkC,kBAAkBjiD,QAAQoK,cAAc,IAAMC,KAGlG4T,KAAKsiC,UAAYtiC,KAAKyZ,aAAanjB,OAAOD,KAAK2J,KAAKgkC,kBAAkB38C,UAAUlF,QAEhF6d,KAAKgkC,kBAAkBjiD,QAAQkgD,WAAWx8C,SAE1Cua,KAAKgkC,kBAAkBl5C,MAAQm5C,EAAiBlrB,MAAM,EAAG/Y,KAAKsiC,YAMlEwB,EAAet7B,UAAUmR,mBAAqB,WAE1C3Z,KAAKkkC,cAAgBlkC,KAAKgkC,kBAAkB38C,SAASlF,OAAS6d,KAAKsiC,WAAatiC,KAAKmkC,cAChFnkC,KAAKgkC,kBAAkB38C,SAASlF,OAAS6d,KAAKsiC,WAAatiC,KAAKmkC,aAAenkC,KAAKmkC,aAEzFnkC,KAAKokC,WAAapkC,KAAK+jC,oBAAoBz3C,cAAc,OACzD0T,KAAKokC,WAAWphD,UAAUoC,IAAI,iBAC9B4a,KAAKgkC,kBAAkBjiD,QAAQmU,kBAAkBmmB,aAAarc,KAAKokC,WAAYpkC,KAAKgkC,kBAAkBjiD,QAAQmU,kBAAkB+rC,YAChIjiC,KAAKqkC,cAAgBrkC,KAAK+jC,oBAAoBz3C,cAAc,OAC5D0T,KAAKqkC,cAAcrhD,UAAUoC,IAAI,oBACjC4a,KAAKgkC,kBAAkBjiD,QAAQmU,kBAAkBmmB,aAAarc,KAAKqkC,cAAe,MAElF,IAAIhf,EAAcC,SAASvxB,OAAOwT,iBAAiBvH,KAAKgkC,kBAAkBlrB,SAAS,IAAIyM,iBAAiB,cAAe,IACnHD,SAASvxB,OAAOwT,iBAAiBvH,KAAKgkC,kBAAkBlrB,SAAS,IAAIyM,iBAAiB,iBAAkB,IAE5GvlB,KAAKskC,eAAiBtkC,KAAKgkC,kBAAkBlrB,SAAS,GAAGrjB,wBAAwBoR,OAASwe,EAE1FrlB,KAAKukC,YAAejuC,OAAOD,KAAK2J,KAAKgkC,kBAAkB38C,UAAUlF,OAAS6d,KAAKmkC,aAAgBnkC,KAAKskC,eAEpGtkC,KAAKokC,WAAWh3C,MAAMyZ,OAAS,MAC/B7G,KAAKqkC,cAAcj3C,MAAMyZ,OAAS7G,KAAKukC,YAAc,KAErDvkC,KAAKwkC,iBAAmB,EACxBxkC,KAAKykC,oBAAsBzkC,KAAKukC,YAEhCvkC,KAAK0kC,SAAW,EAEhB1kC,KAAK2kC,cAAgB3kC,KAAKsiC,WAO9BwB,EAAet7B,UAAUiR,aAAe,SAAUmrB,GAE9C,IAAIC,EAAcvf,SAASvxB,OAAOwT,iBAAiBvH,KAAK8Y,SAAS,IAAIyM,iBAAiB,gBAAiB,IACnGD,SAASvxB,OAAOwT,iBAAiBvH,KAAK8Y,SAAS,IAAIyM,iBAAiB,eAAgB,IAExFvlB,KAAKmkC,aAAeW,KAAKC,MAAMt9B,WAAWkwB,aAAW33B,KAAKgkC,kBAAkBjiD,QAAQmU,kBAAkB4yB,eAAiB9oB,KAAK8Y,SAAS,GAAGjR,YAAcg9B,IAEtJ,IAAIvC,EAAYtiC,KAAKmkC,aAAgBW,KAAKE,MAAMv9B,WAAWkwB,aAAW33B,KAAKgkC,kBAAkBjiD,QAAQ2T,eAAiBsK,KAAK8Y,SAAS,GAAG7sB,cAKvI,OAHIq2C,EAAYsC,IACZtC,EAAYsC,GAETtC,GAMXwB,EAAet7B,UAAUoR,gBAAkB,SAAUpJ,GAC5CA,EAMDkR,eAAaj8B,OAAOua,KAAKgkC,kBAAkBjiD,QAAQmU,kBAAmB,SAAU8J,KAAKilC,mBAJrFvjB,eAAat8B,IAAI4a,KAAKgkC,kBAAkBjiD,QAAQmU,kBAAmB,SAAU8J,KAAKilC,kBAAmBjlC,OAW7G8jC,EAAet7B,UAAUy8B,kBAAoB,WACzC,IAAIjkB,EAIJhhB,KAAKklC,eAAiBn1C,oBAAkBiQ,KAAKklC,gBAAkB,EAAIllC,KAAKklC,eACxE,IAAIC,EAASnlC,KAAKolC,kBAHG,GAarB,GARAplC,KAAKwkC,iBAAmBxkC,KAAKskC,eAAiBQ,KAAKC,MAAMI,EAASnlC,KAAKskC,gBAEvEtkC,KAAKykC,oBAAsBzkC,KAAKukC,YAAcvkC,KAAKwkC,iBAGnDxjB,EAAKmkB,GAAUnlC,KAAKukC,aACfvkC,KAAKwkC,iBAAkBxkC,KAAKykC,sBAAwBzkC,KAAKukC,YAAa,GAAIvkC,KAAKwkC,iBAAmBxjB,EAAG,GAAIhhB,KAAKykC,oBAAsBzjB,EAAG,GAExIhhB,KAAKwkC,mBAAqB/8B,WAAWzH,KAAKokC,WAAWh3C,MAAMyZ,QAI3D,GAHA7G,KAAKokC,WAAWh3C,MAAMyZ,OAAS7G,KAAKwkC,iBAAmB,KACvDxkC,KAAKqkC,cAAcj3C,MAAMyZ,OAAS7G,KAAKykC,oBAAsB,KAEzDU,EAASnlC,KAAKklC,eAAgB,CAE9B,IAAIR,EAAWI,KAAKE,MAAQhlC,KAAKwkC,iBAAmBxkC,KAAKskC,eAAkBtkC,KAAK0kC,UAChF1kC,KAAKqlC,eAAeX,GAAU,OAE7B,CAEGA,EAAWI,KAAKE,MAAOhlC,KAAK0kC,SAAY1kC,KAAKwkC,iBAAmBxkC,KAAKskC,gBACzEtkC,KAAKqlC,eAAeX,GAAU,GAItC1kC,KAAK0kC,SAAWI,KAAKE,MAAMhlC,KAAKwkC,iBAAmBxkC,KAAKskC,gBACxDtkC,KAAKklC,eAAiBC,EAEtBnlC,KAAKgkC,kBAAkBlrB,SAAWjd,MAAM2M,UAAUuQ,MAAMC,KAAK1T,YAAU,IAAM3iB,GAAeqd,KAAKgkC,kBAAkBjiD,UACnHie,KAAKgkC,kBAAkBl5C,MAAQkV,KAAKgkC,kBAAkB38C,SAAS0xB,MAAM/Y,KAAK2kC,cACtE3kC,KAAKsiC,UAAWtiC,KAAK2kC,gBAO7Bb,EAAet7B,UAAU48B,kBAAoB,SAAUE,GAGnD,OAAStlC,KAAKgkC,kBAAkBjiD,QAAQmU,kBAAkB6tB,UAAYuhB,GAAmB,EAAK,EACzFtlC,KAAKgkC,kBAAkBjiD,QAAQmU,kBAAkB6tB,UAAYuhB,GAOtExB,EAAet7B,UAAU68B,eAAiB,SAAUX,EAAUa,GAE1D,IAAK,IAAIrjD,EAAI,EAAGA,EAAIwiD,EAAUxiD,IAC1B8d,KAAKwlC,SAASD,IAOtBzB,EAAet7B,UAAUg9B,SAAW,SAAUD,GAC1C,IAAInrB,EAAQpa,KACZ,GAAIulC,GAIA,GAFAvlC,KAAKlV,MAAQkV,KAAKgkC,kBAAkB38C,SAAS0xB,MAAM/Y,KAAK2kC,cAAe3kC,KAAK2kC,cAAgB3kC,KAAKmkC,cAE7FnkC,KAAKlV,MAAM3I,OAAS,EAAG,CACvB,IAAIw2B,EAAeC,WAASC,mBAAmBvsB,gBAAe0T,KAAKlV,MAAOkV,KAAKgkC,kBAAkBjtB,SACjG/W,KAAK8Y,SAAWjd,MAAM2M,UAAUuQ,MAAMC,KAAK1T,YAAU,IAAM3iB,GAAeg2B,IAC1E3Y,KAAK8Y,SAAS2sB,QAAQ,SAAU7Z,GAC5BxR,EAAM4pB,kBAAkBjiD,QAAQmU,kBAAkBmmB,aAAauP,EAAOxR,EAAMiqB,iBAGhFrkC,KAAK2kC,cAAiB3kC,KAAKgkC,kBAAkB38C,SAASlF,QAAU6d,KAAK2kC,cAAgB3kC,KAAKmkC,aACtFnkC,KAAK2kC,cAAgB3kC,KAAKmkC,aAAenkC,KAAK2kC,cAAgB3kC,KAAKkkC,aAEvE,IAAK,IAAIhiD,EAAI,EAAGA,EAAI8d,KAAKmkC,aAAcjiD,IACnCmS,SAAO2L,KAAKokC,WAAW5oC,yBAI9B,CAED,IAAIkqC,OAAgB,EAChBC,OAAgB,EAChB3lC,KAAK2kC,gBAAkB3kC,KAAKgkC,kBAAkB38C,SAASlF,QAEvDujD,EAAgB1lC,KAAK2kC,eAAiB3kC,KAAKsiC,UAAYtiC,KAAKmkC,aAAenkC,KAAKkkC,cAEhFlkC,KAAK2kC,cAAkB3kC,KAAK2kC,cAAgB3kC,KAAKkkC,aAAgBlkC,KAAKsiC,UAClEtiC,KAAKsiC,UAAatiC,KAAK2kC,cAAgB3kC,KAAKkkC,aAEhDyB,GAAgB,IAIhBD,EAAgB1lC,KAAK2kC,cAAgB3kC,KAAKsiC,UAE1CtiC,KAAK2kC,cAAkB3kC,KAAK2kC,cAAgB3kC,KAAKmkC,aAAgBnkC,KAAKsiC,UAClEtiC,KAAKsiC,UAAatiC,KAAK2kC,cAAgB3kC,KAAKmkC,cAGpD,IAAIyB,EAAkBF,EAAgB1lC,KAAKmkC,aAAe,EAAKuB,EAAgB1lC,KAAKmkC,aAAe,EAGnG,GADAnkC,KAAKlV,MAAQkV,KAAKgkC,kBAAkB38C,SAAS0xB,MAAM6sB,EAAgBF,GAC/D1lC,KAAKlV,MAAM3I,OAAS,EAAG,CAEnBw2B,EAAeC,WAASC,mBAAmBvsB,gBAAe0T,KAAKlV,MAAOkV,KAAKgkC,kBAAkBjtB,SAEjG/W,KAAK8Y,SAAWjd,MAAM2M,UAAUuQ,MAAMC,KAAK1T,YAAU,IAAM3iB,GAAeg2B,IAE1E,IAAK,IAAI/qB,EAAMoS,KAAK8Y,SAAS32B,OAAQyL,EAAM,EAAGA,IAC1CoS,KAAKgkC,kBAAkBjiD,QAAQmU,kBAAkBmmB,aAAarc,KAAK8Y,SAASlrB,EAAM,GAAIoS,KAAKokC,WAAW5oC,oBAG1G,IAAStZ,EAAI,EAAGA,GAAK,EAAkB8d,KAAKkkC,aAAelkC,KAAKmkC,cAAejiD,IAC3EmS,SAAO2L,KAAKqkC,cAAcwB,2BAW1C/B,EAAet7B,UAAUgT,cAAgB,WACrC,MAAO,kBAKXsoB,EAAet7B,UAAUgI,QAAU,WAE3BxQ,KAAK+jC,oBAAoB7kB,aAIxBnvB,oBAAkBiQ,KAAKgkC,kBAAkBjiD,QAAQmU,oBAClD8J,KAAK4Z,iBAAgB,IAGtBkqB,KC5OPgC,GAAgC,WAQhC,SAASA,EAAe1iD,GACpB4c,KAAK+lC,eACL/lC,KAAKgmC,aACLhmC,KAAKimC,YAAa,EAClBjmC,KAAKkmC,QAAS,EACdlmC,KAAKmmC,eAAgB,EACrBnmC,KAAKomC,gBAAiB,EACtBpmC,KAAKqmC,cAAe,EACpBrmC,KAAKsmC,mBAAoB,EACzBtmC,KAAKumC,oBAAqB,EAC1BvmC,KAAKwmC,aAAe,KAEpBxmC,KAAKymC,iBAAmB,KAExBzmC,KAAK0mC,mBAAoB,EAEzB1mC,KAAK2mC,mBAAoB,EACzB3mC,KAAK5c,OAASA,EACd4c,KAAK6T,mBACL7T,KAAK8T,YACDgC,SAAU,YACVC,IAAK,SACLC,IAAK,SACLC,MAAOjW,KAAK5c,OAAO8yB,MAAQ,QAAU,SACrCC,MAAOnW,KAAK5c,OAAO8yB,MAAQ,QAAU,SACrCE,MAAOpW,KAAK5c,OAAO8yB,MAAQ,QAAU,SACrC0wB,WAAY,eACZC,SAAU,YACVxwB,GAAI,MA20BZ,OAx0BAyvB,EAAet9B,UAAUs+B,OAAS,WAC9B,GAAKxlD,oBAAM0e,KAAKnN,SAAhB,CAIA,IAAIk0C,EAAW7lD,WAAS8e,KAAK5c,OAAOzB,OAAO,GAAIqe,KAAK5c,OAAOG,UAC3DsK,WAAS,WAAY,cAAek5C,GAEpC,IAAIC,KACA7lD,EAAKD,WAAS,KAAM6lD,GACnBzlD,oBAAMH,IACP0M,WAAS,UAAW1M,EAAI6lD,GAEvBpwC,GAAcmwC,IACfl5C,WAAS,QAASyJ,GAAeyvC,GAAWC,GAE3C1lD,oBAAM0lD,IACPn5C,WAAS,eAAgBm5C,EAAMD,GAEnC/mC,KAAKnN,QAAU,IAAIo0C,YACfrvB,QACIzwB,YAAa4/C,GAAW5lD,GAAI,SAAU+lD,SAAU,UAAWC,SAAU,eAAgBnqB,SAAU,eAAgB/7B,KAAM,OACrHmmD,YAAa,WAAYvvB,QAAS,WAAYC,eAAgB,eAAgBuvB,QAAS,QAE3F/kC,oBAAqBtC,KAAK5c,OAAOkf,oBACjCtX,UAAWgV,KAAK5c,OAAO00C,uBAAuB9sC,UAC9Cs8C,cAAetnC,KAAKunC,gBAAgBxnC,KAAKC,MACzCwnC,aAAcxnC,KAAKynC,eAAe1nC,KAAKC,MACvC0nC,cAAe1nC,KAAK2nC,aAAa5nC,KAAKC,MACtC4nC,YAAa5nC,KAAK6nC,cAAc9nC,KAAKC,MACrC8nC,cAAc,EACdC,YAAa/nC,KAAKgoC,cAAcjoC,KAAKC,MACrCioC,SAAUjoC,KAAKkoC,WAAWnoC,KAAKC,MAC/BqC,UAAWrC,KAAK5c,OAAOif,UACvB8lC,UAAWnoC,KAAKooC,YAAYroC,KAAKC,QAErCA,KAAKnN,QAAQ0P,kBAAmB,EAChCvC,KAAKnN,QAAQ2P,SAAS,IAAMxC,KAAK5c,OAAOrB,QAAQZ,GAAK6sC,IACrDhuB,KAAK0Z,eAETosB,EAAet9B,UAAU4/B,YAAc,WACnC,IAAIhuB,EAAQpa,MACPA,KAAK5c,OAAOyL,UAAYmR,KAAKnN,UAC1BmN,KAAK5c,OAAOuR,kBACRqL,KAAKtL,SACLsL,KAAKtL,QAAQ8b,UAEjBxQ,KAAKtL,QAAU,IAAI2lB,YAAUra,KAAKnN,QAAQ9Q,SACtC64B,SAAU5a,KAAK5c,OAAOy3B,mBACtBJ,WAAY,IAAMgT,GAClBlT,SAAU,EACVO,SAAU9a,KAAK5c,OAAOrB,QACtBi5B,KAAMplB,GAAgBmK,KAAKC,KAAMA,KAAK5c,QACtC83B,UAAW,SAAUj1B,GACjBwO,GAAiB2lB,EAAMh3B,OAAQ6C,EAAMm0B,EAAM1lB,UAE/CqmB,SAAUpnB,GAAgBoM,KAAKC,KAAMA,KAAK5c,QAC1Ck3B,gBAAgB,EAChBE,kBAAkB,EAClBE,OAAQ1a,KAAK2a,WAAW5a,KAAKC,UAG3BA,KAAK5c,OAAOuR,kBAAoBqL,KAAKtL,SAC3CsL,KAAKtL,QAAQ8b,YAIzBs1B,EAAet9B,UAAUmS,WAAa,SAAU10B,GAC5C,IAAIw0B,EAAax0B,EAAKk1B,OAAO7mB,OAC7B,IAAKmmB,EAAWz3B,UAAUC,SAASwqC,IAC/B,OAAO,KAEX,IAAIrS,EAASz1B,UAAQ80B,EAAY,MAYjC,OAXAza,KAAK5c,OAAO4N,SAAW,GACvBgP,KAAK5c,OAAOkO,YACZ0O,KAAK5c,OAAOe,kBACZ6b,KAAK5c,OAAOe,gBAAkBi3B,GAC9Bpb,KAAK5c,OAAO+N,aACZ1M,EAAUub,KAAK5c,OAAQg4B,GAEvBpb,KAAK5c,OAAOkO,SAAW0O,KAAKqoC,YAAYjtB,GACxCpb,KAAK5c,OAAO4N,SAAWgP,KAAKsoC,YAAYltB,EAAQpb,KAAK5c,OAAOkO,SAAS,GAAG1G,MACxEoV,KAAK5c,OAAO+N,UAAU9O,KAAK2d,KAAK5c,OAAOkO,SAAS,GAAG1G,MACnDsI,GAAyB8M,KAAK5c,QACvB4c,KAAK5c,OAAOsQ,oBAEvBoyC,EAAet9B,UAAU8/B,YAAc,SAAUltB,EAAQn6B,GAErD,OAAOuD,EADIwb,KAAKuoC,YAAYntB,EAAQn6B,KAGxC6kD,EAAet9B,UAAU+/B,YAAc,SAAUznD,EAAMG,GACnD,IAAIE,EAAKL,EAAKM,aAAa,WAE3B,OAAOK,EAAQX,EADDkf,KAAK5c,OAAO1B,MAAQP,EAAKF,EACT+e,KAAK5c,OAAO1B,QAE9CokD,EAAet9B,UAAU0/B,WAAa,SAAUjiD,GAC5C,IAAIiE,GACAnI,QAASkE,EAAKnF,KACdqJ,YAAalE,EAAKuiD,SAClBz5C,OAAQ,kBAEZiR,KAAK5c,OAAOoH,QAAQ,WAAYN,IAGpC47C,EAAet9B,UAAUigC,SAAW,SAAU1hD,EAAOuN,EAAQo0C,GAEzD,IAAIC,EAAcr7C,EAAevG,GACjC,GAAI4hD,EAAYxmD,OAAS,IACS,MAA7BwmD,EAAY,GAAGjyC,YAAgE,MAA1CsJ,KAAKqoC,YAAY/zC,GAAQ,GAAGoC,YAAsBiyC,EAAY,GAAGjyC,aAAesJ,KAAKqoC,YAAY/zC,GAAQ,GAAGoC,YAAa,CAI/J,IAHA,IAAIgmB,EAAW,EAEXjtB,EAAUk5C,EACPjsB,EAAWisB,EAAYxmD,QAAQ,CAElCsN,EAAQitB,GAAUksB,SAAW,cAE7B,IAAI5B,KACA7lD,EAAKD,WAAS,KAAMuO,EAAQitB,IAC3Bp7B,oBAAMH,IACP0M,WAAS,UAAW1M,EAAI6lD,GAEvBpwC,GAAcnH,EAAQitB,KACvB7uB,WAAS,QAASyJ,GAAe7H,EAAQitB,IAAYsqB,GAEpD1lD,oBAAM0lD,IACPn5C,WAAS,eAAgBm5C,EAAMv3C,EAAQitB,IAE3CA,IAEJ,IAAI36B,EAAUc,SAAO,cAAgByR,EAAS,KAAM0L,KAAKnN,QAAQ9Q,SAC7D8mD,EAAgBhmD,SAAO,KAAMd,GAC7BT,oBAAMunD,IAEN7oC,KAAKnN,QAAQi2C,SAASH,EAAar0C,EAAQ,KAAMo0C,KAK7D5C,EAAet9B,UAAU++B,gBAAkB,SAAUthD,GACjD,IAAKA,EAAK0e,eAAiB3E,KAAKqmC,eAAiBrmC,KAAKsmC,oBAAsBtmC,KAAKmmC,gBAAkBnmC,KAAKomC,gBAAkBpmC,KAAK2mC,kBAG3H,OAFA3mC,KAAK2mC,mBAAoB,OACzB3mC,KAAK0mC,mBAAoB,GAG7B,IAAK1mC,KAAKwmC,aAAc,CACpBxmC,KAAK5c,OAAOkB,aAAe,iBAE3B,IAAIkkD,EAAWxoC,KAAKqoC,YAAYnnD,WAAS,KAAM+E,EAAKuiD,WACpD,GAAIviD,EAAKnF,KAAKM,aAAa,cAAgB4e,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,KAAO6d,KAAKqmC,eAAiBrmC,KAAK0mC,mBAAqB1mC,KAAKsmC,kBAAmB,CAErK,GADAtmC,KAAK0mC,mBAAoB,GACpB1mC,KAAKsmC,kBAAmB,CACzBtmC,KAAKsmC,mBAAoB,EACzB,IAAIyC,GAAmB9kD,OAAQgC,EAAKhC,OAAQkG,YAAaq+C,EAAS,GAAI7jC,aAAc1e,EAAK0e,cACzF3E,KAAK5c,OAAOoH,QAAQ,aAAcu+C,GAEtC,IAAK/oC,KAAKqmC,aAAc,CACpB,IAAIn8C,GAAc2J,QAAQ,EAAO1J,YAAaq+C,EAAS,GAAIz5C,OAAQ,kBACnEiR,KAAK5c,OAAOoH,QAAQ,WAAYN,GAChCjE,EAAK4N,OAAS3J,EAAU2J,OAExB5N,EAAK4N,SACLmM,KAAK2mC,oBAAoB3mC,KAAK0mC,mBAAoB1mC,KAAKymC,iBAAiB,KAAOxgD,EAAKnF,KAAKM,aAAa,YACtG4e,KAAK0mC,mBAAoB,EACzB1mC,KAAKsmC,mBAAoB,EACzBtmC,KAAKymC,iBAAmBzmC,KAAKnN,QAAQlP,cACrCqc,KAAKnN,QAAQlP,eAAiBsC,EAAKnF,KAAKM,aAAa,mBAGxD,GAAI4e,KAAKymC,iBAAiB,KAAOxgD,EAAKnF,KAAKM,aAAa,YAAa,CAClE2nD,GAAmB9kD,OAAQgC,EAAKhC,OAAQkG,YAAaq+C,EAAS,GAAI7jC,aAAc3E,KAAK0mC,mBACzF1mC,KAAK5c,OAAOoH,QAAQ,aAAcu+C,MAK9CjD,EAAet9B,UAAUwnB,2BAA6B,SAAUlvC,GAC5D,IAAIC,EAAOif,KAAKnN,QAAQw1C,YAAYvnD,GAEpCkf,KAAK5c,OAAO8B,iBACZ8a,KAAK5c,OAAOgD,SAAWrF,EACvBif,KAAKutB,WAAazsC,EAClBkf,KAAK5c,OAAOkB,aAAe,iBAC3B,IAAI4F,GAAc2J,QAAQ,EAAO1J,YAAapJ,EAAK,GAAIgO,OAAQ,kBAC/DiR,KAAK5c,OAAOoH,QAAQ,WAAYN,GAChC8V,KAAK0mC,mBAAoB,EACpBx8C,EAAU2J,SACXhT,EAAWC,EAAMkf,KAAK5c,OAAOgD,SAAS,GAAI4Z,KAAK5c,QAC/CkE,GAAK0Y,KAAK5c,OAAQ4c,KAAKmmC,cAAgB3zC,GAAkBwJ,GAAoBgE,KAAK5c,OAAO5B,MACzFwe,KAAK5c,OAAOszB,YAAc51B,EAC1Bkf,KAAKmmC,cAAgBnmC,KAAKomC,eAAiBpmC,KAAKqmC,cAAe,EAC/DrmC,KAAKnN,QAAQlP,eAAiB7C,EAAKM,aAAa,eAGxD0kD,EAAet9B,UAAUi/B,eAAiB,SAAUxhD,GAOhD,GANI+Z,KAAK5c,OAAOyB,qBAAuBmb,KAAK5c,OAAOyB,oBAAoBC,YAAckb,KAAKwmC,eACtFxmC,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,MAAQ,GAC1Dib,KAAK5c,OAAO4B,YAAa,EACzBgb,KAAK0mC,mBAAoB,GAE7B1mC,KAAK5c,OAAO06B,iBACP73B,EAAK0e,cAAiB3E,KAAKqmC,cAAiBrmC,KAAKsmC,mBAAsBtmC,KAAKmmC,eAAkBnmC,KAAKomC,eAAxG,CAIApmC,KAAKutB,WAAatnC,EAAKnF,KACvBkf,KAAK5c,OAAOkB,aAAe,iBAE3B,IAAIkkD,EAAWxoC,KAAKqoC,YAAYnnD,WAAS,KAAM+E,EAAKuiD,WACpDxoC,KAAK5c,OAAO8B,iBACZ8a,KAAK5c,OAAOgD,SAAWoiD,EACvB,IAAI5R,EAAe52B,KAAK5c,OAAO5B,MAC1Bwe,KAAKqmC,cAAgBrmC,KAAKsmC,kBAC3BzlD,EAAWoF,EAAKnF,KAAMkf,KAAK5c,OAAOgD,SAAS,GAAI4Z,KAAK5c,SAGpD4c,KAAK5c,OAAOzB,OAASC,EAAUqE,EAAKnF,MACpCkf,KAAK5c,OAAOszB,YAAczwB,EAAKnF,MAE/BmF,EAAKnF,KAAKqL,cAAc,IAAM67B,KAA+D,OAAjD/hC,EAAKnF,KAAKqL,cAAc,IAAMxJ,MAC1Eqd,KAAKgpC,iBAAmB,OAExBpS,IAAiB52B,KAAK5c,OAAO5B,QACxBwe,KAAKqmC,cAAgBrmC,KAAKsmC,oBAC3Bh/C,GAAK0Y,KAAK5c,OAAQ4c,KAAKmmC,cAAgB3zC,GAAkBwJ,GAAoBgE,KAAK5c,OAAO5B,MACzFwe,KAAK0mC,mBAAoB,GAE7B1mC,KAAK5c,OAAOszB,YAAczwB,EAAKnF,MAEnCkf,KAAKmmC,cAAgBnmC,KAAKomC,eAAiBpmC,KAAKqmC,aAAermC,KAAKsmC,mBAAoB,OA3BpFtmC,KAAK5c,OAAOzB,OAASC,EAAUqE,EAAKnF,OA+B5CglD,EAAet9B,UAAUygC,WAAa,SAAUhjD,GAC5C+Z,KAAKmmC,eAAgB,EACrBnmC,KAAKkpC,iBAAiBjjD,EAAK,KAG/B6/C,EAAet9B,UAAUm/B,aAAe,SAAU1hD,GAC9C,IAAKA,EAAK0e,cAAiB3E,KAAKkmC,SAGqB,OAAjDjgD,EAAKnF,KAAKqL,cAAc,IAAMxJ,IAAyB,CACvD,IAAI1B,EAAOC,WAAS,OAAQ+E,EAAKuiD,UAC7BrnD,EAAK8E,EAAKnF,KAAKM,aAAa,WAC5BmB,GAAOjB,oBAAMH,GACbE,EAAUC,oBAAMH,GAAMF,EAAOE,EAC7BK,EAAOC,EAAQwE,EAAKnF,KAAMO,EAASkB,GACvCyd,KAAKgpC,iBAAmB/iD,EAAKnF,KAAKM,aAAa,YAC/C4e,KAAK5c,OAAOsP,WAAasN,KAAKgpC,iBAC9BhpC,KAAK5c,OAAOgD,SAAW4Z,KAAKqoC,YAAYnnD,WAAS,KAAM+E,EAAKuiD,WAC5DxoC,KAAK5c,OAAOzB,OAAOU,KAAKnB,WAAS,KAAM+E,EAAKuiD,WAC5ClhD,GAAK0Y,KAAK5c,OAAQ+lD,GAAmB3nD,GACrCwe,KAAKumC,oBAAqB,IAIlCT,EAAet9B,UAAU4gC,eAAiB,SAAUnjD,GAChD+Z,KAAKyoC,SAASxiD,EAAKc,MAAOiZ,KAAKgpC,kBAAkB,GACjDhpC,KAAK5c,OAAOsP,WAAa,KACzBsN,KAAKumC,oBAAqB,GAE9BT,EAAet9B,UAAUq/B,cAAgB,SAAU5hD,GAI/C,GAHA+Z,KAAK5c,OAAOkB,aAAe,iBAC3B0b,KAAKymC,iBAAmBzmC,KAAKnN,QAAQlP,cACrCqc,KAAKutB,WAAatnC,EAAKnF,KACG,IAArBmF,EAAK4O,MAAMyR,OAAiBrgB,EAAKnF,KAAKM,aAAa,cAAgB4e,KAAKnN,QAAQlP,cAAc,GAC/Fqc,KAAKqmC,cAAe,EACpBrmC,KAAK0mC,mBAAoB,EACzB1mC,KAAKnN,QAAQlP,eAAiBsC,EAAKnF,KAAKM,aAAa,kBAEpD,GAAI6E,EAAKnF,KAAKM,aAAa,cAAgB4e,KAAKnN,QAAQlP,cAAc,IAA2C,IAArCqc,KAAK5c,OAAO8B,cAAc/C,OAAc,CACrH6d,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GACjD,IAAIyqC,EAA+B,eAArB3vB,KAAK5c,OAAOoE,KAAyB,iBAAmB,cACtEwY,KAAK5c,OAAOU,OAAOw7B,IAAuBvwB,OAAQ4gC,EAAQ1O,SAAW/7B,yBAEhEe,EAAKnF,KAAKM,aAAa,cAAgB4e,KAAKnN,QAAQlP,cAAc,IAAOqc,KAAK0mC,mBAAsB1mC,KAAKumC,qBACrF,IAArBtgD,EAAK4O,MAAMyR,QACXtG,KAAKqmC,cAAe,GAExBrmC,KAAKsmC,mBAAoB,EACzBtmC,KAAK0mC,mBAAoB,EACzB1mC,KAAKnN,QAAQlP,eAAiBsC,EAAKnF,KAAKM,aAAa,eAI7D0kD,EAAet9B,UAAUw/B,cAAgB,SAAU/hD,GAC1C3E,oBAAM2E,EAAKojD,aACZpjD,EAAK4N,QAAS,IAGtBiyC,EAAet9B,UAAUqV,cAAgB,SAAU53B,GAC/C+Z,KAAK5c,OAAOK,OAAQ,EAEpB,IAAI+H,EAAYtK,WAAS8e,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAAI6d,KAAK5c,OAAOqI,SACxF,GAA8B,QAA1BuU,KAAKgpC,iBAA4B,CACjC,IAAIM,EAAQzmD,SAAO,cAAgBmd,KAAKnN,QAAQlP,cAAc,GAAK,KAAMqc,KAAKnN,QAAQ9Q,SAClFq1B,EAAO91B,oBAAMgoD,GAAiD,KAAvCzmD,SAAO,IAAMu2B,GAAiBkwB,GACrDhoD,oBAAM81B,IACNpX,KAAKyoC,SAASxiD,EAAKc,MAAOiZ,KAAKnN,QAAQlP,cAAc,IAAKqc,KAAKimC,YAEnEjmC,KAAKgpC,iBAAmB,GAE5BhpC,KAAKimC,YAAa,EACd3kD,oBAAMkK,IACNqC,WAASmS,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAAI8D,EAAKc,MAAOiZ,KAAK5c,OAAOqI,SAEpFuU,KAAK5c,OAAO8Q,UAAUqpC,kBAAqBv9B,KAAK5c,OAAY,OAC5D4c,KAAKupC,WAAWtjD,IAGxB6/C,EAAet9B,UAAU+gC,WAAa,SAAUtjD,GAC5C,GAAI+Z,KAAKnN,QAAS,CACd,IAAI1R,EAAK6e,KAAKnN,QAAQlP,cAAc,GACpCqc,KAAKwpC,eAAevjD,EAAM9E,KAGlC2kD,EAAet9B,UAAUghC,eAAiB,SAAUvjD,EAAM9E,GACtD,IAAIsoD,GAAuD,IAA5CzpC,KAAKnN,QAAQ62C,cAAc1gD,QAAQ7H,GAClD6e,KAAK2pC,iBAAiBxoD,GACtB6e,KAAKyoC,SAASxiD,EAAKc,MAAO5F,GAAKsoD,IAEnC3D,EAAet9B,UAAUmhC,iBAAmB,SAAUxoD,GAClD,IAAImoD,EAAQzmD,SAAO,cAAgB1B,EAAK,KAAM6e,KAAKnN,QAAQ9Q,SACvDqB,EAASP,SAAO,IAAMu2B,GAAiBkwB,GACvCM,EAASxmD,EAASyY,MAAM2M,UAAUuQ,MAAMC,KAAK51B,EAAOwnC,UAAY,KAChEgf,GACA5pC,KAAKnN,QAAQkzC,YAAY6D,IAGjC9D,EAAet9B,UAAUqhC,UAAY,SAAU5jD,GAC3C,IAAI6jD,EAAQ9pC,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAC3D6d,KAAKnN,QAAQk3C,UAAU/pC,KAAKnN,QAAQlP,eACpCqc,KAAKnN,QAAQlP,eAAiBmmD,GAC9B9pC,KAAKgpC,iBAAmB,MACxBhpC,KAAK6d,cAAc53B,IAEvB6/C,EAAet9B,UAAUwV,WAAa,SAAU/3B,GACX,mBAA7B+Z,KAAK5c,OAAOkB,cACR2B,EAAKqO,OAAOnI,cAAc,IAAM67B,KAChChoB,KAAKnN,QAAQk3C,UAAU/pC,KAAKnN,QAAQlP,gBAIhDmiD,EAAet9B,UAAUg2B,aAAe,SAAUv4C,GAC9C+Z,KAAK8mC,SACL9mC,KAAKyoC,SAASxiD,EAAKc,MAAO7F,WAAS,SAAU+E,EAAKyL,MAAM,IAE5Do0C,EAAet9B,UAAU2U,cAAgB,SAAUl3B,GAC/C+Z,KAAK8mC,SACL,IAAI3lD,EAAKD,WAAS,SAAU+E,EAAKyL,KACjCsO,KAAKyoC,SAASxiD,EAAKc,MAAO5F,GAAI,GAC9B6e,KAAKnN,QAAQlP,eAAiBqc,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,KAEjF2jD,EAAet9B,UAAU4U,YAAc,SAAUn3B,GAC7C+Z,KAAKupC,WAAWtjD,IAEpB6/C,EAAet9B,UAAU8U,eAAiB,WACL,mBAA7Btd,KAAK5c,OAAOkB,cACZ0b,KAAKgqC,kBAGblE,EAAet9B,UAAUgV,aAAe,WACpC,GAAiC,mBAA7Bxd,KAAK5c,OAAOkB,aAAmC,CAC/C0b,KAAKiqC,mBACL,IAAIltB,EAAS77B,WAAS,OAAQ8e,KAAK5c,OAAOgD,SAAS,IACnDgR,GAAO4I,KAAK5c,QAAS25B,GAAS/c,KAAK5c,OAAO5B,KAAM,YAIxDskD,EAAet9B,UAAUiV,YAAc,SAAUx3B,GAC7C,GAAiC,mBAA7B+Z,KAAK5c,OAAOkB,aAAmC,CAC/C,IAAI8L,EAAe4P,KAAKnN,QAAQlP,cAAc,GAC1CumD,EAAcrnD,SAAO,cAAgBuN,EAAe,KAAM4P,KAAKnN,QAAQ9Q,SACvEooD,EAAkBxkD,UAAQukD,EAAa,IAAM9wB,IAAiBpjB,cAClEgK,KAAKnN,QAAQlP,eAAiBwmD,EAAgB/oD,aAAa,aAC3D4e,KAAKnN,QAAQ6P,WAEjB1C,KAAKupC,WAAWtjD,IAEpB6/C,EAAet9B,UAAUkV,aAAe,SAAUz3B,GAC9C+Z,KAAKupC,WAAWtjD,IAEpB6/C,EAAet9B,UAAUmV,aAAe,WACH,mBAA7B3d,KAAK5c,OAAOkB,cACZ0b,KAAK4d,oBAIbkoB,EAAet9B,UAAU4hC,kBAAoB,SAAUnkD,GACnD,IAAI9E,EAAK6e,KAAKwmC,aAAexmC,KAAKwmC,aAAexmC,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAIhG,GAHA6d,KAAKimC,YAAoF,IAAvEjmC,KAAKnN,QAAQ62C,cAAc1gD,QAAQgX,KAAKnN,QAAQlP,cAAc,IAChFqc,KAAKwpC,eAAevjD,EAAM9E,GAC1B6e,KAAK5c,OAAOsP,WAAa,KACrBsN,KAAKwmC,aACLxmC,KAAKwmC,aAAe,SAEnB,CAED,IAAIhgB,KACJ,GAAIxmB,KAAK5c,OAAO1B,MACZ8kC,EAAa,IAAIn7B,cAAY2U,KAAKnN,QAAQw1C,eACtC/8C,cAAa,IAAIL,SAAQS,MAAM,KAAM,QAASsU,KAAK5c,OAAO4iB,WAAW,QAExE,CAED,IAAIqkC,EAAQ,IAAIh/C,cAAY2U,KAAKnN,QAAQw1C,eACrC/8C,cAAa,IAAIL,SAAQS,MAAMsU,KAAKnN,QAAQ+kB,OAAO32B,KAAM,QAAS+e,KAAK5c,OAAO6Y,YAAY,IAC1FouC,EAAMloD,OAAS,IACfqkC,EAAa,IAAIn7B,cAAYg/C,GACzB/+C,cAAa,IAAIL,SAAQS,MAAM,UAAW,QAASvK,GAAI,KAGnE,GAAIqlC,EAAWrkC,OAAS,EAAG,CACvB,IAAImoD,EAAOppD,WAAS8e,KAAKnN,QAAQ+kB,OAAOz2B,GAAIqlC,EAAW,IACvDxmB,KAAKnN,QAAQlP,eAAiB2mD,GAC9BtqC,KAAKnN,QAAQ6P,cAKzBojC,EAAet9B,UAAU+iB,YAAc,SAAUtlC,GAC7C,GAAgE,KAA5D+Z,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAAiBib,KAAK5c,OAAO4B,WAG9E,CAED,IAAIjE,EAAOif,KAAKnN,QAAQw1C,cAEpB7hB,KACJ,GAAIxmB,KAAK5c,OAAO1B,MACZ8kC,EAAa,IAAIn7B,cAAYtK,GACzBuK,cAAa,IAAIL,SAAQS,MAAM,KAAM,QAASsU,KAAK5c,OAAO4iB,WAAW,QAExE,CAED,IAAIqkC,EAAQ,IAAIh/C,cAAYtK,GACxBuK,cAAa,IAAIL,SAAQS,MAAMsU,KAAKnN,QAAQ+kB,OAAO32B,KAAM,QAAS+e,KAAK5c,OAAOoT,iBAAiB,IAC/F6zC,EAAMloD,OAAS,IACfqkC,EAAa,IAAIn7B,cAAYg/C,GACzB/+C,cAAa,IAAIL,SAAQS,MAAM,aAAc,QAASsU,KAAK5c,OAAOsT,YAAY,KAGtF8vB,EAAWrkC,OAAS,IACpB6d,KAAKwmC,aAAetlD,WAAS8e,KAAKnN,QAAQ+kB,OAAOsvB,SAAU1gB,EAAW,IACtExmB,KAAK5c,OAAOsP,WAAasN,KAAKwmC,aAC9BxmC,KAAK5c,OAAOgD,SAAW4Z,KAAKqoC,YAAYroC,KAAKwmC,cAC7Cl/C,GAAK0Y,KAAK5c,OAAQ2Y,GAAwBiE,KAAK5c,OAAOsT,WAAWzM,QAAQ,MAAO,YAxBpF+V,KAAKupC,WAAWtjD,IA4BxB6/C,EAAet9B,UAAU+W,kBAAoB,SAAU9hB,GACnD,GAAIA,EAAE1O,SAAWiR,KAAKwb,iBAAgC,WAAb/d,EAAE1O,OAI3C,IAAK,IAAIgyB,EAAK,EAAGC,EAAK1qB,OAAOD,KAAKoH,EAAEwjB,SAAUF,EAAKC,EAAG7+B,OAAQ4+B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,mBACD/gB,KAAKooC,cACL,MACJ,IAAK,yBACD9gD,GAAK0Y,KAAK5c,OAAQyM,GAAoB,KAClC4N,EAAEkhC,QAAQ7G,uBAAuB9sC,YAAcyS,EAAEwjB,QAAQ6W,uBAAuB9sC,YAChFgV,KAAKnN,QAAQ7H,UAAYyS,EAAEwjB,QAAQ6W,uBAAuB9sC,cAO9E86C,EAAet9B,UAAU+hC,eAAiB,WACtCvqC,KAAKlJ,cAETgvC,EAAet9B,UAAU86B,mBAAqB,SAAU7lC,GACpDuC,KAAKnN,QAAQlP,eAAiB8Z,EAAErN,eAEpC01C,EAAet9B,UAAUgiC,gBAAkB,SAAU/sC,GACjDuC,KAAK2pC,iBAAiBlsC,EAAErN,eAE5B01C,EAAet9B,UAAUiiC,UAAY,SAAUxkD,GAC3C,IAAI+/C,KAEAA,EADAhmC,KAAK5c,OAAOgP,cAAgB4N,KAAK5c,OAAOkP,aAC5B0N,KAAK0qC,aAAazkD,EAAKc,MAAOiZ,KAAK5c,OAAOkP,aAAc0N,KAAK5c,OAAO4N,UAGpEgP,KAAKgmC,UAErBhmC,KAAKnN,QAAQkzC,YAAYC,IAG7BF,EAAet9B,UAAUkiC,aAAe,SAAU3jD,EAAOke,EAAMzjB,GAE3D,IAAK,IADDwkD,KACK9jD,EAAI,EAAGA,EAAI6E,EAAM5E,OAAQD,IAC9B,IAAK6E,EAAM7E,GAAGuU,SACLuJ,KAAK5c,OAAO1B,MAAO,CACpB,IAAIulC,EAAUlgC,EAAM7E,GAAe,aACnC,GAAI+iB,EAAM,CAEN,IAAI3E,GADJ9e,GAAcuF,EAAM7E,GAAGyoD,cACNx7C,YAAY,KAC7B83B,EAASzlC,EAAK0N,UAAUoR,EAAQ,GAChC9e,EAAOA,EAAK0N,UAAU,EAAGoR,EAAQ,GAKrC,IAAK,IAFDkmB,EAAa,IAAIn7B,cAAY2U,KAAKnN,QAAQw1C,eAC1C/8C,cAAa,IAAIL,SAAQS,MAAMsU,KAAKnN,QAAQ+kB,OAAO32B,KAAM,QAASgmC,GAAQ,IACrEX,EAAI,EAAGA,EAAIE,EAAWrkC,OAAQmkC,IAAK,CACxC,IAAIv8B,EAAQ7I,WAAS,aAAcslC,EAAWF,IAE9C,IADAv8B,EAAQA,EAAME,QAAQ,MAAO,QACfzI,EAAM,CAChBwkD,EAAU3jD,KAAKnB,WAAS8e,KAAKnN,QAAQ+kB,OAAOz2B,GAAIqlC,EAAWF,KAC3D,QAMpB,OAAO0f,GAEXF,EAAet9B,UAAUoiC,SAAW,SAAU3kD,GAC1C,IAAI+/C,KACAhmC,KAAK5c,OAAOgP,cAAgB4N,KAAK5c,OAAOc,YACxC8b,KAAKgmC,UAAYhmC,KAAK0qC,aAAazkD,EAAKc,MAAOiZ,KAAK5c,OAAOc,YAAa8b,KAAK5c,OAAOmB,YAGpFyhD,EAAYhmC,KAAKgmC,UAErBhmC,KAAKnN,QAAQkzC,YAAYC,IAI7BF,EAAet9B,UAAU0gC,iBAAmB,SAAU2B,GAClD,GAAK7qC,KAAK5c,OAAO1B,MAiBZ,CACD,IAAI0O,EAAe4P,KAAKnN,QAAQw1C,cAAcxhD,OAAO,SAAUikD,GAAO,OAAOA,EAAIlgD,OAASigD,EAAUjgD,OAAS,GAC7GoV,KAAKnN,QAAQlP,eAAiBzC,WAAS,SAAUkP,IACjD4P,KAAKnN,QAAQ6P,eApBO,CACpB,IAAIlhB,EAAON,WAAS,aAAc2pD,GAC9BE,EAAW7pD,WAAS,OAAQ2pD,GAE5B9pD,EAAO,IAAIsK,cAAY2U,KAAKnN,QAAQw1C,eACpC/8C,cAAa,IAAIL,SAAQS,MAAMsU,KAAKnN,QAAQ+kB,OAAO32B,KAAM,QAAS8pD,GAAU,IAChF,GAAIhqD,EAAKoB,OAAS,EAAG,CAEjB,IAAIqkC,EAAa,IAAIn7B,cAAYtK,GAC7BuK,cAAa,IAAIL,SAAQS,MAAM,aAAc,QAASlK,GAAM,IAChE,GAAIglC,EAAWrkC,OAAS,EAAG,CACvB,IAAIhB,EAAKD,WAAS8e,KAAKnN,QAAQ+kB,OAAOz2B,GAAIqlC,EAAW,IACrDxmB,KAAKnN,QAAQlP,eAAiBxC,GAC9B6e,KAAKnN,QAAQ6P,eAU7BojC,EAAet9B,UAAUkY,WAAa,SAAUz6B,GAC5C+Z,KAAKqgB,WAAWp6B,GAChB+Z,KAAKkpC,iBAAiBlpC,KAAK5c,OAAOmO,UAClCyO,KAAK5c,OAAOiP,WAAa2N,KAAK5c,OAAOgP,cAEzC0zC,EAAet9B,UAAU6X,WAAa,SAAUp6B,GAE5C,IAAIugC,KACJ,GAAIxmB,KAAK5c,OAAO1B,MACZ8kC,EAAa,IAAIn7B,cAAY2U,KAAKnN,QAAQw1C,eACtC/8C,cAAa,IAAIL,SAAQS,MAAM,KAAM,QAASxK,WAAS,KAAM+E,EAAKyL,MAAM,QAE3E,CAED,IAAI24C,EAAQ,IAAIh/C,cAAY2U,KAAKnN,QAAQw1C,eACrC/8C,cAAa,IAAIL,SAAQS,MAAMsU,KAAKnN,QAAQ+kB,OAAO32B,KAAM,QAASC,WAAS,OAAQ+E,EAAKyL,MAAM,IAC9F24C,EAAMloD,OAAS,IACfqkC,EAAa,IAAIn7B,cAAYg/C,GACzB/+C,cAAa,IAAIL,SAAQS,MAAM,aAAc,QAASxK,WAAS,aAAc+E,EAAKyL,MAAM,KAGpG,GAAI80B,EAAWrkC,OAAS,EAAG,CACvB,IAAIhB,EAAKD,WAAS8e,KAAKnN,QAAQ+kB,OAAOz2B,GAAIqlC,EAAW,IACjDijB,GAAuD,IAA5CzpC,KAAKnN,QAAQ62C,cAAc1gD,QAAQ7H,GAClD6e,KAAK2pC,iBAAiBxoD,GACtB6e,KAAKyoC,SAASxiD,EAAKc,MAAO5F,EAAIsoD,GAElCzpC,KAAK5c,OAAOsP,WAAa,KACzBsN,KAAK6d,cAAc53B,GACf+Z,KAAK5c,OAAOkN,YACZ0P,KAAKgrC,cAAc/kD,IAI3B6/C,EAAet9B,UAAUwiC,cAAgB,SAAU/kD,GAC/C,GAAI+Z,KAAK5c,OAAO1B,MAGZ,OAFAse,KAAK5c,OAAOiP,WAAa2N,KAAK5c,OAAOgP,kBACrCK,EAAauN,KAAK5c,SAGsD,IAAvE4c,KAAK5c,OAAO2N,SAAS/H,QAAQyI,EAAiBuO,KAAK5c,OAAQ6C,KAC5D+Z,KAAK5c,OAAOiP,WAAY,EACxBI,EAAauN,KAAK5c,SAGlB4c,KAAK5c,OAAOiP,WAAa2N,KAAK5c,OAAOgP,cAG7C0zC,EAAet9B,UAAU4X,YAAc,WAC/BpgB,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,iBAClCxb,KAAKgqC,iBAEThqC,KAAKgmC,aAGL,IAAK,IADD8E,EAAM9qC,KAAK5c,OAAOkN,WAAa0P,KAAK5c,OAAOkO,SAAW0O,KAAK5c,OAAOQ,cAC7D1B,EAAI,EAAGA,EAAI4oD,EAAI3oD,OAAQD,KACO,IAA/BhB,WAAS,SAAU4pD,EAAI5oD,KACvB8d,KAAKgmC,UAAU3jD,KAAKnB,WAAS,SAAU4pD,EAAI5oD,MAIvD4jD,EAAet9B,UAAU8X,cAAgB,WACjCtgB,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,kBAClCxb,KAAK5c,OAAOwB,cAAgBob,KAAKqoC,YAAYroC,KAAKnN,QAAQlP,cAAc,IACxEqc,KAAK5c,OAAOe,gBAAkB6b,KAAKutB,cAG3CuY,EAAet9B,UAAUqL,iBAAmB,WACxC7T,KAAK5c,OAAOy9B,GAAGvB,GAAqBtf,KAAKuf,kBAAmBvf,MAC5DA,KAAK5c,OAAOy9B,GAAGkP,GAAqB/vB,KAAKuqC,eAAgBvqC,MACzDA,KAAK5c,OAAOy9B,GAAG/wB,GAAmBkQ,KAAKw+B,aAAcx+B,MACrDA,KAAK5c,OAAOy9B,GAAGhxB,GAAoBmQ,KAAKmd,cAAend,MACvDA,KAAK5c,OAAOy9B,GAAG7kB,GAAoBgE,KAAK6d,cAAe7d,MACvDA,KAAK5c,OAAOy9B,GAAGruB,GAAiBwN,KAAKqgB,WAAYrgB,MACjDA,KAAK5c,OAAOy9B,GAAG/uB,GAAekO,KAAK4qC,SAAU5qC,MAC7CA,KAAK5c,OAAOy9B,GAAGpwB,GAAkBuP,KAAKogB,YAAapgB,MACnDA,KAAK5c,OAAOy9B,GAAGsoB,GAAmBnpC,KAAKopC,eAAgBppC,MACvDA,KAAK5c,OAAOy9B,GAAGllB,GAAkBqE,KAAKod,YAAapd,MACnDA,KAAK5c,OAAOy9B,GAAGzB,GAAqBpf,KAAKsd,eAAgBtd,MACzDA,KAAK5c,OAAOy9B,GAAG5gB,GAAmBD,KAAKwd,aAAcxd,MACrDA,KAAK5c,OAAOy9B,GAAGxkB,GAAkB2D,KAAKyd,YAAazd,MACnDA,KAAK5c,OAAOy9B,GAAG14B,GAAmB6X,KAAK0d,aAAc1d,MACrDA,KAAK5c,OAAOy9B,GAAGmK,GAA4BhrB,KAAKsjC,mBAAoBtjC,MACpEA,KAAK5c,OAAOy9B,GAAGxB,GAAiBrf,KAAKge,WAAYhe,MACjDA,KAAK5c,OAAOy9B,GAAGt4B,GAAgByX,KAAK6pC,UAAW7pC,MAC/CA,KAAK5c,OAAOy9B,GAAG6K,GAAgB1rB,KAAKwQ,QAASxQ,MAC7CA,KAAK5c,OAAOy9B,GAAGlB,GAAmB3f,KAAK2d,aAAc3d,MACrDA,KAAK5c,OAAOy9B,GAAG3kB,GAAkB8D,KAAKurB,YAAavrB,MACnDA,KAAK5c,OAAOy9B,GAAG9kB,GAAwBiE,KAAKoqC,kBAAmBpqC,MAC/DA,KAAK5c,OAAOy9B,GAAG1wB,GAAsB6P,KAAKwqC,gBAAiBxqC,MAC3DA,KAAK5c,OAAOy9B,GAAGz8B,GAAoB4b,KAAKsgB,cAAetgB,MACvDA,KAAK5c,OAAOy9B,GAAGtsB,GAAiByL,KAAKub,WAAYvb,MACjDA,KAAK5c,OAAOy9B,GAAGf,GAAqB9f,KAAK+f,eAAgB/f,MACzDA,KAAK5c,OAAOy9B,GAAGhvB,GAAgBmO,KAAKyqC,UAAWzqC,MAC/CA,KAAK5c,OAAOy9B,GAAG9qB,GAAiBiK,KAAKirC,WAAYjrC,MACjDA,KAAK5c,OAAOy9B,GAAG9tB,GAAiBiN,KAAK0gB,WAAY1gB,MACjDA,KAAK5c,OAAOy9B,GAAGN,GAAoBvgB,KAAKwgB,cAAexgB,MACvDA,KAAK5c,OAAOy9B,GAAGluB,GAAiBqN,KAAKipC,WAAYjpC,OAErD8lC,EAAet9B,UAAUyO,oBAAsB,WAC3CjX,KAAK5c,OAAO+7B,IAAIrvB,GAAmBkQ,KAAKw+B,cACxCx+B,KAAK5c,OAAO+7B,IAAI4Q,GAAqB/vB,KAAKuqC,gBAC1CvqC,KAAK5c,OAAO+7B,IAAItvB,GAAoBmQ,KAAKmd,eACzCnd,KAAK5c,OAAO+7B,IAAIC,GAAqBpf,KAAKsd,gBAC1Ctd,KAAK5c,OAAO+7B,IAAIG,GAAqBtf,KAAKuf,mBAC1Cvf,KAAK5c,OAAO+7B,IAAInjB,GAAoBgE,KAAK6d,eACzC7d,KAAK5c,OAAO+7B,IAAI3sB,GAAiBwN,KAAKqgB,YACtCrgB,KAAK5c,OAAO+7B,IAAIrtB,GAAekO,KAAK4qC,UACpC5qC,KAAK5c,OAAO+7B,IAAI1uB,GAAkBuP,KAAKogB,aACvCpgB,KAAK5c,OAAO+7B,IAAI6L,GAA4BhrB,KAAKsjC,oBACjDtjC,KAAK5c,OAAO+7B,IAAIgqB,GAAmBnpC,KAAKopC,gBACxCppC,KAAK5c,OAAO+7B,IAAIxjB,GAAkBqE,KAAKod,aACvCpd,KAAK5c,OAAO+7B,IAAIh3B,GAAmB6X,KAAK0d,cACxC1d,KAAK5c,OAAO+7B,IAAIE,GAAiBrf,KAAKge,YACtChe,KAAK5c,OAAO+7B,IAAI52B,GAAgByX,KAAK6pC,WACrC7pC,KAAK5c,OAAO+7B,IAAIuM,GAAgB1rB,KAAKwQ,SACrCxQ,KAAK5c,OAAO+7B,IAAIQ,GAAmB3f,KAAK2d,cACxC3d,KAAK5c,OAAO+7B,IAAIjjB,GAAkB8D,KAAKurB,aACvCvrB,KAAK5c,OAAO+7B,IAAIpjB,GAAwBiE,KAAKoqC,mBAC7CpqC,KAAK5c,OAAO+7B,IAAIhvB,GAAsB6P,KAAKwqC,iBAC3CxqC,KAAK5c,OAAO+7B,IAAIlf,GAAmBD,KAAKwd,cACxCxd,KAAK5c,OAAO+7B,IAAI9iB,GAAkB2D,KAAKyd,aACvCzd,KAAK5c,OAAO+7B,IAAI/6B,GAAoB4b,KAAKsgB,eACzCtgB,KAAK5c,OAAO+7B,IAAI5qB,GAAiByL,KAAKub,YACtCvb,KAAK5c,OAAO+7B,IAAIttB,GAAgBmO,KAAKyqC,WACrCzqC,KAAK5c,OAAO+7B,IAAIppB,GAAiBiK,KAAKirC,YACtCjrC,KAAK5c,OAAO+7B,IAAIpsB,GAAiBiN,KAAK0gB,YACtC1gB,KAAK5c,OAAO+7B,IAAIoB,GAAoBvgB,KAAKwgB,eACzCxgB,KAAK5c,OAAO+7B,IAAIW,GAAqB9f,KAAK+f,gBAC1C/f,KAAK5c,OAAO+7B,IAAIxsB,GAAiBqN,KAAKipC,aAG1CnD,EAAet9B,UAAUgY,cAAgB,WACrC,GAAIxgB,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,gBAAiB,CAEnD,IAAI0vB,EAAUlrC,KAAKqoC,YAAYroC,KAAKnN,QAAQlP,cAAc,IAC1Dqc,KAAK5c,OAAOgD,SAAW8kD,IAI/BpF,EAAet9B,UAAUuX,eAAiB,SAAU95B,GAChD,GAAI+Z,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,gBAAiB,CACnD,IAAIoQ,EAAQjmC,UAAQM,EAAKqO,OAAQ,MACjC0L,KAAK5c,OAAOgD,SAAW4Z,KAAKqoC,YAAYzc,EAAMxqC,aAAa,eAInE0kD,EAAet9B,UAAUyiC,WAAa,SAAUhlD,GAC5C,IAAIsN,EAAM5N,UAAQM,EAAKqO,OAAQ,MAC/B,GAAIf,EAAIvQ,UAAUC,SAAS,oBAAqB,CAC5C+c,KAAKkmC,QAAS,EACd,IAAIiF,EAAQ7lB,SAAS/xB,EAAInS,aAAa,cAAe,IACrD4e,KAAKnN,QAAQk3C,WAAWx2C,EAAInS,aAAa,aAAc+pD,EAAQ,GAC/DnrC,KAAKkmC,QAAS,IAGtBJ,EAAet9B,UAAU+S,WAAa,SAAUt1B,GAC5C,GAAI+Z,KAAK5c,OAAO4E,eAAiBgY,KAAKwb,gBAAiB,CACnD,IAAIC,EAAS91B,UAAQM,EAAKqO,OAAQ,MAClC0L,KAAK5c,OAAOmO,SAAWyO,KAAKqoC,YAAY5sB,GAAQ,GAChDzb,KAAK5c,OAAO2N,SAAWiP,KAAKuoC,YAAY9sB,EAAQv6B,WAAS,OAAQ8e,KAAK5c,OAAOmO,aASrFu0C,EAAet9B,UAAUgT,cAAgB,WACrC,MAAO,kBAEXsqB,EAAet9B,UAAUgI,QAAU,WAC3BxQ,KAAK5c,OAAO87B,cAGhBlf,KAAKiX,sBACDjX,KAAKnN,UACLmN,KAAKgX,eACLhX,KAAKnN,QAAQ2d,aAGrBs1B,EAAet9B,UAAUkR,WAAa,WAClC1Z,KAAKohB,eAAiB,IAAIC,iBAAerhB,KAAKnN,QAAQ9Q,SAClDu/B,UAAWthB,KAAKorC,QAAQrrC,KAAKC,MAC7B8T,WAAY9T,KAAK8T,WACjBlkB,UAAW,aAGnBk2C,EAAet9B,UAAUwO,aAAe,WACpChX,KAAKohB,eAAe5Q,WAGxBs1B,EAAet9B,UAAU4iC,QAAU,SAAU3tC,GAEzC,OADaA,EAAExZ,QAEX,IAAK,WACD+b,KAAK5c,OAAOU,OAAOy8B,OACnBhnB,GAAWyG,KAAK5c,UAAY4c,KAAK5c,OAAO5B,KAAM,WAC9C,MACJ,IAAK,MACDgC,EAAawc,KAAK5c,QAClB,MACJ,IAAK,MACG4c,KAAK5c,OAAOzB,OAAO,KAAOqe,KAAKutB,WAAWnsC,aAAa,cACvD4e,KAAKgqC,iBACApzC,GAAcoJ,KAAK5c,OAAOgD,SAAS,KAIpC4Z,KAAK+lC,eACLp1C,GAAaqP,KAAK5c,OAAQ,WAJ1BgF,GAAmB4X,KAAK5c,OAAQ4c,KAAK5c,OAAOgD,SAAS,GAAIyQ,KAOjE,MACJ,IAAK,QACDrO,EAAUwX,KAAK5c,QACf,MACJ,IAAK,QACD4c,KAAK5c,OAAOmN,WAAa,GACzBF,EAAa2P,KAAK5c,QAClB,MACJ,IAAK,QACDsF,EAASsX,KAAK5c,QACd,MACJ,IAAK,WAED,GADA4c,KAAKgqC,kBACAjzC,GAAkBiJ,KAAK5c,OAAOgD,SAAS,IAExC,YADAgC,GAAmB4X,KAAK5c,OAAQ4c,KAAK5c,OAAOgD,SAAS,GAAI4Q,IAGpB,IAArCgJ,KAAK5c,OAAO8B,cAAc/C,QAC1B6d,KAAKlJ,aAET,MACJ,IAAK,KACD,GAAyC,IAArCkJ,KAAK5c,OAAO8B,cAAc/C,OAAc,CAExC,IAAIpB,EAAOif,KAAKqoC,YAAYroC,KAAKnN,QAAQlP,cAAc,IAAI,GACtDiT,GAAc7V,IAIfif,KAAK4d,mBACLjtB,GAAaqP,KAAK5c,OAAQ,WAJ1BgF,GAAmB4X,KAAK5c,OAAQrC,EAAM8V,OAW1DivC,EAAet9B,UAAU6/B,YAAc,SAAUpiD,GAG7C,IAAK,IADDlF,EAAOif,KAAKnN,QAAQw1C,YAAYpiD,GAC3B/D,EAAI,EAAGA,EAAInB,EAAKoB,OAAQD,IACzBZ,oBAAMJ,WAAS,WAAYH,EAAKmB,MAChC2L,WAAS,YAAY,EAAO9M,EAAKmB,IAGzC,OAAOnB,GAEX+kD,EAAet9B,UAAUoV,iBAAmB,WACxC5d,KAAKgqC,iBACLhqC,KAAK5c,OAAOoT,gBAAkBtV,WAAS,OAAQ8e,KAAK5c,OAAOgD,SAAS,KAExE0/C,EAAet9B,UAAUwhC,eAAiB,WAEtC,IAAIjpD,EAAOif,KAAKqoC,YAAYroC,KAAKnN,QAAQlP,cAAc,IAAI,GAC3Dqc,KAAK5c,OAAOgD,UAAYrF,GACxBif,KAAK5c,OAAOqT,QAAS,GAEzBqvC,EAAet9B,UAAUyhC,iBAAmB,WACxCjqC,KAAKgqC,iBACL,IAAI1mD,EAAUkB,EAAcwb,KAAK5c,OAAO5B,MACxCwe,KAAK5c,OAAO7B,eAAgBC,KAAM8B,IAAW,GAC7C0c,KAAK5c,OAAOzB,OAAO0Z,MACnB2E,KAAK5c,OAAOvB,UAAUwZ,OAG1ByqC,EAAet9B,UAAU1R,WAAa,WAClC,IAAIxT,EAAUkB,EAAcwb,KAAK5c,OAAO5B,MAEpCoJ,EADSoV,KAAKnN,QAAQlP,cAAc,KACjBqc,KAAK5c,OAAOzB,OAAO,GAAM,GAAKT,WAAS,OAAQ8e,KAAK5c,OAAOgD,SAAS,IAC3F6Q,GAAS+I,KAAK5c,OAAQE,GAAUsH,KAE7Bk7C,KC32BPuF,GAA6B,WAO7B,SAASA,EAAYjoD,GACjB4c,KAAK2E,cAAe,EACpB3E,KAAKsrC,aAAc,EACnBtrC,KAAK0T,kBAAmB,EACxB1T,KAAKurC,iBAAkB,EACvBvrC,KAAKtL,QAAU,KACfsL,KAAKgjB,WAAa,KAClBhjB,KAAKwrC,eAAiB,KACtBxrC,KAAKyrC,mBAAoB,EACzBzrC,KAAK0rC,uBACL1rC,KAAK/N,MAAQ,EACb+N,KAAKuT,YAAa,EAClBvT,KAAK2rC,UAAW,EAChB3rC,KAAK4rC,aAAc,EACnB5rC,KAAKhH,gBAAiB,EACtBgH,KAAKsT,iBAAkB,EACvBu4B,OAAKvU,OAAOwU,SAAQjgB,cAAakgB,OAAMC,iBACvChsC,KAAK5c,OAASA,EACd4c,KAAKje,QAAUc,SAAO,IAAMmd,KAAK5c,OAAOrB,QAAQZ,GAAK0tC,GAAa7uB,KAAK5c,OAAOrB,SAC9Eie,KAAK6T,mBACL7T,KAAK8T,YACDgC,SAAU,YACVC,IAAK,SACL9B,IAAK,MACLC,SAAU,YACVI,QAAS,WACTC,SAAU,YACVC,SAAU,iBACVC,SAAU,iBACVC,UAAW,kBACXE,SAAU,YACVC,UAAW,aACXC,UAAW,kBACXG,QAAS,gBACTN,OAAQ,eACRO,MAAO,iBACPC,OAAQ,kBACRC,OAAQ,uBACRG,KAAM,qBACNC,MAAO,QACPC,UAAW,aACXC,WAAY,cACZC,QAAS,mBACT5B,IAAK,MACLC,KAAM,OACNK,OAAQ,UACR2B,IAAK,SACLC,MAAOjW,KAAK5c,OAAO8yB,MAAQ,QAAU,SACrCC,MAAOnW,KAAK5c,OAAO8yB,MAAQ,QAAU,SACrCE,MAAOpW,KAAK5c,OAAO8yB,MAAQ,QAAU,SACrC0wB,WAAY,eACZtwB,SAAU,eACVE,MAAO,SACPH,GAAI,KACJT,MAAO,SACPC,MAAO,SA02Df,OAt2DAw1B,EAAY7iC,UAAUiO,OAAS,SAAUxwB,GAErC,GADA2wB,cAAY5W,KAAK5c,OAAOrB,SACC,YAArBie,KAAK5c,OAAOoE,KAAoB,CAChC67B,eAAarjB,KAAK5c,OAAOrB,SAAU4gC,IAEnC,IAAI73B,EAAQD,EAAcmV,KAAK5c,OAAQ6C,EAAKc,OAC5CiZ,KAAKisC,iBACL,IAAI38C,EAAU0Q,KAAKksC,aACfC,OAAe,EACfnsC,KAAK5c,OAAOyL,SACZs9C,KAG8B,SAA1BnsC,KAAK5c,OAAO4H,YACZmhD,IAAkBC,UAAWpsC,KAAK5c,OAAO4H,UAAWoE,MAAO4Q,KAAK5c,OAAO8H,UAG/E8U,KAAK9Y,QAAU,IAAI2kD,QACf1kD,WAAY2D,EACZuhD,cAAc,EACdC,aAActsC,KAAKusC,YAAYxsC,KAAKC,KAAM,UAC1CwsC,eAAgBxsC,KAAKusC,YAAYxsC,KAAKC,KAAM,YAC5CysC,YAAazsC,KAAK68B,WAAW98B,KAAKC,MAClC0sC,cAAe1sC,KAAK2sC,cAAc5sC,KAAKC,MACvC4sC,cAAe5sC,KAAK5c,OAAOiM,oBAAoBw9C,eAC/CC,mBACIpzC,KAAMsG,KAAK5c,OAAO89B,oBAAsB,WAAa,SACrD6rB,aAAc,mBAElB1qC,UAAWrC,KAAK5c,OAAOif,UACvB2qC,cAAgBC,SAAU,IAC1B10B,qBAAsBvY,KAAK5c,OAAOm1B,qBAClC20B,kBAAmBltC,KAAK5c,OAAO8pD,kBAC/BC,sBAAsB,EACtBhB,cAAgBiB,aAAa,EAAO99C,QAAS68C,GAC7C78C,QAASA,EACT+9C,kBAAmBrtC,KAAKstC,eAAevtC,KAAKC,MAC5CutC,gBAAiBvtC,KAAKwtC,kBAAkBztC,KAAKC,MAC7CmoC,UAAWnoC,KAAKytC,YAAY1tC,KAAKC,MACjC0tC,aAAc1tC,KAAK2tC,eAAe5tC,KAAKC,MACvC4tC,YAAa5tC,KAAK6tC,cAAc9tC,KAAKC,MACrC8tC,eAAgB9tC,KAAK+tC,iBAAiBhuC,KAAKC,MAC3CoC,MAAO,OACPyE,OAAS7G,KAAK5c,OAA2B,qBAAI4c,KAAKguC,gBAAkB,OACpEC,WAAY,SAAUhoD,GAAQA,EAAK4N,QAAS,GAE5Cq6C,KAAM,SAAUjoD,GACZ+Z,KAAKmuC,YAAY39B,WAErBniB,OAAQ2R,KAAK5c,OAAOiL,SAEpB2R,KAAK5c,OAAOgrD,UACZpuC,KAAK9Y,QAAQknD,SAAU,EACvBpuC,KAAK9Y,QAAQk7C,WACbpiC,KAAK9Y,QAAQ25B,GAAG,sBAAuB7gB,KAAKquC,oBAAqBruC,OAErEA,KAAK9Y,QAAQqb,kBAAmB,EAChCvC,KAAK9Y,QAAQsb,SAAS,IAAMxC,KAAK5c,OAAOrB,QAAQZ,GAAK0tC,IACrD7uB,KAAK0Z,aACL1Z,KAAKwY,eACLxY,KAAKsuC,UAAYroD,IAGzBolD,EAAY7iC,UAAU6lC,oBAAsB,SAAUpoD,GAClD+Z,KAAK5c,OAAgB,QAAI6C,EACrB+Z,KAAK5c,OAAOg/C,SAAWpiC,KAAK5c,OAAO27C,eAAiB/+B,KAAK5c,OAAO27C,cAAc+B,YAC9E9gC,KAAK5c,OAAO27C,cAAc+B,WAAWsB,UACrCpiC,KAAK5c,OAAgB,QAAI4c,KAAK5c,OAAgB,QAAE8rC,OAAOlvB,KAAK5c,OAAO27C,cAAc+B,WAAWsB,UAEhGpiC,KAAK5c,OAAOU,OAAO,sBAAuBkc,KAAK5c,OAAgB,SAC/D4c,KAAK5c,OAA6B,wBAQtCioD,EAAY7iC,UAAUwlC,cAAgB,WAElC,IAAIpyB,EAAO/4B,SAAO,IAAMmd,KAAK5c,OAAOrB,QAAQZ,GAAKiT,GAAgB4L,KAAK5c,OAAOrB,SACzE85B,EAAMh5B,SAAO,IAAMmd,KAAK5c,OAAOrB,QAAQZ,GAAK6K,GAAsBgU,KAAK5c,OAAOrB,SAIlF,OAAQ65B,EAAK3vB,aAAe4vB,EAAI5vB,aAFV,IAI1Bo/C,EAAY7iC,UAAUyjC,eAAiB,WACnC,IAAIsC,EAAgBvuC,KAAK5c,OAAOiM,oBAAoBC,QACpD0Q,KAAK4rC,aAAc,EACnB,IAAK,IAAI1pD,EAAI,EAAGA,EAAIqsD,EAAcpsD,OAAQD,IACtC,GAA+B,SAA3BqsD,EAAcrsD,GAAGkN,MAEjB,YADA4Q,KAAK4rC,aAAetqD,oBAAMitD,EAAcrsD,GAAGkgB,SAKvDipC,EAAY7iC,UAAUgmC,YAAc,SAAUl/C,EAASm/C,GACnD,IAAIzuC,KAAK4rC,aAA8B,SAAd6C,EAGzB,IAAK,IAAIvsD,EAAI,EAAGA,EAAIoN,EAAQnN,OAAQD,IAChC,GAAIoN,EAAQpN,GAAGkN,QAAUq/C,EAAW,CAChC,IAAIC,OAAY,EAKZA,EAJ4D,KAA5D1uC,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAAiBib,KAAK5c,OAAO4B,WAIlEgb,KAAKje,QAAQ+mC,aAAe,IAAuB,SAAd2lB,EAAwB,QAAU,QAAW,OAHlFzuC,KAAKje,QAAQ+mC,aAAe,IAAO,QAAU,OAK9Dx5B,EAAQpN,GAAGkgB,MAAQssC,IAI/BrD,EAAY7iC,UAAU0jC,WAAa,WAC/B,IAAI58C,EACAgT,EAAsBtC,KAAK5c,OAAOkf,oBACtC,GAAItC,KAAK5c,OAAOyL,SACZS,IAEQF,MAAO,OAAQ0a,WAAY5c,EAAc8S,KAAK5c,OAAQ,QAASgf,MAAO,OAAQ2H,SAAU,IAAK4kC,gBAAiB,OAC9G3kC,SAAUG,wBAAsB,SAAUppB,GAEtC,MAAO,2BADIuhB,EAAsBssC,qBAAmBC,SAAS9tD,EAAK6J,MAAQ7J,EAAK6J,MACnC,gCAAoC7J,EAAK+tD,aAAe,iCAAqC/tD,EAAK2f,KAAO,kBAKhK,CACDpR,EAAUmJ,YAAWuH,KAAK5c,OAAOiM,oBAAoBC,QAAS,MAAM,GACpE0Q,KAAKwuC,YAAYl/C,EAAS,QAY1B,IAAK,IAXDmW,EAAU,SAAUvjB,EAAG0L,GAEvB,GADA0B,EAAQpN,GAAG4nB,WAAa5c,EAAc6hD,EAAO3rD,OAAQkM,EAAQpN,GAAG4nB,YACvC,SAArBxa,EAAQpN,GAAGkN,QAAqB9N,oBAAMgO,EAAQpN,GAAG8nB,WAA8C,mBAAxB1a,EAAQpN,GAAG8nB,SAA0B,CAC5G,IAAIglC,EAAa1/C,EAAQpN,GAAG8nB,SAC5B1a,EAAQpN,GAAG8nB,SAAWG,wBAAsB,SAAUppB,GAClD,IAAI6J,EAAO0X,EAAsBssC,qBAAmBC,SAAS9tD,EAAK6J,MAAQ7J,EAAK6J,KAC/E,OAAOokD,EAAW/kD,QAAQ,YAAaW,OAI/CmkD,EAAS/uC,KACJ9d,EAAI,EAAG0L,EAAM0B,EAAQnN,OAAQD,EAAI0L,EAAK1L,IAC3CujB,EAAQvjB,GAGhB,IAAI+sD,EAAWjvC,KAAK5c,OAAOyL,UAAYmR,KAAK5c,OAAO20C,SAAY,KAAO,KAClEjb,GACA1tB,MAAO,OAAQgT,MAAO6sC,EAAQllC,SAAUklC,EACxCjlC,SAAUG,wBAAsB,SAAUppB,GACtC,MAAO,0BAA6BA,EAAKmuD,cAAgB,cACzDtC,eAAe,EAAOP,cAAc,EAAMpiC,kBAAoBC,MAAO,kBACzEilC,eAAgBhlC,wBAAsB,WAClC,MAAO,iDAIf,GADA7a,EAAQ8/C,QAAQtyB,GACZ9c,KAAK5c,OAAO84B,mBAAoB,CAChC,IAAImzB,EAAUrvC,KAAK5c,OAAO20C,SAAW,KAAO,KACxCuX,GACA51C,KAAM,WAAY0I,MAAOitC,EAAQtlC,SAAUslC,EAAQplC,kBAAoBC,MAAO,iBAC9E0iC,eAAe,EAAOP,cAAc,GAEpCrsC,KAAK5c,OAAOyL,SACZS,EAAQjN,KAAKitD,GAGbhgD,EAAQ8/C,QAAQE,GAGxB,IAASptD,EAAI,EAAG0L,EAAM0B,EAAQnN,OAAQD,EAAI0L,EAAK1L,IAC3CoN,EAAQpN,GAAGqtD,mBAAqBvvC,KAAK5c,OAAOkf,oBAEhD,OAAOhT,GAEX+7C,EAAY7iC,UAAUgQ,aAAe,WACjC,GAAKxY,KAAK9Y,QAAV,CAGA,IAAI00B,EAAO/4B,SAAO,IAAMmd,KAAK5c,OAAOrB,QAAQZ,GAAKiT,GAAgB4L,KAAK5c,OAAOrB,SACzE85B,EAAMh5B,SAAO,IAAMmd,KAAK5c,OAAOrB,QAAQZ,GAAK6K,GAAsBgU,KAAK5c,OAAOrB,SAC9EytD,EAAa3sD,SAAO,IAAMqJ,GAAiB8T,KAAK5c,OAAOrB,SACvD8kB,EAAU+U,EAAK3vB,aAAe4vB,EAAI5vB,aAAeujD,EAAWvjD,aAChE+T,KAAK9Y,QAAQ2f,OAASA,EACtB7G,KAAK9Y,QAAQwb,aAEjB2oC,EAAY7iC,UAAUinC,eAAiB,WACnCzvC,KAAK9Y,QAAQoI,QAAU0Q,KAAKksC,aAC5BlsC,KAAKurC,iBAAkB,EACvBvrC,KAAK9Y,QAAQwoD,kBAEjBrE,EAAY7iC,UAAUmlC,eAAiB,SAAU1nD,GAC7C,IAAI0pD,EAAK9sD,SAAO,kBAAmBoD,EAAK2pD,KACxC,IAAKD,EAED,IAAK,IADDrgD,EAAU0Q,KAAK5c,OAAOiM,oBAAoBC,QACrCpN,EAAI,EAAGA,EAAIoN,EAAQnN,OAAQD,IAChC,GAAyB,SAArBoN,EAAQpN,GAAGkN,MAAkB,CAC7BugD,EAAK1pD,EAAK2pD,IAAIhlB,SAAS5qB,KAAK5c,OAAO89B,oBAAuBh/B,EAAI,EAAMA,EAAI,GACxE,MAaZ,GATIytD,GACAA,EAAG74B,aAAa,QAAS51B,WAAS,OAAQ+E,EAAKlF,OAE/Cif,KAAK5c,OAAO0C,gBAAkBka,KAAK5c,OAAOK,OAAoC,SAA3Buc,KAAK5c,OAAOqF,YAC/DuX,KAAK5c,OAAOO,eAAsD,IAArCqc,KAAK5c,OAAOO,cAAcxB,SACiB,IAApE6d,KAAK5c,OAAOO,cAAcqF,QAAQ9H,WAAS,OAAQ+E,EAAKlF,QACxD2D,EAAQuB,EAAK2pD,MAGhB5vC,KAAK5c,OAAO0V,mBAAqB5X,WAAS,SAAU+E,EAAKlF,MAAO,CACjE,IAAIi7B,EAAU/1B,EAAK2pD,IAAIzjD,cAAc,cACrC,GAAI6vB,EAAS,CACT,IAAIe,EAAS77B,WAAS,OAAQ+E,EAAKlF,MAC/B2Y,EAAOxY,WAAS,OAAQ+E,EAAKlF,MACjCi7B,EAAQ/uB,UAAY8vB,EAAOhc,OAAO,EAAGgc,EAAO56B,OAASuX,EAAKvX,SAGlE,QAAoCye,IAAhC1f,WAAS,OAAQ+E,EAAKlF,OAAuBkF,EAAK2pD,IAAIzjD,cAAc,cAAe,CACnF,IAAI0jD,EAAU5pD,EAAK2pD,IAAIzjD,cAAc,cACjC2jD,OAAe,EACnB,GAAK5uD,WAAS,SAAU+E,EAAKlF,MAGxB,CAKI,IAJDgvD,EAAY7uD,WAAS,OAAQ+E,EAAKlF,MAClC4Z,EAAO,IAAIC,uBAAqBoF,KAAK5c,OAAOiL,QAC5C2hD,OAAa,EAEjB,IADI1gD,EAAU0Q,KAAK5c,OAAOiM,oBAAoBC,QACrCpN,EAAI,EAAGA,EAAIoN,EAAQnN,OAAQD,IAChC,GAAyB,SAArBoN,EAAQpN,GAAGkN,MAAkB,CAC7B4gD,EAAcjgD,oBAAkBT,EAAQpN,GAAGkM,QAAyC,IAA/BkB,EAAQpN,GAAGkM,OAAO7D,WACvE,MAIRulD,EADYn1C,EAAKs1C,aAAcF,EAAY,MAAS3hD,OAAQ4hD,IACrC,IAAM9iD,EAAc8S,KAAK5c,OAAQ,WAdxD0sD,EAAe,GAgBnBD,EAAQ5iD,UAAY6iD,EAExB,GAAI9vC,KAAK5c,OAAOyL,eACgC+R,IAAxC1f,WAAS,eAAgB+E,EAAKlF,OAAuBkF,EAAK2pD,IAAIzjD,cAAc,cAAe,CAMtF,IALD+jD,EAAUjqD,EAAK2pD,IAAIzjD,cAAc,cAIjCiC,GAHAuM,EAAO,IAAIC,uBAAqBoF,KAAK5c,OAAOiL,QAC5CiB,EAAU0Q,KAAK5c,OAAOiM,oBAAoBC,aAEjC,GACb,IAASpN,EAAI,EAAGA,EAAIoN,EAAQnN,OAAQD,IAChC,GAAyB,iBAArBoN,EAAQpN,GAAGkN,MAA0B,CACrChB,EAASkB,EAAQpN,GAAGkM,OACpB,MAGR,IAAIoQ,EAAkB7D,EAAKxM,WAAW,IAAI9D,KAAKnJ,WAAS,eAAgB+E,EAAKlF,OAAQqN,GACrF8hD,EAAQjjD,UAAYuR,EAG5B,IAAI2xC,EAAYlqD,EAAK2pD,IAAIzjD,cAAc,IAAMg6B,IACzCgqB,GACAA,EAAUntD,UAAUoC,IAAI,WAEvBwR,GAAc3Q,EAAKlF,QACpBkF,EAAK2pD,IAAIrjD,WAAa,IAAM+K,GAAerR,EAAKlF,OAEpD,IAAImJ,GACAnI,QAASkE,EAAK2pD,IACdzlD,YAAalE,EAAKlF,KAClBgO,OAAQ,eAEZiR,KAAK5c,OAAOoH,QAAQ,WAAYN,IAEpCmhD,EAAY7iC,UAAUqlC,cAAgB,SAAU5nD,GAC5C,GAAyB,YAArBA,EAAKmqD,YAA2B,CAGhC,GAFApwC,KAAK5c,OAAO7B,eAAgByJ,UAAW/E,EAAKmmD,YAAa,GACzDpsC,KAAK5c,OAAO7B,eAAgB2J,OAAQjF,EAAKoqD,aAAc,GACd,IAArCrwC,KAAK5c,OAAO8B,cAAc/C,OAAc,CACxC6d,KAAKswC,UAAW,EAChB,IAAIC,EAAOvwC,KAAK9Y,QAAQspD,wBACpB5iD,EAAM2iD,EAAKpuD,OAEf,IADA6d,KAAKywC,qBACE7iD,EAAM,GAAG,CAEZ,IAAI7M,EAAOif,KAAK9Y,QAAQwpD,gBAAgBH,EAAK3iD,EAAM,IAAI7M,KACvDif,KAAKywC,kBAAkBpuD,KAAKnB,WAAS8e,KAAK5c,OAAO1B,MAAQ,KAAO,OAAQX,IACxE6M,KAGRoS,KAAK5c,OAAOU,OAAOkL,SAG3Bq8C,EAAY7iC,UAAUulC,iBAAmB,SAAU9nD,GAC/C,IAAIkqD,EAAYlqD,EAAKnF,KAAKqL,cAAc,IAAMg6B,IAC1CgqB,GACAA,EAAUntD,UAAUoC,IAAI,YAGhCimD,EAAY7iC,UAAUglC,kBAAoB,SAAUvnD,GAChD,IAAIm0B,EAAQpa,KACZ4W,cAAY5W,KAAK5c,OAAOrB,SACxB,IAAI4uD,EAAa3wC,KAAK5c,OAAOiM,oBAAoBC,QAAQshD,KAAK,SAAU3hD,GAAU,OAAOA,EAAOG,QAAUgrB,EAAMh3B,OAAO8H,SACvH,GAAIylD,KAAgB,iBAAkBA,GAAa,CAE/C,IAAI7lD,EAAQD,EAAcmV,KAAK5c,OAAS4c,KAAK5c,OAA2B,qBAAI6C,EAAKwH,OAASuS,KAAK9Y,QAAQC,YACvGlB,EAAKwH,OAAS3C,IAItBugD,EAAY7iC,UAAUilC,YAAc,WAgDhC,GA/CAztC,KAAKkZ,iBACqC,IAArClZ,KAAK5c,OAAO8B,cAAc/C,SAAiB6d,KAAK5c,OAAOm1B,sBACjB,IAArCvY,KAAK5c,OAAO8B,cAAc/C,QAAgB6d,KAAK5c,OAAOm1B,sBACE,GAAtDvY,KAAKje,QAAQoK,cAAc,cAAc43B,YAC7C/jB,KAAK6wC,cAAc7wC,KAAK5c,OAAO8B,gBAEL,IAA1B8a,KAAK0T,mBACA1T,KAAKurC,gBAKNvrC,KAAKurC,iBAAkB,GAJvBvrC,KAAK6wC,cAAc7wC,KAAK5c,OAAO4O,YAC/BgO,KAAK0T,kBAAmB,IAM5B1T,KAAK5c,OAAOsY,cACZsE,KAAK6wC,eAAe3vD,WAAS8e,KAAK5c,OAAO1B,MAAQ,KAAO,OAAQse,KAAK5c,OAAOsY,eAC5EsE,KAAK5c,OAAOsY,YAAc,MAE1BsE,KAAK5c,OAAOqE,oBAAoBtF,QAChC6d,KAAK6wC,cAAc7wC,KAAK5c,OAAOqE,qBAE/BuY,KAAK5c,OAAOwY,cACZoE,KAAK+d,aAAa/d,KAAK5c,OAAOwY,aAC9BoE,KAAK5c,OAAOwY,YAAc,OAER,IAAlBoE,KAAKswC,WACLtwC,KAAK6wC,cAAc7wC,KAAKywC,mBACxBzwC,KAAKswC,UAAW,GAEhBtwC,KAAKyrC,oBACAzrC,KAAKurC,gBAKNvrC,KAAKurC,iBAAkB,GAJvBvrC,KAAK6wC,cAAc7wC,KAAK0rC,qBACxB1rC,KAAKyrC,mBAAoB,KAMJ,IAAzBzrC,KAAKsT,kBACLtT,KAAK/N,QACL+N,KAAK6wC,cAAc7wC,KAAK5c,OAAOyU,YAC3BmI,KAAK/N,QAAU+N,KAAK5c,OAAOyU,WAAW1V,SACtC6d,KAAKsT,iBAAkB,EACvBtT,KAAK5c,OAAOyU,gBAGhBmI,KAAK9Y,QAAQ4pD,gBAAgB3uD,OAAS6d,KAAK9Y,QAAQ6pD,eAAiB/wC,KAAK9Y,QAAQ2f,OAAQ,EACrFmqC,EAAUhxC,KAAK9Y,QAAQ+pD,oBACnB7jD,MAAMsa,aAAe,GAC7BspC,EAAQ5jD,MAAM8jD,YAAc,GACZruD,SAAO,mBAAoBmuD,GACjC5jD,MAAM+jD,iBAAmB,KAC/BC,EAAUpxC,KAAK9Y,QAAQmqD,aAAallD,cAAc,eAC9CiB,MAAMkkD,UAAY,GAC1BF,EAAQpuD,UAAUoC,IAAI,oBAErB,CACD,IAAI4rD,EAAUhxC,KAAK9Y,QAAQ+pD,mBACtBjxC,KAAK5c,OAAOif,UAIb2uC,EAAQ5jD,MAAM8jD,YAAc,OAH5BF,EAAQ5jD,MAAMsa,aAAe,OAKjC,IAAI0pC,GAAAA,EAAUpxC,KAAK9Y,QAAQmqD,aAAallD,cAAc,eAC9CnJ,UAAUyC,OAAO,gBAE7Bua,KAAKuT,YAAa,EAClBvT,KAAK5c,OAAO0C,gBAAiB,EAC7B+zB,cAAY7Z,KAAK5c,OAAOrB,SACxBie,KAAKuxC,cAAcvxC,KAAKsuC,WACxBtuC,KAAK2E,eAAe3E,KAAK2rC,UAAkB3rC,KAAK2E,aAChD3E,KAAK2rC,UAAW,GAEpBN,EAAY7iC,UAAUqoC,cAAgB,SAAU1rD,GAI5C,IAAK,IAFDqsD,EAAcxxC,KAAK9Y,QAAQuqD,wBAC3BC,KACKxvD,EAAI,EAAG0L,EAAM4jD,EAAYrvD,OAAQD,EAAI0L,EAAK1L,IAAK,CACpD,IAAIpB,EAAOkf,KAAK5c,OAAO1B,MAAQR,WAAS,KAAMswD,EAAYtvD,IAAMyI,EAAQqV,KAAK5c,OAAQouD,EAAYtvD,IACjG,IAA6B,IAAzBiD,EAAM6D,QAAQlI,GACd4wD,EAASrvD,KAAKH,QAEb,IAAK8d,KAAK5c,OAAO0V,mBAAqBhY,EAAK6wD,SAAS,KAAM,CAC3D,IAAIC,EAAO9wD,EAAKmI,MAAM,KAAK8vB,MAAM,GAAI,GAAG7vB,KAAK,MAChB,IAAzB/D,EAAM6D,QAAQ4oD,IACdF,EAASrvD,KAAKH,IAIF,IAApBwvD,EAASvvD,SACT6d,KAAK9Y,QAAQgnC,WAAWwjB,GACxB1xC,KAAKmjB,SAASnjB,KAAK9Y,QAAQ2qD,oBAInCxG,EAAY7iC,UAAUuV,aAAe,SAAUh9B,GAE3C,IAAI+J,EAAQkV,KAAK9Y,QAAQuqD,wBAErBK,KACJ,GAAI9xC,KAAK5c,OAAO1B,MACZowD,EAAQ,IAAIzmD,cAAYP,GACpBQ,cAAa,IAAIL,SAAQS,MAAM,KAAM,QAASsU,KAAK5c,OAAO4iB,WAAW,QAExE,CAED,IAAIqkC,EAAQ,IAAIh/C,cAAYP,GACxBQ,cAAa,IAAIL,SAAQS,MAAM,OAAQ,QAASxK,WAAS,OAAQH,IAAO,IACxEspD,EAAMloD,OAAS,IACf2vD,EAAQ,IAAIzmD,cAAYg/C,GACpB/+C,cAAa,IAAIL,SAAQS,MAAM,aAAc,QAASsU,KAAK5c,OAAOsT,YAAY,KAG1F,GAAIo7C,EAAM3vD,OAAS,EAAG,CAClB,IAAIme,EAAQxV,EAAM9B,QAAQ8oD,EAAM,IAChC9xC,KAAK9Y,QAAQgnC,YAAY5tB,MAGjC+qC,EAAY7iC,UAAUupC,aAAe,WACH,SAA1B/xC,KAAK5c,OAAO4H,UACZgV,KAAK9Y,QAAQ8qD,WAAW1/B,WAAWtS,KAAK5c,OAAO8H,OAAQ8U,KAAK5c,OAAO4H,WAInEgV,KAAK9Y,QAAQC,WAAa0D,EAAcmV,KAAK5c,OAAQ4c,KAAK9Y,QAAQC,YAEX,IAAvD6Y,KAAKje,QAAQoK,cAAc,cAAc43B,WACzC/jB,KAAK9Y,QAAQ+qD,iBAGrB5G,EAAY7iC,UAAU+W,kBAAoB,SAAU9hB,GAChD,GAAIA,EAAE1O,SAAWiR,KAAKwb,iBAAgC,WAAb/d,EAAE1O,OAI3C,IAAK,IAAIgyB,EAAK,EAAGC,EAAK1qB,OAAOD,KAAKoH,EAAEwjB,SAAUF,EAAKC,EAAG7+B,OAAQ4+B,IAAM,CAEhE,OADWC,EAAGD,IAEV,IAAK,mBACD/gB,KAAKkZ,gBACL,MACJ,IAAK,SACDlZ,KAAKwY,eACL,MACJ,IAAK,sBACD,IAAKzoB,oBAAkBiQ,KAAK9Y,SAAU,CAClC8Y,KAAKisC,iBACL,IAAI38C,EAAU0Q,KAAKksC,aACnBlsC,KAAK9Y,QAAQoI,QAAUA,EACvB0Q,KAAK9Y,QAAQ0lD,cAAgB5sC,KAAK5c,OAAOiM,oBAAoBw9C,eAC7D7sC,KAAK9Y,QAAQwb,WACb1C,KAAK9Y,QAAQwoD,iBAEjB,MACJ,IAAK,gBAED,GADA1vC,KAAKsrC,aAAc,EACsB,IAArCtrC,KAAK5c,OAAO8B,cAAc/C,OAAc,CACxC,IAAK6d,KAAK5c,OAAO89B,oBAAqB,CAClC,IAAI6X,EAAU/4B,KAAK5c,OAAO8B,cAAc6zB,MAAM/Y,KAAK5c,OAAO8B,cAAc/C,OAAS,GACjF6d,KAAK5c,OAAO7B,eAAgB2D,cAAe6zC,IAAW,GAE1D/4B,KAAK6wC,cAAc7wC,KAAK5c,OAAO8B,eAC/B8a,KAAK5c,OAAO7B,eAAgB2D,cAAe8a,KAAK5c,OAAO8B,gBAAiB,QAElE5D,oBAAM0e,KAAK9Y,WACjB8Y,KAAK9Y,QAAQy3B,iBACb3e,KAAKsrC,aAAc,GAEvB,MACJ,IAAK,oBAGL,IAAK,kBACDhkD,GAAK0Y,KAAK5c,OAAQ4Y,GAAoBgE,KAAK5c,OAAO5B,MAClD,MACJ,IAAK,sBACIuO,oBAAkBiQ,KAAK9Y,WACxB8Y,KAAK0rC,oBAAsB1rC,KAAK5c,OAAO8B,cACvC8a,KAAK9Y,QAAQ4lD,kBAAkBpzC,KAAO+D,EAAEwjB,QAAQC,oBAAsB,WAAa,SACnFlhB,KAAKyrC,mBAAoB,EACzBzrC,KAAKyvC,kBAET,MACJ,IAAK,OACDloD,EAAayY,KAAK5c,OAAQ,WAC1B,MACJ,IAAK,QACD4c,KAAKkyC,qBAIrB7G,EAAY7iC,UAAUqV,cAAgB,SAAU53B,GAC5C+Z,KAAK5c,OAAOK,OAAQ,EACmD,KAAnEuc,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,MAAM0qC,QAAiBzvB,KAAK9Y,UAC9E8Y,KAAK5c,OAAO06B,iBACP9d,KAAK5c,OAAO4B,WAIbgb,KAAKmyC,mBAHLnyC,KAAKoyC,kBAAiB,IAM9B1uD,EAAWsc,KAAK5c,QACS,YAArB4c,KAAK5c,OAAOoE,OAEZwY,KAAK2E,cAAe,EACpBiS,cAAY5W,KAAK5c,OAAOrB,SACxBie,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GACjD8a,KAAK9Y,QAAQC,WAAa0D,EAAcmV,KAAK5c,OAAQ6C,EAAKc,OAC1DiZ,KAAK9Y,QAAQ+qD,gBACTjyC,KAAK5c,OAAOgrD,SACZpuC,KAAK9Y,QAAQ25B,GAAG,sBAAuB7gB,KAAKquC,oBAAqBruC,OAGzEA,KAAKsuC,UAAYroD,GAErBolD,EAAY7iC,UAAU2pC,iBAAmB,WACrC,IAAIvkD,EAAMoS,KAAK9Y,QAAQoI,QAAQnN,OAC3BkwD,EAAav4C,KAAKU,MAAMV,KAAKC,UAAUiG,KAAK9Y,QAAQoI,UACxD,GAAI+iD,EAAWzkD,EAAM,GAAGwB,OAAuC,eAA9BijD,EAAWzkD,EAAM,GAAGwB,QAA2B4Q,KAAK5c,OAAOyL,SAAU,CAClG,IAAI0jB,GACAnjB,MAAO,aAAc0a,WAAY5c,EAAc8S,KAAK5c,OAAQ,QAAS2mB,SAAU,IAAK3H,MAAO,QAE/FpC,KAAK9Y,QAAQoI,QAAQjN,KAAKkwB,GAC1BvS,KAAKwuC,YAAYxuC,KAAK9Y,QAAQoI,QAAS,cACvC0Q,KAAKwuC,YAAYxuC,KAAK9Y,QAAQoI,QAAS,QACvC0Q,KAAKurC,iBAAkB,EACvBvrC,KAAK9Y,QAAQwoD,mBAGrBrE,EAAY7iC,UAAU+oC,cAAgB,SAAUtrD,GAE5C,IAAI6E,EAAQD,EAAcmV,KAAK5c,OAAQ6C,EAAKc,OAC5C,GAAqB,IAAjB+D,EAAM3I,QAAiBb,oBAAM0e,KAAKje,QAAQoK,cAAc,IAAMW,MAG7D,GAAqB,IAAjBhC,EAAM3I,QAAgB6d,KAAKje,QAAQoK,cAAc,IAAMC,IAC5D,GAAI4T,KAAKje,QAAQoK,cAAc,IAAMW,IAAeX,cAAc,IAAMC,IAAY,CAChF,IAAIC,EAAW2T,KAAKje,QAAQoK,cAAc,IAAMW,IAAeX,cAAc,IAAMC,IACnF4T,KAAKje,QAAQoK,cAAc,IAAMW,IAAesQ,YAAY/Q,QAG5D2T,KAAKje,QAAQqb,YAAY4C,KAAKje,QAAQoK,cAAc,IAAMC,UAR9DT,EAAmBqU,KAAK5c,OAAQ4c,KAAKje,QAASkE,IAYtDolD,EAAY7iC,UAAUwV,WAAa,WAC/B,GAAiC,gBAA7Bhe,KAAK5c,OAAOkB,aAAgC,CAE5C,IAAIvD,EAAOif,KAAK9Y,QAAQorD,qBAAqB,GAC7CtyC,KAAKuyC,YAAYxxD,KAGzBsqD,EAAY7iC,UAAU8kC,eAAiB,SAAUrnD,GAC7C+Z,KAAK9Y,QAAQgnC,YAAYjoC,EAAKusD,WAE9B,IAAIzxD,EACAkF,EAAKwsD,UACL1xD,EAAO+Y,KAAKU,MAAMV,KAAKC,UAAU9T,EAAKwsD,UACtCzyC,KAAKuyC,YAAYxxD,KAIzBsqD,EAAY7iC,UAAU+pC,YAAc,SAAUxxD,GAC1C,IAAIq5B,EAAQpa,KACZ,GAAK9X,GAAcnH,GAAnB,CAIA,IAAImJ,GAAc2J,QAAQ,EAAO1J,YAAapJ,EAAMgO,OAAQ,eAC5DiR,KAAK5c,OAAOoH,QAAQ,WAAYN,EAAW,SAAUq5B,GACjD,IAAKA,EAAa1vB,OAAQ,CACtB,IAAIozB,EAAS/lC,WAAS,OAAQH,GAC9B,GAAIG,WAAS,SAAUH,GAAO,CAE1B,GADW4H,EAAS5H,KACPoI,GAAgB,CACzB,IAAIK,EAASF,EAAY8wB,EAAMh3B,OAAQrC,GACvCylB,GAAkB4T,EAAMh3B,OAAQ6jC,EAAQz9B,QAG3C,CAED,GAAY,KADF4wB,EAAMh3B,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAC1Cq1B,EAAMh3B,OAAO4B,WAW5BgL,EAAiBoqB,EAAMh3B,OAAQrC,OAXS,CACxC,IAAII,EAAKD,WAAS,KAAMH,GACxBq5B,EAAMh3B,OAAOoO,QAAU4oB,EAAMh3B,OAAO5B,KACpC,IAAI8B,EAAU82B,EAAMh3B,OAAO5B,MAAQF,oBAAMH,GAAM8lC,EAAS9lC,GAAM,IAC9Di5B,EAAMh3B,OAAO7B,eAAgBC,KAAM8B,IAAW,GAC9C82B,EAAMh3B,OAAOvB,UAAUQ,KAAK4kC,GAC5B7M,EAAMh3B,OAAOzB,OAAOU,KAAKnB,WAAS,SAAUH,IAC5Cq5B,EAAMh3B,OAAOgD,UAAYrF,GACzBuH,EAAW8xB,EAAMh3B,QAKrBg3B,EAAMh3B,OAAO4B,YAAa,EAE9Bo1B,EAAMr4B,QAAQ6d,QACVwa,EAAMh3B,OAAOm1B,sBACb6B,EAAMh3B,OAAOrB,QAAQoK,cAAc,IAAMiuB,EAAMh3B,OAAOrB,QAAQZ,GAAKimB,IAAmBxH,gBAjC9FxX,GAAmB4X,KAAK5c,OAAQrC,EAAMsH,KAuC9CgjD,EAAY7iC,UAAU+T,eAAiB,SAAUt2B,GACpB,YAArB+Z,KAAK5c,OAAOoE,OACRwY,KAAK5c,OAAOm1B,sBACZvY,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GAEhD8a,KAAK9Y,QAIN8Y,KAAK2rC,UAAW,EAHhB3rC,KAAKyW,OAAOxwB,GAKZ+Z,KAAK5c,OAAO4B,aACZgb,KAAKmyC,mBACLnyC,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,IAErD8a,KAAK9Y,QAAQC,WAAa0D,EAAcmV,KAAK5c,OAAQ6C,EAAKc,OAC1DiZ,KAAK5c,OAAOU,OAAOozB,OACnBlX,KAAK9Y,QAAQnF,QAAQiB,UAAUyC,OAAO6yB,IACtCtY,KAAK2E,cAAe,EACpB3E,KAAK9Y,QAAQy3B,iBAC0D,KAAnE3e,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,MAAM0qC,QACxDzvB,KAAK0yC,cAAczsD,GAEvB+Z,KAAKwY,eACDxY,KAAK9Y,QAAQilD,aAAa78C,QAAQnN,OAAS,GAAK6d,KAAK9Y,QAAQilD,aAAa78C,QAAQ,GAAGF,QAAU4Q,KAAK5c,OAAO8H,QAC7E,SAA1B8U,KAAK5c,OAAO4H,WACZgV,KAAK9Y,QAAQorB,WAAWtS,KAAK5c,OAAO8H,OAAQ8U,KAAK5c,OAAO4H,aAMxEqgD,EAAY7iC,UAAUkqC,cAAgB,SAAUzsD,GACnB,YAArB+Z,KAAK5c,OAAOoE,OACZwY,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GACjD8a,KAAK5c,OAAOU,OAAOsX,OACd4E,KAAK5c,OAAO0C,iBACbka,KAAK5c,OAAOqE,wBAEhBuY,KAAKmyC,mBACLnyC,KAAK5c,OAAO06B,cAAgB73B,EAAKc,MACjCiZ,KAAK6d,cAAc53B,KAG3BolD,EAAY7iC,UAAU4pC,iBAAmB,SAAUO,GAC/C,IAAI/kD,EAAMoS,KAAK9Y,QAAQoI,QAAQnN,OAC3BkwD,EAAav4C,KAAKU,MAAMV,KAAKC,UAAUiG,KAAK9Y,QAAQoI,UACpD+iD,EAAWzkD,EAAM,GAAGwB,OAAwC,eAA9BijD,EAAWzkD,EAAM,GAAGwB,QAE7CW,oBAAkBiQ,KAAK9Y,QAAQilD,aAAa78C,QAAQ,KAAsD,eAA/C0Q,KAAK9Y,QAAQilD,aAAa78C,QAAQ,GAAGF,QACnE,SAA1B4Q,KAAK5c,OAAO4H,UACZgV,KAAK9Y,QAAQorB,WAAW,OAAQtS,KAAK5c,OAAO4H,WAI5CgV,KAAK9Y,QAAQC,WAAa0D,EAAcmV,KAAK5c,OAAQ4c,KAAK9Y,QAAQC,YAEtE6Y,KAAK5c,OAAOU,OAAOkL,QAEvBgR,KAAK9Y,QAAQoI,QAAQ+L,MAChBs3C,IACD3yC,KAAKurC,iBAAkB,EACvBvrC,KAAK9Y,QAAQwoD,oBAIzBrE,EAAY7iC,UAAU2U,cAAgB,SAAUl3B,GACnB,YAArB+Z,KAAK5c,OAAOoE,OAGXwY,KAAK9Y,QAIN8Y,KAAK6d,cAAc53B,GAHnB+Z,KAAKyW,OAAOxwB,KAMpBolD,EAAY7iC,UAAU4U,YAAc,SAAUn3B,GACjB,YAArB+Z,KAAK5c,OAAOoE,MAGhBwY,KAAK6d,cAAc53B,IAEvBolD,EAAY7iC,UAAUmV,aAAe,WACA,gBAA7B3d,KAAK5c,OAAOkB,cAAuE,IAArC0b,KAAK5c,OAAO8B,cAAc/C,QACxE6d,KAAK4d,oBAGbytB,EAAY7iC,UAAU8U,eAAiB,WACF,gBAA7Btd,KAAK5c,OAAOkB,eACZ0b,KAAK5c,OAAOgD,SAAW4Z,KAAK9Y,QAAQorD,uBAG5CjH,EAAY7iC,UAAUgV,aAAe,WACA,gBAA7Bxd,KAAK5c,OAAOkB,cACZ8S,GAAO4I,KAAK5c,OAAQ4c,KAAK5c,OAAO8B,cAAe8a,KAAK5c,OAAO5B,KAAM,WAIzE6pD,EAAY7iC,UAAUiV,YAAc,SAAUx3B,GACjB,YAArB+Z,KAAK5c,OAAOoE,OAGhBwY,KAAK6d,cAAc53B,GACnB+Z,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,KAErDmmD,EAAY7iC,UAAUkV,aAAe,SAAUz3B,GAClB,YAArB+Z,KAAK5c,OAAOoE,OAGhBwY,KAAK2E,cAAe,EACpB3E,KAAKoyC,kBAAiB,GACtBpyC,KAAK9Y,QAAQC,WAAa0D,EAAcmV,KAAK5c,OAAQ6C,EAAKc,OAC1DiZ,KAAKsuC,UAAYroD,IAErBolD,EAAY7iC,UAAU0V,aAAe,WACR,YAArBle,KAAK5c,OAAOoE,MAAsBwY,KAAK9Y,SACvC8Y,KAAK9Y,QAAQnF,QAAQiB,UAAUoC,IAAIkzB,KAG3C+yB,EAAY7iC,UAAU2V,gBAAkB,WACX,YAArBne,KAAK5c,OAAOoE,OACZwY,KAAK2E,cAAe,EAChB3E,KAAK5c,OAAO89B,oBACZlhB,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkB,EAAG7yC,KAAK9Y,QAAQ4rD,UAAU3wD,QAGzE6d,KAAK9Y,QAAQ6rD,UAAU/yC,KAAK9Y,QAAQ4rD,UAAU3wD,OAAS,GAE3D6d,KAAK2E,cAAe,EACpB3E,KAAKsrC,aAAc,IAG3BD,EAAY7iC,UAAUkW,eAAiB,WACV,YAArB1e,KAAK5c,OAAOoE,OACZwY,KAAKgzC,kBACLhzC,KAAKsrC,aAAc,IAI3BD,EAAY7iC,UAAU86B,mBAAqB,WACvCjgB,eAAarjB,KAAKje,SAAUkxD,IACxBjzC,KAAK5c,OAAO8B,cAAc/C,OAAS,GACnCyxB,YAAU5T,KAAKje,SAAUkxD,KAGjC5H,EAAY7iC,UAAUuW,gBAAkB,WACX,YAArB/e,KAAK5c,OAAOoE,MAGhBwY,KAAKwY,gBAET6yB,EAAY7iC,UAAUoW,gBAAkB,WACpC5e,KAAKuT,YAAa,GAEtB83B,EAAY7iC,UAAUqW,eAAiB,WACnC7e,KAAKuT,YAAa,GAEtB83B,EAAY7iC,UAAUwW,sBAAwB,WACjB,YAArBhf,KAAK5c,OAAOoE,OAGhBwY,KAAK5c,OAAOgD,SAAW4Z,KAAK9Y,QAAQorD,uBAExCjH,EAAY7iC,UAAUqL,iBAAmB,WACrC7T,KAAK5c,OAAOy9B,GAAGhxB,GAAoBmQ,KAAKmd,cAAend,MACvDA,KAAK5c,OAAOy9B,GAAG6K,GAAgB1rB,KAAKwQ,QAASxQ,MAC7CA,KAAK5c,OAAOy9B,GAAGl6B,GAAqBqZ,KAAKuc,eAAgBvc,MACzDA,KAAK5c,OAAOy9B,GAAG7kB,GAAoBgE,KAAK6d,cAAe7d,MACvDA,KAAK5c,OAAOy9B,GAAGllB,GAAkBqE,KAAKod,YAAapd,MACnDA,KAAK5c,OAAOy9B,GAAGtsB,GAAiByL,KAAKub,WAAYvb,MACjDA,KAAK5c,OAAOy9B,GAAGN,GAAoBvgB,KAAKwgB,cAAexgB,MACvDA,KAAK5c,OAAOy9B,GAAG14B,GAAmB6X,KAAK0d,aAAc1d,MACrDA,KAAK5c,OAAOy9B,GAAGj6B,GAAeoZ,KAAK0yC,cAAe1yC,MAClDA,KAAK5c,OAAOy9B,GAAGrB,GAAmBxf,KAAKyf,aAAczf,MACrDA,KAAK5c,OAAOy9B,GAAG1f,GAAsBnB,KAAK0f,gBAAiB1f,MAC3DA,KAAK5c,OAAOy9B,GAAGvB,GAAqBtf,KAAKuf,kBAAmBvf,MAC5DA,KAAK5c,OAAOy9B,GAAG5gB,GAAmBD,KAAKwd,aAAcxd,MACrDA,KAAK5c,OAAOy9B,GAAGxkB,GAAkB2D,KAAKyd,YAAazd,MACnDA,KAAK5c,OAAOy9B,GAAGzB,GAAqBpf,KAAKsd,eAAgBtd,MACzDA,KAAK5c,OAAOy9B,GAAGlB,GAAmB3f,KAAK2d,aAAc3d,MACrDA,KAAK5c,OAAOy9B,GAAG3kB,GAAkB8D,KAAK6d,cAAe7d,MACrDA,KAAK5c,OAAOy9B,GAAGxB,GAAiBrf,KAAKge,WAAYhe,MACjDA,KAAK5c,OAAOy9B,GAAG/xB,GAAmBkR,KAAK+xC,aAAc/xC,MACrDA,KAAK5c,OAAOy9B,GAAGt4B,GAAgByX,KAAK6d,cAAe7d,MACnDA,KAAK5c,OAAOy9B,GAAGD,GAAkB5gB,KAAK6d,cAAe7d,MACrDA,KAAK5c,OAAOy9B,GAAGpwB,GAAkBuP,KAAKkzC,YAAalzC,MACnDA,KAAK5c,OAAOy9B,GAAG3J,GAAmBlX,KAAKke,aAAcle,MACrDA,KAAK5c,OAAOy9B,GAAGjB,GAAsB5f,KAAKme,gBAAiBne,MAC3DA,KAAK5c,OAAOy9B,GAAGhB,GAAqB7f,KAAK0e,eAAgB1e,MACzDA,KAAK5c,OAAOy9B,GAAG76B,GAAmBga,KAAKif,aAAcjf,MACrDA,KAAK5c,OAAOy9B,GAAGzlB,GAAyB4E,KAAKsjC,mBAAoBtjC,MACjEA,KAAK5c,OAAOy9B,GAAGzmB,GAAsB4F,KAAK4e,gBAAiB5e,MAC3DA,KAAK5c,OAAOy9B,GAAGpmB,GAAqBuF,KAAK6e,eAAgB7e,MACzDA,KAAK5c,OAAOy9B,GAAGruB,GAAiBwN,KAAKqgB,WAAYrgB,MACjDA,KAAK5c,OAAOy9B,GAAGz8B,GAAoB4b,KAAKsgB,cAAetgB,MACvDA,KAAK5c,OAAOy9B,GAAGf,GAAqB9f,KAAK+f,eAAgB/f,MACzDA,KAAK5c,OAAOy9B,GAAGX,GAAkBlgB,KAAKmzC,uBAAwBnzC,MAC9DA,KAAK5c,OAAOy9B,GAAGb,GAAuBhgB,KAAKkyC,gBAAiBlyC,MAC5DA,KAAK5c,OAAOy9B,GAAGJ,GAAsBzgB,KAAK+e,gBAAiB/e,MAC3DA,KAAK5c,OAAOy9B,GAAG9tB,GAAiBiN,KAAK0gB,WAAY1gB,MACjDA,KAAK5c,OAAOy9B,GAAGF,GAA4B3gB,KAAKgf,sBAAuBhf,OAE3EqrC,EAAY7iC,UAAUyO,oBAAsB,WACxCjX,KAAK5c,OAAO+7B,IAAItvB,GAAoBmQ,KAAKmd,eACzCnd,KAAK5c,OAAO+7B,IAAIuM,GAAgB1rB,KAAKwQ,SACrCxQ,KAAK5c,OAAO+7B,IAAIx4B,GAAqBqZ,KAAKuc,gBAC1Cvc,KAAK5c,OAAO+7B,IAAInjB,GAAoBgE,KAAK6d,eACzC7d,KAAK5c,OAAO+7B,IAAI1uB,GAAkBuP,KAAKkzC,aACvClzC,KAAK5c,OAAO+7B,IAAIxjB,GAAkBqE,KAAKod,aACvCpd,KAAK5c,OAAO+7B,IAAIh3B,GAAmB6X,KAAK0d,cACxC1d,KAAK5c,OAAO+7B,IAAIv4B,GAAeoZ,KAAK0yC,eACpC1yC,KAAK5c,OAAO+7B,IAAIK,GAAmBxf,KAAKyf,cACxCzf,KAAK5c,OAAO+7B,IAAIhe,GAAsBnB,KAAK0f,iBAC3C1f,KAAK5c,OAAO+7B,IAAIG,GAAqBtf,KAAKuf,mBAC1Cvf,KAAK5c,OAAO+7B,IAAIQ,GAAmB3f,KAAK2d,cACxC3d,KAAK5c,OAAO+7B,IAAIjjB,GAAkB8D,KAAK6d,eACvC7d,KAAK5c,OAAO+7B,IAAIyB,GAAkB5gB,KAAK6d,eACvC7d,KAAK5c,OAAO+7B,IAAIE,GAAiBrf,KAAKge,YACtChe,KAAK5c,OAAO+7B,IAAIrwB,GAAmBkR,KAAK+xC,cACxC/xC,KAAK5c,OAAO+7B,IAAI52B,GAAgByX,KAAK6d,eACrC7d,KAAK5c,OAAO+7B,IAAIjI,GAAmBlX,KAAKke,cACxCle,KAAK5c,OAAO+7B,IAAIS,GAAsB5f,KAAKme,iBAC3Cne,KAAK5c,OAAO+7B,IAAIU,GAAqB7f,KAAK0e,gBAC1C1e,KAAK5c,OAAO+7B,IAAIlf,GAAmBD,KAAKwd,cACxCxd,KAAK5c,OAAO+7B,IAAI9iB,GAAkB2D,KAAKyd,aACvCzd,KAAK5c,OAAO+7B,IAAIn5B,GAAmBga,KAAKif,cACxCjf,KAAK5c,OAAO+7B,IAAI/jB,GAAyB4E,KAAKsjC,oBAC9CtjC,KAAK5c,OAAO+7B,IAAI/kB,GAAsB4F,KAAK4e,iBAC3C5e,KAAK5c,OAAO+7B,IAAI1kB,GAAqBuF,KAAK6e,gBAC1C7e,KAAK5c,OAAO+7B,IAAI3sB,GAAiBwN,KAAKqgB,YACtCrgB,KAAK5c,OAAO+7B,IAAI/6B,GAAoB4b,KAAKsgB,eACzCtgB,KAAK5c,OAAO+7B,IAAI5qB,GAAiByL,KAAKub,YACtCvb,KAAK5c,OAAO+7B,IAAIC,GAAqBpf,KAAKsd,gBAC1Ctd,KAAK5c,OAAO+7B,IAAIoB,GAAoBvgB,KAAKwgB,eACzCxgB,KAAK5c,OAAO+7B,IAAIW,GAAqB9f,KAAK+f,gBAC1C/f,KAAK5c,OAAO+7B,IAAIe,GAAkBlgB,KAAKmzC,wBACvCnzC,KAAK5c,OAAO+7B,IAAIa,GAAuBhgB,KAAKkyC,iBAC5ClyC,KAAK5c,OAAO+7B,IAAIsB,GAAsBzgB,KAAK+e,iBAC3C/e,KAAK5c,OAAO+7B,IAAIpsB,GAAiBiN,KAAK0gB,YACtC1gB,KAAK5c,OAAO+7B,IAAIwB,GAA4B3gB,KAAKgf,wBAErDqsB,EAAY7iC,UAAUkX,gBAAkB,WAAc1f,KAAKsrC,aAAc,GAEzED,EAAY7iC,UAAUuX,eAAiB,SAAU95B,GACzC+Z,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,kBAClCxb,KAAK5c,OAAOgD,UAAY4Z,KAAK9Y,QAAQksD,WAAWntD,EAAKqO,QAAQm+C,WAGrEpH,EAAY7iC,UAAU0qC,YAAc,WAC5BlzC,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,kBAClCxb,KAAK5c,OAAOgD,SAAuC,KAA3B4Z,KAAK5c,OAAOmN,WAAqByP,KAAK9Y,QAAQorD,sBACjEjsD,EAAc2Z,KAAK5c,WAGhCioD,EAAY7iC,UAAUgY,cAAgB,WAC9BxgB,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,kBACO,IAArCxb,KAAK5c,OAAO8B,cAAc/C,OAC1B6d,KAAK5c,OAAOgD,SAAW4Z,KAAK9Y,QAAQorD,qBAGpCtyC,KAAK5c,OAAOgD,UAAYlF,WAAS8e,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAAI6d,KAAK5c,OAAOG,aAI5G8nD,EAAY7iC,UAAUmS,WAAa,SAAU10B,GACzC,IACIm1B,EADan1B,EAAKk1B,OAAO7mB,OACL3O,QAAQ,YAChC,IAAKy1B,EACD,OAAO,KAEX,IAAIxwB,EACAwwB,EAAOoS,uBAAuB,aAAa,GAC3C5iC,EAAOoV,KAAK5c,OAAO1B,MAAQse,KAAK9Y,QAAQksD,WAAWh4B,GAAQq3B,QAAQtxD,GAAKi6B,EAAOoS,uBAAuB,aAAa,GAAGvF,UAEjH7M,EAAOoS,uBAAuB,4BAA4B,GAAGhyB,qBAClE5Q,EAAOoV,KAAK5c,OAAO1B,MAAQse,KAAK9Y,QAAQksD,WAAWh4B,GAAQq3B,QAAQtxD,GAAKi6B,EAAOoS,uBAAuB,4BAA4B,GAAGhyB,mBAAmBysB,WAExJ7M,IAAWA,EAAOjvB,cAAc,cAChC6T,KAAK6wC,eAAejmD,IAExBnG,EAAUub,KAAK5c,OAAQg4B,GACvBpb,KAAK5c,OAAOe,kBACZ6b,KAAK5c,OAAOkO,YAEZ0O,KAAK5c,OAAOkO,SAAW0O,KAAK9Y,QAAQorD,qBACpC,IAAIe,EAUJ,OAToC,IAAhCrzC,KAAK5c,OAAOkO,SAASnP,QAAgBi5B,IACrCi4B,EAAUrzC,KAAK9Y,QAAQksD,WAAWh4B,IAElCi4B,GACArzC,KAAK5c,OAAOkO,SAASjP,KAAKgxD,EAAQZ,SAEtCzyC,KAAK5c,OAAO4N,SAAWgP,KAAK5c,OAAO5B,KACnCwe,KAAK5c,OAAOe,eAAiB6b,KAAK9Y,QAAQosD,kBAC1CpgD,GAAyB8M,KAAK5c,QACvB4c,KAAK5c,OAAOsQ,oBAGvB23C,EAAY7iC,UAAU0pC,gBAAkB,WACpC,GAAyB,YAArBlyC,KAAK5c,OAAOoE,OAAuBwY,KAAK5c,OAAOyL,WAAavN,oBAAM0e,KAAK9Y,SAKvE,IAAK,IAHDqsD,EADavzC,KAAK9Y,QAAQ+pD,mBAAmB9kD,cAAc,oBAC3B81C,WAAW3lB,WAAW,GACtDk3B,EAAsBxzC,KAAK9Y,QAAQmqD,aAAallD,cAAc,uBAAuBy+B,SAAS,GAC9F6oB,EAAqBzzC,KAAK9Y,QAAQglD,aAC7BhqD,EAAI,EAAGA,EAAIuxD,EAAmBtxD,OAAQD,MACrC8d,KAAK4rC,aAA+C,SAAhC6H,EAAmBvxD,GAAGkN,OAAqD,eAAhCqkD,EAAmBvxD,GAAGkN,SACvB,KAA5D4Q,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAAiBib,KAAK5c,OAAO4B,WAW3Egb,KAAKje,QAAQ+mC,aAAe,IACQ,SAAhC2qB,EAAmBvxD,GAAGkN,OACtBmkD,EAAmB3oB,SAAS1oC,GAAG40B,aAAa,QAAS,gBACrD08B,EAAoB5oB,SAAS1oC,GAAG40B,aAAa,QAAS,kBAGtDy8B,EAAmB3oB,SAAS1oC,GAAG40B,aAAa,QAAS,gBACrD08B,EAAoB5oB,SAAS1oC,GAAG40B,aAAa,QAAS,iBAGrD9W,KAAKje,QAAQ+mC,YAAc,MAChCyqB,EAAmB3oB,SAAS1oC,GAAG40B,aAAa,QAAS,eACrD08B,EAAoB5oB,SAAS1oC,GAAG40B,aAAa,QAAS,gBAtBtD9W,KAAKje,QAAQ+mC,aAAe,KAC5ByqB,EAAmB3oB,SAAS1oC,GAAG40B,aAAa,QAAS,gBACrD08B,EAAoB5oB,SAAS1oC,GAAG40B,aAAa,QAAS,iBAEjD9W,KAAKje,QAAQ+mC,YAAc,MAChCyqB,EAAmB3oB,SAAS1oC,GAAG40B,aAAa,QAAS,eACrD08B,EAAoB5oB,SAAS1oC,GAAG40B,aAAa,QAAS,kBAuB9Eu0B,EAAY7iC,UAAU2qC,uBAAyB,WAC3CnzC,KAAKkyC,kBACoB,YAArBlyC,KAAK5c,OAAOoE,MAAuBwY,KAAK5c,OAAOyL,UAAavN,oBAAM0e,KAAK9Y,UACvE8Y,KAAKwY,gBAGb6yB,EAAY7iC,UAAU0Q,cAAgB,WAClC,IAAIkB,EAAQpa,KACRA,KAAK9Y,UACD8Y,KAAK5c,OAAOuR,kBACRqL,KAAKtL,SACLsL,KAAKtL,QAAQ8b,UAEjBxQ,KAAKtL,QAAU,IAAI2lB,YAAUra,KAAK9Y,QAAQnF,SACtC64B,SAAU5a,KAAK5c,OAAOy3B,mBACtBN,SAAU,EACVD,gBAAgB,EAChBQ,SAAU9a,KAAK5c,OAAOrB,QACtB04B,WAAY,IAAM/0B,GAClBs1B,KAAMplB,GAAgBmK,KAAKC,KAAMA,KAAK5c,QACtC83B,UAAW,SAAUj1B,GACjBwO,GAAiB2lB,EAAMh3B,OAAQ6C,EAAMm0B,EAAM1lB,UAE/CqmB,SAAUpnB,GAAgBoM,KAAKC,KAAMA,KAAK5c,QAC1Co3B,kBAAkB,EAClBE,OAAQ1a,KAAK2a,WAAW5a,KAAKC,UAG3BA,KAAK5c,OAAOuR,kBAAoBqL,KAAKtL,SAC3CsL,KAAKtL,QAAQ8b,YAIzB66B,EAAY7iC,UAAU+S,WAAa,SAAUt1B,GACzC,GAAI+Z,KAAK5c,OAAO4E,eAAiBgY,KAAKwb,gBAAiB,CAGnD,IAAIE,EAAUx6B,WAAS8e,KAAK5c,OAAOzB,OAAOqe,KAAK5c,OAAOzB,OAAOQ,OAAS,GAAI6d,KAAK5c,OAAOG,UACtF,GAAK0C,EAAKqO,OAAO3O,QAAQ,MAIpB,CAED,IAAIg2B,EAAO,KAEXA,EAAO3b,KAAK9Y,QAAQksD,WAAWntD,EAAKqO,QAAQm+C,QAC5CzyC,KAAK5c,OAAO2N,SAAW4qB,EAAKllB,OAASuJ,KAAK5c,OAAO5B,KAAOiJ,EAAYuV,KAAK5c,OAAQu4B,EAAM3b,KAAK5c,OAAO5B,MACnGwe,KAAK5c,OAAOmO,SAAWoqB,EAAKllB,OAASilB,EAAUC,OAT/C3b,KAAK5c,OAAO2N,SAAWiP,KAAK5c,OAAO5B,KACnCwe,KAAK5c,OAAOmO,SAAWmqB,IAYnC2vB,EAAY7iC,UAAU8X,cAAgB,WAC9BtgB,KAAK5c,OAAOkB,eAAiB0b,KAAKwb,kBAClCxb,KAAK5c,OAAOwB,cAAgBob,KAAK9Y,QAAQorD,qBACzCtyC,KAAK5c,OAAOe,eAAiB6b,KAAK9Y,QAAQosD,oBAGlDjI,EAAY7iC,UAAU6X,WAAa,SAAUp6B,GAChB,YAArB+Z,KAAK5c,OAAOoE,OACZwY,KAAK0T,kBAAmB,EACpB1T,KAAK5c,OAAO5B,OAASwe,KAAK5c,OAAOgW,iBAAmB4G,KAAK5c,OAAO5B,OAASiQ,EAAiBuO,KAAK5c,OAAQ6C,IACvG+Z,KAAK6d,cAAc53B,KAI/BolD,EAAY7iC,UAAUkY,WAAa,SAAUz6B,GAChB,YAArB+Z,KAAK5c,OAAOoE,OACZwY,KAAK0T,kBAAmB,EACxB1T,KAAK6d,cAAc53B,KAS3BolD,EAAY7iC,UAAUgT,cAAgB,WAClC,MAAO,eAEX6vB,EAAY7iC,UAAUgI,QAAU,WACxBxQ,KAAK5c,OAAO87B,cAGhBlf,KAAKiX,sBACDjX,KAAK9Y,UACD8Y,KAAK5c,OAAOgrD,SACZpuC,KAAK9Y,QAAQi4B,IAAI,sBAAuBnf,KAAKquC,qBAEjDruC,KAAKgX,eACLhX,KAAK9Y,QAAQspB,aAGrB66B,EAAY7iC,UAAUoa,WAAa,SAAUr5B,GACzC,IAAIi6B,EAAS3gC,SAAO,IAAMgG,GAAYU,GACtCyW,KAAK5c,OAAOqT,SAASnV,oBAAMkiC,IAG/B6nB,EAAY7iC,UAAU+jC,YAAc,SAAUtoD,EAAQgC,GAClD,IAAIiE,GACAjG,OAAQA,EAAQkG,YAAalE,EAAKlF,KAAM4jB,aAAc3E,KAAKsrC,YAAaz3C,QAAQ,EAAOS,OAAQrO,EAAKqO,QAExG0L,KAAK5c,OAAOoH,QAAQ,gBAAiBN,GACrCjE,EAAK4N,OAAS3J,EAAU2J,QAG5Bw3C,EAAY7iC,UAAUq0B,WAAa,SAAU52C,GACzC+Z,KAAK5c,OAAOkB,aAAe,cACtB0b,KAAK5c,OAAO0C,iBAAkBka,KAAK5c,OAAO4B,YAC3Cgb,KAAK0zC,kBAET1zC,KAAK5c,OAAOU,OAAOsX,OACiC,IAAhD4E,KAAK9Y,QAAQspD,wBAAwBruD,SACrC6d,KAAKwrC,eAAiBxrC,KAAK9Y,QAAQ2qD,kBAEvC7xC,KAAK9Y,QAAQnF,QAAQ+0B,aAAa,WAAY,MAC9C9W,KAAKojB,cAAc,SAAUn9B,GAC7B,IAAIsD,EAAOyW,KAAK9Y,QAAQysD,cAAc3zC,KAAK9Y,QAAQ2qD,kBAEnD,GADA7xC,KAAK4iB,WAAWr5B,IACXjI,oBAAMiI,KAAUjI,oBAAMiI,EAAK4C,cAAc,mBAAoB,CAC9D,GAAoD,IAAhD6T,KAAK9Y,QAAQspD,wBAAwBruD,OAAc,CACnD,IAAIujD,EAAgB1lC,KAAK9Y,QAAQspD,wBAAwBxwC,KAAK9Y,QAAQspD,wBAAwBruD,OAAS,GACxF6d,KAAK9Y,QAAQysD,cAAcjO,GACjCv5C,cAAc,kBAAkB2qB,aAAa,WAAY,MAEtEvtB,EAAK4C,cAAc,4BAA4B2vB,gBAAgB,YAE9Dx6B,oBAAM0e,KAAK9Y,UAAa5F,oBAAM0e,KAAK9Y,QAAQnF,QAAQoK,cAAc,uBAClE6T,KAAK9Y,QAAQnF,QAAQoK,cAAc,qBAAqB2qB,aAAa,WAAY,MAErF,IAAIy5B,EAAOvwC,KAAK9Y,QAAQspD,wBACxB,IAAKxwC,KAAK5c,OAAO89B,oBACb,IAAK,IAAIh/B,EAAI,EAAGA,EAAIquD,EAAKpuD,OAAQD,IACzBquD,EAAKruD,KAAO8d,KAAK9Y,QAAQ2qD,iBACzB7xC,KAAK9Y,QAAQysD,cAAcpD,EAAKruD,IAAI40B,aAAa,WAAY,KAG7D9W,KAAK9Y,QAAQysD,cAAcpD,EAAKruD,IAAI45B,gBAAgB,YAIhE,IAAIluB,EAAM2iD,EAAKpuD,OACf,GAAI6d,KAAK5c,OAAOm1B,qBACZvY,KAAK5c,OAAOoT,gBAAkBtV,WAAS,OAAQ+E,EAAKlF,WAEnD,GAAI6M,EAAM,EAAG,CAEd,IAAI7M,EAAOif,KAAK9Y,QAAQwpD,gBAAgBH,EAAK3iD,EAAM,IAAI7M,KACvDif,KAAK5c,OAAOoT,gBAAkBtV,WAAS,OAAQH,GAEnD,IAAIy7B,EAAUt7B,WAAS,aAAc+E,GACjCy8B,EAAcxhC,WAAS,yBAA0B8e,KAAK9Y,QAAQ0rD,iBAC9D5yC,KAAK5c,OAAOg/B,UAAY9gC,oBAAMk7B,IAAYv2B,EAAKqO,SAAWouB,IAAgBz8B,EAAKqO,OAAO3O,QAAQ,mBAC9Fqa,KAAK5c,OAAOqT,OAASvV,WAAS,SAAU+E,EAAKlF,MACxCif,KAAK5c,OAAOqT,QACbuJ,KAAKuyC,YAAYtsD,EAAKlF,OAG9Bif,KAAK5c,OAAOszB,YAAczwB,EAAK2pD,IACzB5vC,KAAK5c,OAAOm1B,sBAA2BtyB,EAAK2tD,yBAC9C5zC,KAAKmjB,SAASnjB,KAAK9Y,QAAQ2qD,kBAE1B7xC,KAAK5c,OAAO0C,iBACbka,KAAK2E,cAAe,IAI5B0mC,EAAY7iC,UAAUyW,aAAe,WACR,YAArBjf,KAAK5c,OAAOoE,MAAuBlG,oBAAM0e,KAAK9Y,UACkB,KAA5D8Y,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,OAAiBib,KAAK5c,OAAO4B,YAC/Egb,KAAKoyC,kBAAiB,IAIlC/G,EAAY7iC,UAAUkrC,gBAAkB,WACpC1zC,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GAIjD,IAFA,IAAIwuD,EAAkB1zC,KAAK6zC,kBACvBC,EAAa,EACVA,EAAaJ,EAAgBvxD,QAAQ,CACxC,IAAI4xD,EAASL,EAAgBI,GACzBE,EAAS7gD,GAAY6M,KAAK5c,OAAQ2wD,GACtC/zC,KAAK5c,OAAO8B,cAAc7C,KAAK2xD,GAC/BF,IAEJ9zC,KAAK5c,OAAO7B,eAAgB2D,cAAe8a,KAAK5c,OAAO8B,gBAAiB,IAE5EmmD,EAAY7iC,UAAUmkC,cAAgB,SAAU1mD,GAE5C,IAAK+Z,KAAK5c,OAAO89B,qBAAuB5/B,oBAAM2E,EAAKlF,MAC/Cif,KAAK9Y,QAAQysD,cAAc1tD,EAAKusD,UAAU12B,gBAAgB,iBAEzD,GAAI9b,KAAK9Y,QAAQspD,wBAAwBruD,OAAS,EAAG,CACtD,IAAIujD,EAAgB1lC,KAAK9Y,QAAQspD,wBAAwBxwC,KAAK9Y,QAAQspD,wBAAwBruD,OAAS,GACvG6d,KAAK9Y,QAAQysD,cAAcjO,GAAev5C,cAAc,kBAAkB2vB,gBAAgB,aAEvD,IAAnC9b,KAAK9Y,QAAQ2qD,kBACb7xC,KAAK9Y,QAAQnF,QAAQ+0B,aAAa,WAAY,KAE7C9W,KAAK2E,cAIV3E,KAAK0zC,kBACoC,IAArC1zC,KAAK5c,OAAO8B,cAAc/C,SAC1B0L,WAAS,0BAA0B,EAAOmS,KAAK9Y,QAAQ0rD,iBACvDvvB,eAAarjB,KAAK5c,OAAOrB,SAAU4gC,KAEvC3iB,KAAK5c,OAAOU,OAAOsX,OACnB4E,KAAKojB,cAAc,WAAYn9B,GAC/B+Z,KAAK5c,OAAOszB,YAAc,MAVtB1W,KAAK2E,cAAe,GAY5B0mC,EAAY7iC,UAAU4a,cAAgB,SAAUn/B,EAAQgC,GACpD,IAAIiE,GAAcjG,OAAQA,EAAQkG,YAAalE,EAAKlF,KAAM4jB,aAAc3E,KAAKsrC,aAC7EtrC,KAAK5c,OAAOoH,QAAQ,aAAcN,GAClC8V,KAAKsrC,aAAc,GAEvBD,EAAY7iC,UAAUkR,WAAa,WAC/B1Z,KAAKmhB,gBAAe,GACpBnhB,KAAKohB,eAAiB,IAAIC,iBAAerhB,KAAK9Y,QAAQnF,SAClDu/B,UAAWthB,KAAKi0C,aAAal0C,KAAKC,MAClC8T,WAAY9T,KAAK8T,WACjBlkB,UAAW,UAEfoQ,KAAKwhB,mBAAqB,IAAIH,iBAAerhB,KAAKje,SAC9Cu/B,UAAWthB,KAAKk0C,eAAen0C,KAAKC,MACpC8T,WAAY9T,KAAK8T,WACjBlkB,UAAW,YAEf8xB,eAAat8B,IAAI4a,KAAK9Y,QAAQnF,QAAS,OAAQie,KAAKm0C,YAAan0C,MACjE0hB,eAAat8B,IAAI4a,KAAK5c,OAAOrB,QAAS,WAAYie,KAAK0pB,OAAQ1pB,OAEnEqrC,EAAY7iC,UAAUwO,aAAe,WACjChX,KAAKmhB,gBAAe,GACpBnhB,KAAKohB,eAAe5Q,UACpBxQ,KAAKwhB,mBAAmBhR,UACxBkR,eAAaj8B,OAAOua,KAAK9Y,QAAQnF,QAAS,OAAQie,KAAKm0C,aACvDzyB,eAAaj8B,OAAOua,KAAK5c,OAAOrB,QAAS,WAAYie,KAAK0pB,SAE9D2hB,EAAY7iC,UAAU2Y,eAAiB,SAAUU,GAC7C,GAAIA,EAAQ,CAER,IAAIC,EAAU9hB,KACVzM,EAAMyM,KAAK9Y,QAAQmqD,aACvBrxC,KAAK+hB,SAAW,IAAIC,QAAMzuB,GACtB0uB,IAAK,SAAUC,GACU,IAAjBA,EAAI1O,UAAkB0O,EAAIC,cAAc7tB,OAAOtR,UAAUC,SAAS,cAClE6+B,EAAQpD,kBAGhB+D,QAAS,SAAUhlB,GACf,GAAIqkB,EAAQ1+B,OAAOg/B,SAAU,CACzB3kB,EAAE0kB,cAActc,iBACZic,EAAQ1+B,OAAO89B,sBACfrzB,WAAS,yBAA0Bi0B,EAAQ1+B,OAAO89B,oBAAqBY,EAAQ56B,QAAQ0rD,iBACvFh/B,YAAUkO,EAAQ1+B,OAAOrB,SAAU4gC,KAEvC,IAAIruB,EAASmJ,EAAE0kB,cAAc7tB,OAC7B,GAAIA,EAAQ,CACR,IAAIs7C,EAAMjqD,UAAQ2O,EAAQ,IAAM5O,IAC5B4a,EAAQwhB,EAAQ56B,QAAQ4rD,UAAU9pD,QAAQ4mD,GAC9C9tB,EAAQ56B,QAAQ6rD,UAAUzyC,aAOtCN,KAAK+hB,UACL/hB,KAAK+hB,SAASvR,WAK1B66B,EAAY7iC,UAAUwqC,gBAAkB,WACpC3vB,eAAarjB,KAAK5c,OAAOrB,SAAU4gC,IACnC3iB,KAAK9Y,QAAQy3B,iBACb3e,KAAK5c,OAAO7B,eAAgB2D,mBAAqB,GACjD8a,KAAK5c,OAAOU,OAAOsX,QACoB,IAAnC4E,KAAK9Y,QAAQ2qD,mBACb7xC,KAAKgjB,WAAa,MAEtBhjB,KAAK2E,cAAe,GAExB0mC,EAAY7iC,UAAU2rC,YAAc,WAChCn0C,KAAKmjB,SAAS,OAElBkoB,EAAY7iC,UAAUkhB,OAAS,SAAUjsB,GACrC,IAAyB,OAApBA,EAAE22C,eAA0BzuD,UAAQ8X,EAAE22C,cAAe,aAAe32C,EAAE22C,iBAGtE9yD,oBAAM0e,KAAK9Y,QAAQnF,SAEpB,IAAK,IADDsyD,EAAar0C,KAAK9Y,QAAQnF,QAAQwD,iBAAiB,MAC9CrD,EAAI,EAAGA,EAAImyD,EAAWlyD,OAAQD,IAC/BmyD,EAAWnyD,GAAGc,UAAUC,SAAS,YACjC+c,KAAKmjB,SAAS,OAK9BkoB,EAAY7iC,UAAU8rC,oBAAsB,WACxC,OAAShzD,oBAAM0e,KAAK0jB,kBACoD,KAApE4B,SAAStlB,KAAK0jB,iBAAiBtiC,aAAa,iBAAkB,KAItEiqD,EAAY7iC,UAAU0rC,eAAiB,SAAUz2C,GAC7C,GAAKuC,KAAKuT,WAGV,OAAQ9V,EAAExZ,QACN,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,MACL,IAAK,MACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,KACL,IAAK,WACL,IAAK,SACL,IAAK,QACDwZ,EAAEoI,mBAQdwlC,EAAY7iC,UAAUyrC,aAAe,SAAUx2C,GAC3C,GAAKuC,KAAKuT,WAAV,CAGA9V,EAAEoI,iBACF,IASI4sC,EACA9uB,EACAtF,EAXAp6B,EAASwZ,EAAExZ,OAEXswD,EAAY1pD,EAAcmV,KAAK5c,OAAQ4c,KAAK9Y,QAAQC,YACpDqtD,EAAaD,EAAUpyD,OAEvBsyD,GADUz0C,KAAK0jB,iBACJ1jB,KAAKs0C,uBAChBI,EAAW10C,KAAK9Y,QAAQ2qD,iBACxB8C,EAAgB30C,KAAK9Y,QAAQspD,wBAKjC,OAAQvsD,GACJ,IAAK,WACD+b,KAAK5c,OAAOU,OAAOy8B,OACnBhnB,GAAWyG,KAAK5c,OAAQ4c,KAAK5c,OAAO8B,cAAe8a,KAAK5c,OAAO5B,KAAM,WACrE,MACJ,IAAK,MACDgC,EAAawc,KAAK5c,QAClB,MACJ,IAAK,MACL,IAAK,WACD4c,KAAK2kB,gBACL,MACJ,IAAK,QACD,IAAuC,IAAnC3kB,KAAK9Y,QAAQ2qD,mBAAyD,IAA9B7xC,KAAK9Y,QAAQmlD,aAAuB,CAC5E,IAAK5uC,EAAEnJ,OAAOtR,UAAUC,SAAS,kBAAmB,CAChD,IAAImpD,EAAa3uC,EAAEnJ,OAAOk5B,uBAAuB,eAAerrC,OAAuB,aAAd,YACrEyyD,EAAe50C,KAAK9Y,QAAQ2tD,eAAep3C,EAAEnJ,OAAOnI,cAAc,oBAAoB/K,aAAa,iBAAiBgO,MACxH4Q,KAAK9Y,QAAQorB,WAAWsiC,EAAcxI,GACjC9qD,oBAAM0e,KAAK0jB,iBAAiBoxB,cAC7B90C,KAAK0jB,iBAAiBoxB,YAAYh+B,aAAa,WAAY,KAGnE,MAGJ,GADA27B,EAAUzyC,KAAK9Y,QAAQwpD,gBAAgB1wC,KAAK9Y,QAAQ2qD,kBAAkB9wD,KACzD,CAET,IAAIA,EAAO+Y,KAAKU,MAAMV,KAAKC,UAAU04C,IACrCzyC,KAAKuyC,YAAYxxD,GAErB,MACJ,IAAK,QACDyH,EAAUwX,KAAK5c,QACf,MACJ,IAAK,QACD4c,KAAK5c,OAAOmN,WAAa,GACzBF,EAAa2P,KAAK5c,QAClB,MACJ,IAAK,QACDsF,EAASsX,KAAK5c,QACd,MACJ,IAAK,QACD4c,KAAKlJ,aACL,MACJ,IAAK,KACDkJ,KAAK4kB,gBACL,MACJ,IAAK,QACD,IAAKtjC,oBAAMizD,EAAU,KAAOv0C,KAAK5c,OAAO89B,oBAAqB,CACzD,IAAIkwB,EAAUpxC,KAAK9Y,QAAQmqD,aAAallD,cAAc,cAClD4oD,EAAY3D,EAAQrtB,UACpBixB,EAAgBh1C,KAAK9Y,QAAQ2qD,iBACjC7xC,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkB,EAAG0B,EAAUpyD,OAAS,GACrEivD,EAAQrtB,UAAYgxB,GACG,IAAnBC,GACAh1C,KAAKmjB,SAAS6xB,GAGtB,MACJ,IAAK,WACL,IAAK,MACD,IAAK1zD,oBAAMizD,EAAU,IACjB,GAAKv0C,KAAK5c,OAAO89B,qBAAoC,aAAbzjB,EAAExZ,OAGrC,CAAA,IAAuC,IAAnC+b,KAAK9Y,QAAQ2qD,kBAAwC,QAAbp0C,EAAExZ,OAC/C,OAGA+b,KAAKi1C,eAAex3C,QANpBuC,KAAK9Y,QAAQ6rD,UAAU,GAS/B,MACJ,IAAK,UACIzxD,oBAAMizD,EAAU,MACZv0C,KAAK5c,OAAO89B,oBAIblhB,KAAKmjB,SAASqxB,EAAa,GAH3Bx0C,KAAK9Y,QAAQ6rD,UAAUyB,EAAa,IAM5C,MACJ,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,QACIx0C,KAAK5c,OAAO89B,oBAIR5/B,oBAAMizD,EAAU,MACZjzD,oBAAMozD,KAA2B,IAAdA,EAIH,WAAbj3C,EAAExZ,QAAoC,cAAbwZ,EAAExZ,OAC3B+b,KAAK9Y,QAAQ6rD,UAAU,GAGvB/yC,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkB,EAAG0B,EAAUpyD,OAAS,GAPzE6d,KAAKk1C,aAAaX,EAAWG,EAAU,KAAMj3C,IALrDuC,KAAK9Y,QAAQ6rD,UAAwB,cAAbt1C,EAAExZ,QAAuC,WAAbwZ,EAAExZ,OAAuB,EAAIswD,EAAUpyD,OAAS,GAiBxG,MACJ,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,YACD6d,KAAKm1C,eAAeR,EAAeF,EAAUC,EAAUj3C,GACvD,MACJ,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,YACDuC,KAAKo1C,gBAAgBb,EAAWG,EAAUD,EAAUE,EAAel3C,GACnE,MACJ,IAAK,SACL,IAAK,WACIuC,KAAK5c,OAAO89B,oBAIblhB,KAAKq1C,iBAAiBd,EAAW92C,EAAGi3C,GAHpC10C,KAAKs1C,aAAaf,EAAW92C,EAAGi3C,GAKpC,MACJ,IAAK,OACD/wB,GAAaziC,WAAS8e,KAAK5c,OAAO1B,MAAQ,KAAO,OAAQ6yD,EAAU,KACnEv0C,KAAK5c,OAAO7B,eAAgB2D,cAAey+B,IAAa,GACxD3jB,KAAK6wC,cAAcltB,GACnB,MACJ,IAAK,SACL,IAAK,WACD3jB,KAAKs1C,aAAaf,EAAW92C,EAAGi3C,GAChC,MACJ,IAAK,MACDr2B,GAAYn9B,WAAS8e,KAAK5c,OAAO1B,MAAQ,KAAO,OAAQ6yD,EAAUC,EAAa,KAC/Ex0C,KAAK5c,OAAO7B,eAAgB2D,cAAem5B,IAAY,GACvDre,KAAK6wC,cAAcxyB,MAK/BgtB,EAAY7iC,UAAUqrC,gBAAkB,WACpC,OAAO7zC,KAAK9Y,QAAQorD,sBAExBjH,EAAY7iC,UAAU1R,WAAa,WAC/B,GAAyC,IAArCkJ,KAAK5c,OAAO8B,cAAc/C,OAAc,CACxC6d,KAAK5c,OAAOgD,SAAW4Z,KAAK9Y,QAAQorD,qBAGpC,IAAK,IADDxnD,EAAQkV,KAAK5c,OAAOgD,SACflE,EAAI,EAAGA,EAAI4I,EAAM3I,OAAQD,IAC9B,IAAK6U,GAAkBjM,EAAM5I,IAEzB,YADAkG,GAAmB4X,KAAK5c,OAAQ0H,EAAM5I,GAAI8U,IAIlDC,GAAS+I,KAAK5c,OAAQ4c,KAAK5c,OAAO5B,KAAMwe,KAAK5c,OAAO8B,iBAG5DmmD,EAAY7iC,UAAUmc,cAAgB,WAClC,GAAI3kB,KAAK5c,OAAO8B,eAAiB8a,KAAK5c,OAAO8B,cAAc/C,OAAS,EAAG,CACnE6d,KAAK5c,OAAOgD,SAAW4Z,KAAK9Y,QAAQorD,qBAGpC,IAAK,IADDxnD,EAAQkV,KAAK5c,OAAOgD,SACflE,EAAI,EAAGA,EAAI4I,EAAM3I,OAAQD,IAC9B,IAAK0U,GAAc9L,EAAM5I,IAErB,YADAkG,GAAmB4X,KAAK5c,OAAQ0H,EAAM5I,GAAI2U,IAIlDlG,GAAaqP,KAAK5c,OAAQ,YAGlCioD,EAAY7iC,UAAUoc,cAAgB,WACO,IAArC5kB,KAAK5c,OAAO8B,cAAc/C,SAC1B6d,KAAK4d,mBACLjnB,GAASqJ,KAAK5c,UAGtBioD,EAAY7iC,UAAUoV,iBAAmB,WAErC,IAAI78B,EAAOif,KAAK6zC,kBAAkB,GAClCt9C,GAAmByJ,KAAK5c,OAAQrC,IAGpCsqD,EAAY7iC,UAAU4sC,gBAAkB,SAAUb,EAAWG,EAAUD,EAAUE,EAAel3C,GACvFuC,KAAK5c,OAAO89B,qBAIK,IAAdwzB,GAAiC,SAAbj3C,EAAExZ,QAAkC,WAAbwZ,EAAExZ,QAG1B,IAAdywD,GAAmBD,IAAaC,IACrB,SAAbj3C,EAAExZ,QAAkC,WAAbwZ,EAAExZ,SAAwB+b,KAAKu1C,WAAWZ,EAAeF,GAInFz0C,KAAKw1C,kBAAkBd,EAAUC,EAAeJ,EAAW92C,GAH3DuC,KAAKy1C,qBAAqBf,EAAUD,EAAUE,EAAel3C,GAJ7DuC,KAAKq1C,iBAAiBd,EAAW92C,EAAGi3C,GAJxC10C,KAAKs1C,aAAaf,EAAW92C,EAAGi3C,IAgBxCrJ,EAAY7iC,UAAU8sC,aAAe,SAAUpwD,EAAeuY,EAAG+0C,IACxDlxD,oBAAM0e,KAAK0jB,mBAAqB1jB,KAAK5c,OAAO89B,oBAC5B,aAAbzjB,EAAExZ,OACF+b,KAAK9Y,QAAQ6rD,UAAU/yC,KAAKs0C,sBAAwB,GAGpDt0C,KAAK9Y,QAAQ6rD,UAAU/yC,KAAKs0C,sBAAwB,GAGlDhzD,oBAAMkxD,KAA2B,IAAdA,EASpBlxD,oBAAM4D,EAAc,KACrB8a,KAAK9Y,QAAQ6rD,UAAU,GATV,aAAbt1C,EAAExZ,QAAsC,aAAbwZ,EAAExZ,QAAsC,cAAbwZ,EAAExZ,QAAuC,WAAbwZ,EAAExZ,OACpF+b,KAAK9Y,QAAQ6rD,UAAUP,GAAaA,IAAattD,EAAc/C,OAAS,EAAK,EAAI,IAGjF6d,KAAK9Y,QAAQ6rD,UAAUP,GAA0B,IAAbA,EAAkB,EAAI,KAStEnH,EAAY7iC,UAAU2sC,eAAiB,SAAUR,EAAeF,EAAUC,EAAUj3C,GAChF,GAAKuC,KAAKu1C,WAAWZ,EAAeF,KAA2B,IAAdC,GAAiC,eAAbj3C,EAAExZ,QAAwC,YAAbwZ,EAAExZ,OAQ/F,GAAK3C,oBAAM0e,KAAK0jB,mBAAqB+wB,IAAaC,EAIlD,IAAkB,IAAdA,GAAgC,cAAbj3C,EAAExZ,QAA0B+b,KAAK5c,OAAO89B,oBAAqB,CACrF,IAAI2E,EAAQ6uB,EACZC,EAAct5C,MACd2E,KAAK9Y,QAAQgnC,WAAWymB,GACxB30C,KAAKmjB,SAAS0C,OAEI,eAAbpoB,EAAExZ,QACP+b,KAAK9Y,QAAQ6rD,UAAU2B,QAVvBC,EAActyD,KAAK2d,KAAKs0C,uBACxBt0C,KAAK9Y,QAAQgnC,WAAWymB,QATpBF,EAAWC,EACX10C,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkB4B,EAAUC,GAGzD10C,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkB6B,EAAUD,IAkBrEpJ,EAAY7iC,UAAU6sC,iBAAmB,SAAUvqD,EAAO2S,EAAG+0C,GACzD,IAAIptB,EACJ,GAAK9jC,oBAAM0e,KAAK0jB,kBAKNpiC,oBAAMkxD,KAA2B,IAAdA,EAKpBlxD,oBAAMwJ,EAAM,MACbs6B,EAAW,GALfA,EAAyB,aAAb3nB,EAAExZ,QAAsC,WAAbwZ,EAAExZ,OACrCuuD,GAAaA,EAAW1nD,EAAM3I,OAAU,EAAI,GAAKqwD,GAAaA,EAAW,EAAK,EAAI,OAPvD,CAC/B,IAAIkD,EAAY11C,KAAKs0C,sBACrBlvB,EAAyB,aAAb3nB,EAAExZ,QAAsC,WAAbwZ,EAAExZ,OACrCyxD,GAAcA,EAAY5qD,EAAM3I,OAAS,EAAK,EAAI,GAAKuzD,GAAcA,EAAY,EAAK,EAAI,GAWlG11C,KAAKmjB,SAASiC,IAGlBimB,EAAY7iC,UAAU0sC,aAAe,SAAUpqD,EAAO6qD,EAAYlB,EAAUh3C,GACtC,YAA9BuC,KAAK9Y,QAAQ0uD,cAA4D,iBAA9B51C,KAAK9Y,QAAQ0uD,aACvC,WAAbn4C,EAAExZ,QAAoC,UAAbwZ,EAAExZ,QACvB3C,oBAAM0e,KAAKgjB,aAAehjB,KAAKwrC,iBAAmBmK,IAClD31C,KAAKwrC,eAAiBmK,GAET,aAAbl4C,EAAExZ,OACF+b,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkB7yC,KAAKwrC,eAAgB1gD,EAAM3I,OAAS,GAGnF6d,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkB,EAAG7yC,KAAKwrC,gBAE3DxrC,KAAKgjB,WAAa2yB,GAGD,UAAbl4C,EAAExZ,OACF+b,KAAK9Y,QACDgnC,WAAWluB,KAAK61C,WAAWv0D,oBAAMq0D,GAAc,EAAIA,EAAYr0D,oBAAMmzD,GAAY3pD,EAAM3I,OAAS,EAAIsyD,EAAUh3C,IAG9Gnc,oBAAMq0D,GACN31C,KAAK9Y,QAAQ6rD,UAAU,GAGvB/yC,KAAK9Y,QAAQgnC,WAAWluB,KAAK61C,WAAWv0D,oBAAMmzD,GAAY,EAAIA,EAAUkB,EAAYl4C,IAMhGuC,KAAK9Y,QAAQ0rD,gBAAgBG,UAAyB,cAAbt1C,EAAExZ,QAAuC,WAAbwZ,EAAExZ,OAAuB,EAAI6G,EAAM3I,OAAS,IAGzHkpD,EAAY7iC,UAAUqtC,WAAa,SAAUpyB,EAAOoC,EAAOpoB,GACvD,IAAIq4C,EAAU91C,KAAK9Y,QAAQspD,wBAC3B,GAAiB,UAAb/yC,EAAExZ,OACF,IAAK,IAAI/B,EAAIuhC,EAAQ,EAAGvhC,GAAK2jC,EAAO3jC,IAChC4zD,EAAQzzD,KAAKH,QAIjB,IAASA,EAAI2jC,EAAQ,EAAGpC,GAASvhC,EAAGA,IAChC4zD,EAAQzzD,KAAKH,GAGrB,OAAO4zD,GAEXzK,EAAY7iC,UAAUitC,qBAAuB,SAAUf,EAAUqB,EAAQC,EAAev4C,GACpF,IAAIooB,EAAQkwB,GAAwB,cAAbt4C,EAAExZ,QAAuC,WAAbwZ,EAAExZ,OAAuB,GAAK,GAC7Ew/B,EAAQniC,oBAAM0e,KAAKgjB,YAAc0xB,EAAWsB,EAAc,GAC1DvyB,IAAUoC,EACV7lB,KAAK9Y,QAAQ6rD,UAAUtvB,GAGnBA,EAAQoC,EACS,cAAbpoB,EAAExZ,QAAuC,WAAbwZ,EAAExZ,OAC9B+b,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkBpvB,EAAOoC,GAGtD7lB,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkBhtB,EAAOpC,GAGxC,cAAbhmB,EAAExZ,QAAuC,WAAbwZ,EAAExZ,OACnC+b,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkBhtB,EAAOpC,GAGtDzjB,KAAK9Y,QAAQ0rD,gBAAgBC,kBAAkBpvB,EAAOoC,GAG9D7lB,KAAKgjB,WAAahjB,KAAK9Y,QAAQ2qD,kBAEnCxG,EAAY7iC,UAAU2a,SAAW,SAAU55B,GACvC,IAAIk6B,EAAQzjB,KAAK0jB,iBACbuyB,EAAcj2C,KAAK9Y,QAAQysD,cAAcpqD,GACzCk6B,IACAA,EAAM3H,gBAAgB,YACtBuH,eAAaI,IAASoB,GAAWqxB,MAEhC50D,oBAAM20D,KACPj2C,KAAK9Y,QAAQnF,QAAQ+0B,aAAa,WAAY,MAC9Cm/B,EAAYn/B,aAAa,WAAY,KACrCm/B,EAAYr2C,QACZgU,YAAUqiC,IAAepxB,GAAWqxB,OAG5C7K,EAAY7iC,UAAUysC,eAAiB,SAAUx3C,GAC7C,IAAI04C,EAAYtzD,SAAO,SAAUmd,KAAKje,SACtCie,KAAK9Y,QAAQnF,QAAQ+0B,aAAa,WAAY,MAC9C,IAAIs/B,GACC90D,oBAAMmc,EAAEnJ,SAAWmJ,EAAEnJ,OAAOtR,UAAUC,SAAS,oBAChD+c,KAAKmjB,SAAS,GACdizB,EAAY34C,EAAEnJ,OAAOkH,oBAEfla,oBAAM0e,KAAK9Y,QAAQnF,QAAQoK,cAAc,cAA4E,OAA3D6T,KAAK9Y,QAAQnF,QAAQoK,cAAc,YAAYkqD,QAK/GD,EAAYvzD,SAAO,oBAAqBmd,KAAKje,UAJ7Cq0D,EAAYp2C,KAAK9Y,QAAQnF,QAAQoK,cAAc,YAAYqP,mBAC3DwE,KAAKmjB,SAAS,IAKb7hC,oBAAM80D,KACPA,EAAUt/B,aAAa,WAAY,KACnCs/B,EAAUx2C,QACVgU,YAAUwiC,IAAavxB,GAAWqxB,KAClCC,EAAUr/B,aAAa,WAAY,KACR,IAAvBq/B,EAAU9S,UAAyC,IAAvB+S,EAAU/S,UACtChgB,eAAa8yB,IAAatxB,GAAWqxB,OAIjD7K,EAAY7iC,UAAUkb,eAAiB,WACnC,OAAO7gC,SAAO,IAAMqzD,GAAal2C,KAAKje,UAE1CspD,EAAY7iC,UAAU+sC,WAAa,SAAUS,EAAevB,GAExD,IAAK,IADD6B,GAAQ,EACHp0D,EAAI,EAAGA,GAAK8zD,EAAc7zD,OAAS,EAAGD,IAC3C,GAAI8zD,EAAc9zD,KAAOuyD,EAAU,CAC/B6B,GAAQ,EACR,MAGR,OAAOA,GAGXjL,EAAY7iC,UAAUgtC,kBAAoB,SAAUd,EAAUsB,EAAezB,EAAW92C,IAClE,IAAdi3C,EACA10C,KAAK9Y,QAAQ6rD,UAAU,GAGnBzxD,oBAAM0e,KAAKgjB,aAAevlB,EAAEghB,UAC5Bze,KAAKgjB,WAAahjB,KAAK9Y,QAAQ2qD,iBAC/B7xC,KAAK9Y,QAAQgnC,YAAYwmB,EAAwB,cAAbj3C,EAAExZ,QAAuC,WAAbwZ,EAAExZ,OACzDywD,GAAaA,IAAaH,EAAUpyD,OAAS,EAAK,EAAI,GAAOuyD,GAA0B,IAAbA,EAAkB,EAAI,MAGxF,cAAbj3C,EAAExZ,QAAuC,YAAbwZ,EAAExZ,QACb,cAAbwZ,EAAExZ,SAAmE,IAAzC+xD,EAAchtD,QAAQ0rD,EAAW,GACzDA,IAAaH,EAAUpyD,OAAS,GAChC6zD,EAAc3zD,KAAKqyD,EAAW,GAGhB,YAAbj3C,EAAExZ,SAAiE,IAAzC+xD,EAAchtD,QAAQ0rD,EAAW,GAC/C,IAAbA,GACAsB,EAAc3zD,KAAKqyD,EAAW,GAIlCsB,EAAc36C,MAElB2E,KAAK9Y,QAAQgnC,WAAW8nB,IAGP,WAAbv4C,EAAExZ,OACG+b,KAAKu1C,WAAWS,EAAeh2C,KAAKs0C,sBAAwB,GAK7Dt0C,KAAKmjB,SAASnjB,KAAKs0C,sBAAwB,IAJ3C0B,EAAc3zD,KAAM2d,KAAKs0C,sBAAwB,GACjDt0C,KAAK9Y,QAAQgnC,WAAW8nB,IAMtBh2C,KAAKu1C,WAAWS,EAAeh2C,KAAKs0C,sBAAwB,GAKlEt0C,KAAKmjB,SAASnjB,KAAKs0C,sBAAwB,IAJ3C0B,EAAc3zD,KAAM2d,KAAKs0C,sBAAwB,GACjDt0C,KAAK9Y,QAAQgnC,WAAW8nB,KAU5C3K,EAAY7iC,UAAUiX,aAAe,SAAUhiB,GAC3C,GAAyB,YAArBuC,KAAK5c,OAAOoE,KAAhB,CAIA,OADatG,WAAS,SAAUuc,IAE5B,IAAK,cACDuC,KAAK0mB,YAAYxlC,WAAS,MAAOuc,IACjC,MACJ,IAAK,gBACDuC,KAAK2mB,cAAczlC,WAAS,MAAOuc,IACnC,MACJ,IAAK,WACDuC,KAAK4mB,SAAS1lC,WAAS,KAAMuc,IAC7B,MACJ,IAAK,eACDuC,KAAKsrC,aAAc,EACnB,MACJ,IAAK,aACDtrC,KAAKsrC,aAAc,EACnBtrC,KAAK6mB,WAAW3lC,WAAS,KAAMuc,GAAIvc,WAAS,UAAWuc,IACvD,MACJ,IAAK,YACDuC,KAAKsrC,aAAc,EACnBtrC,KAAKme,kBACL,MACJ,IAAK,iBACDne,KAAKsrC,aAAc,EACnBtrC,KAAK0e,oBAKjB2sB,EAAY7iC,UAAU+tC,WAAa,SAAUpxD,GAEzC,IAAIqsD,EAAcxxC,KAAK9Y,QAAQuqD,wBAE3Bx+C,KACAujD,IAAyE,KAA5Dx2C,KAAK5c,OAAOyB,oBAAoBC,UAAU/C,QAAQgD,QAAgBib,KAAK5c,OAAO4B,YAC3F6B,EAASmZ,KAAK5c,OAAO1B,MAAQ,KAAO,OACxC,GAAIse,KAAK5c,OAAO1B,QAAU80D,EACtB,IAAK,IAAIt0D,EAAI,EAAG0L,EAAM4jD,EAAYrvD,OAAQD,EAAI0L,EAAK1L,KACU,IAArDiD,EAAM6D,QAAQ9H,WAAS2F,EAAQ2qD,EAAYtvD,MAC3C+Q,EAAQ5Q,KAAKmvD,EAAYtvD,SAKjC,IAASA,EAAI,EAAG0L,EAAM4jD,EAAYrvD,OAAQD,EAAI0L,EAAK1L,IAAK,CACpD,IAAIu0D,EAASv1D,WAAS,aAAcswD,EAAYtvD,IAAMhB,WAAS,OAAQswD,EAAYtvD,KACpD,IAA3BiD,EAAM6D,QAAQytD,IACdxjD,EAAQ5Q,KAAKmvD,EAAYtvD,IAIrC,OAAO+Q,GAEXo4C,EAAY7iC,UAAUke,YAAc,SAAUtkC,GAE1C,GADA4d,KAAK5c,OAAOkB,aAAe,cACvBhD,oBAAMc,GACN4d,KAAK2kB,oBADT,CAKA,IAAI1xB,EAAU+M,KAAKu2C,WAAWn0D,GAC9B,GAAuB,IAAnB6Q,EAAQ9Q,OAAZ,CAMA,IAAK,IAFDpB,KACAoW,KACKjV,EAAI,EAAGA,EAAI+Q,EAAQ9Q,OAAQD,IAChCnB,EAAKmB,GAAK+Q,EAAQ/Q,GAClBiV,EAAOjV,GAAKiR,GAAY6M,KAAK5c,OAAQrC,EAAKmB,IAE9CgV,GAAc8I,KAAK5c,OAAQrC,EAAMoW,MAErCk0C,EAAY7iC,UAAUme,cAAgB,SAAUvkC,GAC5C,GAAId,oBAAMc,GACN4d,KAAKlJ,iBADT,CAKA,IAAI4/C,EAAW12C,KAAKu2C,WAAWn0D,GAC/B,GAAwB,IAApBs0D,EAASv0D,OAAb,CAMA,IAAK,IAFDpB,KACAoW,KACKjV,EAAI,EAAGA,EAAIw0D,EAASv0D,OAAQD,IACjCnB,EAAKmB,GAAKw0D,EAASx0D,GACnBiV,EAAOjV,GAAKiR,GAAY6M,KAAK5c,OAAQrC,EAAKmB,IAE9CmV,GAAgB2I,KAAK5c,OAAQrC,EAAMoW,MAEvCk0C,EAAY7iC,UAAUoe,SAAW,SAAUzlC,GACvC,IAAIG,oBAAMH,GAAV,CAIA,IAAI8R,EAAU+M,KAAKu2C,YAAYp1D,IAC3B8R,EAAQ9Q,OAAS,GACjB6d,KAAKuyC,YAAYt/C,EAAQ,MAGjCo4C,EAAY7iC,UAAUqe,WAAa,SAAU1lC,EAAIyJ,GAE7C,GADAoV,KAAK5c,OAAOkB,aAAe,cACvBhD,oBAAMH,GACN6e,KAAK4kB,oBADT,CAKA,IAAI3xB,EAAU+M,KAAKu2C,YAAYp1D,IAC3B8R,EAAQ9Q,OAAS,IACjBoU,GAAmByJ,KAAK5c,OAAQ6P,EAAQ,IACnC3R,oBAAMsJ,GASP+L,GAASqJ,KAAK5c,QARVwT,GAAcoJ,KAAK5c,OAAOgD,SAAS,IACnCuS,GAAOqH,KAAK5c,OAAQ4c,KAAK5c,OAAO5B,KAAMoJ,GAGtCxC,GAAmB4X,KAAK5c,OAAQ4c,KAAK5c,OAAOgD,SAAS,GAAIyQ,OAQlEw0C,yUVn7DgB,yFAUA,6FAQE,iDAIN,oBAEF,sBAEI,4EAQH,qBAEC,qIAqBH,wBAEI,mOA8BL,0CAME,2OA0Be,+CAEL,+BAEH,yBAEF,kDAIC,6EAQD,ySAkCA,0GAUA,uCAEC,uCAED,kDAIC,6CAIP,yBAEK,kBAER,sCAIM,mDAIO,gEAMT,sIC1MK,0KAoBN,sDAME,idAsDE,qFAQI,0FAUJ,0JAcI,sYZpH5B,SAA6BsL,EAAWt+B,GAEpC,IAAIu+B,EAAkB,QAAQxwC,KAAKuwC,GAC/BE,EAAiB,QAAQzwC,KAAKiS,GAElC,GAAIu+B,IAAoBC,EACpB,OAAO,EACX,IAAKD,GAAmBC,EACpB,OAAQ,EACZ,IAAIC,KACAC,KAIJ,KAHCJ,EAAY,IAAI1sD,QAAQ,eAAgB,SAAU+sD,EAAGC,EAAIC,GAAuD,OAAjDJ,EAAez0D,MAAM40D,GAAME,EAAAA,EAAUD,GAAM,KAAa,MACvH7+B,EAAW,IAAIpuB,QAAQ,eAAgB,SAAU+sD,EAAGC,EAAIC,GAAsD,OAAhDH,EAAc10D,MAAM40D,GAAME,EAAAA,EAAUD,GAAM,KAAa,KAE/GJ,EAAe30D,QAAU40D,EAAc50D,QAAQ,CAClD,IAAIi1D,EAAgBN,EAAeO,QAC/BC,EAAeP,EAAcM,QAC7BE,EAAmBH,EAAc,GAAKE,EAAa,IACnDF,EAAc,GAAGI,cAAcF,EAAa,IAChD,GAAIC,EACA,OAAOA,EAEf,OAAOT,EAAe30D,OAAS40D,EAAc50D"}
|
1
|
+
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../src/file-manager/models/ajax-settings.js","../src/file-manager/models/toolbar-settings.js","../src/file-manager/models/search-settings.js","../src/file-manager/models/details-view-settings.js","../src/file-manager/models/contextMenu-settings.js","../src/file-manager/models/navigation-pane-settings.js","../src/file-manager/models/upload-settings.js","../src/file-manager/models/column.js","../src/file-manager/base/classes.js","../src/file-manager/base/constant.js","../src/file-manager/layout/large-icons-view.js","../src/file-manager/actions/breadcrumb-bar.js","../src/file-manager/pop-up/context-menu.js","../src/file-manager/models/default-locale.js","../src/file-manager/base/file-manager.js","../src/file-manager/actions/toolbar.js","../src/file-manager/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility function to compare two strings in a way similar to Windows Explorer.\n * Files and folders are sorted separately, with folders coming before files.\n *\n * @param {string} reference - The first string to compare. This could be a file or folder name.\n * @param {string} comparer - The second string to compare. This could be a file or folder name.\n * @returns {number} - A negative number if `reference` should come before `comparer`, a positive number if `comparer` should come before `reference`, and 0 if they are considered equal.\n */\nexport function sortComparer(reference, comparer) {\n // Check if reference and comparer are files or folders\n var referenceIsFile = /\\.\\S+/.test(reference);\n var comparerIsFile = /\\.\\S+/.test(comparer);\n // If one is a file and the other is a folder, the folder should come first\n if (referenceIsFile && !comparerIsFile)\n return 1;\n if (!referenceIsFile && comparerIsFile)\n return -1;\n var referenceParts = [];\n var comparerParts = [];\n (reference + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { referenceParts.push([$1 || Infinity, $2 || \"\"]); return \"\"; });\n (comparer + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { comparerParts.push([$1 || Infinity, $2 || \"\"]); return \"\"; });\n // Compare each part of reference and comparer\n while (referenceParts.length && comparerParts.length) {\n var referencePart = referenceParts.shift();\n var comparerPart = comparerParts.shift();\n var comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult)\n return comparisonResult;\n }\n return referenceParts.length - comparerParts.length;\n}\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = '/';\n var len = matched.length - (2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = '/';\n var i = 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\n// eslint-disable-next-line\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\n// eslint-disable-next-line\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n var imgUrl;\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\n// eslint-disable-next-line\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n // eslint-disable-next-line\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function setDateObject(args, localeString, dateFormat) {\n for (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = \"MM/dd/yyyy\";\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n if (!isNullOrUndefined(data)) {\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n }\n else {\n parent.originalPath = newPath;\n }\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var isRoot = getValue('_fm_id', parent.itemData[0]) == 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n // eslint-disable-next-line\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\n// eslint-disable-next-line\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var srcData = parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute(\"data-uid\");\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\n// eslint-disable-next-line\nexport function getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select(\".\" + nodeClass, scrollParent);\n if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n var scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\n// eslint-disable-next-line\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\n// eslint-disable-next-line\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n // eslint-disable-next-line\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\n// eslint-disable-next-line\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasReadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasEditAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasContentAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasUploadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasDownloadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n","import { Ajax, Fetch, createElement, select, extend, Internationalization } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';\nimport { generatePath } from '../common/utility';\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n // eslint-disable-next-line\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n // eslint-disable-next-line\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n // eslint-disable-next-line\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction getDateFormat(parent) {\n var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\n}\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n var intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(\n// eslint-disable-next-line\nparent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/'));\n parent.itemData[0] = parent.renamedItem;\n read(parent, events.pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/') + parent.renamedItem.name + '/');\n if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {\n parent.pathNames[parent.pathNames.length - 1] = parent.renameText;\n }\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var ajaxSettings = {\n url: downloadUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n else {\n var contentDisposition_1;\n var fileName_1;\n var fetch_1 = new Fetch({\n url: getValue('url', downloadArgs.ajaxSettings),\n type: getValue('type', downloadArgs.ajaxSettings),\n contentType: getValue('contentType', downloadArgs.ajaxSettings),\n responseType: getValue('responseType', downloadArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', downloadArgs.ajaxSettings),\n onLoad: function (e) {\n contentDisposition_1 = e.headers.get('Content-Disposition');\n if (contentDisposition_1) {\n var filenameMatch = contentDisposition_1.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n var extractedFilename = filenameMatch && filenameMatch[1];\n fileName_1 = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName_1;\n }\n else {\n fileName_1 = parent.itemData.length > 1 ? 'files.zip' : getValue('isFile', parent.itemData[0]) ? getValue('name', parent.itemData[0]) : getValue('name', parent.itemData[0]) + '.zip';\n }\n },\n onSuccess: function (e) {\n parent.trigger('success', downloadArgs);\n var blob = e;\n var blobUrl = URL.createObjectURL(blob);\n var link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName_1;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: function (e) {\n var result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.downloadUrl,\n },\n };\n createDialog(parent, 'Error', result);\n parent.trigger('failure', downloadArgs);\n },\n });\n fetch_1.send(JSON.stringify(downloadArgs.data));\n }\n }\n });\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function (e) {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n var index_1;\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index_1 = val.name.indexOf('.') + 1;\n return (index_1 === 0 && (!val.isFile)) ? 'Folder' : ((index_1 !== 0) ? val.name.substr(index_1).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] == undefined) {\n strArr = details.name.split(',').map(function (val) {\n index_1 = val.indexOf('.') + 1;\n return (index_1 === 0) ? 'Folder' : val.substr(index_1).replace(' ', '');\n });\n }\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {SelectedEventArgs} data - specifies the data.\n * @returns {HTMLElement} - returns the HTML element.\n * @private\n */\nfunction getFilesName(data) {\n var parent = createElement('div', { id: 'uploadDialog' });\n var ulElement = createElement('ul');\n var filesData = data.isModified ? data.modifiedFilesData : data.filesData;\n for (var fileCount = 0; fileCount < filesData.length; fileCount++) {\n var liElement = createElement('li', { className: 'dialogFiles' });\n liElement.innerHTML = filesData[fileCount].name;\n ulElement.appendChild(liElement);\n }\n parent.appendChild(ulElement);\n var errorTag = createElement('div', { className: 'e-fe-error' });\n parent.appendChild(errorTag);\n return parent;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\\\"e-fe-text\\\">${name}</span>',\n customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110',\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n }), format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"isPrimaryKey\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n if (this.parent.sortComparer && this.parent.sortBy !== 'None') {\n this.items = this.allItems = DataUtil.sort(this.items, this.parent.sortBy, this.comparer.bind(this));\n }\n else {\n this.items = this.allItems = getSortedData(this.parent, this.items);\n }\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n if (!this.element.style.height) {\n this.adjustHeight();\n }\n this.parent.virtualizationModule.setUIVirtualization();\n }\n // eslint-disable-next-line\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.listElements.setAttribute(\"aria-label\", \"listbox\");\n this.preventImgDrag();\n this.createDragObj();\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.comparer = function (x, y, xObj, yObj) {\n if (this.parent.sortOrder === 'Descending') {\n var z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n };\n ;\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.adjustHeight = function () {\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n proxy_1.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (e.ctrlKey && e.shiftKey) {\n this.isSelectAllCalled = true;\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n // eslint-disable-next-line\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\n var _this = this;\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n // eslint-disable-next-line\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n // eslint-disable-next-line\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = {\n action: action, fileDetails: data.length > 1 ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1 ? data : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n // eslint-disable-next-line\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n // eslint-disable-next-line\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n // eslint-disable-next-line\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n // eslint-disable-next-line\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n // eslint-disable-next-line\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function () {\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule == 'navigationpane') {\n this.parent.pathId.pop();\n var parentKey = [];\n var itemKeys = Object.keys(this.parent.feParent);\n for (var _i = 0, itemKeys_1 = itemKeys; _i < itemKeys_1.length; _i++) {\n var item = itemKeys_1[_i];\n var itemData = getValue(item, this.parent.feParent);\n if (this.parent.pathNames.indexOf(itemData.name) !== -1) {\n parentKey.push(itemData._fm_id);\n }\n }\n this.parent.pathId.push(parentKey[parentKey.length - 1]);\n this.parent.navigationpaneModule.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n }\n this.isMenuItemClicked = false;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var selected = false;\n var uid;\n // eslint-disable-next-line\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest(\"div\");\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n // eslint:disable-next-line\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n // eslint:disable-next-line\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n // eslint:disable-next-line\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n // eslint-disable-next-line\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n // eslint-disable-next-line\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('data-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n /* istanbul ignore next */\n // eslint:disable-next-line\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n else {\n var pasteIndex = this.disabledItems.indexOf('Paste');\n if (pasteIndex !== -1) {\n this.disabledItems.splice(pasteIndex, 1);\n }\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n }\n else if (this.parent.activeModule !== 'navigationpane') {\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename', 'Paste');\n }\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n else {\n this.disabledItems = this.disabledItems.filter(function (item) { return item !== 'SelectAll'; });\n }\n if (this.parent.selectedNodes.length === 0) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n // eslint-disable-next-line\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n _this.isMenuItemClicked = true;\n // eslint:disable-next-line\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if ((_this.parent.activeModule === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest, Collection } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { ToolbarItem } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n // eslint-disable-next-line\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not \n _this.isMac = false;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this],\n name: 'Toolbar'\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this],\n name: 'NavigationPane'\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this],\n name: 'DetailsView'\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this],\n name: 'Virtualization'\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n // eslint-disable-next-line\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n // eslint-disable-next-line\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n // eslint-disable-next-line\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n // eslint-disable-next-line\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') != -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n refresh(this);\n this.notify(events.sortByChange, {});\n if (this.view === 'Details') {\n this.notify(events.sortColumn, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n // eslint-disable-next-line\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"sortComparer\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Collection([], ToolbarItem)\n ], FileManager.prototype, \"toolbarItems\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n // eslint-disable-next-line\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n var _this = this;\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan_1 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan_1 = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>',\n beforeItemRender: function (args) {\n var tickIcon = args.item.iconCss;\n var viewText = args.item.text === getLocaleText(_this.parent, 'View-LargeIcons');\n var iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan_1 : gridSpan_1) + args.item.text;\n var span = args.element.firstChild;\n if (span && span.className === '') {\n args.element.removeChild(span);\n }\n }\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = __assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n if (this.itemList.length !== 0 && this.largeIconInstance.element.querySelector('.' + CLS.EMPTY)) {\n this.largeIconInstance.element.removeChild(this.largeIconInstance.element.querySelector('.' + CLS.EMPTY));\n }\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add(\"e-virtual-top\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add(\"e-virtual-bottom\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n * @param dataSourceLength The length of the data source.\n * @returns The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount = Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) / (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount * (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n * @param destroy - Set `true` to unwire the scroll event.\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.itemCount = this.itemCount != this.largeIconInstance.itemList.length ? this.largeIconInstance.itemList.length : this.itemCount;\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n * @param startingHeight The starting height from which to calculate the scroll position.\n * @returns The current scroll position.\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n * @param listDiff The number of rows to update.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule, getPathId } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n // eslint-disable-next-line\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0 &&\n (directories[0].filterPath == null || this.getTreeData(target)[0].filterPath == null || directories[0].filterPath !== this.getTreeData(target)[0].filterPath)) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute(\"data-uid\")];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n // eslint-disable-next-line\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n this.isNodeExpandCalled = true;\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n // eslint-disable-next-line\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n // eslint-disable-next-line\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n // eslint-disable-next-line\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent[\"portals\"] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent[\"portals\"] = this.parent[\"portals\"].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent[\"portals\"]);\n this.parent[\"renderReactTemplates\"]();\n };\n /**\n * Gets the grid height.\n *\n * @returns The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return \"<div class=\\\"e-fe-text\\\">\" + name + \"</div><div class=\\\"e-fe-date\\\">\" + data._fm_modified + \"</div><span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return \"<span class=\\\"e-fe-icon e-fe-folder\\\"></span>\";\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n // eslint-disable-next-line\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn)) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, (this.parent.enableVirtualization) ? args.result : this.gridObj.dataSource);\n args.result = items;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop == 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n // eslint-disable-next-line\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n // eslint-disable-next-line\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n // eslint-disable-next-line\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n // eslint-disable-next-line\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNOU(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addHeaderFocus(e);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n // eslint-disable-next-line\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus;\n if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNOU(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);\n }\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n"],"names":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","i","length","ids","push","names","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","key","newPath","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","searchWordHandler","isLayoutChange","searchWord","events.pathColumn","args","searchSettings","filterType","itemData","getPathObject","caseSensitive","ignoreCase","hiddenItems","showHiddenItems","Search","events.layoutChange","events.search","filter","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","read","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","pathUrl","fileName","encodeURIComponent","fPath","imgId","replace","eventArgs","fileDetails","imageUrl","Date","getTime","toString","trigger","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","Query","sortBy","group","lists","DataManager","executeLocal","getObject","currFiles","feFiles","where","createEmptyElement","top","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","emptyEle","CLS.EMPTY_CONTENT","dragFile","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","eDiv","style","marginTop","getDirectories","events.isFile","setNodeId","result","rootId","dirs","len","setValue","setDateObject","localeString","dateFormat","createdDate","modifiedDate","formatDate","format","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","field","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","isNullOrUndefined","openSearchFolder","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dropPath","dragPath","subFolder","srcData","dragNodes","tempTarget","dropHandler","dragData","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","target","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","screenY","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","Object","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","click","events.permissionUpload","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","fn","type","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","events.beforeRequest","Ajax","result_1","triggerAjaxFailure","parse","events.afterRequest","rootAliasName","intl","Internationalization","getDateFormat","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","pop","dialogObj","visible","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","Array","isArray","events.renameEndParent","events.pathChanged","renameText","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","useFormPost","responseType","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","filenameMatch","extractedFilename","blob","blobUrl","URL","createObjectURL","link","href","body","status","replaceItems","options","formattedString","strArr","location","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","multipleFiles","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","focusInput","bind","this","events.deleteInit","onDeleteSubmit","onReSubmit","inputEle","txt","index","onFocusRenameInput","modified","CLS.VALUE","size","index_1","undefined","map","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","getOptions","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","changeOptions","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","getExtOptions","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","retryArgs","retry","onKeepBothAll","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","_loop_1","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","headerText","minWidth","template","customAttributes","class","initializeCSPTemplate","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isSelectAllCalled","isPasteOperation","CLS.LARGEICON_ID","addClass","addEventListener","keyConfigs","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","isMac","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","adjustHeight","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","selectItems","activeEle","CLS.ACTIVE","maxHeight","getItemCount","wireEvents","setUlElementHeight","wireScrollEvent","hideSpinner","checkItem","x","xObj","yObj","z","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","getModuleName","dropLi","cwdData","info","pane","bar","removeAttribute","curData","textEle","renderCheckbox","showItemCheckBoxes","checkElement","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","name_1","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","lastItem","getLastItem","doSelection","ctrlKey","shiftKey","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","proxy_1","clickObj","Touch","tap","eve","originalEvent","isDevice","tapEvent","doTapAction","dblClickHandler","clickHandler","tapHold","multiSelect","CLS.MULTI_SELECT","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","parseInt","getPropertyValue","isVisible","liParent","liScrPos","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","ContextMenu","isMenuItemClicked","currentItems","currentElement","disabledItems","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.TREE_ID","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","pasteEle","pasteIndex","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","selectedTreeNode","renameIndex","layout","nameEle","menuClickArgs","sItems","events.downloadInit","openFileOnContextMenuClick","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","previousPath","nextPath","deleteRecords","isSameAction","persistData","isOpened","left","uploadingCount","uploadedCount","FileManager_1","Inject","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","clearAll","fileData","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","autoClose","response","statusText","onInitialEnd","removeEventListeners","setPath","oldProp","ajaxSettingSetModel","localeSetModelOption","refreshing","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Collection","Event","NotifyPropertyChanges","Component","__assign","assign","t","s","n","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","iconClass","firstChild","hideItems","hideStatus","portals","updateSortByButton","itemCount","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","mergedItems","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","filemanagerInstance","largeIconInstance","currentViewItems","lastRowCount","rowItemCount","topElement","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","Math","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","forEach","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","isSameNodeClicked","isNodeExpandCalled","renameParent","previousSelected","isNodeClickCalled","restrictSelecting","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getTreeData","getDragPath","getDropPath","nodeData","addChild","prevent","directories","_fm_icon","childElements","addNodes","selecEventArgs","expandNodeTarget","onPathDrag","selectResultNode","events.nodeExpand","onNodeExpanded","innerHtml","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","nData","id_1","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","obj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","Grid","Resize","Sort","VirtualScroll","checkNameWidth","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enablePersistence","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","includes","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","crtSrlPos","crtFocusIndex","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","treeFocus","nameFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"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"}
|