@syncfusion/ej2-filemanager 28.1.36 → 28.1.39
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/README.md +1 -1
- package/dist/ej2-filemanager.min.js +10 -1
- package/dist/ej2-filemanager.umd.min.js +10 -1
- package/dist/ej2-filemanager.umd.min.js.map +1 -1
- package/dist/es6/ej2-filemanager.es2015.js +2 -1
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +2 -1
- package/dist/es6/ej2-filemanager.es5.js.map +1 -1
- package/dist/global/ej2-filemanager.min.js +10 -1
- package/dist/global/ej2-filemanager.min.js.map +1 -1
- package/dist/global/index.d.ts +9 -0
- package/package.json +11 -10
- package/src/file-manager/layout/navigation-pane.js +2 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../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/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.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":["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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 __decorate([\n Property(0)\n ], UploadSettings.prototype, \"chunkSize\", 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 * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete, isFileSystemData } 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 }\n if (!referenceIsFile && comparerIsFile) {\n return -1;\n }\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 if (referencePart && comparerPart) {\n var comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult) {\n return comparisonResult;\n }\n }\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 */\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 var data = getValue(parent.pathId[parseInt(i.toString(), 10)], 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 * Get all child items\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent ID.\n * @returns {Object[]} An array of child items\n * @private\n */\nexport function getAllChildItems(parent, parentId) {\n var children = parent.fileSystemData.filter(function (item) {\n return String(item.parentId) === String(parentId);\n });\n var allChildren = children.slice();\n children.forEach(function (child) {\n var childId = child.id;\n allChildren = allChildren.concat(getAllChildItems(parent, childId));\n });\n return allChildren;\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 (isFileSystemData(parent)) {\n if (value === '') {\n parent.itemData = parent.fileSystemData;\n read(parent, events.layoutChange, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n var currData = getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n var parentId = getValue('id', currData);\n var filteredData = getAllChildItems(parent, parentId);\n var data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n var searchValue = parent.searchSettings.ignoreCase ? value.toLowerCase() : value;\n parent.itemData = data;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchValue, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n return;\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 */\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 */\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 */\nexport function getImageUrl(parent, item) {\n var imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n var eventArgs_1 = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs_1);\n return eventArgs_1.imageUrl;\n }\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\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 */\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 */\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 */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None' && !isNullOrUndefined(parent.sortOrder)) {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\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 */\nexport function getObject(parent, key, value) {\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var result = currFiles.filter(function (data) { return data[key].toString() === value; });\n return result.length > 0 ? result[0] : null;\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 */\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 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 * @param {Internationalization} localeString - The internationalization object for formatting dates.\n * @param {string} dateFormat - The date format string.\n * @returns {void}\n * @private\n */\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 * @param {IFileManager} [parent] - optional parameter representing the parent IFileManager.\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 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 var data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\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 */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var navData = parent.feParent[getValue('_fm_id', parent.itemData[0])];\n var isRoot = isNullOrUndefined(navData) || getValue('_fm_id', navData) === 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, isFileSystemData(parent) ? getValue('id', data) : 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 if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {\n parent.targetPath = getTargetPath(parent, parent.actionRecords[0]);\n }\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 */\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 name_1 = parent.dragData[i] ? parent.dragData[i].name : null;\n var srcData = isFileSystemData(parent) ? name_1 : 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 && !isNullOrUndefined(parent.ajaxSettings.url) ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return '/';\n }\n return fPath.replace(/\\\\/g, '/').replace(/^.*?(?=\\/)/, '') + filePath;\n }\n else {\n return isFileSystemData(parent) ? filePath : 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 parent.trigger('success', { action: operation, result: result });\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}\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 */\nexport function getDuplicateData(parent, name) {\n var data = null;\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} 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, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select('.' + nodeClass, scrollParent);\n if ((clientY >= (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.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.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.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\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 */\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 */\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 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 */\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 */\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 */\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 */\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 */\nexport function hasReadAccess(data) {\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 */\nexport function hasEditAccess(data) {\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 */\nexport function hasContentAccess(data) {\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 */\nexport function hasUploadAccess(data) {\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 */\nexport function hasDownloadAccess(data) {\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 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 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/**\n * Close dialog popup handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function closePopup(parent) {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n}\n/**\n * Get target path from item data.\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} itemData - specifies the item elements.\n * @returns {string} returns the path.\n * @private\n */\nexport function getTargetPath(parent, itemData) {\n if (parent.hasId && !isNOU(getValue('filterId', itemData))) {\n return getValue('filterId', itemData).replace(/\\\\/g, '/').replace(/^[^/]+\\//, '/');\n }\n else {\n return getValue('filterPath', itemData).replace(/\\\\/g, '/');\n }\n}\n/**\n * Access control handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} itemData - specifies the item elements.\n * @param {string} action - specifies the action.\n * @param {boolean} isPathPermision - specifies the path permission.\n * @returns {string} returns the path.\n * @private\n */\nexport function getAccessDetails(parent, itemData, action, isPathPermision) {\n var accessMessage = '';\n for (var i = 0; i < itemData.length; i++) {\n var permission = getValue('permission', itemData[i]);\n if (permission == null) {\n permission = undefined;\n }\n if (isPathPermision) {\n if (permission && (!getValue('read', permission) || !getValue('writeContents', permission))) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', 'writeContents');\n }\n }\n }\n else {\n var copyOrMovePermission = action === 'copy' ? getValue('copy', permission) : getValue('write', permission);\n if (permission && (!getValue('read', permission) || !copyOrMovePermission)) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', action);\n }\n }\n }\n if (accessMessage !== '') {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: '401',\n message: accessMessage,\n fileExists: null\n },\n files: null\n };\n break;\n }\n }\n return accessMessage;\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, getAccessDetails, getTargetPath } from '../common/utility';\nimport { getUid } from '@syncfusion/ej2-grids';\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 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 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 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 var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n var filterData;\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 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, renameItems, actionRecords) {\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 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 var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for getDateFormat in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction getDateFormat(parent) {\n var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n if (!columns) {\n return null;\n }\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}\n/**\n * Checks whether fileSystemData is enabled.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns the boolean value.\n */\nexport function isFileSystemData(parent) {\n var isFileSystemData = parent.fileSystemData.length >= 0 && isNOU(parent.ajaxSettings.url);\n return isFileSystemData;\n}\n/**\n * Function to check whether file already exist or not.\n *\n * @param {Record<string, any>} fileSystemData - specifies the file data.\n * @param {string} name - specifies the name.\n * @returns {boolean} - returns the boolean value.\n * @private\n */\nfunction isFileExists(fileSystemData, name) {\n var isExists = fileSystemData.some(function (item) { return item.name === name; });\n return isExists;\n}\n/**\n * Function to find the index value of a file or folder.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number} id - specifies the id.\n * @returns {number} - returns the index value.\n * @private\n */\nfunction findIndexById(parent, id) {\n var index = parent.fileSystemData.findIndex(function (item) {\n return !isNOU(item) && String(item.id) === String(id);\n });\n return index;\n}\n/**\n * Function to get the entire data of a file or folder using id value.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} id - specifies the id.\n * @returns {Object} - returns the data.\n * @private\n */\nfunction filterById(parent, id) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.id) === String(id); })[0];\n return data;\n}\n/**\n * Function to get the entire data of a file or folder for a parent.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} parentId - specifies the parent id.\n * @returns {Object[]} - returns the data.\n * @private\n */\nfunction filterByParent(parent, parentId) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.parentId) === String(parentId); });\n return data;\n}\n/**\n * Function to create a new copied file or folder.\n *\n * @param {Record<string, any>} data - specifies the file or folder data.\n * @param {Record<string, any>} target - specifies the target data.\n * @param {string} itemName - specifies the item name.\n * @param {boolean} isCopy - specifies the copy operation.\n * @returns {Record<string, Object>} - returns the data.\n * @private\n */\nfunction createNewItem(data, target, itemName, isCopy) {\n var newItem = {};\n //Construct the new folder details.\n for (var key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n var currentDate = new Date();\n var folderPath = String(target.id) !== String(0) && !isNOU(target.parentId) ? target.filterPath + target.name + '\\\\' : '\\\\';\n Object.assign(newItem, {\n dateCreated: currentDate,\n dateModified: currentDate,\n filterPath: folderPath,\n hasChild: isCopy ? data.hasChild : false,\n id: getUid(itemName === null ? data.name : itemName),\n isFile: isCopy ? data.isFile : false,\n name: itemName === null ? data.name : itemName,\n parentId: target.id,\n size: isCopy ? data.size : 0,\n type: isCopy ? data.type : ''\n });\n return newItem;\n}\n/**\n * Function to create an error response.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} message - specifies the error message.\n * @param {string} code - specifies the error code.\n * @param {Object[]} fileName - specifies the file name.\n * @returns {void}\n * @private\n */\nfunction createErrorObject(parent, message, code, fileName) {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: code,\n message: message,\n fileExists: fileName != null ? fileName : null\n },\n files: null\n };\n}\n/**\n * Function to trigger folder creation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerFolderCreation(parent, data, eventArgs) {\n var createEventArgs = {\n folderName: getValue('name', data),\n cancel: false,\n path: getValue('path', data),\n parentFolder: getValue('data', data)\n };\n parent.trigger('beforeFolderCreate', createEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.folderName)) {\n var data_1 = args.parentFolder[0];\n var newObject = createNewItem(data_1, data_1, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n var message = 'A file or folder with the name ' + args.folderName + ' already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger delete operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerDeleteOperation(parent, data, eventArgs) {\n var deleteEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeDelete', deleteEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n args.itemData.forEach(function (itemData) {\n var index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n var subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach(function (subItem) {\n var index = findIndexById(parent, subItem.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n });\n }\n });\n }\n });\n}\n/**\n * Function to trigger rename operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerRenameOperation(parent, data, eventArgs) {\n var renameEventArgs = {\n cancel: false,\n newName: getValue('newName', data),\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeRename', renameEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.newName)) {\n var fileData = filterById(parent, args.itemData[0].id);\n var oldName = fileData.name;\n fileData.name = args.newName;\n updateChildrenFilterPath(parent, fileData.id, oldName, args.newName);\n }\n else {\n var message = 'Cannot rename' + args.itemData[0].name + 'to' + args.newName + ': destination already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to update child item filter path.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent id.\n * @param {string} oldName - specifies the previous name.\n * @param {string} newName - specifies the new name.\n * @returns {void}\n * @private\n */\nfunction updateChildrenFilterPath(parent, parentId, oldName, newName) {\n parent.fileSystemData.forEach(function (item) {\n if (String(item.parentId) === String(parentId)) {\n var oldPath = item.filterPath;\n var newPath = oldPath.replace(oldName + '\\\\', newName + '\\\\');\n item.filterPath = newPath;\n updateChildrenFilterPath(parent, item.id, oldName, newName);\n }\n });\n}\n/**\n * Function to trigger move or copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerMoveOrCopyOperation(parent, data, eventArgs) {\n var moveEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n isCopy: getValue('action', data) === 'copy' ? true : false,\n path: getValue('path', data),\n targetData: getValue('targetData', data),\n targetPath: getValue('targetPath', data)\n };\n parent.trigger('beforeMove', moveEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n var message = 'File Already Exists';\n var action = getValue('action', data);\n var itemPermission = getAccessDetails(parent, args.itemData, action, false);\n var pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n var file_1 = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n var folderSubItems_1 = filterByParent(parent, args.targetData.id);\n var copiedFolders = args.itemData;\n copiedFolders.forEach(function (itemData) {\n if (!isFileExists(folderSubItems_1, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n var names = itemData.name.split('.');\n var name_1 = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name_1);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file_1.push(itemData.name);\n }\n });\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n return;\n }\n var target_1 = args.targetData;\n var getTargetFiles = filterByParent(parent, target_1.id);\n for (var i = 0; i < args.itemData.length; i++) {\n var currItem = args.itemData[i];\n if (!isFileExists(getTargetFiles, currItem.name) || getValue('renameFiles', data).length > 0) {\n if (!target_1.hasChild) {\n target_1.hasChild = !currItem.isFile;\n var targetItem = parent.fileSystemData\n .filter(function (item) { return String(item.id) === String(target_1.id); });\n if (targetItem.length > 0) {\n targetItem[0].hasChild = target_1.hasChild;\n }\n }\n if (!currItem.isFile) {\n //Check whether the source folder include other sub folders or not.\n var subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentId) : [];\n var itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n var fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n var names = currItem.name.split('.');\n currItem.name = currItem.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n fileData.name = currItem.name;\n parent.responseData.error = null;\n parent.existingFileCount++;\n parent.dropData = target_1;\n parent.dropPath = args.path;\n var pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target_1 = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target_1.id;\n fileData.filterPath = target_1.id === 0 ? '\\\\' : target_1.filterPath + target_1.name + '\\\\';\n }\n else {\n file_1.push(currItem.name);\n }\n }\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n }\n }\n });\n}\n/**\n * Function to trigger search operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerSearchOperation(parent, data, eventArgs) {\n var searchEventArgs = {\n searchResults: getValue('data', data),\n cancel: false,\n path: getValue('path', data),\n searchText: getValue('searchString', data),\n caseSensitive: getValue('caseSensitive', data),\n showHiddenItems: getValue('showHiddenItems', data)\n };\n parent.trigger('search', searchEventArgs, function (args) {\n setValue('data', args.searchResults, data);\n if (args.cancel) {\n eventArgs.cancel = true;\n }\n });\n}\n/**\n * Function to trigger client side events.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerClientEvents(parent, data, eventArgs) {\n switch (getValue('action', data)) {\n case 'create': {\n triggerFolderCreation(parent, data, eventArgs);\n break;\n }\n case 'delete': {\n triggerDeleteOperation(parent, data, eventArgs);\n break;\n }\n case 'rename': {\n triggerRenameOperation(parent, data, eventArgs);\n break;\n }\n case 'move':\n case 'copy': {\n triggerMoveOrCopyOperation(parent, data, eventArgs);\n break;\n }\n case 'search': {\n triggerSearchOperation(parent, data, eventArgs);\n break;\n }\n }\n}\n/**\n * Creates an AJAX request for the file manager.\n *\n * @param {IFileManager} parent - The parent file manager instance.\n * @param {Object} data - The data object for the AJAX request.\n * @param {Function} fn - The callback function to be executed after the AJAX request.\n * @param {string} [event] - The event type for the AJAX request.\n * @param {string} [operation] - The operation type for the AJAX request.\n * @param {string} [targetPath] - The target path for the AJAX request.\n * @returns {void}\n * @private\n */\nfunction createAjax(parent, data, fn, event, operation, targetPath) {\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 triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n var filePath = event === 'node-expand' || event === 'finalize-end' || event === 'rename-end-parent'\n ? getValue('path', data) : parent.path;\n var pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n var idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0 && isNOU(parent.renamedItem))\n ? getValue('data', data)[0].id : pathArray[pathArray.length - 1];\n var action = getValue('action', data);\n var isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n var rootId = parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })\n .length > 0\n ? parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })[0].id\n : 0;\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n var message = 'Cannot load empty data within the File Manager.';\n createErrorObject(parent, message, '400', null);\n }\n }\n else if (isFileOperation && parent.responseData.error === null) {\n var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n if (action === 'copy') {\n itemData = parent.pasteNodes.map(function (item) { return filterById(parent, item); });\n }\n else {\n itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });\n }\n }\n parent.responseData = {\n cwd: null,\n details: null,\n error: null,\n files: itemData\n };\n }\n else if (getValue('action', data) === 'details') {\n var itemData = getValue('data', data);\n var details = itemData[0];\n var isMultipleFiles = itemData.length > 1;\n var itemNames = itemData.map(function (item) { return item.name; });\n var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);\n var path = (parent.pathNames.includes(details.name) || isMultipleFiles ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: path,\n multipleFiles: isMultipleFiles,\n name: itemNames.join(', '),\n size: totalSize\n }, isMultipleFiles ? {} : {\n created: details.dateCreated,\n isFile: details.isFile,\n modified: details.dateModified,\n permission: details.permission\n });\n }\n performReadOperation(parent, parent.responseData, fn, data, event, operation, targetPath, beforeSendArgs);\n return;\n }\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 performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\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 to get file size.\n *\n * @param {number} size - specifies the size.\n * @returns {string} - returns the size.\n * @private\n */\nfunction getSize(size) {\n var hz;\n if (size < 1024) {\n hz = size + ' B';\n }\n else if (size < 1024 * 1024) {\n hz = (size / 1024).toFixed(2) + ' KB';\n }\n else if (size < 1024 * 1024 * 1024) {\n hz = (size / 1024 / 1024).toFixed(2) + ' MB';\n }\n else {\n hz = (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n }\n return hz;\n}\n/**\n * Function to perform read operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {Function} fn - specifies the function.\n * @param {Object} data - specifies the data.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs) {\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 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 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 }\n if (location_1.indexOf('\\\\') === -1) {\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/**\n * Function to copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} target - specifies the target.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction copyFolderItems(parent, data, target, itemName) {\n var newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n var copiedItems = filterByParent(parent, data.id);\n for (var i = 0; i < copiedItems.length; i++) {\n copyFolderItems(parent, copiedItems[i], newObject, null);\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(parent, 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 try {\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 (!isNOU(result.error) && 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 }\n catch (error) {\n handleCatchError(parent, error, '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 try {\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 catch (error) {\n handleCatchError(parent, error, 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 try {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\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 catch (error) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'create');\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 * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result) {\n try {\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 var renameEventArgs = {\n newName: parent.renamedItem.name,\n itemData: [parent.renamedItem],\n path: parent.path\n };\n parent.trigger('rename', renameEventArgs);\n if (parent.activeModule === 'navigationpane') {\n var pathObject = getPathObject(parent);\n var pathLevel = parent.pathId[parent.pathId.length - 1].split('_').length - 2;\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n var renamePath = getTargetPath(parent, parent.renamedItem);\n read(parent, events.renameEndParent, renamePath);\n if (!isNOU(pathObject) && parent.pathNames.length > 1 && pathLevel <= parent.pathNames.length - 1) {\n parent.pathNames[pathLevel] = parent.renameText;\n if (!parent.hasId) {\n parent.setProperties({ path: \"/\" + parent.pathNames.slice(1).join('/') + \"/\" }, true);\n }\n }\n parent.itemData = parent.navigationpaneModule.previousSelected.length > 0\n ? parent.navigationpaneModule.treeObj.getTreeData(parent.navigationpaneModule.previousSelected[0]) : parent.itemData;\n read(parent, events.pathChanged, parent.path);\n parent.itemData[0] = parent.renamedItem;\n parent.renamedItem = null;\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 catch (error) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'rename');\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 try {\n var moveorcopyEventArgs = {\n itemData: result.files,\n isCopy: operation === 'copy' ? true : false,\n path: path,\n targetData: parent.itemData[0],\n targetPath: parent.path\n };\n parent.trigger('move', moveorcopyEventArgs);\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 catch (error) {\n handleCatchError(parent, error, 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 try {\n var deleteEventArgs = {\n itemData: result.files,\n path: path\n };\n parent.trigger('delete', deleteEventArgs);\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 catch (error) {\n handleCatchError(parent, error, '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 try {\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 catch (error) {\n handleCatchError(parent, error, '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(parent, event, path, searchString, showHiddenItems, caseSensitive) {\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 try {\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 catch (error) {\n handleCatchError(parent, error, '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 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 try {\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 catch (error) {\n handleCatchError(parent, error, 'download');\n }\n }\n }\n });\n}\n/**\n * Function for on catch handler in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {any} error - specifies the catch error.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction handleCatchError(parent, error, action) {\n var errorResult = {\n files: null,\n error: {\n message: error.message,\n fileExists: null\n }\n };\n onFailure(parent, errorResult, action);\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, getTargetPath } 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 * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details) {\n var options = getOptions(parent, text, e, details);\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 * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\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 var index;\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 () {\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 () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index = val.name.indexOf('.') + 1;\n return (index === 0 && (!val.isFile)) ? 'Folder' : ((index !== 0) ? val.name.substr(index).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] === undefined) {\n strArr = details.name.split(',').map(function (val) {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).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 () {\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/**\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 = '';\n if (parent.activeModule === 'navigationpane') {\n newPath = getTargetPath(parent, parent.itemData[0]);\n }\n else {\n newPath = parent.path;\n }\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","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 this.parent.virtualizationModule.setUIVirtualization();\n }\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.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) {\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 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 this.parent.dragData.push(this.getItemObject(activeEle[parseInt(i.toString(), 10)]));\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 var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\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.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 if (txt.indexOf(type) !== -1) {\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\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 LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\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 && this.parent.activeModule === 'largeiconsview') {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\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 };\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 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 ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\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 '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 case 'showItemCheckBoxes':\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 var _this = this;\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n if (_this.parent.isDevice) {\n _this.tapCount = eve.tapCount;\n _this.tapEvent = eve;\n setTimeout(function () {\n if (_this.tapCount > 0) {\n _this.doTapAction(_this.tapEvent);\n }\n _this.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n _this.dblClickHandler(eve);\n }\n else {\n _this.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n _this.multiSelect = _this.parent.allowMultiSelection ? true : false;\n if (_this.parent.allowMultiSelection) {\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n _this.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 ctrlKey = this.parent.isMac ? e.metaKey : e.ctrlKey;\n var isMacRightClick = this.parent.isMac && e.ctrlKey && e.shiftKey;\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 || isMacRightClick) && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.addActive(item);\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (e.ctrlKey && e.shiftKey && !isMacRightClick) {\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 && !ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey && !isMacRightClick) {\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 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 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 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 case 'back':\n this.parent.traverseBackward();\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 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 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 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 };\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 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 = { action: action, fileDetails: data.length > 1\n ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null\n : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\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\n ? data\n : 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 LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n LargeIconsView.prototype.addSelection = function (data) {\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 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 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 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 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 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 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 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 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 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 (args) {\n var eventArgs = {\n cancel: false,\n element: args.element,\n event: args.event,\n isFocused: args.isFocused,\n fileDetails: [this.menuItemData],\n items: args.items,\n parentItem: args.parentItem,\n menuType: this.menuType\n };\n this.parent.trigger('menuClose', eventArgs, function (menuCloseArgs) {\n if (menuCloseArgs.cancel) {\n args.cancel = menuCloseArgs.cancel;\n return;\n }\n });\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.setProperties({ 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 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 }\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 }\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 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 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 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 if (!isNOU(uid)) {\n this.navUid = uid;\n }\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 else {\n var itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (var i = 0; i < this.disabledItems.length; i++) {\n var item = this.disabledItems[i];\n if (itemsToRemove.indexOf(item) !== -1) {\n this.disabledItems.splice(i, 1);\n i--;\n }\n }\n }\n /* istanbul ignore next */\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.navUid + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (!isNOU(selectedTreeNode) &&\n 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 else {\n var indexToRemove = this.disabledItems.indexOf('Open');\n if (indexToRemove !== -1) {\n this.disabledItems.splice(indexToRemove, 1);\n }\n }\n if (this.parent.selectedItems.length === 0) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\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 ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\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 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 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 === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n _this.parent.folderPath = _this.parent.path;\n }\n else {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\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 case 'name':\n case 'size':\n case 'date':\n case 'ascending':\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 case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\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 */\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, detach, selectAll, setStyleAttribute } 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, closePopup } 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 _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.existingFileCount = 0;\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 _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\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 _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 _this.dragSelectedItems = [];\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 if (this.fileView === 'Details') {\n this.largeiconsviewModule.element.classList.add(CLS.DISPLAY_NONE);\n }\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 chunkSize: this.uploadSettings.chunkSize,\n retryCount: 0\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n chunkUploading: this.onChunkUploading.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.onChunkUploading = 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 }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\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 if (this.uploadSettings.chunkSize === 0) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\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 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 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 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 FileManager.prototype.onChunkUploadComplete = function (files) {\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n var uploadFile = !isNullOrUndefined(files) ? getValue('file', files).name : '';\n if (uploadFile === this.retryArgs[i].file.name) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\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 FileManager.prototype.onUploadFailure = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\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.wireSelectOnDragEvent = function (isBind) {\n if (isNOU(this.view)) {\n return;\n }\n if (isBind) {\n this.viewElem = this.view === 'LargeIcons' ? this.largeiconsviewModule.element : this.element.querySelector('.e-gridcontent');\n }\n if (!this.viewElem) {\n return;\n }\n if (isBind) {\n if (this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n };\n FileManager.prototype.wireEvents = function () {\n if (this.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\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 this.wireSelectOnDragEvent(false);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.onDragStart = function (event) {\n if (this.viewElem) {\n if (this.allowDragAndDrop) {\n var targetElement = closest(event.target, this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-fe-text');\n if (targetElement) {\n return;\n }\n }\n event.preventDefault();\n this.dragX = event.pageX;\n this.dragY = event.pageY;\n if (!this.dragSelectElement) {\n this.dragSelectElement = createElement('div', {\n id: this.element.id + '_drag',\n className: 'e-filemanager e-drag-select',\n styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'\n });\n document.body.append(this.dragSelectElement);\n }\n EventHandler.add(document, 'mouseup', this.onDragStop, this);\n EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);\n EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);\n }\n };\n FileManager.prototype.onDrag = function (event) {\n event.stopPropagation();\n if (this.dragSelectElement) {\n var diffX = event.pageX - this.dragX;\n var diffY = event.pageY - this.dragY;\n setStyleAttribute(this.dragSelectElement, {\n 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',\n 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'\n });\n this.selectItems();\n }\n else {\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n };\n FileManager.prototype.onDragStop = function () {\n if (this.viewElem) {\n EventHandler.remove(document, 'mouseup', this.onDragStop);\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n if (this.dragSelectElement) {\n EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);\n if (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0) {\n this.setProperties({ selectedItems: this.dragSelectedItems });\n }\n this.dragSelectedItems = [];\n detach(this.dragSelectElement);\n this.dragSelectElement = null;\n }\n };\n FileManager.prototype.selectItems = function () {\n this.dragSelectedItems = [];\n var dragRect = this.dragSelectElement.getBoundingClientRect();\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n for (var _i = 0, allItems_1 = allItems; _i < allItems_1.length; _i++) {\n var item = allItems_1[_i];\n var itemRect = item.getBoundingClientRect();\n if (!(dragRect.right < itemRect.left || dragRect.left > itemRect.right\n || dragRect.bottom < itemRect.top || dragRect.top > itemRect.bottom)\n && (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0)) {\n if (this.viewElem.classList.contains('e-large-icons')) {\n item.classList.add('e-active');\n this.dragSelectedItems.push(item.getAttribute('title'));\n }\n else {\n addClass(selectAll('.e-rowcell', item), ['e-active']);\n this.dragSelectedItems.push(item.querySelector('.e-drag-text').textContent);\n }\n item.querySelector('.e-frame').classList.add('e-check');\n }\n }\n };\n FileManager.prototype.onLayoutChange = function () {\n if (this.enableRangeSelection) {\n this.unWireEvents();\n this.wireEvents();\n }\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 FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var height;\n var requiresRefresh = false;\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 'showItemCheckBoxes':\n this.showItemCheckBoxes = newProp.showItemCheckBoxes;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableVirtualization':\n this.enableVirtualization = newProp.enableVirtualization;\n requiresRefresh = true;\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 'enableRangeSelection':\n this.wireSelectOnDragEvent(false);\n if (newProp.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n requiresRefresh = true;\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n requiresRefresh = true;\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 if (this.view === 'Details') {\n var columns = this.detailsViewSettings.columns;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.sortBy; }) !== -1;\n if (!isValidSortField) {\n return;\n }\n refresh(this);\n this.notify(events.sortByChange, {});\n this.notify(events.sortColumn, {});\n }\n else {\n refresh(this);\n this.notify(events.sortByChange, {});\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 case 'fileSystemData':\n this.fileSystemData = newProp.fileSystemData;\n requiresRefresh = true;\n break;\n }\n }\n if (requiresRefresh) {\n this.refresh();\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 this.viewElem = null;\n this.dragSelectElement = null;\n this.dragSelectedItems = 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 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 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 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 * Specifies the method that must be invoked to traverse the path backwards in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.traverseBackward = function () {\n if (this.pathNames.length > 1 && this.breadcrumbbarModule.searchObj.element.value === '' && !this.isFiltered) {\n this.pathId.pop();\n this.pathNames.pop();\n var newPath = this.pathNames.slice(1).join('/');\n newPath = newPath === '' ? '/' : '/' + newPath + '/';\n this.setProperties({ path: newPath }, true);\n read(this, events.pathChanged, this.path);\n var treeNodeId = this.pathId[this.pathId.length - 1];\n this.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\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 var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the method which must be invoked to programmatically close the dialog popup in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.closeDialog = function () {\n closePopup(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([])\n ], FileManager.prototype, \"fileSystemData\", 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 Property(false)\n ], FileManager.prototype, \"enableRangeSelection\", 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, \"beforeFolderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"folderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDelete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"delete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeRename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"rename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeMove\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"move\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"search\", 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, \"menuClose\", 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","/* 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 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 = Object.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 * @returns {void}\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 * @returns {void}\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 *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} 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 =\n Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) /\n (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount *\n (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 || itemCount === 0) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n *\n * @param {boolean} destroy - Set `true` to unwire the scroll event.\n * @returns {void}\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 * @returns {void}\n * @private\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 ?\n 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 *\n * @param {number} startingHeight The starting height from which to calculate the scroll position.\n * @returns {number} The current scroll position.\n * @private\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 *\n * @param {number} listDiff The number of rows to update.\n * @param {boolean} isScrollingDown If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\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 *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\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 * @returns {void}\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, isFileSystemData } 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 // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = [];\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 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 var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\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 && isNOU(this.dragObj)) {\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 this.dragObj = null;\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 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 NavigationPane.prototype.addChild = function (files, target, prevent) {\n var directories = getDirectories(files);\n var targetDirectory = this.getTreeData(target);\n if (directories.length > 0 && targetDirectory.length > 0 &&\n (directories[0].filterPath == null ||\n isNOU(targetDirectory[0])\n && targetDirectory[0].filterPath == null\n || directories[0].filterPath !==\n targetDirectory[0].filterPath)) {\n var length_1 = 0;\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length_1.toString(), 10)]._fm_icon = 'e-fe-folder';\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 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 &&\n !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 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.setProperties({ 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 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.setProperties({ 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 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 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 this.isNodeExpandCalled = true;\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 }\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.setProperties({ 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.setProperties({ 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 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.setProperties({ 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.setProperties({ 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 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 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 = this.previousSelected.length > 0 && this.treeObj.getTreeData(this.previousSelected[0]).length !== 0\n ? this.previousSelected[0] : getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n this.updateItemData();\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 var data = this.treeObj.getTreeData();\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 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, this.parent.path);\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.setProperties({ selectedNodes: [e.selectedNode] });\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n if (isFileSystemData(this.parent)) {\n this.moveNames = [];\n var obj = this.parent.dragData;\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 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 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 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 NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\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 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 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 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 (isFileSystemData(this.parent) && (this.parent.path === this.parent.dropPath || this.parent.targetModule === 'navigationpane')) {\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 var obj = this.parent.isDragDrop || isFileSystemData(this.parent) ? 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 var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\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 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 NavigationPane.prototype.getTreeData = function (args) {\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 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 node = select('[data-uid=\"' + this.parent.pathId[this.parent.pathId.length - 1] + '\"]', this.treeObj.element);\n updatePath(node, this.parent.itemData[0], this.parent);\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/* eslint-disable @typescript-eslint/no-explicit-any */\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.isMultiSelect = 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 back: 'backspace'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n var _this = this;\n if (this.parent.enablePersistence) {\n var gridPersistenceValue = window.localStorage.getItem('grid' + this.parent.element.id + '_grid');\n if (!isNOU(gridPersistenceValue)) {\n var model = JSON.parse(gridPersistenceValue);\n if (!isNOU(model) && Object.keys(model).length > 0 && 'sortSettings' in model) {\n delete model.sortSettings;\n window.localStorage.setItem('grid' + this.parent.element.id + '_grid', JSON.stringify(model));\n }\n }\n }\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;\n if (this.parent.isMobile || !isValidSortField) {\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 load: function () {\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 {number} - 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 if (this.parent.enableRangeSelection) {\n var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };\n columns.push(HiddenName);\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 text = getValue('name', args.data);\n var textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n if (name_1.indexOf(type) !== -1) {\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\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 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 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 var items = getSortedData(this.parent, (this.parent.enableVirtualization)\n ? args.result\n : 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 && (!isNullOrUndefined(this.gridObj.getDataRows()) && this.gridObj.getDataRows().length > 0)) {\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 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 && !this.parent.hasId && 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 DetailsView.prototype.addSelection = function (data) {\n var items = this.gridObj.getCurrentViewRecords();\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 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 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 'showItemCheckBoxes':\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 var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === 'filterPath'; });\n if ((this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) ||\n (!isNullOrUndefined(pathField) && !isNullOrUndefined(pathField.hideAtMedia) && pathField.hideAtMedia !== '')) {\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 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 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 var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\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 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 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 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 && isNullOrUndefined(this.dragObj)) {\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 this.dragObj = null;\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\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 var info = null;\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 ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\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 if (!this.isMultiSelect) {\n this.isMultiSelect = true;\n if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {\n args.cancel = true;\n var rowIndex = (args && args.rowIndexes)\n ? args.rowIndexes[args.rowIndexes.length - 1]\n : args.rowIndex;\n this.gridObj.selectRow(rowIndex);\n }\n this.isMultiSelect = false;\n }\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 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 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 var _this = this;\n if (toBind) {\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 _this.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (_this.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', _this.parent.allowMultiSelection, _this.gridObj.selectionModule);\n addClass([_this.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 = _this.gridObj.getRows().indexOf(row);\n _this.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 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 DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\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 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 case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\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 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 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 var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\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 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 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 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 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 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 DetailsView.prototype.getRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\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 var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\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 var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\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 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 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":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","AjaxSettings","ChildProperty","Property","apply","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","field","headerText","minWidth","template","customAttributes","class","type","format","width","initializeCSPTemplate","data","size","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","NAVIGATION_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","SEARCH_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT","NAVIGATION","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","FRAME","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","SUBMENU_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","BREADCRUMBS","RTL","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","OVERLAY","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","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","updatePath","node","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","ids","push","names","isId","parentText","el","parentNode","matches","CLS.LIST_ITEM","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","newPath","parseInt","toString","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","getAllChildItems","parentId","children","fileSystemData","filter","item","String","allChildren","slice","forEach","child","childId","concat","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","read","events.layoutChange","searchSettings","filterType","currData","filteredData","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","Search","events.search","showHiddenItems","getPathObject","hiddenItems","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","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","filetype","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.FOLDER","getImageUrl","baseUrl","pathUrl","fileName","fPath","imgUrl","trigger","eventArgs_1","fileDetails","imageUrl","ajaxSettings","url","encodeURIComponent","eventArgs","imgId","replace","Date","getTime","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","isNullOrUndefined","sortBy","group","lists","getObject","result","feFiles","createEmptyElement","emptyEle","dragFile","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","top","eDiv","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","style","marginTop","getDirectories","setNodeId","rootId","dirs","len","setValue","setDateObject","localeString","dateFormat","createdDate","modifiedDate","formatDate","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","navData","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","getTargetPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dragPath","subFolder","name_1","dragData","srcData","dragNodes","tempTarget","dropHandler","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","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","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","closePopup","dialogObj","hide","getAccessDetails","isPathPermision","accessMessage","copyOrMovePermission","undefined","responseData","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","isFileExists","some","findIndexById","findIndex","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","createErrorObject","triggerRenameOperation","renameEventArgs","fileData","oldName","updateChildrenFilterPath","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","index","splice","obj","subItem","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","target_1","getTargetFiles","subItems","pathArray","currItem","targetItem","searchEventArgs","searchResults","searchText","fn","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","renamedItem","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","intl","rootAliasName","Internationalization","rootName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","pathObject","pathLevel","renamePath","isArray","events.renameEndParent","renameText","previousSelected","getTreeData","events.pathChanged","events.renameEnd","moveorcopyEventArgs","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","responseType","useFormPost","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","extractedFilename","filenameMatch","blobUrl","URL","createObjectURL","link","href","body","status","options","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","bind","events.deleteInit","onReSubmit","inputEle","txt","formattedString","CLS.VALUE","strArr","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","replaceItems","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","events.skipUpload","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","onKeepBothAll","retryArgs","retry","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","btnCount","_loop_1","onkeydown","keyCode","preventDefault","onSubmitValidate","oldExtension","newExtension","oIndex","renamedId","nIndex","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","LargeIconsView","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","CLS.LARGEICON_ID","ul","activeEle","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","isPasteOperation","selectItems","uploadOperation","CLS.ACTIVE","maxHeight","getItemCount","addEventListener","wireEvents","setUlElementHeight","wireScrollEvent","isRendered","hideSpinner","checkItem","x","z","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","cwdData","getModuleName","dropLi","info","removeAttribute","curData","textEle","renderCheckbox","checkElement","showItemCheckBoxes","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","lastItem","getFirstItem","getLastItem","doSelection","ctrlKey","shiftKey","isInteraction","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","keyConfigs","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","clickObj","Touch","tap","eve","isDevice","tapCount","tapEvent","doTapAction","originalEvent","dblClickHandler","clickHandler","tapHold","multiSelect","addClass","CLS.MULTI_SELECT","updateType","isMac","metaKey","isMacRightClick","cList","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","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","traverseBackward","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","getPropertyValue","isVisible","liScrPos","getCurFocusedItem","liParent","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","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","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","BreadCrumbBar","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","searchWrap","subMenuObj","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","CLS.SEARCH_ID","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","searchWrapWidth","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","searchTimer","nodeName","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","addressBarLink","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","addressPath","ContextMenu","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","iconSpan","getMenuId","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","isFocused","parentItem","menuType","menuCloseArgs","menuTarget","isMenuItemClicked","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","currentElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","navUid","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","enable","isUniqueId","checkValidItem","isTree","renameIndex","getItemData","contextMenuSettings","trim","selectedTreeNode","indexToRemove","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","events.downloadInit","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","FileManager_1","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","Component","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","adjustHeight","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","CLS.LAYOUT","navigationWrap","CLS.NAVIGATION_ID","CLS.NAVIGATION","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","CLS.BREADCRUMBS","largeiconWrap","role","overlay","CLS.OVERLAY","dialogWrap","paneSettings","min","max","maxWidth","Splitter","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","bar","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","chunkSize","uploadSettings","retryCount","uploading","onUploading","chunkUploading","onChunkUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","autoClose","onChunkUploadComplete","response","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","dragX","pageX","dragY","pageY","dragSelectElement","styles","append","onDragStop","onDrag","diffX","stopPropagation","diffY","setStyleAttribute","left","Math","abs","dragSelectedItems","dragRect","allItems_1","itemRect","right","bottom","setPath","oldProp","requiresRefresh","ajaxSettingSetModel","localeSetModelOption","col","refreshing","CLS.RTL","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","closeDialog","rtl","Complex","Collection","Event","NotifyPropertyChanges","previousPath","nextPath","deleteRecords","isSameAction","persistData","Inject","Toolbar","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","firstChild","hideItems","default","hideStatus","portals","updateSortByButton","itemCount","mergedItems","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","single","selection","multiple","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","currentViewItems","largeIconInstance","lastRowCount","rowItemCount","topElement","filemanagerInstance","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","onInit","rootData","attr","BaseTreeView","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getDragPath","getDropPath","nodeData","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","currFiles","sNode","expandTree","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","removeNodes","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selectedNodeEle","selcetedEle","onRenameEndParent","id_1","nData","onDownLoadInit","onClearPathInit","onDragEnd","moveNames","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","ctrlShiftN","shiftF10","DetailsView","sortSettings","isValidSortField","enablePersistence","gridPersistenceValue","localStorage","getItem","model","setItem","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","pane","initialColumn","isNameWidth","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cBox","cWidth","disableHtmlEncode","gridHeader","renderCheckBox","isColumnRefresh","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","hdTable","cnTable","selectRecords","getDataRows","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","isLoaded","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","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","isMultiSelect","isShiftPressed","isCtrlPressed","rowIndexes","selectedRecords","firstItemIndex","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","crtSrlPos","crtFocusIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","nameFocus","treeFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","Resize","Sort","VirtualScroll","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"86BACQA,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,EAsBoCS,EAvBxCC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,EAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIM,GAAwCrB,EAkB1CsB,gBAjBErB,EAAUoB,EAAcrB,CAAM,EAI9BO,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,cAAe,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,cAAe,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,YAAa,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,MAAO,KAAA,CAAM,EACjCgB,GAfP,SAASA,IACL,OAAkB,OAAXrB,GAAmBA,EAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzB3DZ,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,EAwBuCS,EAzB3CC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,EAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAEWU,EAAsB,CAAC,YAAa,SAAU,MAAO,OAAQ,QAAS,SAAU,WAAY,SACnG,SAAU,UAAW,YAAa,OAAQ,WAI1CC,GAA2C1B,EAY7CsB,gBAXErB,EAAUyB,EAAiB1B,CAAM,EAIjCO,EAAW,CACPgB,WAASE,CAAmB,GAC7BC,EAAgBrB,UAAW,QAAS,KAAA,CAAM,EAC7CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACdG,EAAgBrB,UAAW,UAAW,KAAA,CAAM,EACxCqB,GATP,SAASA,IACL,OAAkB,OAAX1B,GAAmBA,EAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KAWxBH,EA4DzCsB,gBA3DErB,EAAU0B,EAAa3B,CAAM,EAI7BO,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,KAAM,KAAA,CAAM,EACtCE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,QAAS,KAAA,CAAM,EACzCE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfI,EAAYtB,UAAW,oBAAqB,KAAA,CAAM,EACrDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACdI,EAAYtB,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,QAAQ,GAClBI,EAAYtB,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,IAAI,GACdI,EAAYtB,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,QAAS,KAAA,CAAM,EACzCE,EAAW,CACPgB,WAAS,CAAC,CAAC,GACZI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,cACDI,EAAYtB,UAAW,OAAQ,KAAA,CAAM,MA1DDL,EAAvC2B,EA2DOA,EAzDP,SAASA,IACL,OAAkB,OAAX3B,GAAmBA,EAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzC3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsBsCS,GAvB1CC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIa,GAA0C5B,GAkB5CsB,gBAjBErB,EAAU2B,GAAgB5B,EAAM,EAIhCO,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdK,GAAevB,UAAW,sBAAuB,KAAA,CAAM,EAC1DE,GAAW,CACPgB,WAAS,UAAU,GACpBK,GAAevB,UAAW,aAAc,KAAA,CAAM,EACjDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdK,GAAevB,UAAW,aAAc,KAAA,CAAM,EACjDE,GAAW,CACPgB,WAAS,IAAI,GACdK,GAAevB,UAAW,cAAe,KAAA,CAAM,EAC3CuB,IAfP,SAASA,KACL,OAAkB,OAAX5B,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GA2C2CS,GA5C/CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKWc,GAAc,CACrB,CACIC,MAAO,OAAQC,WAAY,OAAQC,SAAU,IAC7CC,SAAU,yCACVC,iBAAkB,CAAEC,MAAO,mBAE/B,CACIL,MAAO,eAAgBC,WAAY,eAAgBK,KAAM,WACzDC,OAAQ,sBAAuBL,SAAU,IAAKM,MAAO,OAEzD,CACIR,MAAO,OAAQC,WAAY,OAAQC,SAAU,GAAIM,MAAO,MAExDL,SAAUM,wBAAsB,SAAUC,GACtC,MAAO,2BAA+BA,EAAKC,KAAO,UACrD,EAAGJ,OAAQ,OAMhBK,IAA+C1C,GAYjDsB,gBAXErB,GAAUyC,GAAqB1C,EAAM,EAIrCO,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdmB,GAAoBrC,UAAW,iBAAkB,KAAA,CAAM,EAC1DE,GAAW,CACPgB,WAASM,EAAW,GACrBa,GAAoBrC,UAAW,UAAW,KAAA,CAAM,EAC5CqC,IATP,SAASA,KACL,OAAkB,OAAX1C,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KC9C3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GA2B2CS,GA5B/CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAEW4B,GAAY,CAAC,OAAQ,IAAK,MAAO,OAAQ,IAAK,SAAU,WAAY,SAAU,IAAK,WACnFC,GAAc,CAAC,OAAQ,IAAK,MAAO,OAAQ,QAAS,IAAK,SAAU,SAAU,WAAY,IAAK,WAC9FC,GAAc,CACrB,SAAU,OAAQ,UAAW,IAAK,QAAS,IAAK,YAAa,SAAU,IAAK,UAAW,IAAK,aAK5FC,IAA+C9C,GAkBjDsB,gBAjBErB,GAAU6C,GAAqB9C,EAAM,EAIrCO,GAAW,CACPgB,WAASoB,EAAS,GACnBG,GAAoBzC,UAAW,OAAQ,KAAA,CAAM,EAChDE,GAAW,CACPgB,WAASqB,EAAW,GACrBE,GAAoBzC,UAAW,SAAU,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAASsB,EAAW,GACrBC,GAAoBzC,UAAW,SAAU,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACduB,GAAoBzC,UAAW,UAAW,KAAA,CAAM,EAC5CyC,IAfP,SAASA,KACL,OAAkB,OAAX9C,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KC9B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsB8CS,GAvBlDC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIgC,IAAkD/C,GAkBpDsB,gBAjBErB,GAAU8C,GAAwB/C,EAAM,EAIxCO,GAAW,CACPgB,WAAS,OAAO,GACjBwB,GAAuB1C,UAAW,WAAY,KAAA,CAAM,EACvDE,GAAW,CACPgB,WAAS,OAAO,GACjBwB,GAAuB1C,UAAW,WAAY,KAAA,CAAM,EACvDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdwB,GAAuB1C,UAAW,UAAW,KAAA,CAAM,EACtDE,GAAW,CACPgB,WAAS,MAAM,GAChBwB,GAAuB1C,UAAW,YAAa,KAAA,CAAM,EACjD0C,IAfP,SAASA,KACL,OAAkB,OAAX/C,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsBsCS,GAvB1CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIiC,IAA0ChD,GA2B5CsB,gBA1BErB,GAAU+C,GAAgBhD,EAAM,EAIhCO,GAAW,CACPgB,WAAS,EAAE,GACZyB,GAAe3C,UAAW,oBAAqB,KAAA,CAAM,EACxDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdyB,GAAe3C,UAAW,aAAc,KAAA,CAAM,EACjDE,GAAW,CACPgB,WAAS,CAAA,CAAK,GACfyB,GAAe3C,UAAW,YAAa,KAAA,CAAM,EAChDE,GAAW,CACPgB,WAAS,CAAA,CAAK,GACfyB,GAAe3C,UAAW,kBAAmB,KAAA,CAAM,EACtDE,GAAW,CACPgB,WAAS,CAAC,GACXyB,GAAe3C,UAAW,cAAe,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAAS,GAAQ,GAClByB,GAAe3C,UAAW,cAAe,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAAS,CAAC,GACXyB,GAAe3C,UAAW,YAAa,KAAA,CAAM,EACzC2C,IAxBP,SAASA,KACL,OAAkB,OAAXhD,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuB8BS,GAxBlCC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIkC,IAAkCjD,GA4DpCsB,gBA3DErB,GAAUgD,EAAQjD,EAAM,EAIxBO,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,QAAS,KAAA,CAAM,EACpCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,aAAc,KAAA,CAAM,EACzCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,QAAS,KAAA,CAAM,EACpCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPgB,WAAS,MAAM,GAChB0B,EAAO5C,UAAW,YAAa,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,kBAAmB,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,OAAQ,KAAA,CAAM,EACnCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,SAAU,KAAA,CAAM,EACrCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,iBAAkB,KAAA,CAAM,EAC7CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd0B,EAAO5C,UAAW,gBAAiB,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,mBAAoB,KAAA,CAAM,EAC/CE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,cAAe,KAAA,CAAM,EAC1CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EACpC4C,GAzDP,SAASA,IACL,OAAkB,OAAXjD,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,SCvBxD+C,GAAa,WAEbC,GAAY,UAEZC,GAAgB,cAEhBC,GAAU,QAEVC,GAAU,QAEVC,GAAe,cAEfC,GAAY,UAIZC,GAAgB,cAEhBC,GAAiB,eAEjBC,GAAmB,iBAInBC,GAAkB,eAQlBC,GAAa,WAEbC,GAAmB,iBAEnBC,GAAY,UAIZC,GAAY,UAKZC,GAAO,gBAEPC,GAAU,YAEVC,GAAe,iBAEfC,GAAa,aAEbC,GAAS,cAETC,GAAY,yBAEZC,GAAe,gBAEfC,GAAS,gBAETC,GAAS,WAETC,GAAa,eAEbC,GAAiB,mBAEjBC,GAAc,gBAEdC,GAAU,iBAEVC,EAAY,cAEZC,GAAY,cAEZC,GAAc,gBAEdC,EAAiB,oBAEjBC,GAAgB,mBAEhBC,GAAO,SAEPC,EAAS,WAETC,GAAQ,UAERC,GAAQ,UAERC,GAAU,YAEVC,GAAQ,UAERC,GAAQ,UAERC,GAAU,qBAEVC,GAAM,QAINC,EAAQ,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,cAEZC,GAAe,UAEfC,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,oBAIhBC,GAAc,YAEdC,GAAM,QAENC,GAAe,iBAIfC,GAAU,YAIVC,GAAY,cAEZC,GAAe,gBAEfC,GAAU,eAEVC,GAAQ,aCtNRC,EAAe,gBAEfC,GAAa,cAEbC,EAAc,eAEdC,GAAY,aAEZC,GAAY,aAIZC,GAAW,YAEXC,GAAa,cAEbC,GAAY,aAEZC,GAAa,cAEbC,GAAY,aAEZC,GAAiB,kBAEjBC,EAAc,eAEdC,GAAU,UAEVC,GAAgB,iBAIhBC,GAAa,cAEbC,GAAe,gBAIfC,GAAgB,iBAEhBC,GAAgB,gBAEhBC,GAAS,SAETC,GAAW,YAEXC,GAAU,WAEVC,EAAmB,oBAEnBC,GAAgB,kBAEhBC,GAAe,iBAEfC,GAAgB,kBAEhBC,EAAe,gBAEfC,GAAe,iBAEfC,GAAa,cAEbC,EAAc,eAEdC,GAAe,iBAEfC,GAAa,cAEbC,GAAkB,oBAElBC,EAAY,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,WAEVC,GAAW,YAIXC,GAAW,WAEXC,GAAsB,wBAEtBC,GAAa,cAEbC,GAAiB,OAEjBC,EAAiB,QAEjBC,GAAyB,gBAIzBC,GAAmB,SAEnBC,GAAqB,WClFzB,SAASC,GAAWC,EAAM7J,EAAM8J,GACnC,IAAIC,EAAOC,WAAS,OAAQhK,CAAI,EAC5BiK,EAAKJ,EAAKK,aAAa,SAAS,EAChCC,EAAUC,oBAAMH,CAAE,EAAIF,EAAOE,EACjCH,EAASO,cAAc,CAAEC,KAAMC,GAAQV,EAAMM,EAASL,EAASU,KAAK,GAAK,CAAA,CAAI,EAC7EV,EAASW,OAASC,GAAUb,CAAI,EAChCC,EAASa,UAAYC,GAAaf,EAAME,CAAI,CAChD,CAUO,SAASQ,GAAQM,EAASd,EAAMS,GAInC,IAHA,IAAIM,EAAUC,GAAWF,EAASd,EAAM,CAAA,EAAOS,CAAK,EAChDF,EAAO,IAEF3L,EADCmM,EAAQxM,SACK,GAALK,EAAQA,CAAC,GACvB2L,GAAQQ,EAAQnM,GAAK,IAEzB,OAAO2L,CACX,CAQO,SAASI,GAAUb,GAGtB,IAFA,IAAIiB,EAAUC,GAAWlB,EAAMA,EAAKK,aAAa,UAAU,EAAG,CAAA,CAAI,EAC9Dc,EAAM,GACDrM,EAAImM,EAAQxM,OAAS,EAAQ,GAALK,EAAQA,CAAC,GACtCqM,EAAIC,KAAKH,EAAQnM,EAAE,EAEvB,OAAOqM,CACX,CASO,SAASJ,GAAaC,EAASd,GAGlC,IAFA,IAAIe,EAAUC,GAAWF,EAASd,EAAM,CAAA,CAAK,EACzCmB,EAAQ,GACHvM,EAAImM,EAAQxM,OAAS,EAAQ,GAALK,EAAQA,CAAC,GACtCuM,EAAMD,KAAKH,EAAQnM,EAAE,EAEzB,OAAOuM,CACX,CAWO,SAASH,GAAWF,EAASd,EAAMoB,EAAMX,GAG5C,IAFA,IAIYY,EAJRN,EAAU,CAACf,GACXsB,EAAKR,EAAQS,WACV,CAAClB,oBAAMiB,CAAE,IACRE,UAAQF,EAAI,IAAMG,CAAa,IAC3BJ,EAAaD,EAAOE,EAAGnB,aAAa,UAAU,EAAKM,EAAQa,EAAGnB,aAAa,SAAS,EACpFuB,SAAO,IAAMC,GAAeL,CAAE,EAAEM,YACpCb,EAAQG,KAAKG,CAAU,GAGvBC,EADJA,EAAKA,EAAGC,YACDM,UAAUC,SAASC,EAAa,KAI3C,OAAOhB,CACX,CAQO,SAASiB,GAAaC,GAIzB,IAHA,IAAI9N,EAAM8N,EAAOxB,MAAQ,KAAO,OAC5ByB,EAAU,IACVtN,EAAI,EACAA,EAAIqN,EAAOvB,OAAOnM,OAAQK,CAAC,GAAI,CACnC,IAAIqB,EAAOgK,WAASgC,EAAOvB,OAAOyB,SAASvN,EAAEwN,WAAY,EAAE,GAAIH,EAAOI,QAAQ,EAC9EH,GAAWjC,WAAS9L,EAAK8B,CAAI,EAAI,IAErCgM,EAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,CAChD,CAQO,SAASI,GAAaL,GACrBA,EAAOM,QACPC,EAAWP,CAAM,EACjBA,EAAOQ,cAAgB,GACvBR,EAAOS,cAAgB,GACvBT,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOC,GAAkB,EAAE,EAE1C,CASO,SAASC,GAAcC,EAAQd,GAKlC,GAJAA,EAAOe,YAAc,CAAA,EACrBf,EAAOS,cAAgB,GACvBT,EAAOgB,eAAiB,GACxBhB,EAAOW,OAAOM,GAAoB,EAAE,EACC,IAAjCjB,EAAOgB,eAAe1O,OACtB,MAAO,CAAA,EAEXiO,EAAWP,CAAM,EACjB,IAAIkB,EAAUlB,EAAOgB,eAOjBrO,GANwB,mBAAxBqN,EAAOmB,aACPnB,EAAOoB,WAAapB,EAAO1B,KAG3B0B,EAAOoB,WAAaC,GAAcrB,EAAO1B,IAAI,EAEzC,GACR,GAAI4C,IACAI,GAAUtB,EAAQkB,EAAQ,EAAE,EACb,QAAXJ,GACA,KAAOnO,EAAIuO,EAAQ5O,QACfiP,GAAQL,EAAQvO,EAAE,EAClBA,CAAC,GAQb,IAJAA,EAAI,EACJqN,EAAOQ,cAAgB,GACvBR,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOa,GAAkB,EAAE,EAC3B7O,EAAIqN,EAAOyB,cAAcnP,QAC5B0N,EAAOS,cAAcxB,KAAKe,EAAOyB,cAAc9O,EAAE,EACjDqN,EAAOQ,cAAcvB,KAAKjB,WAAS,OAAQgC,EAAOyB,cAAc9O,EAAE,CAAC,EACnEA,CAAC,GAEL,IAA4D,KAAvDqN,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgB5B,EAAO6B,aAC7C,mBAAxB7B,EAAOmB,aAAmC,CAC1CnB,EAAOQ,cAAgB,GACvBR,EAAOe,YAAc,CAAA,EAErB,IADA,IAAIe,EAAM,EACHA,EAAM9B,EAAO+B,cAAczP,QAC9B0N,EAAOQ,cAAcvB,KAAKe,EAAO+B,cAAcD,EAAI,EACnDA,CAAG,GAGX,MAAO,CAAA,CACX,CAQO,SAASP,GAAQS,GACpBA,EAAMpC,UAAUqC,IAAIC,EAAQ,CAChC,CASO,SAAS3B,EAAWP,EAAQmC,GAI/B,IAHA,IAAIjB,EAAYiB,EACZnC,EAAOnB,QAAQuD,iBAAiB,IAAMC,EAAS,EAD1BrC,EAAOnB,QAAQuD,iBAAiB,IAAMF,EAAQ,EAEnEvP,EAAI,EACDA,EAAIuO,EAAQ5O,QACf4O,EAAQvO,GAAGiN,UAAU0C,OAASH,EAAoBE,GAAXH,EAAoB,EAC3DvP,CAAC,EAET,CASO,SAAS2O,GAAUtB,EAAQnB,GAC1BA,IACIA,EAAQe,UAAUC,SAAS0C,EAAO,EAClCvC,EAAOmB,aAAe,cAEjBqB,UAAQ3D,EAAS,IAAM4D,EAAc,EAC1CzC,EAAOmB,aAAe,iBAGtBnB,EAAOmB,aAAe,iBAGlC,CASO,SAASuB,GAAiB1C,EAAQ2C,GACrC,IAAIC,EAAW5C,EAAO6C,eAAeC,OAAO,SAAUC,GAClD,OAAOC,OAAOD,EAAKJ,QAAQ,IAAMK,OAAOL,CAAQ,EACnD,EACGM,EAAcL,EAASM,QAK3B,OAJAN,EAASO,QAAQ,SAAUC,GACnBC,EAAUD,EAAMnF,GACpBgF,EAAcA,EAAYK,OAAOZ,GAAiB1C,EAAQqD,CAAO,CAAC,EACrE,EACMJ,CACX,CAUO,SAASM,GAAkBvD,EAAQ4B,EAAO4B,GAC7C,IAkCQC,EAXJC,EAtBiB,IAAjB9B,EAAMtP,QAAiB0N,EAAO6B,YAC9B7B,EAAOW,OAAOgD,GAAmB,CAAEC,KAAM5D,EAAQ,EAEjD6D,EAAiB7D,CAAM,EACT,KAAV4B,GACA5B,EAAO8D,SAAW9D,EAAO6C,eACzBkB,EAAK/D,EAAQgE,EAAqBhE,EAAO1B,IAAI,IAG7C0B,EAAOiE,eAAeC,WAAa9F,oBAAM4B,EAAOiE,eAAeC,UAAU,EAAI,WAAalE,EAAOiE,eAAeC,WAC5GC,EAAWnG,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAI0N,EAAOI,QAAQ,EAE5EgE,EAAe1B,GAAiB1C,EADrBhC,WAAS,KAAMmG,CAAQ,CACc,EAChDnQ,EAAO,IAAIqQ,cAAYD,CAAY,EACnCE,cAAa,IAAIC,SAAQC,MAAM,OAAQxE,EAAOiE,eAAeC,WAAYtC,EAAO5B,EAAOiE,eAAeQ,UAAU,CAAC,EACjHC,EAAc1E,EAAOiE,eAAeQ,WAAa7C,EAAM+C,cAAgB/C,EAC3E5B,EAAO8D,SAAW9P,EAClB4Q,GAAO5E,EAAQwD,EAAiBQ,EAAsBa,GAAe7E,EAAO1B,KAAMoG,EAAa1E,EAAO8E,gBAAiB,CAAC9E,EAAOiE,eAAeQ,UAAU,IAK5Jf,EADqC,eAArC1D,EAAOiE,eAAeC,WACTtC,EAAQ,IAEqB,aAArC5B,EAAOiE,eAAeC,WACd,IAAMtC,EAGN,IAAMA,EAAQ,IAE/B5B,EAAO0D,WAAaA,EACpB1D,EAAO8D,SAAW,CAACiB,EAAc/E,CAAM,GACpB,EAAf4B,EAAMtP,QACFmR,EAAgBzD,EAAOiE,eAAeQ,WACtCO,EAAchF,EAAO8E,gBACzBF,GAAO5E,EAAQwD,EAAiBQ,EAAsBa,GAAe7E,EAAO1B,KAAMoF,EAAYsB,EAAa,CAACvB,CAAa,GAGpHzD,EAAO6B,WAURiB,GAAO9C,EAAQgE,CAAmB,EAT9BhE,EAAOiF,iBACPjF,EAAOW,OAAOqD,EAAqB,CAAEkB,MAA2B,YAAnBlF,EAAOmF,QAAyBnF,EAAOoF,kBAAkBC,QAAQC,WAAatF,EAAOuF,qBAAqBC,SAAU,EACjKxF,EAAOiF,gBAAkB,CAAA,GAGzBlB,EAAK/D,EAAQwD,EAAiBQ,EAAsBa,GAAe7E,EAAO1B,IAAI,EAO9F,CASO,SAASmH,GAAazF,EAAQ0F,GACjC1F,EAAOmF,QAAUnF,EAAO0F,KACxB1F,EAAO3B,cAAc,CAAEqH,KAAMA,GAAQ,CAAA,CAAI,EACkB,KAAvD1F,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgB5B,CAAAA,EAAO6B,aACpE7B,EAAO2F,oBAAsB3F,EAAO+B,eAEpC2B,EAAa,GACb1D,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,QAC7C8B,EAAa1D,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAE9D5B,EAAOwD,eAAiB,CAAA,EACxBD,GAAkBvD,EAAQ0D,EAAY,CAAA,CAAI,CAC9C,CAUO,SAASkC,GAAgB5F,EAAQnB,GACpC,IAAIgH,EAAgB,GAChBhH,IAEIgH,EADArD,UAAQ3D,EAAS,IAAMiH,GAAW,IAAMC,GAAc,KAAOC,EAAgB,EAC7D,cAEXxD,UAAQ3D,EAAS,IAAMoH,EAAe,EAC3B,iBAEXpH,EAAQe,UAAUC,SAAS,WAAW,GAC3ChB,EAAQe,UAAUC,SAAS,mBAAmB,EAC9B,iBAEX2C,UAAQ3D,EAAS,sBAAsB,EAC5B,gBAGA,IAGxBmB,EAAOkG,aAAeL,CAC1B,CASO,SAASM,GAAQnG,GACpBA,EAAO8D,SAAW,CAACiB,EAAc/E,CAAM,GAClCoG,GAAcpG,EAAO8D,SAAS,EAAE,EAIjCC,EAAK/D,EAAQqG,GAAmBrG,EAAO1B,IAAI,EAH3CgI,EAAmBtG,EAAQA,EAAO8D,SAAS,GAAIyC,EAAqB,CAK5E,CAQO,SAASC,GAAWxG,GACvB+D,EAAK/D,EAAQyG,GAAgBzG,EAAO1B,IAAI,CAC5C,CAQO,SAASyG,EAAc/E,GAC1B,OAAOhC,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAI0N,EAAOI,QAAQ,CAC5E,CAQO,SAASsG,GAAU1G,GACjBa,GAAc,OAAQb,CAAM,IAI7BA,EAAO2G,WAAa,OAE5B,CAQO,SAASC,GAAS5G,GAChBa,GAAc,MAAOb,CAAM,IAI5BA,EAAOM,MAAQ,CAAA,EACfN,EAAO2G,WAAa,OAE5B,CAQO,SAASE,GAASC,GAErB,OADa9I,WAAS,SAAU8I,CAAI,GAWN,CAAC,KAA3BC,GAFAA,EAAW/I,WAAS,OAAQ8I,CAAI,GAChBnC,eACPqC,QAAQ,GAAG,IACpBD,EAAWA,EAASE,MAAM,GAAG,EAAEC,KAAK,EAAE,GAGJ,CAAC,IAXrB,CAAC,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,OAAQ,MAAO,OAW5EF,QAAQD,CAAQ,EACjBI,GAE4B,CAAC,IAb1B,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAa/CH,QAAQD,CAAQ,EACtBK,GAE4B,CAAC,IAf1B,CAAC,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAe9DJ,QAAQD,CAAQ,EACtBM,GAE4B,CAAC,IAjB1B,CAAC,MAAO,MAAO,OAAQ,KAAM,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,OAAQ,MACrG,OAAQ,MAAO,MAAO,MAAO,OAgBZL,QAAQD,CAAQ,EACtB,QAAUA,EAGV,qBAAuBA,GA1B3BO,EA6Bf,CAUO,SAASC,GAAYvH,EAAQ+C,GAChC,IASIyE,EACAC,EACAC,EACAC,EAZAC,EAAS/D,EAAiB7D,CAAM,EAAIhC,WAAS,WAAY+E,CAAI,EAAI,GACrE,OAAIc,EAAiB7D,CAAM,GAKvBA,EAAO6H,QAAQ,kBAJXC,EAAc,CACdC,YAAa,CAAChF,GACdiF,SAAUJ,EAE+B,EACtCE,IAGPL,EAAoC,CAAC,KADrCD,EAAUxH,EAAOiI,aAAaV,aAAgDvH,EAAOiI,aAAaC,KAC/ElB,QAAQ,GAAG,EAAY,SAAW,SACrDU,EAAWS,mBAAmBnK,WAAS,OAAQ+E,CAAI,CAAC,EACpD4E,EAAQ3J,WAAS,aAAc+E,CAAI,EAYnCqF,EAAY,CACZL,YAAa,CAAChF,GACdiF,SAHJJ,GARIA,EAFA5H,EAAOxB,OACH6J,EAAQrK,WAAS,KAAM+E,CAAI,EACtByE,EAAUC,EAAUzH,EAAO1B,KAAO,OAAS+J,GAE9CjK,oBAAMuJ,CAAK,EAIRH,EAAUC,EAAUzH,EAAO1B,KAAOoJ,EAHlCF,EAAUC,EAAUU,mBAAmBR,EAAMW,QAAQ,MAAO,GAAG,CAAC,EAAIZ,GAK/D,UAAY,IAAIa,MAAOC,QAAS,EAAErI,YAKpDH,EAAO6H,QAAQ,kBAAmBO,CAAS,EACpCA,IAtBgBJ,QAuB3B,CAWO,SAASS,GAAYzI,EAAQhM,EAAMsK,GACtC,IAAIoK,EAAW1K,WAASgC,EAAOxB,MAAQ,KAAO,OAAQxK,CAAI,EAAI,IAC1D2T,EAAQ3J,WAASgC,EAAOxB,MAAQ,WAAa,aAAcxK,CAAI,EACnE,OAAKoK,oBAAMuJ,CAAK,EAILrJ,EAAOoK,EAHPf,EAAMW,QAAQ,MAAO,GAAG,EAAII,CAK3C,CASO,SAASC,GAAQ3I,EAAQhM,GAC5B,IAAI4U,EAAO5K,WAAS,OAAQhK,CAAI,EAC5B2T,EAAQ3J,WAAS,aAAchK,CAAI,EAKvC,OAFI4U,EAFwD,KAAvD5I,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgB5B,CAAAA,EAAO6B,YAAgBzD,oBAAMuJ,CAAK,EAI7FiB,GAHHjB,EAAQA,EAAMW,QAAQ,MAAO,GAAG,GACnBA,QAAQtI,EAAO1B,KAAM,EAAE,EAAIsK,CAGhD,CASO,SAASC,GAAc7I,EAAQ8I,GAClC,OAAqB,IAAjBA,EAAMxW,OACCwW,GAOPC,GAJqB,SAArB/I,EAAOgJ,WAAyBC,oBAAkBjJ,EAAOgJ,SAAS,EAI1D,IAAIzE,SAHJ,IAAIA,SAAQ2E,OAAOlJ,EAAOkJ,OAAQlJ,EAAOgJ,UAAUrE,cAAe,CAAA,CAAI,GAG1DwE,MAAM,QAAQ,EAElCC,EAAQ,IAAI/E,cAAYyE,CAAK,EAAExE,aAAayE,CAAK,EAC9C/K,WAAS,UAAWoL,CAAK,EACpC,CAUO,SAASC,GAAUrJ,EAAQ9N,EAAK0P,GAE/B0H,EADYtL,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAI0N,EAAOuJ,OAAO,EACzDzG,OAAO,SAAU9O,GAAQ,OAAOA,EAAK9B,GAAKiO,aAAeyB,EAAQ,EACxF,OAAuB,EAAhB0H,EAAOhX,OAAagX,EAAO,GAAK,IAC3C,CAUO,SAASE,GAAmBxJ,EAAQnB,EAAS+E,GAChD,IAUQ6F,EACAC,EAVJC,EAAgBlK,SAAO,IAAMO,EAAOnB,QAAQZ,GAAK2L,GAAe5J,EAAOnB,OAAO,EAC9EgL,EAAmBpK,SAAO,IAAMO,EAAOnB,QAAQZ,GAAK6L,GAAsBH,CAAa,EAAEI,aAC7FC,EAAML,EAAcI,aAAeF,EAqC/BI,GApCgB,YAAhBjK,EAAO0F,OACPsE,GAAYvK,SAAO,IAAMyK,GAAiBP,CAAa,EAAEI,cAEzD3L,oBAAMS,EAAQsL,cAAc,IAAMC,CAAS,CAAC,IACxCC,EAAWC,gBAAc,MAAO,CAAEC,UAAWH,EAAW,EACxDI,EAAcF,gBAAc,MAAO,CAAEC,UAAWE,GAAwB,EACxEhB,EAAWa,gBAAc,MAAO,CAAEC,UAAWG,GAAmB,EAChEhB,EAAWY,gBAAc,MAAO,CAAEC,UAAWI,GAAyB,GACtD,YAAhB3K,EAAO0F,KACP7G,EAAQsL,cAAc,IAAMS,EAAa,EAGzC/L,GAH2CgM,YAAYR,CAAQ,EAKnEA,EAASQ,YAAYL,CAAW,EAChCH,EAASQ,YAAYpB,CAAQ,EAC7BY,EAASQ,YAAYnB,CAAQ,GAE7B7K,EAAQsL,cAAc,IAAMC,CAAS,IAChChM,oBAAMwF,EAAKkH,KAAK,EAIZ9K,EAAO6B,YACZhD,EAAQsL,cAAc,IAAMO,EAAiB,EAAEK,UAAYC,EAAchL,EAAQ,cAAc,EAC/FnB,EAAQsL,cAAc,IAAMQ,EAAuB,EAAEI,UAAYC,EAAchL,EAAQ,YAAY,GAEvC,KAAvDA,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAClD/C,EAAQsL,cAAc,IAAMO,EAAiB,EAAEK,UAAYC,EAAchL,EAAQ,cAAc,EAC/FnB,EAAQsL,cAAc,IAAMQ,EAAuB,EAAEI,UAAYC,EAAchL,EAAQ,YAAY,IAGnGnB,EAAQsL,cAAc,IAAMO,EAAiB,EAAEK,UAAYC,EAAchL,EAAQ,cAAc,EAC/FnB,EAAQsL,cAAc,IAAMQ,EAAuB,EAAEI,UAAYC,EAAchL,EAAQ,aAAa,IAbpGnB,EAAQsL,cAAc,IAAMO,EAAiB,EAAEK,UAAYC,EAAchL,EAAQ,eAAe,EAChGnB,EAAQsL,cAAc,IAAMQ,EAAuB,EAAEI,UAAYC,EAAchL,EAAQ,gBAAgB,IAepGP,SAAO,IAAM2K,EAAWvL,CAAO,GAC1CmL,GAAOA,EAAMC,EAAKF,cAAgB,EAClCE,EAAKgB,MAAMC,UAAYlB,EAAM,IACjC,CAQO,SAASmB,GAAejG,GAC3B,OAAO,IAAIb,cAAYa,CAAK,EAAEZ,cAAa,IAAIC,SAAQC,MD9qBvC,SC8qB4D,QAAS,CAAA,EAAO,CAAA,CAAK,CAAC,CACtG,CASO,SAAS4G,GAAU9B,EAAQ+B,GAE9B,IADA,IAAIC,EAAOH,GAAe7B,EAAOpE,KAAK,EAC7BvS,EAAI,EAAG4Y,EAAMD,EAAKhZ,OAAQK,EAAI4Y,EAAK5Y,CAAC,GACzC6Y,WAAS,SAAUH,EAAS,IAAM1Y,EAAG2Y,EAAK3Y,EAAE,CAEpD,CAUO,SAAS8Y,GAAc7H,EAAM8H,EAAcC,GAC9C,IAAK,IAAIhZ,EAAI,EAAGA,EAAIiR,EAAKtR,OAAQK,CAAC,GAAI,CAClC,IAAIiZ,EAAc,IAAIrD,KAAKvK,WAAS,cAAe4F,EAAKjR,EAAE,CAAC,EACvDkZ,EAAe,IAAItD,KAAKvK,WAAS,eAAgB4F,EAAKjR,EAAE,CAAC,EACzDyL,oBAAMuN,CAAU,IAChBA,EAAa,cAEjBH,WAAS,cAAeE,EAAaI,WAAWF,EAAa,CAAE/X,OAAQ8X,EAAY,EAAG/H,EAAKjR,EAAE,EAC7F6Y,WAAS,eAAgBE,EAAaI,WAAWD,EAAc,CAAEhY,OAAQ8X,EAAY,EAAG/H,EAAKjR,EAAE,EAEvG,CASO,SAASqY,EAAchL,EAAQjC,GAC9BgO,EAAS/L,EAAOgM,UAAUC,YAAYlO,CAAI,EAC9C,MAAmB,KAAXgO,EAAiBhO,EAAOgO,CACpC,CASO,SAASG,GAAYlM,EAAQmM,GAC5BC,EAAWpM,EAAOoM,SAEtB,OADYhO,oBAAMgO,CAAQ,GAAkB,KAAbA,EAAmBD,EAAOC,EAAW,IAAMD,CAE9E,CASO,SAASE,GAAmBrM,EAAQ4D,GAEvC5D,EAAOiF,gBAAkB,CAAA,EACiB,CAAC,IAAvCrB,EAAKb,KAAK9E,GAAG+I,QAAQ,WAAW,GAAmD,CAAC,IAAxCpD,EAAKb,KAAK9E,GAAG+I,QAAQ,YAAY,GAA6C,CAAC,IAAlCpD,EAAKb,KAAK9E,GAAG+I,QAAQ,MAAM,EAUpHhH,EAAOgJ,UAAYsD,GAAa1I,EAAKb,KAAK9E,EAAE,EAH5C+B,EAAOkJ,OAASoD,GAAa1I,EAAKb,KAAK9E,GAAI+B,CAAM,EAKrDA,EAAO8D,SAAW,CAACiB,EAAc/E,CAAM,GACnB,YAAhBA,EAAO0F,OACH1F,EAAOuM,SACP9G,GAAazF,EAAQ,SAAS,GAG9BA,EAAOW,OAAO6L,GAAmB,CAAEC,OAAQ,cAAe,EAC1DzM,EAAOiF,gBAAkB,CAAA,IAGb,eAAhBjF,EAAO0F,MACPD,GAAazF,EAAQ,YAAY,EAErCA,EAAOW,OAAO+L,GAAqB,EAAE,CACzC,CASO,SAASJ,GAAarO,EAAI+B,GAC7B,IAEI2M,EAFA5O,EAAOE,EAAG2O,UAAU3O,EAAG4O,YAAY,GAAG,EAAI,CAAC,EAC3CvZ,EAAQyK,EAKZ,OAHIiC,IACA2M,EAAS3M,EAAO8M,oBAAoBC,SAEhChP,GACJ,IAAK,OACD,IAAK,IAAIpL,EAAI,EAAG4Y,EAAMoB,EAAOra,OAAQK,EAAI4Y,EAAK5Y,CAAC,GAAI,CAC/C,GAAwB,iBAApBga,EAAOha,GAAGW,OAAgD,gBAApBqZ,EAAOha,GAAGW,MAAyB,CACzEA,EAAQqZ,EAAOha,GAAGW,MAClB,MAGAA,EAAQ,eAGhB,MACJ,IAAK,YACDA,EAAQ,YACR,MACJ,IAAK,aACDA,EAAQ,aACR,MACJ,IAAK,OACDA,EAAQ,OAGhB,OAAOA,CACX,CASO,SAAS0Z,GAAYhN,EAAQ1B,GAKhC,IAJA,IAAI2O,EAAc3O,EAAK2I,MAAM,GAAG,EAC5BiG,EAAUlN,EAAOmN,aAAalG,MAAM,GAAG,EACvCmG,EAAOpP,WAASgC,EAAOvB,OAAO,GAAIuB,EAAOI,QAAQ,EACjDlO,EAAMkM,oBAAMJ,WAAS,KAAMoP,CAAI,CAAC,EAAI,OAAS,KACxCza,EAAIsa,EAAY3a,OAAS,EAAGiZ,EAAM2B,EAAQ5a,OAAS,EAAGK,EAAI4Y,EAAK5Y,CAAC,GAAI,CACzE,IAIQsL,EAJJoP,EAAgC,KAAnBH,EAAQva,EAAI,GAAa2a,EAAqBC,GAC3DtN,EAA0B,KAAfiN,EAAQva,GAAa,IAAOqN,EAAO1B,KAAO4O,EAAQva,GAAK,IAClEqB,EAAOqV,GAAUrJ,EAAQ9N,EAAKgb,EAAQhN,SAASvN,EAAEwN,WAAY,EAAE,EAAE,EAChE8I,oBAAkBjV,CAAI,EAQvBgM,EAAOmN,aAAelN,GAPlBhC,EAAKD,WAAS,SAAUhK,CAAI,EAChCgM,EAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EAC5CD,EAAOvB,OAAOQ,KAAKhB,CAAE,EACrB+B,EAAO8D,SAAW,CAAC9P,GACnBgM,EAAOrB,UAAUM,KAAKjB,WAAS,OAAQhK,CAAI,CAAC,GAKhD+P,EAAK/D,EAAQqN,EAAWrN,EAAO1B,IAAI,EACnC,MAER,CASO,SAASkP,GAAiBxN,EAAQhM,GACrCgM,EAAOmN,aAAe1E,GAAYzI,EAAQhM,EAAMgM,EAAO1B,IAAI,EAC3D,IAAI8O,EAAOpP,WAASgC,EAAOvB,OAAO,GAAIuB,EAAOI,QAAQ,EACjDqN,EAAUzN,EAAOI,SAASpC,WAAS,SAAUgC,EAAO8D,SAAS,EAAE,GAC/D4J,EAASzE,oBAAkBwE,CAAO,GAAqC,YAAhCzP,WAAS,SAAUyP,CAAO,EAEjEE,EAAatE,GAAUrJ,EADjB5B,oBAAMJ,WAAS,KAAMoP,CAAI,CAAC,EAAI,OAAS,KACTvJ,EAAiB7D,CAAM,EAAIhC,WAAS,KAAMhK,CAAI,EAAIgK,WAAS,OAAQhK,CAAI,CAAC,EAChH,GAAIiV,oBAAkB0E,CAAU,EAAG,CAC/B,GAAKD,EAKD,OADAV,KAAAA,GAAYhN,EAAQA,EAAO1B,IAAI,EAH/B0B,EAAOW,OAAOiN,GAAsB,CAAEC,aAAc7N,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAI,MAOhG,CACG2L,EAAKD,WAAS,SAAU2P,CAAU,EACtC3N,EAAO3B,cAAc,CAAEC,KAAM0B,EAAOmN,cAAgB,CAAA,CAAI,EACxDnN,EAAOvB,OAAOQ,KAAKhB,CAAE,EACrB+B,EAAO8D,SAAW,CAAC6J,GACnB3N,EAAOrB,UAAUM,KAAKjB,WAAS,OAAQ2P,CAAU,CAAC,EAEtD5J,EAAK/D,EAASA,EAAO1B,OAAS0B,EAAOmN,aAAgBI,GAAoBD,EAAoBtN,EAAO1B,IAAI,CAC5G,CAQO,SAASwP,GAAa9N,GAEzB,IACQ1B,EAFR0B,EAAO+N,WAAa,CAAA,EACgB,IAAhC/N,EAAOQ,cAAclO,QAAgB0N,EAAOU,cACxCpC,EAA8B,KAAtB0B,EAAOgO,WAAqBhO,EAAO1B,KAAO0B,EAAOgO,WACjC,mBAAxBhO,EAAOmB,cAAsCnB,EAAOQ,cAAc,GAAGyN,SAAS,GAAG,IACjFjO,EAAOoB,WAAa8M,GAAclO,EAAQA,EAAOS,cAAc,EAAE,GAErD0N,GAAkBnO,EAAQA,EAAOS,cAAenC,EAAM0B,EAAO1B,IAAI,IAElD,SAAtB0B,EAAO2G,YAAyB3G,EAAOoB,aAAe9C,GAA+B,SAAtB0B,EAAO2G,YACvE3G,EAAOW,OAAOyN,GAAkB,EAAE,EAClCC,GAAMrO,EAAQA,EAAOoB,WAAYpB,EAAOQ,cAAelC,EAAM0B,EAAO2G,WAAY,GAAI3G,EAAOS,aAAa,IAGxGT,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOC,GAAkB,EAAE,EAClCL,EAAWP,CAAM,EASjBsO,EAAatO,EAAQ,QARR,CACTkF,MAAO,KACP4F,MAAO,CACHyD,KAAM,MACNC,QAASxD,EAAchL,EAAQ,mBAAmB,EAClDyO,WAAY,MAGgB,IAIpD,CAWO,SAASN,GAAkBnO,EAAQhM,EAAMmJ,EAAUuR,GAEtD,IADA,IAAIC,EAAY,CAAA,EACPhc,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAKqL,WAAS,SAAUhK,EAAKrB,EAAE,EAgB1B,CACD,IAAIic,EAAS5O,EAAO6O,SAASlc,GAAKqN,EAAO6O,SAASlc,GAAGiW,KAAO,KACxDkG,EAAUjL,EAAiB7D,CAAM,EAAI4O,EAAS5O,EAAO+O,UAAUpc,GAC/D4Y,EAAM,EAINjN,EAAO,GAIX,IAFIA,EADM,GAHNiN,EADAuD,EACMA,EAAQjC,YAAY,GAAG,EAG7BtB,GACOmD,EAAWI,EAAQlC,UAAU,EAAGrB,EAAM,CAAC,EAE9CjN,KAASnB,EAAU,CASnBmR,EAAatO,EAAQ,QARR,CACTkF,MAAO,KACP4F,MAAO,CACHyD,KAAM,MACNC,QAASxD,EAAchL,EAAQ,mBAAmB,EAClDyO,WAAY,MAGgB,EACpCE,EAAY,CAAA,EACZ,WAtC0B,CAC1BK,EAAavG,GAAYzI,EAAQhM,EAAKrB,GAAI+b,CAAQ,EACtD,GAAqC,IAAjCvR,EAAS6J,QAAQgI,CAAU,EAAS,CASpCV,EAAatO,EAAQ,QARR,CACTkF,MAAO,KACP4F,MAAO,CACHyD,KAAM,MACNC,QAASxD,EAAchL,EAAQ,kBAAkB,EACjDyO,WAAY,MAGgB,EACpCE,EAAY,CAAA,EACZ,OA6BZ,OAAOA,CACX,CAQO,SAASM,GAAYjP,GACxBA,EAAO+N,WAAa,CAAA,EACW,IAA3B/N,EAAO6O,SAASvc,SAChB0N,EAAO0O,SAAW1O,EAAO0O,SAASpG,QAAQ,MAAO,GAAG,EACpDtI,EAAO7C,SAAW6C,EAAO7C,SAASmL,QAAQ,MAAO,GAAG,EACpC6F,GAAkBnO,EAAQA,EAAO6O,SAAU7O,EAAO7C,SAAU6C,EAAO0O,QAAQ,GACxE1O,EAAO0O,WAAa1O,EAAO7C,WAC1C6C,EAAO8D,SAAW,CAAC9D,EAAOkP,UAC1Bb,GAAMrO,EAAQA,EAAO0O,SAAU1O,EAAO+O,UAAW/O,EAAO7C,SAAU,OAAQ,GAAI6C,EAAO6O,QAAQ,EAC7F7O,EAAOW,OAAOyN,GAAkB,EAAE,GAG9C,CAQO,SAAS/M,GAAc8N,GAG1B,IAFA,IAAI7Q,EAAO6Q,EAAQlI,MAAM,GAAG,EACxBhH,EAAU3B,EAAK,GAAK,IACf3L,EAAI,EAAGA,EAAI2L,EAAKhM,OAAS,EAAGK,CAAC,GAClCsN,GAAW3B,EAAK3L,GAAK,IAEzB,OAAOsN,CACX,CASO,SAASmP,GAAiBpP,EAAQ4D,GACrC,IAAI8E,EAAW1K,WAASgC,EAAOxB,MAAQ,KAAO,OAAQoF,EAAKyL,GAAG,EAAI,IAC9D1H,EAAQ3J,WAASgC,EAAOxB,OAAS,CAACyK,oBAAkBjJ,EAAOiI,aAAaC,GAAG,EAAI,WAAa,aAActE,EAAKyL,GAAG,EACtH,OAAKjR,oBAAMuJ,CAAK,EAOL9D,EAAiB7D,CAAM,EAAI0I,EAAW1I,EAAO1B,KAAOoK,EAN7C,KAAVf,EACO,IAEJA,EAAMW,QAAQ,MAAO,GAAG,EAAEA,QAAQ,aAAc,EAAE,EAAII,CAKrE,CAUO,SAAS4G,GAActP,EAAQuP,EAAWjG,GAC3B,SAAdiG,IACKvP,EAAO+N,WAMR/N,EAAOW,OAAO6O,GAAgBlG,CAAM,GALpCtJ,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOC,GAAkB,EAAE,EAClCZ,EAAOW,OAAO8O,GAAenG,CAAM,IAMN,IAAjCtJ,EAAO0P,eAAepd,SACtB0N,EAAO2P,WAAa,IAGxB,IADA,IACSC,EAAQ,EAAIA,EAAQtG,EAAOpE,MAAM5S,OAAkBsd,CAAK,GAC7D5P,EAAO2P,WAAW1Q,KAAKqK,EAAOpE,MAAM0K,GAAO5P,EAAOxB,MAAQ,KAAO,OAAO,EACpEwB,EAAO+N,YACP/N,EAAO6P,eAAe5Q,KAAKqK,EAAOpE,MAAM0K,EAAM,EAGtD5P,EAAO0P,eAAiB,GACxB1P,EAAO8P,iBAAmB,GACtB9P,EAAO+N,YAAc,CAAC/N,EAAO+P,aAC7B/P,EAAOgQ,UAAY,CAAA,EAGnBhQ,EAAOgQ,UAAY,CAAA,EAEvBhQ,EAAO6H,QAAQ,UAAW,CAAE/G,OAAQyO,EAAWjG,OAAQA,EAAQ,EAC3D,CAACtJ,EAAO+N,YAAe/N,EAAO1B,OAAS0B,EAAO0O,UAAc1O,EAAO1B,OAAS0B,EAAO7C,UAChF6C,EAAOiQ,cACVjQ,EAAOkQ,WAAa,CAAA,EACpBnM,EAAK/D,EAAQmQ,GAAiBnQ,EAAO1B,IAAI,GAGzC8R,GAAapQ,CAAM,CAE3B,CAQO,SAASoQ,GAAapQ,GACzB,IAYYnC,EAZRY,EAAST,WAAS,SAAUgC,EAAOkP,QAAQ,EAC/ClP,EAAOqQ,WAAa5R,EACpBuB,EAAO8D,SAAW,CAAC9D,EAAOkP,UACtBlP,EAAOkQ,WACPlQ,EAAOW,OAAO2P,GAAiBtQ,EAAO8D,QAAQ,GAG1C9D,EAAOuQ,wBACH1S,EAAO4B,SAAO,cAAgBhB,EAAS,KAAMuB,EAAOuQ,qBAAqBC,QAAQ3R,OAAO,KAGxFJ,EADgBgS,SAAStG,cAAc,eAAiBnM,WAAS,KAAMgC,EAAOkP,QAAQ,EAAI,IAAI,EAC3EhR,aAAa,UAAU,EAC1CL,EAAO4B,SAAO,cAAgBhB,EAAS,KAAMuB,EAAOuQ,qBAAqBC,QAAQ3R,OAAO,GAE5FjB,GAAWC,EAAMmC,EAAOkP,SAAUlP,CAAM,GAE5C+D,EAAK/D,EAAQ0Q,GAAiB1Q,EAAO7C,QAAQ,EAErD,CASO,SAASwT,GAAiB3Q,EAAQ4I,GAGrC,IAFA,IAAI5U,EAAO,KACP4c,EAAU5Q,EAAO+N,WAAa/N,EAAO6O,SAAW7O,EAAOS,cAClD9N,EAAI,EAAGA,EAAIie,EAAQte,OAAQK,CAAC,GACjC,GAAIqL,WAAS,OAAQ4S,EAAQje,EAAE,IAAMiW,EAAM,CACvC5U,EAAO4c,EAAQje,GACf,MAGR,OAAOqB,CACX,CAQO,SAAS6c,GAAyB7Q,GAKrC,GAJAA,EAAOiQ,aAAe,CAAA,EACqC,KAAvDjQ,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,QAC7C5B,EAAOiQ,aAAe,CAAA,GAEE,mBAAxBjQ,EAAOmB,aAAmC,CAC1CnB,EAAO+O,UAAY,GAEnB,IADA,IAAIpc,EAAI,EACDA,EAAIqN,EAAO+B,cAAczP,QAC5B0N,EAAO+O,UAAU9P,KAAKe,EAAO+B,cAAcpP,EAAE,EAC7CA,CAAC,GAE+B,IAAhCqN,EAAO+B,cAAczP,QAAgB0N,EAAO6O,UAAuC,IAA3B7O,EAAO6O,SAASvc,QACxE0N,EAAO+O,UAAU9P,KAAK6R,GAAY9Q,EAAQA,EAAO6O,SAAS,EAAE,CAAC,EAGrE,IAAIkC,EAAY/Q,EAAOsK,cAAc,MAAO,CACxCC,UAAW,aAAe1D,GAAS7G,EAAO6O,SAAS,EAAE,EACxD,EACGmC,EAAYhR,EAAOsK,cAAc,MAAO,CACxCC,UAAW,YACXQ,UAAW/K,EAAO6O,SAAS,GAAGjG,KACjC,EACGqI,EAAajR,EAAOsK,cAAc,MAAO,CACzCC,UAAW,eACd,EAGG2G,GAFJD,EAAWpG,YAAYkG,CAAS,EAChCE,EAAWpG,YAAYmG,CAAS,EACtBhR,EAAOsK,cAAc,MAAO,CAClCC,UAAW4G,GACd,GACDD,EAAIrG,YAAYoG,CAAU,EACI,EAA1BjR,EAAO+O,UAAUzc,SACb8e,EAAQpR,EAAOsK,cAAc,OAAQ,CACrCC,UAAW,aACXQ,UAAY/K,EAAO+O,UAAgB,OAAE5O,SAAS,EAAE,EACnD,EACD+Q,EAAIrG,YAAYuG,CAAK,GAEzBpR,EAAOqR,mBAAqBH,EAC5BlR,EAAOnB,QAAQgM,YAAY7K,EAAOqR,kBAAkB,CACxD,CASO,SAASC,GAAgBtR,EAAQ4D,GACpC,IAAI2N,EAAW3N,EAUXqN,GATJM,EAASC,OAAS,CAAA,EACY,MAA1BxR,EAAOyR,kBACPC,OAAOC,aAAa3R,EAAOyR,eAAe,EAC1CzR,EAAOyR,gBAAkB,MAE7BG,GAAiB5R,CAAM,EACvBA,EAAOnB,QAAQe,UAAU0C,OAAO,YAAa,WAAW,EACxD/B,EAAWP,CAAM,EACjBA,EAAO6R,UAAUC,SAAWrS,SAAO,IAAMO,EAAOnB,QAAQZ,GAAK8T,GAAgB/R,EAAOnB,OAAO,EAC1EY,SAAO,IAAM0R,GAAWnR,EAAOnB,OAAO,GACnDoS,GACAe,SAAOf,CAAU,EAErBrL,GAAgB5F,EAAQ4D,EAAK3R,MAAM,EACnC+N,EAAOW,OAAOsR,GAAiBrO,CAAI,EACnCrD,EAAWP,EAAQ,OAAO,EAC1BuR,EAASxJ,YAAc/H,EAAO6O,SAC9B7O,EAAO6H,QAAQ,eAAgB0J,EAAU,SAAUA,GAC3C,CAACA,EAASC,QAAU,CAACpT,oBAAM4B,EAAOkG,YAAY,GAA6B,KAAxBlG,EAAOkG,cAA0C,EAAnBlG,EAAOkS,WACxFjD,GAAYjP,CAAM,EAEtBA,EAAOkS,UAAY,EACtB,CACL,CAUO,SAASC,GAAiBnS,EAAQ4D,EAAMwO,GAC3C,IAAIb,EAAW3N,EAiBf,GAhBA2N,EAASC,OAAS,CAAA,EAClBD,EAASxJ,YAAc/H,EAAO6O,SAC9B7O,EAAOkS,UAAY,EACnBlS,EAAO6P,eAAiB,GACnB7P,EAAOqS,mBAA8C,mBAAxBrS,EAAOmB,cACpCqB,UAAQoB,EAAK/E,QAAS,IAAI,EAAEX,aAAa,UAAU,IAAM8B,EAAOvB,OAAO,MACxE8S,EAASC,OAAS,CAAA,GAEO,mBAAxBxR,EAAOmB,cACyE,CAAC,IAAjFnB,EAAOvB,OAAOuI,QAAQxE,UAAQoB,EAAK/E,QAAS,IAAI,EAAEX,aAAa,UAAU,CAAC,EAC3E8B,EAAOkQ,WAAa,CAAA,EAGpBlQ,EAAOkQ,WAAa,CAAA,EAExB3P,EAAWP,CAAM,EACbuR,EAASC,OACTY,EAAQE,WAAW1O,EAAK2O,KAAK,EAC7BC,GAAWxS,CAAM,OAEhB,GAAI,CAACuR,EAASC,OAAQ,CAEvB,IADA,IAAI7e,EAAI,EACDA,EAAIqN,EAAOgB,eAAe1O,QAC7BiP,GAAQvB,EAAOgB,eAAerO,EAAE,EAChCA,CAAC,GAELqN,EAAO6H,QAAQ,gBAAiB0J,EAAU,SAAUA,GAC5CA,EAASC,QACTY,EAAQE,WAAW1O,EAAK2O,KAAK,EAC7BC,GAAWxS,CAAM,GAGjBA,EAAO6R,UAAUC,SAAW,KAEnC,EAET,CAQO,SAASU,GAAWxS,GACvBO,EAAWP,CAAM,EACbiR,EAAaxR,SAAO,IAAM0R,GAAWnR,EAAOnB,OAAO,EACnDoS,GACAe,SAAOf,CAAU,CAEzB,CAQO,SAASW,GAAiB5R,GAC7ByS,GAAgBzS,EAAQ0S,EAAe,EACvCD,GAAgBzS,EAAQ2S,EAAa,CACzC,CASO,SAASF,GAAgBzS,EAAQ4B,GAEpC,IADA,IAAIsP,EAAMlR,EAAOnB,QAAQuD,iBAAiB,IAAMR,CAAK,EAC5CjP,EAAI,EAAGA,EAAIue,EAAI5e,OAAQK,CAAC,GAC7Bue,EAAIve,GAAGiN,UAAU0C,OAAOV,CAAK,CAErC,CAWO,SAASgR,GAAcC,EAAc7S,EAAQ8S,EAAWC,GAC3D,IAAIC,EACAC,EAAcJ,EAAaK,wBAC3BrV,EAAO4B,SAAO,IAAMqT,EAAWD,CAAY,EAC1CE,GAAYE,EAAYjJ,IAAM6I,EAAaM,aAAe,IAAQ,CAAClK,oBAAkBpL,CAAI,IAC1FmV,EAAoC,mBAAxBhT,EAAOkG,cAA6D,gBAAxBlG,EAAOkG,aAAkCrI,EAAKkM,aAAe,IAAMlM,EAAKkM,aAAe,IAC/I8I,EAAaO,SAAS,EAAGJ,CAAQ,GAEjC,CAAC/J,oBAAkBpL,CAAI,GAAMkV,GAAYE,EAAYjJ,IAAM,KAC3DgJ,EAAoC,mBAAxBhT,EAAOkG,cAA6D,gBAAxBlG,EAAOkG,aAAkCrI,EAAKkM,aAAe,IAAMlM,EAAKkM,aAAe,IAC/I8I,EAAaO,SAAS,EAAG,CAACJ,CAAQ,EAE1C,CASO,SAASK,GAAgBrT,EAAQ4D,GACpC,IAAI2N,EAAW3N,EAEX0P,GADJ/B,EAASxJ,YAAc/H,EAAO6O,SAChB,CAAA,GAQVhR,GAPJ+H,GAAgB5F,EAAQ4D,EAAK3R,MAAM,EACnC2f,GAAiB5R,CAAM,EACO,MAA1BA,EAAOyR,kBACPC,OAAOC,aAAa3R,EAAOyR,eAAe,EAC1CzR,EAAOyR,gBAAkB,MAE7BlR,EAAWP,EAAQ,OAAO,EACf,MAEiB,mBAAxBA,EAAOkG,eACPrI,EAAO2E,UAAQoB,EAAK3R,OAAQ,IAAI,GAC3B2N,UAAUqC,IAAII,GAAWqQ,EAAe,EAC7CY,EAAU,CAAA,EAEVtT,EAAOyR,gBAAkBC,OAAO6B,WAAW,WAAcvT,EAAOW,OAAO6S,GAAiB5P,CAAI,GAAM,GAAG,EAErGgP,GADe5S,EAAOuQ,qBAAqBC,QAAQ3R,QAAQ4U,cAC/BzT,EAAQ,YAAa4D,EAAK2O,MAAMmB,CAAC,GAEhC,gBAAxB1T,EAAOkG,eACZrI,EAAO2E,UAAQoB,EAAK3R,OAAQ,IAAI,IACpB4L,EAAKsM,cAAc,IAAM7C,EAAU,GAAK,CAACzJ,EAAK+B,UAAUC,SAASqC,EAAQ,EACjFrE,EAAK+B,UAAUqC,IAAIyQ,EAAe,EAE7B7U,CAAAA,GAASA,EAAKsM,cAAc,IAAM7C,EAAU,GAAMzJ,EAAK+B,UAAUC,SAASqC,EAAQ,GACvFrE,EAAK+B,UAAUqC,IAAI0Q,EAAa,EAEpCW,EAAU,CAAA,EAEVV,GADe5S,EAAOoF,kBAAkBC,QAAQxG,QAAQsL,cAAc,YAAY,EACtDnK,EAAQ,QAAS4D,EAAK2O,MAAMmB,CAAC,GAE5B,mBAAxB1T,EAAOkG,eACZrI,EAAO2E,UAAQoB,EAAK3R,OAAQ,IAAI,IACpB4L,EAAKsM,cAAc,IAAM7C,EAAU,GAAK,CAACzJ,EAAK+B,UAAUC,SAASqC,EAAQ,GACjFrE,EAAK+B,UAAUqC,IAAII,GAAWqQ,EAAe,EAEjDY,EAAU,CAAA,EAEVV,GADe5S,EAAOuF,qBAAqB1G,QAAQ8U,kBACvB3T,EAAQ,eAAgB4D,EAAK2O,MAAMmB,CAAC,GAGnC,kBAAxB1T,EAAOkG,eACZoN,EAAU,CAAA,GAEdtT,EAAOnB,QAAQe,UAAU0C,OAAO,YAAa,WAAW,EACxDtC,EAAOnB,QAAQe,UAAUqC,IAAIqR,EAAU,YAAc,WAAW,EAChEtT,EAAOkS,UAAYlS,EAAOkS,UAAY,EACtClS,EAAO6H,QAAQ,eAAgB0J,CAAQ,CAC3C,CASO,SAASqC,GAAe5f,GAG3B,IAFA,IAAI6f,EAAM,GACNC,EAAO5iB,OAAO4iB,KAAK9f,CAAI,EAClBrB,EAAI,EAAGA,EAAImhB,EAAKxhB,OAAQK,CAAC,GACd,YAAZmhB,EAAKnhB,KACLkhB,IAAc,IAANlhB,EAAU,GAAK,MAAQmhB,EAAKnhB,GAAK,KAAOqL,WAAS8V,EAAKnhB,GAAIqB,CAAI,GAG9E,OAAO6f,CACX,CASO,SAAS/C,GAAY9Q,EAAQhM,GAChC,OAAIgM,EAAOxB,MACAR,WAAS,KAAMhK,CAAI,EAEvB2U,GAAQ3I,EAAQhM,CAAI,CAC/B,CASO,SAAS+f,GAAmB/T,EAAQhM,GACvCgM,EAAO8D,SAAW,CAAC9P,GACnBgM,EAAOgU,gBAAkBhW,WAAS,OAAQhK,CAAI,EAC9CgM,EAAOiU,OAASjW,WAAS,SAAUhK,CAAI,EACvCgM,EAAOkU,WAAalW,WAAS,aAAchK,CAAI,CACnD,CAQO,SAASmgB,GAASnU,GAChBoU,EAAcpU,EAAO8D,SAAS,EAAE,EAIjCwK,EAAatO,EAAQ,QAAQ,EAH7BsG,EAAmBtG,EAAQA,EAAO8D,SAAS,GAAIuQ,CAAqB,CAK5E,CASO,SAASC,GAAWtU,GAEvB,IADA,IAAI8I,EAAQ9I,EAAO8D,SACVnR,EAAI,EAAGA,EAAImW,EAAMxW,OAAQK,CAAC,GAC/B,GAAI,CAAC4hB,GAAkBzL,EAAMnW,EAAE,EAE3B,OADA2T,KAAAA,EAAmBtG,EAAQ8I,EAAMnW,GAAI6hB,EAAyB,EAIpC,EAA9BxU,EAAO+B,cAAczP,QACrBmiB,GAASzU,EAAQA,EAAO1B,KAAM0B,EAAO+B,aAAa,CAE1D,CAUO,SAAS2S,GAAc1U,EAAQhM,EAAM2gB,GACxC,IAAK,IAAIhiB,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAI,CAACyhB,EAAcpgB,EAAKrB,EAAE,EAEtB,OADA2T,KAAAA,EAAmBtG,EAAQhM,EAAKrB,GAAI0hB,CAAqB,EAIjErU,EAAO8D,SAAW9P,EAClB4gB,GAAO5U,EAAQ2U,EAAQ3U,EAAO1B,KAAM,QAAQ,CAChD,CAWO,SAASuW,GAAgB7U,EAAQhM,EAAM2gB,GAC1C,IAAK,IAAIhiB,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAI,CAAC4hB,GAAkBvgB,EAAKrB,EAAE,EAE1B,OADA2T,KAAAA,EAAmBtG,EAAQhM,EAAKrB,GAAI6hB,EAAyB,EAIrExU,EAAO8D,SAAW9P,EACE,EAAhB2gB,EAAOriB,QACPmiB,GAASzU,EAAQA,EAAO1B,KAAMqW,CAAM,CAE5C,CAUO,SAASrO,EAAmBtG,EAAQhM,EAAM8M,GAC7C,IAAI0N,EAAUxQ,WAAS,UAAWA,WAAS,aAAchK,CAAI,CAAC,EAW9Dsa,EAAatO,EAAQ,QAPN,CACX8K,MAAO,CACHyD,KAAM,MACNE,WAAY,KACZD,QANJA,EADY,KAAZA,EACUxD,EAAchL,EAAQ,gBAAgB,EAAEsI,QAAQ,MAAOtK,WAAS,OAAQhK,CAAI,CAAC,EAAEsU,QAAQ,MAAOxH,CAAM,EAMjG0N,GAGqB,CAC1C,CAQO,SAASsG,GAAe9gB,GAC3B,OAAQoS,GAAcpS,CAAI,EAAgC,cAA5B,yBAClC,CAQO,SAASoS,GAAcpS,GACtB+gB,EAAa/W,WAAS,aAAchK,CAAI,EAC5C,MAAO,EAAC+gB,GAAe/W,CAAAA,WAAS,OAAQ+W,CAAU,EACtD,CAQO,SAASX,EAAcpgB,GACtB+gB,EAAa/W,WAAS,aAAchK,CAAI,EAC5C,MAAO+gB,CAAAA,GAAe/W,WAAS,OAAQ+W,CAAU,GAAK/W,WAAS,QAAS+W,CAAU,CACtF,CAQO,SAASC,GAAiBhhB,GACzB+gB,EAAa/W,WAAS,aAAchK,CAAI,EAC5C,MAAO+gB,CAAAA,GAAe/W,WAAS,OAAQ+W,CAAU,GAAK/W,WAAS,gBAAiB+W,CAAU,CAC9F,CAQO,SAASE,GAAgBjhB,GACxB+gB,EAAa/W,WAAS,aAAchK,CAAI,EAC5C,MAAO+gB,CAAAA,GAAe/W,WAAS,OAAQ+W,CAAU,GAAK/W,WAAS,SAAU+W,CAAU,CACvF,CAQO,SAASR,GAAkBvgB,GAC1B+gB,EAAa/W,WAAS,aAAchK,CAAI,EAC5C,MAAO+gB,CAAAA,GAAe/W,WAAS,OAAQ+W,CAAU,GAAK/W,WAAS,WAAY+W,CAAU,CACzF,CAQO,SAASG,GAAgBlV,GAC5B,IAAImV,EAAUnV,EAAO8D,SAAS,GACzBkR,GAAiBG,CAAO,EAIzB7G,EAAatO,EAAQ,WAAW,EAHhCsG,EAAmBtG,EAAQmV,EAASC,EAA6B,CAKzE,CAQO,SAASC,GAAWrV,GACvB,IAKQsV,EALJH,EAAUnV,EAAO8D,SAAS,GACzBmR,GAAgBE,CAAO,GAIpBG,EAAQ,IAAMtV,EAAOnB,QAAQZ,GAAKsX,GACtB9E,SAAStG,cAAcmL,CAAK,EAClCE,SALVlP,EAAmBtG,EAAQmV,EAASM,EAAuB,CAOnE,CAQO,SAASC,GAAW1V,GAClBiJ,oBAAkBjJ,EAAO2V,SAAS,GACnC3V,EAAO2V,UAAUC,MAEzB,CASO,SAAS1H,GAAclO,EAAQ8D,GAClC,OAAI9D,EAAOxB,OAAS,CAACJ,oBAAMJ,WAAS,WAAY8F,CAAQ,CAAC,EAC9C9F,WAAS,WAAY8F,CAAQ,EAAEwE,QAAQ,MAAO,GAAG,EAAEA,QAAQ,WAAY,GAAG,EAG1EtK,WAAS,aAAc8F,CAAQ,EAAEwE,QAAQ,MAAO,GAAG,CAElE,CAWO,SAASuN,GAAiB7V,EAAQ8D,EAAUhD,EAAQgV,GAEvD,IADA,IAAIC,EAAgB,GACXpjB,EAAI,EAAGA,EAAImR,EAASxR,OAAQK,CAAC,GAAI,CACtC,IAaQqjB,EAbJjB,EAAa/W,WAAS,aAAc8F,EAASnR,EAAE,EAqBnD,GApBkB,MAAdoiB,IACAA,EAAakB,KAAAA,GAEbH,EACIf,CAAAA,GAAgB/W,WAAS,OAAQ+W,CAAU,GAAM/W,WAAS,gBAAiB+W,CAAU,GAE/D,MADtBgB,EAAgB/X,WAAS,UAAWA,WAAS,aAAc8F,EAASnR,EAAE,CAAC,KAEnEojB,EAAgB/K,EAAchL,EAAQ,gBAAgB,EAAEsI,QAAQ,MAAOtK,WAAS,OAAQ8F,EAASnR,EAAE,CAAC,EAAE2V,QAAQ,MAAO,eAAe,IAKxI0N,EAAkC,SAAXlV,EAAoB9C,WAAS,OAAQ+W,CAAU,EAAI/W,WAAS,QAAS+W,CAAU,EACtGA,CAAAA,GAAgB/W,WAAS,OAAQ+W,CAAU,GAAMiB,GAE3B,MADtBD,EAAgB/X,WAAS,UAAWA,WAAS,aAAc8F,EAASnR,EAAE,CAAC,KAEnEojB,EAAgB/K,EAAchL,EAAQ,gBAAgB,EAAEsI,QAAQ,MAAOtK,WAAS,OAAQ8F,EAASnR,EAAE,CAAC,EAAE2V,QAAQ,MAAOxH,CAAM,IAIjH,KAAlBiV,EAAsB,CACtB/V,EAAOkW,aAAe,CAClB7G,IAAK,KACL8F,QAAS,KACTrK,MAAO,CACHyD,KAAM,MACNC,QAASuH,EACTtH,WAAY,MAEhBvJ,MAAO,MAEX,OAGR,OAAO6Q,CACX,CC7pDO,SAAShS,EAAK/D,EAAQuS,EAAOjU,GAEhC,IADA,IAAIwF,EAAW9D,EAAO8D,SACbnR,EAAI,EAAGA,EAAImR,EAASxR,OAAQK,CAAC,GAC9ByL,oBAAMJ,WAAS,WAAY8F,EAASnR,EAAE,CAAC,GACvC6Y,WAAS,WAAY,CAAA,EAAO1H,EAASnR,EAAE,EAI/CwjB,GAAWnW,EADA,CAAEc,OAAQ,OAAQxC,KAAMA,EAAMwG,gBAAiB9E,EAAO8E,gBAAiB9Q,KAAM8P,GAC/DsS,GAAa7D,CAAK,CAC/C,CASO,SAAS8D,GAAarW,EAAQsW,GAEjCH,GAAWnW,EADA,CAAEc,OAAQ,SAAUxC,KAAM0B,EAAO1B,KAAMsK,KAAM0N,EAAUtiB,KAAMgM,EAAO8D,UACtDyS,GAAeD,CAAQ,CACpD,CASO,SAASxT,GAAO9C,EAAQuS,GAC3B,IAAIve,EAAO,CAAE8M,OAAQ,SAAUxC,KAAM0B,EAAO1B,KAAMwG,gBAAiB9E,EAAO8E,gBAAiB9Q,KAAM,CAAC+Q,EAAc/E,CAAM,IAElHwW,EAAgBxW,EAAOyW,WAAaC,SADpCD,KAAAA,EACuDziB,EAAMgM,EAAOyW,UAAU,EAAIziB,EACtFmiB,GAAWnW,EAAQwW,EAAeG,GAAepE,EAAOvU,WAAS,SAAUwY,CAAa,CAAC,CAC7F,CAUO,SAASI,GAAO5W,EAAQ1B,EAAMuY,GACjC,IAAIjO,EAUIkO,EAAAA,EARmD,KAAvD9W,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiB5B,CAAAA,EAAO6B,aAKjE8F,EAAQ3H,EAAOkU,WACflU,EAAOxB,QALXoK,EAAO5I,EAAOgU,gBACJ6C,IAUNjO,GADAjB,EAAQA,EAAMW,QAAQ,MAAO,GAAG,GACnBA,QAAQhK,EAAM,EAAE,EAAI0B,EAAOgU,gBAC9BrM,EAAMW,QAAQhK,EAAM,EAAE,EAAIuY,GAM5CV,GAAWnW,EAHA,CACPc,OAAQ,SAAUxC,KAAMA,EAAMsK,KAAMA,EAAMkO,QAASA,EAAS9iB,KAAMgM,EAAO8D,SAAUiT,kBAAmB/W,EAAO+W,mBAExFC,GAAe1Y,CAAI,CAChD,CAcO,SAAS+P,GAAMrO,EAAQ1B,EAAMY,EAAOkC,EAAY6V,EAAgBC,EAAazW,GAC5EzM,EAAO,CACP8M,OAAQmW,EAAgB3Y,KAAMA,EAAM6Y,WAAYnX,EAAO8D,SAAS,GAChE1C,WAAYA,EAAYlC,MAAOA,EAAOkY,YAAaF,EAAaljB,KAAMyM,GAE1ET,EAAOqX,gBAAkBjW,EACzB+U,GAAWnW,EAAQhM,EAAMsjB,GAAchZ,EAAM2Y,EAAgB7V,CAAU,CAC3E,CAWO,SAASwT,GAAO5U,EAAQ8I,EAAOxK,EAAMiR,GAExC4G,GAAWnW,EADA,CAAEc,OAAQyO,EAAWjR,KAAMA,EAAMY,MAAO4J,EAAO9U,KAAMgM,EAAO8D,UAC9CyT,GAAejZ,CAAI,CAChD,CAYO,SAASkZ,GAAWxX,EAAQd,EAAOZ,EAAMiR,GAE5C4G,GAAWnW,EADA,CAAEc,OAAQyO,EAAWjR,KAAMA,EAAMY,MAAOA,EAAOlL,KAAMgM,EAAO8D,UAC9C2T,GAAgBnZ,EAAMiR,CAAS,CAC5D,CA8BO,SAAS1L,EAAiB7D,GAE7B,OADuD,GAAhCA,EAAO6C,eAAevQ,QAAe8L,oBAAM4B,EAAOiI,aAAaC,GAAG,CAE7F,CASA,SAASwP,GAAa7U,EAAgB+F,GAElC,OADe/F,EAAe8U,KAAK,SAAU5U,GAAQ,OAAOA,EAAK6F,OAASA,EAAO,CAErF,CASA,SAASgP,GAAc5X,EAAQ/B,GAI3B,OAHY+B,EAAO6C,eAAegV,UAAU,SAAU9U,GAClD,MAAO,CAAC3E,oBAAM2E,CAAI,GAAKC,OAAOD,EAAK9E,EAAE,IAAM+E,OAAO/E,CAAE,EACvD,CAEL,CASA,SAAS6Z,GAAW9X,EAAQ/B,GAExB,OADW+B,EAAO6C,eAAeC,OAAO,SAAUC,GAAQ,OAAOC,OAAOD,EAAK9E,EAAE,IAAM+E,OAAO/E,CAAE,EAAI,EAAE,EAExG,CASA,SAAS8Z,GAAe/X,EAAQ2C,GAE5B,OADW3C,EAAO6C,eAAeC,OAAO,SAAUC,GAAQ,OAAOC,OAAOD,EAAKJ,QAAQ,IAAMK,OAAOL,CAAQ,EAAI,CAElH,CAWA,SAASqV,GAAchkB,EAAM/B,EAAQqkB,EAAU2B,GAC3C,IAES/lB,EAFLgmB,EAAU,GAEd,IAAShmB,KAAO8B,EACR9C,OAAOW,UAAUN,eAAe4mB,KAAKnkB,EAAM9B,CAAG,IAC9CgmB,EAAQhmB,GAAO,MAGvB,IAAIkmB,EAAc,IAAI7P,KAClByF,EAAahL,OAAO/Q,EAAOgM,EAAE,IAAM+E,OAAO,CAAC,GAAM5E,oBAAMnM,EAAO0Q,QAAQ,EAA6C,KAAzC1Q,EAAOiiB,WAAajiB,EAAO2W,KAAO,KAahH,OAZA1X,OAAOmnB,OAAOH,EAAS,CACnBI,YAAaF,EACbG,aAAcH,EACdlE,WAAYlG,EACZwK,SAAUP,CAAAA,CAAAA,GAASjkB,EAAKwkB,SACxBva,GAAIwa,SAAoB,OAAbnC,EAAoBtiB,EAAK4U,KAAO0N,CAAQ,EACnDrC,OAAQgE,CAAAA,CAAAA,GAASjkB,EAAKigB,OACtBrL,KAAmB,OAAb0N,EAAoBtiB,EAAK4U,KAAO0N,EACtC3T,SAAU1Q,EAAOgM,GACjBhK,KAAMgkB,EAASjkB,EAAKC,KAAO,EAC3BL,KAAMqkB,EAASjkB,EAAKJ,KAAO,GAC9B,EACMskB,CACX,CAWA,SAASQ,GAAkB1Y,EAAQwO,EAASD,EAAM7G,GAC9C1H,EAAOkW,aAAe,CAClB7G,IAAK,KACL8F,QAAS,KACTrK,MAAO,CACHyD,KAAMA,EACNC,QAASA,EACTC,WAAwB,MAAZ/G,EAAmBA,EAAW,MAE9CxC,MAAO,KAEf,CAmFA,SAASyT,GAAuB3Y,EAAQhM,EAAMoU,GACtCwQ,EAAkB,CAClBpH,OAAQ,CAAA,EACRsF,QAAS9Y,WAAS,UAAWhK,CAAI,EACjC8P,SAAU9F,WAAS,OAAQhK,CAAI,EAC/BsK,KAAMN,WAAS,OAAQhK,CAAI,GAE/BgM,EAAO6H,QAAQ,eAAgB+Q,EAAiB,SAAUhV,GACtD,IAMYiV,EACAC,EAPRlV,EAAK4N,OACLpJ,EAAUoJ,OAAS,CAAA,EAGnB3N,EAAiB7D,CAAM,IAClB0X,GAAa1X,EAAO6C,eAAgBe,EAAKkT,OAAO,GAO7CtI,EAAU,gBAAkB5K,EAAKE,SAAS,GAAG8E,KAAO,KAAOhF,EAAKkT,QAAU,gCAC9E4B,GAAkB1Y,EAAQwO,EAAS,MAAO,IAAI,IAN1CsK,GADAD,EAAWf,GAAW9X,EAAQ4D,EAAKE,SAAS,GAAG7F,EAAE,GAC9B2K,KACvBiQ,EAASjQ,KAAOhF,EAAKkT,QAoBrC,SAASiC,EAAyB/Y,EAAQ2C,EAAUmW,EAAShC,GACzD9W,EAAO6C,eAAeM,QAAQ,SAAUJ,GACpC,IAEQ9C,EAFJ+C,OAAOD,EAAKJ,QAAQ,IAAMK,OAAOL,CAAQ,IACrCwM,EAAUpM,EAAKmR,WACfjU,EAAUkP,EAAQ7G,QAAQwQ,EAAU,KAAMhC,EAAU,IAAI,EAC5D/T,EAAKmR,WAAajU,EAClB8Y,EAAyB/Y,EAAQ+C,EAAK9E,GAAI6a,EAAShC,CAAO,GAEjE,CACL,EA5ByC9W,EAAQ6Y,EAAS5a,GAAI6a,EAASlV,EAAKkT,OAAO,IAO9E,CACL,CA4JA,SAASkC,GAAoBhZ,EAAQhM,EAAMoU,GACvC,OAAQpK,WAAS,SAAUhK,CAAI,GAC3B,IAAK,SAhQkBgM,EAiQGA,EAjQKhM,EAiQGA,EAjQGoU,EAiQGA,EAhQxC6Q,EAAkB,CAClBC,WAAYlb,WAAS,OAAQhK,CAAI,EACjCwd,OAAQ,CAAA,EACRlT,KAAMN,WAAS,OAAQhK,CAAI,EAC3BmlB,aAAcnb,WAAS,OAAQhK,CAAI,GAEvCgM,EAAO6H,QAAQ,qBAAsBoR,EAAiB,SAAUrV,GAC5D,IAOYwV,EAPRxV,EAAK4N,OACLpJ,EAAUoJ,OAAS,CAAA,EAGnB3N,EAAiB7D,CAAM,IAClB0X,GAAa1X,EAAO6C,eAAgBe,EAAKsV,UAAU,GAMhD1K,EAAU,kCAAoC5K,EAAKsV,WAAa,mBACpER,GAAkB1Y,EAAQwO,EAAS,MAAO,IAAI,IAL1C4K,EAAYpB,GADZqB,EAASzV,EAAKuV,aAAa,GACOE,EAAQzV,EAAKsV,WAAY,CAAA,CAAK,EACpElZ,EAAO6C,eAAe5D,KAAKma,CAAS,IAO/C,EA2OO,MAEJ,IAAK,SAlOmBpZ,EAmOGA,EAnOKhM,EAmOGA,EAnOGoU,EAmOGA,EAlOzCkR,EAAkB,CAClB9H,OAAQ,CAAA,EACR1N,SAAU9F,WAAS,OAAQhK,CAAI,EAC/BsK,KAAMN,WAAS,OAAQhK,CAAI,GAE/BgM,EAAO6H,QAAQ,eAAgByR,EAAiB,SAAU1V,GAClDA,EAAK4N,OACLpJ,EAAUoJ,OAAS,CAAA,EAGnB3N,EAAiB7D,CAAM,GACvB4D,EAAKE,SAASX,QAAQ,SAAUW,GAC5B,IAAIyV,EAAQ3B,GAAc5X,EAAQ8D,EAAS7F,EAAE,EAC/B,CAAC,IAAXsb,GACAvZ,EAAO6C,eAAe2W,OAAOD,EAAO,CAAC,EAEpCzV,EAASmQ,QACKjU,EAAO6C,eAAeC,OAAO,SAAU2W,GAAO,OAAOA,EAAIvF,WAAWjG,SAASnK,EAAS8E,IAAI,EAAI,EACpGzF,QAAQ,SAAUuW,GACnBH,EAAQ3B,GAAc5X,EAAQ0Z,EAAQzb,EAAE,EAC9B,CAAC,IAAXsb,GACAvZ,EAAO6C,eAAe2W,OAAOD,EAAO,CAAC,EAE5C,EAER,EAER,EAwMO,MAEJ,IAAK,SACDZ,GAAuB3Y,EAAQhM,EAAMoU,CAAS,EAC9C,MAEJ,IAAK,OACL,IAAK,OA7IuBpI,EA8IGA,EA9IKhM,EA8IGA,EA9IGoU,EA8IGA,EA7I7CuR,EAAgB,CAChBnI,OAAQ,CAAA,EACR1N,SAAU9F,WAAS,OAAQhK,CAAI,EAC/BikB,OAAqC,SAA7Bja,WAAS,SAAUhK,CAAI,EAC/BsK,KAAMN,WAAS,OAAQhK,CAAI,EAC3BmjB,WAAYnZ,WAAS,aAAchK,CAAI,EACvCoN,WAAYpD,WAAS,aAAchK,CAAI,GAE3CgM,EAAO6H,QAAQ,aAAc8R,EAAe,SAAU/V,GAClD,GAAIA,EAAK4N,OACLpJ,EAAUoJ,OAAS,CAAA,OAGvB,GAAI3N,EAAiB7D,CAAM,EAAG,CAC1B,IAQY4Z,EARRpL,EAAU,sBACV1N,EAAS9C,WAAS,SAAUhK,CAAI,EAChC6lB,EAAiBhE,GAAiB7V,EAAQ4D,EAAKE,SAAUhD,EAAQ,CAAA,CAAK,EACtEgZ,EAAiBjE,GAAiB7V,EAAQ,CAAC4D,EAAKuT,YAAarW,EAAQ,CAAA,CAAI,EACzEiZ,EAAS,GAEb,GADA/Z,EAAO2P,WAAa,GACG,KAAnBkK,GAA4C,KAAnBC,EAAuB,CAChD,GAAIlW,EAAKqU,OACD2B,EAAmB7B,GAAe/X,EAAQ4D,EAAKuT,WAAWlZ,EAAE,EAC5C2F,EAAKE,SACXX,QAAQ,SAAUW,GAC5B,IAGY8K,EAHR,CAAC8I,GAAakC,EAAkB9V,EAAS8E,IAAI,GAA4C,EAAvC5K,WAAS,cAAehK,CAAI,EAAE1B,OACrC,EAAvC0L,WAAS,cAAehK,CAAI,EAAE1B,QAC1B4M,EAAQ4E,EAAS8E,KAAK3B,MAAM,GAAG,EAC/B2H,EAAS9K,EAAS8E,KAAKqF,SAAS,GAAG,EAAI/O,EAAM,GAAK,IAAMc,EAAOga,kBAAoB,KAAO9a,EAAM,GAAKA,EAAM,GAAK,IAAMc,EAAOga,kBAAoB,IACrJC,GAAgBja,EAAQ8D,EAAUF,EAAKuT,WAAYvI,CAAM,EACzD5O,EAAOkW,aAAapL,MAAQ,KAC5B9K,EAAOga,iBAAiB,IAG5BC,GAAgBja,EAAQ8D,EAAUF,EAAKuT,WAAY,IAAI,EAGvD4C,EAAO9a,KAAK6E,EAAS8E,IAAI,EAEhC,OAQL,IAFA,IAAIsR,EAAWtW,EAAKuT,WAChBgD,EAAiBpC,GAAe/X,EAAQka,EAASjc,EAAE,EAC9CtL,EAAI,EAAGA,EAAIiR,EAAKE,SAASxR,OAAQK,CAAC,GAAI,CAC3C,IAYYynB,EAKJvB,EASIwB,EA1BRC,EAAW1W,EAAKE,SAASnR,GACzB,CAAC+kB,GAAayC,EAAgBG,EAAS1R,IAAI,GAA4C,EAAvC5K,WAAS,cAAehK,CAAI,EAAE1B,QACzE4nB,EAAS1B,WACV0B,EAAS1B,SAAW,CAAC8B,EAASrG,OAGN,GAFpBsG,EAAava,EAAO6C,eACnBC,OAAO,SAAUC,GAAQ,OAAOC,OAAOD,EAAK9E,EAAE,IAAM+E,OAAOkX,EAASjc,EAAE,EAAI,GAChE3L,SACXioB,EAAW,GAAG/B,SAAW0B,EAAS1B,WAGrC8B,EAASrG,SAENmG,EAAiC,IAAtBE,EAAS3X,SAClBoV,GAAe/X,EAAQsa,EAAS3X,QAAQ,EAAI,GACnCmV,GAAW9X,EAAQsa,EAAS3X,QAAQ,EAC1C6V,SAA6B,EAAlB4B,EAAS9nB,QAE7BumB,EAAWf,GAAW9X,EAAQsa,EAASrc,EAAE,EACF,EAAvCD,WAAS,cAAehK,CAAI,EAAE1B,SAC1B4M,EAAQob,EAAS1R,KAAK3B,MAAM,GAAG,EACnCqT,EAAS1R,KAAO0R,EAAS1R,KAAKqF,SAAS,GAAG,EAAI/O,EAAM,GAAK,IAAMc,EAAOga,kBAAoB,KAAO9a,EAAM,GAAKA,EAAM,GAAK,IAAMc,EAAOga,kBAAoB,IACxJnB,EAASjQ,KAAO0R,EAAS1R,KACzB5I,EAAOkW,aAAapL,MAAQ,KAC5B9K,EAAOga,iBAAiB,GACxBha,EAAOkP,SAAWgL,EAClBla,EAAO7C,SAAWyG,EAAKtF,KACnB+b,EAAYzW,EAAKxC,WAAWkH,QAAQ,WAAY,EAAE,EAAErB,MAAM,GAAG,EACjEiT,EAAWpC,GAAW9X,EAAQqa,EAAUA,EAAU/nB,OAAS,EAAE,GAEjEumB,EAASlW,SAAWuX,EAASjc,GAC7B4a,EAAS3E,WAA6B,IAAhBgG,EAASjc,GAAW,KAAOic,EAAShG,WAAagG,EAAStR,KAAO,MAGvFmR,EAAO9a,KAAKqb,EAAS1R,IAAI,EAGb,EAAhBmR,EAAOznB,QACPomB,GAAkB1Y,EAAQwO,EAAS,MAAOuL,CAAM,IAI/D,EAqDO,MAEJ,IAAK,SA5CmB/Z,EA6CGA,EA7CKhM,EA6CGA,EA7CGoU,EA6CGA,EA5CzCoS,EAAkB,CAClBC,cAAezc,WAAS,OAAQhK,CAAI,EACpCwd,OAAQ,CAAA,EACRlT,KAAMN,WAAS,OAAQhK,CAAI,EAC3B0mB,WAAY1c,WAAS,eAAgBhK,CAAI,EACzCyP,cAAezF,WAAS,gBAAiBhK,CAAI,EAC7C8Q,gBAAiB9G,WAAS,kBAAmBhK,CAAI,GAErDgM,EAAO6H,QAAQ,SAAU2S,EAAiB,SAAU5W,GAChD4H,WAAS,OAAQ5H,EAAK6W,cAAezmB,CAAI,EACrC4P,EAAK4N,SACLpJ,EAAUoJ,OAAS,CAAA,GAE1B,EAdL,IAAwCxd,EAAMoU,EACtCoS,EAtG4Bxa,EAAQhM,EAAMoU,EAC1CuR,EA/FwB3Z,EAAcoI,EAlCfpI,EAAQhM,EAAMoU,CAsR7C,CAaA,SAAS+N,GAAWnW,EAAQhM,EAAM2mB,EAAIpI,EAAOhD,EAAWnO,GACpD,IAAI6G,EAAe,CACfC,IAAKlI,EAAOiI,aAAaC,IACzBtU,KAAM,OACNgnB,KAAM,CAAA,EACNC,SAAU,OACVC,YAAa,mBACb9mB,KAAM+mB,KAAKC,UAAUhnB,CAAI,EACzBinB,UAAW,KACXC,UAAW,KACXC,WAAY,MAEZ/S,EAAY,CAAEtH,OAAQ9C,WAAS,SAAUhK,CAAI,EAAGiU,aAAcA,EAAcuJ,OAAQ,CAAA,GACxFwH,GAAoBhZ,EAAQhM,EAAMoU,CAAS,EAC3CpI,EAAO6H,QAAQ,aAAcO,EAAW,SAAUgT,GAC9C,IA+CgBjG,EACAkG,EACAC,EACAC,EACAjd,EAnDX8c,EAAe5J,SAChBxR,EAAOW,OAAO6a,GAAsB,EAAE,EAClC3X,EAAiB7D,CAAM,GAGnBqa,GAFqB,gBAAV9H,GAAqC,iBAAVA,GAAsC,sBAAVA,EAChEvU,WAAS,OAAQhK,CAAI,EAAIgM,EAAO1B,MACbgK,QAAQ,WAAY,EAAE,EAAErB,MAAM,GAAG,EACtDwU,EAAoB,sBAAVlJ,GAA4C,iBAAVA,GAA8D,IAAlCvU,WAAS,OAAQhK,CAAI,EAAE1B,QAAgB8L,oBAAM4B,EAAO0b,WAAW,EACrI1d,WAAS,OAAQhK,CAAI,EAAE,GAAGiK,GAAKoc,EAAUA,EAAU/nB,OAAS,GAE9DqpB,GAA8B,UAD9B7a,EAAS9C,WAAS,SAAUhK,CAAI,IACmB,WAAX8M,GAAkC,SAAXA,GAAgC,WAAXA,GAAkC,WAAXA,IAAkC,eAAVyR,EACxH,SAAXzR,GAAgC,WAAXA,GAAiC,eAAVyR,GACxClH,EAEU,EAFDrL,EAAO6C,eACfC,OAAO,SAAUC,GAAQ,OAAO3E,oBAAM2E,EAAKJ,QAAQ,EAAI,EACvDrQ,OACC0N,EAAO6C,eACJC,OAAO,SAAUC,GAAQ,OAAO3E,oBAAM2E,EAAKJ,QAAQ,EAAI,EAAE,GAAG1E,GAC/D,EACN+B,EAAOkW,aAAe,CAClB7G,IAAKyI,GAAW9X,EAAwB,MAAhBA,EAAO1B,MAA0B,gBAAViU,GAAqC,sBAAVA,EAAgClH,EAASoQ,CAAO,EAC1HtG,QAAS,KACTrK,MAAO,KACP5F,MAAO6S,GAAe/X,EAAwB,MAAhBA,EAAO1B,MAA0B,gBAAViU,GAAqC,sBAAVA,EAAgClH,EAASoQ,CAAO,GAEhIrd,oBAAM4B,EAAOkW,aAAa7G,GAAG,GAE7BqJ,GAAkB1Y,EADJ,kDACqB,MAAO,IAAI,GAG7C2b,GAAiD,OAA9B3b,EAAOkW,aAAapL,OAEpB,KAApBhH,EADsB,WAAXhD,GAAkC,WAAXA,EAAsB9C,WAAS,OAAQhK,CAAI,EAAI,IACxE1B,SAELwR,EADW,SAAXhD,EACWd,EAAO2P,WAAWiM,IAAI,SAAU7Y,GAAQ,OAAO+U,GAAW9X,EAAQ+C,CAAI,EAAI,EAG1E/E,WAAS,OAAQhK,CAAI,EAAE4nB,IAAI,SAAU7Y,GAAQ,OAAO+U,GAAW9X,EAAQ+C,EAAK9E,EAAE,EAAI,GAGrG+B,EAAOkW,aAAe,CAClB7G,IAAK,KACL8F,QAAS,KACTrK,MAAO,KACP5F,MAAOpB,IAGuB,YAA7B9F,WAAS,SAAUhK,CAAI,IAExBmhB,GAAUrR,EADC9F,WAAS,OAAQhK,CAAI,GACb,GACnBqnB,EAAoC,EAAlBvX,EAASxR,OAC3BgpB,EAAYxX,EAAS8X,IAAI,SAAU7Y,GAAQ,OAAOA,EAAK6F,KAAO,EAC9D2S,EAA8BM,GAAlBR,EAA0BvX,EAASgY,OAAO,SAAUC,EAAaC,GAAiB,OAAOD,GAAeC,EAAc/nB,MAAQ,IAAO,CAAC,EAAakhB,EAAQlhB,IAApB,EACnJqK,EAAQ0B,EAAOrB,UAAUsP,SAASkH,EAAQvM,IAAI,GAAKyS,EAAkBrb,EAAOrB,UAAUuI,KAAK,GAAG,EAAIlH,EAAOrB,UAAUuI,KAAK,GAAG,EAAI,IAAMiO,EAAQvM,KACjJ5I,EAAOkW,aAAaf,QAAUjkB,OAAOmnB,OAAO,CACxC4D,SAAU3d,EACV4d,cAAeb,EACfzS,KAAM0S,EAAUpU,KAAK,IAAI,EACzBjT,KAAMsnB,GACPF,EAAkB,GAAK,CACtBc,QAAShH,EAAQmD,YACjBrE,OAAQkB,EAAQlB,OAChBmI,SAAUjH,EAAQoD,aAClBxD,WAAYI,EAAQJ,WACvB,GAELsH,GAAqBrc,EAAQA,EAAOkW,aAAcyE,EAAI3mB,EAAMue,EAAOhD,EAAWnO,EAAYga,CAAc,GAGjG,IAAIkB,OAAK,CAChBpU,IAAKlK,WAAS,MAAOod,EAAenT,YAAY,EAChDrU,KAAMoK,WAAS,OAAQod,EAAenT,YAAY,EAClD2S,KAAM5c,WAAS,OAAQod,EAAenT,YAAY,EAClD4S,SAAU7c,WAAS,WAAYod,EAAenT,YAAY,EAC1D6S,YAAa9c,WAAS,cAAeod,EAAenT,YAAY,EAChEjU,KAAMgK,WAAS,OAAQod,EAAenT,YAAY,EAClDkT,WAAYnd,WAAS,aAAcod,EAAenT,YAAY,EAC9DgT,UAAW,SAAU3R,GACjB,IACQiT,EADJne,oBAAMkL,CAAM,GACRiT,EAAW,CACXzR,MAAO,CACH2D,WAAY,KACZD,QAASxD,EAAchL,EAAQ,cAAc,EAAI,IAAMA,EAAOiI,aAAaC,IAC3EqG,KAAM,OAEVrJ,MAAO,MAEXsX,GAAmBxc,EAAQob,EAAgBT,EAAI4B,EAAUhK,EAAOhD,EAAWnO,CAAU,IAGjE,UAApB,WACAkI,EAASyR,KAAK0B,MAAMnT,CAAM,GAE9B+S,GAAqBrc,EAAQsJ,EAAQqR,EAAI3mB,EAAMue,EAAOhD,EAAWnO,EAAYga,CAAc,IAE/FF,UAAW,WACP,IAAI5R,EAAS,CACTpE,MAAO,KACP4F,MAAO,CACHyD,KAAM,MACNC,QAASxD,EAAchL,EAAQ,eAAe,EAAI,IAAMA,EAAOiI,aAAaC,IAC5EuG,WAAY,OAGpB+N,GAAmBxc,EAAQob,EAAgBT,EAAIrR,EAAQiJ,EAAOhD,EAAWnO,CAAU,GAE1F,EACIsb,QAEZ,CACL,CAQA,SAASb,GAAQ5nB,GAGT0oB,EADA1oB,EAAO,KACFA,EAAO,KAEPA,EAAO,SACNA,EAAO,MAAM2oB,QAAQ,CAAC,EAAI,MAE3B3oB,EAAO,YACNA,EAAO,KAAO,MAAM2oB,QAAQ,CAAC,EAAI,OAGjC3oB,EAAO,KAAO,KAAO,MAAM2oB,QAAQ,CAAC,EAAI,MAElD,OAAOD,CACX,CAeA,SAASN,GAAqBrc,EAAQsJ,EAAQqR,EAAI3mB,EAAMue,EAAOhD,EAAWnO,EAAYga,GAClFpb,EAAOW,OAAOkc,GAAqB,CAAE/b,OAAQ,UAAW,EACxD,IAAI7C,EAAK+B,EAAOqQ,YAAiCrQ,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAgBlFwqB,GAfC1e,oBAAMkL,EAAO+F,GAAG,GAAmC,SAA7BrR,WAAS,SAAUhK,CAAI,IAC9CsV,EAAO+F,IAAIzG,KAAiC,IAAzB5I,EAAOvB,OAAOnM,QAAiB0N,EAAO+c,eAAoCzT,EAAO+F,IAAIzG,KACxG4C,WAAS,SAAUvN,EAAIqL,EAAO+F,GAAG,EACjC7D,WAASvN,EAAIqL,EAAO+F,IAAKrP,EAAOI,QAAQ,EACnChC,oBAAMkL,EAAOpE,KAAK,GAA2B,QAAtBoE,EAAOwB,MAAMyD,QACtB,iBAAVgE,GAAsC,gBAAVA,GAAwD,IAA5BvS,EAAOrB,UAAUrM,SACtE8a,EAAOpP,WAASgC,EAAOvB,OAAO,GAAIuB,EAAOI,QAAQ,EACrDJ,EAAOrB,UAAU,GAAKX,WAAS,OAAQoP,CAAI,EAC3CpN,EAAOxB,MAAQ,CAACJ,oBAAMJ,WAAS,KAAMoP,CAAI,CAAC,GAEhC,iBAAVmF,GACAxS,GAAaC,CAAM,GAIpB,IAAIgd,uBAAqBhd,EAAO+L,MAAM,GACjD,GAAI,CAAC3N,oBAAMkL,EAAOpE,KAAK,EAAG,CACtBuG,GAAcnC,EAAOpE,MAAO4X,EArmBpC,SAAuB9c,GACnB,IACI2L,EADAoB,EAAU/M,EAAO8M,oBAAoBC,QAEzC,GAAI,CAACA,EACD,OAAO,KAEX,IAAK,IAAIpa,EAAI,EAAGA,EAAIoa,EAAQza,OAAQK,CAAC,GACjC,GAAyB,iBAArBoa,EAAQpa,GAAGW,MAA0B,CAChC8K,oBAAM2O,EAAQpa,GAAGkB,MAAM,IACxB8X,EAAaoB,EAAQpa,GAAGkB,OAAOsM,YAEnC,MAGR,OAAOwL,CACX,EAslBwD3L,CAAM,CAAC,EACvD,IAAK,IAAIrN,EAAI,EAAG4Y,EAAMjC,EAAOpE,MAAM5S,OAAQK,EAAI4Y,EAAK5Y,CAAC,GAAI,CACrD,IAAIoQ,EAAOuG,EAAOpE,MAAMvS,GACxB6Y,WAAS,gBAAiB3E,GAAS9D,CAAI,EAAGA,CAAI,EAEjB,SAA7B/E,WAAS,SAAUhK,CAAI,IACvBoX,GAAU9B,EAAQrL,CAAE,EACpBuN,WAASvN,EAAIqL,EAAOpE,MAAOlF,EAAOuJ,OAAO,GAG5CnL,oBAAMkL,EAAO6L,OAAO,GAAM/W,oBAAM4B,EAAO+c,aAAa,IACjDE,EAAWjd,EAAO+c,eAAiB/e,WAAS,OAAQsL,EAAO6L,OAAO,EAClE+H,EAAalf,WAAS,WAAYsL,EAAO6L,OAAO,EAAE7M,QAAQ,IAAI6U,OAAO,IAAK,GAAG,EAAG,IAAI,EAMhFD,GALwB,MAA3Blf,WAAS,OAAQhK,CAAI,GAAegM,EAAOxB,OAAyD,IAAhDR,WAAS,OAAQhK,CAAI,EAAEopB,MAAM,MAAM,EAAE9qB,UACnD,IAAnC0L,WAAS,QAAShK,CAAI,EAAE1B,QACxBkZ,WAAS,OAAQyR,EAAU3T,EAAO6L,OAAO,EAEZ,CAAC,IAA9B+H,EAAWlW,QAAQ,IAAI,GACViW,EAOJC,EAAW5U,QAAQ4U,EAAWtQ,UAAU,EAAGsQ,EAAWlW,QAAQ,IAAI,CAAC,EAAGiW,CAAQ,EAE/FzR,WAAS,WAAY0R,EAAY5T,EAAO6L,OAAO,GAEnDwF,EAAG3a,EAAQsJ,EAAQiJ,EAAOhD,EAAWnO,CAAU,EAC1ChD,oBAAMkL,EAAOpE,KAAK,GAAgB,iBAAVqN,GAAsC,iBAAVA,GAAsC,aAAVA,GAAkC,cAAVA,GACzGvS,EAAOW,OAAO0c,GAAyB/T,CAAM,EAEiB,YAA9D,OAAOtL,WAAS,YAAaod,EAAenT,YAAY,GACxDjK,WAAS,YAAaod,EAAenT,YAAY,GAEzD,CAWA,SAASgS,GAAgBja,EAAQhM,EAAM/B,EAAQqkB,GAK3C,IAJA,IAAI8C,EAAYpB,GAAchkB,EAAM/B,EAAQqkB,EAAU,CAAA,CAAI,EAGtDgH,GAFJtd,EAAO6C,eAAe5D,KAAKma,CAAS,EACpCpZ,EAAO2P,WAAW1Q,KAAKma,EAAUnb,EAAE,EACjB8Z,GAAe/X,EAAQhM,EAAKiK,EAAE,GACvCtL,EAAI,EAAGA,EAAI2qB,EAAYhrB,OAAQK,CAAC,GACrCsnB,GAAgBja,EAAQsd,EAAY3qB,GAAIymB,EAAW,IAAI,CAE/D,CAcA,SAASoD,GAAmBxc,EAAQob,EAAgBT,EAAIrR,EAAQiJ,EAAOhD,EAAWnO,GAC9EpB,EAAOW,OAAOkc,GAAqB,CAAE/b,OAAQ,UAAW,EACxD6Z,EAAG3a,EAAQsJ,EAAQiJ,EAAOhD,EAAWnO,CAAU,EACmB,YAA9D,OAAOpD,WAAS,YAAaod,EAAenT,YAAY,GACxDjK,WAAS,YAAaod,EAAenT,YAAY,GAEzD,CAUA,SAASmO,GAAYpW,EAAQsJ,EAAQiJ,GACjC,IACSnU,oBAAMkL,EAAOpE,KAAK,GAOd9G,oBAAMkL,EAAOwB,KAAK,GAA2B,QAAtBxB,EAAOwB,MAAMyD,OACrCjF,EAAOpE,MAAQ,GACflF,EAAOW,OAAO4R,EAAOjJ,CAAM,EAC3BtJ,EAAOW,OAAO4c,EAAyB,EAAE,GAE7CrC,GAAUlb,EAAQsJ,EAAQ,MAAM,EAChCtJ,EAAO3B,cAAc,CAAEC,KAAM0B,EAAOmP,SAAW,CAAA,CAAI,EACnDnP,EAAOrB,UAAU6e,QAbjBxd,EAAOW,OAAO4R,EAAOjJ,CAAM,EAC3BtJ,EAAOW,OAAO4c,EAAyB,EAAE,EACrC3Z,EAAO,CAAE9C,OAAQ,OAAQwI,OAAQA,GACrCtJ,EAAO6H,QAAQ,UAAWjE,CAAI,GAatC,MAAOkH,GACH2S,GAAiBzd,EAAQ8K,EAAO,MAAM,EACtC9K,EAAO3B,cAAc,CAAEC,KAAM0B,EAAOmP,SAAW,CAAA,CAAI,EACnDnP,EAAOrB,UAAU6e,MAErB,IAEY5Z,EAFR5D,EAAO+N,YAAc/N,EAAOgQ,YACS,IAAjChQ,EAAO6P,eAAevd,SAClBsR,EAAO,CAAEmE,YAAa/H,EAAO6P,gBACjC7P,EAAO6H,QAAQ,cAAejE,CAAI,GAEtC5D,EAAOgQ,UAAYhQ,EAAO+N,WAAa,CAAA,EAE/C,CAWA,SAAS4I,GAAc3W,EAAQsJ,EAAQiJ,EAAOzR,GAC1C,IACI,IAEQ8C,EAFHxF,oBAAMkL,EAAOpE,KAAK,EAMnBgW,GAAUlb,EAAQsJ,EAAQxI,CAAM,GALhCd,EAAOW,OAAO4R,EAAOjJ,CAAM,EACvB1F,EAAO,CAAE9C,OAAQA,EAAQwI,OAAQA,GACrCtJ,EAAO6H,QAAQ,UAAWjE,CAAI,GAMtC,MAAOkH,GACH2S,GAAiBzd,EAAQ8K,EAAOhK,CAAM,EAE9C,CAWA,SAASyV,GAAcvW,EAAQsJ,EAAQgN,GACnC,IACI,IAoBgBpF,EACApG,EAfRmO,EAMArV,EAZHxF,oBAAMkL,EAAOpE,KAAK,EAkBO,QAAtBoE,EAAOwB,MAAMyD,MACTvO,EAAO2V,WAAa3V,EAAO2V,UAAU+H,SACjCxM,EAAMzR,SAAO,WAAYO,EAAO2V,UAAU9W,OAAO,EACjDiM,EAAQE,EAAchL,EAAQ,6BAA6B,EAAEsI,QAAQ,MAAO,IAAM4I,EAAItP,MAAQ,GAAG,EACrGsP,EAAIuC,cAAckK,mBAAmB5S,UAAYD,GAWjDwD,EAAatO,EAAQ,QARN,CACXkF,MAAO,KACP4F,MAAO,CACHyD,KAAM,MACNC,QAASxD,EAAchL,EAAQ,6BAA6B,EAAEsI,QAAQ,MAAO,IAAMgO,EAAW,GAAG,EACjG7H,WAAY,MAGkB,EAEtC7K,EAAO,CAAE9C,OAAQ,SAAUgK,MAAOxB,EAAOwB,OAC7C9K,EAAO6H,QAAQ,UAAWjE,CAAI,IAG1B5D,EAAO2V,WAAa3V,EAAO2V,UAAU+H,SACrC1d,EAAO2V,UAAUC,OAErBsF,GAAUlb,EAAQsJ,EAAQ,QAAQ,IAzClCtJ,EAAO2V,WAAa3V,EAAO2V,UAAU+H,SACrC1d,EAAO2V,UAAUC,OAErB5V,EAAO4d,YAAc/Z,EAAiB7D,CAAM,EAAIsJ,EAAOpE,MAAMoE,EAAOpE,MAAM5S,OAAS,GAAKgX,EAAOpE,MAAM,GACrGlF,EAAO0B,oBAAoBC,UAAUC,MAAQ,GACzCqX,EAAkB,CAClBC,WAAY5C,EACZhY,KAAM0B,EAAO1B,KACb6a,aAAcnZ,EAAO8D,UAEzB9D,EAAO6H,QAAQ,eAAgBoR,CAAe,EAC1CrV,EAAO,CAAE9C,OAAQ,SAAUwI,OAAQA,GACvCtJ,EAAO6H,QAAQ,UAAWjE,CAAI,EAC9B5D,EAAO8D,SAAW,CAACiB,EAAc/E,CAAM,GACvC+D,EAAK/D,EAAQ6d,GAAkB7d,EAAO1B,IAAI,GA+BlD,MAAOwM,GACC9K,EAAO2V,WAAa3V,EAAO2V,UAAU+H,SACrC1d,EAAO2V,UAAUC,OAErB6H,GAAiBzd,EAAQ8K,EAAO,QAAQ,EAEhD,CAUA,SAASkM,GAAchX,EAAQsJ,GAC3B,IACI,IAiDY4H,EAEJpG,EA/CAlH,EAGAgV,EAOIkF,EACAC,EAGAC,EAlBP5f,oBAAMkL,EAAOpE,KAAK,EAgDO,QAAtBoE,EAAOwB,MAAMyD,MAAkBvO,EAAO2V,WAAa3V,EAAO2V,UAAU+H,SAChExM,EAAMzR,SAAO,UAAWO,EAAO2V,UAAU9W,OAAO,EAEpDiM,GAAQA,EADIE,EAAchL,EAAQ,0BAA0B,EAAEsI,QAAQ,MAAO,IAAMtI,EAAOgU,gBAAkB,GAAG,GACjG1L,QAAQ,MAAO,IAAM4I,EAAItP,MAAQ,GAAG,EAClDsP,EAAIuC,cAAckK,mBAAmB5S,UAAYD,EAC7ClH,EAAO,CAAE9C,OAAQ,SAAUgK,MAAOxB,EAAOwB,OAC7C9K,EAAO6H,QAAQ,UAAWjE,CAAI,IAGzBxF,oBAAM4B,EAAO2V,SAAS,GACvB3V,EAAO2V,UAAUC,OAErBsF,GAAUlb,EAAQsJ,EAAQ,QAAQ,IA3DjClL,oBAAM4B,EAAO2V,SAAS,GACvB3V,EAAO2V,UAAUC,OAEjBhS,EAAO,CAAE9C,OAAQ,SAAUwI,OAAQA,GACvCtJ,EAAO6H,QAAQ,UAAWjE,CAAI,EAC9B5D,EAAO0b,YAAcrqB,MAAM4sB,QAAQ3U,EAAOpE,KAAK,EAAIoE,EAAOpE,MAAM,GAAKoE,EAAOpE,MACxE0T,EAAkB,CAClB9B,QAAS9W,EAAO0b,YAAY9S,KAC5B9E,SAAU,CAAC9D,EAAO0b,aAClBpd,KAAM0B,EAAO1B,MAEjB0B,EAAO6H,QAAQ,SAAU+Q,CAAe,EACZ,mBAAxB5Y,EAAOmB,cACH2c,EAAa/Y,EAAc/E,CAAM,EACjC+d,EAAY/d,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAG2U,MAAM,GAAG,EAAE3U,OAAS,EAC5E0N,EAAOvB,OAAO+e,MACdxd,EAAO8D,SAAW,CAAC9F,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOnM,OAAS,GAAI0N,EAAOI,QAAQ,GAChF4d,EAAa9P,GAAclO,EAAQA,EAAO0b,WAAW,EACzD3X,EAAK/D,EAAQke,GAAwBF,CAAU,EAC3C,CAAC5f,oBAAM0f,CAAU,GAA+B,EAA1B9d,EAAOrB,UAAUrM,QAAcyrB,GAAa/d,EAAOrB,UAAUrM,OAAS,IAC5F0N,EAAOrB,UAAUof,GAAa/d,EAAOme,WAChCne,EAAOxB,OACRwB,EAAO3B,cAAc,CAAEC,KAAM,IAAM0B,EAAOrB,UAAUuE,MAAM,CAAC,EAAEgE,KAAK,GAAG,EAAI,KAAO,CAAA,CAAI,GAG5FlH,EAAO8D,SAAiE,EAAtD9D,EAAOuQ,qBAAqB6N,iBAAiB9rB,OACzD0N,EAAOuQ,qBAAqBC,QAAQ6N,YAAYre,EAAOuQ,qBAAqB6N,iBAAiB,EAAE,EAAIpe,EAAO8D,SAChHC,EAAK/D,EAAQse,EAAoBte,EAAO1B,IAAI,EAC5C0B,EAAO8D,SAAS,GAAK9D,EAAO0b,YAC5B1b,EAAO0b,YAAc,OAGrB1b,EAAO8D,SAAW,CAACiB,EAAc/E,CAAM,GACY,KAA/CA,EAAO0B,oBAAoBC,UAAUC,MACrCgD,GAAO5E,EAAQue,EAAkBve,EAAO1B,KAAM0B,EAAO0D,WAAY1D,EAAO8E,gBAAiB,CAAC9E,EAAOiE,eAAeQ,UAAU,EAGtHzE,EAAO6B,WACPiB,GAAO9C,EAAQue,CAAgB,EAG/Bxa,EAAK/D,EAAQue,EAAkBve,EAAO1B,IAAI,IAsB9D,MAAOwM,GACE1M,oBAAM4B,EAAO2V,SAAS,GACvB3V,EAAO2V,UAAUC,OAErB6H,GAAiBzd,EAAQ8K,EAAO,QAAQ,EAEhD,CAYA,SAASwM,GAAatX,EAAQsJ,EAAQhL,EAAMiR,GACxC,IACI,IAAIiP,EAAsB,CACtB1a,SAAUwF,EAAOpE,MACjB+S,OAAsB,SAAd1I,EACRjR,KAAMA,EACN6Y,WAAYnX,EAAO8D,SAAS,GAC5B1C,WAAYpB,EAAO1B,MAEvB0B,EAAO6H,QAAQ,OAAQ2W,CAAmB,EACtClV,EAAOwB,OAASxB,EAAOwB,MAAM2D,YAC7BzO,EAAOye,WAAa,EACfrgB,oBAAMkL,EAAOpE,KAAK,IACnBlF,EAAO+P,aAAe,CAAA,EACtBT,GAActP,EAAQuP,EAAWjG,CAAM,GAE3CoV,GAAgB1e,EAAQ,iBAAkBsJ,EAAOwB,MAAM2D,UAAU,EACvC,QAAtBnF,EAAOwB,MAAMyD,MACbD,EAAatO,EAAQ,QAASsJ,CAAM,GAGlCA,EAAOwB,OAAU1M,oBAAMkL,EAAOpE,KAAK,EAIpCoE,EAAOwB,OAAS,CAAC1M,oBAAMkL,EAAOpE,KAAK,GACxClF,EAAO+P,aAAe,CAAA,EACtBT,GAActP,EAAQuP,EAAWjG,CAAM,EACvCgF,EAAatO,EAAQ,QAASsJ,CAAM,GAGpC4R,GAAUlb,EAAQsJ,EAAQiG,CAAS,GATnCvP,EAAO+P,aAAe,CAAA,EACtBT,GAActP,EAAQuP,EAAWjG,CAAM,GAW/C,MAAOwB,GACH2S,GAAiBzd,EAAQ8K,EAAOyE,CAAS,EAEjD,CAUA,SAASgI,GAAcvX,EAAQsJ,EAAQhL,GACnC,IACI,IAaYsF,EAbR0V,EAAkB,CAClBxV,SAAUwF,EAAOpE,MACjB5G,KAAMA,GAEV0B,EAAO6H,QAAQ,SAAUyR,CAAe,EACnClb,oBAAMkL,EAAOpE,KAAK,IACnBlF,EAAO3B,cAAc,CAAEC,KAAMA,GAAQ,CAAA,CAAI,EACzC0B,EAAO8D,SAAW,CAACiB,EAAc/E,CAAM,GACvC+D,EAAK/D,EAAQ2e,GAAkB3e,EAAO1B,IAAI,EACtCgL,EAAOwB,OACPoQ,GAAUlb,EAAQsJ,EAAQ,QAAQ,GAG9B1F,EAAO,CAAE9C,OAAQ,SAAUwI,OAAQA,GACvCtJ,EAAO6H,QAAQ,UAAWjE,CAAI,GAO1C,MAAOkH,GACH2S,GAAiBzd,EAAQ8K,EAAO,QAAQ,EAEhD,CAWA,SAAS2M,GAETzX,EAAQsJ,EAAQhL,EAAMiR,GAClB,IACI,IAEQ3L,EAFHxF,oBAAMkL,EAAO6L,OAAO,EAMrB+F,GAAUlb,EAAQsJ,EAAQ,SAAS,GALnCgF,EAAatO,EAAQuP,EAAW,KAAMjG,EAAO6L,OAAO,EAChDvR,EAAO,CAAE9C,OAAQ,UAAWwI,OAAQA,GACxCtJ,EAAO6H,QAAQ,UAAWjE,CAAI,GAMtC,MAAOkH,GACH2S,GAAiBzd,EAAQ8K,EAAO,SAAS,EAEjD,CAUA,SAASoQ,GAAUlb,EAAQsJ,EAAQxI,GAC/BwN,EAAatO,EAAQ,QAASsJ,CAAM,EAChC1F,EAAO,CAAE9C,OAAQA,EAAQgK,MAAOxB,EAAOwB,OAC3C9K,EAAO6H,QAAQ,UAAWjE,CAAI,CAClC,CAaO,SAASgB,GAAO5E,EAAQuS,EAAOjU,EAAMsgB,EAAc9Z,EAAiBrB,GAKvE0S,GAAWnW,EAJA,CACPc,OAAQ,SAAUxC,KAAMA,EAAMsgB,aAAcA,EAAc9Z,gBAAiBA,EAAiBrB,cAAeA,EAC3GzP,KAAMgM,EAAO8D,UAEQ+a,GAAetM,CAAK,CACjD,CAWA,SAASsM,GAAc7e,EAAQsJ,EAAQiJ,GACnC,IACI,IAEQ3O,EAFHxF,oBAAMkL,EAAOpE,KAAK,EAMnBgW,GAAUlb,EAAQsJ,EAAQ,QAAQ,GALlCtJ,EAAOW,OAAO4R,EAAOjJ,CAAM,EACvB1F,EAAO,CAAE9C,OAAQ,SAAUwI,OAAQA,GACvCtJ,EAAO6H,QAAQ,UAAWjE,CAAI,GAMtC,MAAOkH,GACH2S,GAAiBzd,EAAQ8K,EAAO,QAAQ,EAEhD,CAWO,SAAS2J,GAASzU,EAAQ1B,EAAMwK,GACnC,IAAIgW,EAAc9e,EAAOiI,aAAa6W,aAAgD9e,EAAOiI,aAAaC,IACtGlU,EAAO,CAAE8M,OAAU,WAAYxC,KAAQA,EAAMY,MAAS4J,EAAO9U,KAAQgM,EAAO8D,UAC5EmE,EAAe,CACfC,IAAK4W,EACLlrB,KAAM,OACNknB,YAAa,mBACbiE,aAAc,OACd/qB,KAAM+mB,KAAKC,UAAUhnB,CAAI,EACzBinB,UAAW,KACXC,UAAW,KACXC,WAAY,MAGhBnb,EAAO6H,QAAQ,iBADC,CAAE7T,KAAMA,EAAMwd,OAAQ,CAAA,EAAOwN,YAAa,CAAA,EAAM/W,aAAcA,GAClC,SAAUgX,GAClD,GAAI,CAACA,EAAazN,OACd,GAAIyN,EAAaD,YAAa,CAC1B,IAAIE,EAAO5U,gBAAc,OAAQ,CAC7BrM,GAAI+B,EAAOnB,QAAQZ,GAAK,gBACxBkhB,MAAO,CAAEre,OAAQge,EAAaM,OAAQ,OAAQxW,KAAM,eAAgByW,SAAY,IACnF,EACGC,EAAQhV,gBAAc,QAAS,CAC/BrM,GAAI+B,EAAOnB,QAAQZ,GAAK,cACxBkhB,MAAO,CAAEvW,KAAM,gBAAiBhH,MAAOmZ,KAAKC,UAAUiE,EAAajrB,IAAI,EAAGJ,KAAM,UACnF,EACDsrB,EAAKrU,YAAYyU,CAAK,EACtBtf,EAAOnB,QAAQgM,YAAYqU,CAAI,EAC/BzO,SAAS8O,MAAMC,UAAU,cAAc,EAAEC,SACzCzf,EAAOnB,QAAQ6gB,YAAYR,CAAI,OAG/B,IACI,IAAIS,EACAC,EACU,IAAIC,QAAM,CACpB3X,IAAKlK,WAAS,MAAOihB,EAAahX,YAAY,EAC9CrU,KAAMoK,WAAS,OAAQihB,EAAahX,YAAY,EAChD6S,YAAa9c,WAAS,cAAeihB,EAAahX,YAAY,EAC9D8W,aAAc/gB,WAAS,eAAgBihB,EAAahX,YAAY,EAChEkT,WAAYnd,WAAS,aAAcihB,EAAahX,YAAY,EAC5D6X,OAAQ,SAAUC,GACdJ,EAAuBI,EAAEC,QAAQC,IAAI,qBAAqB,EAItDL,EAHAD,GAEIO,GADAC,EAAgBR,EAAqBvC,MAAM,wCAAwC,IAC9C+C,EAAc,IACtBD,EAAkB5X,QAAQ,QAAS,EAAE,EAAIsX,EAGpC,EAAzB5f,EAAO8D,SAASxR,OAAa,YAAc0L,WAAS,SAAUgC,EAAO8D,SAAS,EAAE,EAAI9F,WAAS,OAAQgC,EAAO8D,SAAS,EAAE,EAAI9F,WAAS,OAAQgC,EAAO8D,SAAS,EAAE,EAAI,QAGvLmX,UAAW,SAAU8E,GACjB/f,EAAO6H,QAAQ,UAAWoX,CAAY,EACtC,IACImB,EAAUC,IAAIC,gBADPP,CAC2B,EAClCQ,EAAO9P,SAASnG,cAAc,GAAG,EACrCiW,EAAKC,KAAOJ,EACZG,EAAKlB,SAAWO,EAChBnP,SAASgQ,KAAK5V,YAAY0V,CAAI,EAC9BA,EAAK/K,QACL/E,SAASgQ,KAAKf,YAAYa,CAAI,GAElCrF,UAAW,SAAU6E,GACbzW,EAAS,CACTwB,MAAO,CACHyD,KAAMwR,EAAEW,OAAOvgB,WACfqO,QAASxD,EAAchL,EAAQ,eAAe,EAAI,IAAMA,EAAOiI,aAAa6W,cAGpFxQ,EAAatO,EAAQ,QAASsJ,CAAM,EACpCtJ,EAAO6H,QAAQ,UAAWoX,CAAY,GAE7C,EACOvC,KAAK3B,KAAKC,UAAUiE,EAAajrB,IAAI,CAAC,EAElD,MAAO8W,GACH2S,GAAiBzd,EAAQ8K,EAAO,UAAU,GAIzD,CACL,CAUA,SAAS2S,GAAiBzd,EAAQ8K,EAAOhK,GAQrCoa,GAAUlb,EAPQ,CACdkF,MAAO,KACP4F,MAAO,CACH0D,QAAS1D,EAAM0D,QACfC,WAAY,OAGW3N,CAAM,CACzC,CC1xCO,SAASwN,EAAatO,EAAQjC,EAAMgiB,EAAG5K,GAC1C,IAAIwL,EA4gBR,SAAoB3gB,EAAQjC,EAAMgiB,EAAG5K,GACjC,IAOItO,EACAoV,EAIA1C,EAZAoH,EAAU,CACVC,OAAQ,GAAIC,QAAS,GAAIC,QAAS,GAAIC,WAAY,GAQtDC,KAAe,WAAcC,GAAiBjhB,EAAQA,EAAO2V,UAAWgL,EAAQI,UAAU,GAC1FG,MAAgB,WAAcC,GAAkBnhB,EAAQA,EAAO2V,UAAWgL,EAAQI,UAAU,IAG5F,OAFAhjB,EAAQoX,GAAqC,CAAA,IAA1BA,EAAQ+G,cAA0B,sBAAwBne,GAGzE,IAAK,YACD4iB,EAAQI,WAAa,gBACrBJ,EAAQC,OAAS5V,EAAchL,EAAQ,kBAAkB,EACzD2gB,EAAQE,QAAU,oFAClBF,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,eAAe,GAC9EwV,MAAO,SAAUuK,GACE,YAAXA,EAAEnsB,MAGN0tB,GAASthB,CAAM,KAI3B2gB,EAAQK,KAzHpB,SAA4BhhB,GACxB,IAAIkR,EAAMzR,SAAO,WAAYO,EAAO2V,UAAU9W,OAAO,EAChDqS,EAAIuC,cAAc7T,UAAUC,SAAS,mBAAmB,GACzD0hB,GAAYrQ,EAAKlG,EAAchL,EAAQ,mBAAmB,CAAC,EAE/DkR,EAAIuC,cAAckK,mBAAmB5S,UAAY,GACjDmG,EAAIsQ,QAAU,WACVC,GAAWzhB,EAAQkR,CAAG,GAE1BA,EAAIwQ,QAAU,SAAU3B,GAEP,KADF4B,GAAW5B,CAAC,GAEnBuB,GAASthB,CAAM,GAzB3B,SAAoBA,GAChB,IAAIkR,EAAMzR,SAAO,WAAYO,EAAO2V,UAAU9W,OAAO,EAGjD0M,GAFJ2F,EAAI0Q,QACJ1Q,EAAItP,MAAQ,GACFsP,EAAItP,MAAMtP,QACpB4e,EAAI2Q,kBAAkB,EAAGtW,CAAG,CAChC,EAsBevL,CAAM,EACjBihB,GAAiBjhB,EAAQA,EAAO2V,UAAW,eAAe,CAC9D,EAwG8CmM,KAAKnwB,KAAMqO,CAAM,EACnD,MACJ,IAAK,SACD2gB,EAAQI,WAAa,SACa,EAA9B/gB,EAAO+B,cAAczP,QACrBquB,EAAQE,SAAW,QAAU7V,EAAchL,EAAQ,yBAAyB,EAAI,UAC3EsI,QAAQ,MAAOtI,EAAO+B,cAAczP,OAAO6N,UAAU,EAC1DwgB,EAAQC,OAAS5V,EAAchL,EAAQ,wBAAwB,IAG/D2gB,EAAQE,QAAU,QAAU7V,EAAchL,EAAQA,EAAOiU,OAAS,iBAAmB,uBAAuB,EAAI,SAChH0M,EAAQC,OAAS5V,EAAchL,EAAQA,EAAOiU,OAAS,gBAAkB,sBAAsB,GAEnG0M,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,YAAY,GAC3EwV,MAAO,WA6P3B,IAAwBxV,GAAAA,EA5PeA,GA6P5B2V,UAAUC,OACjB5V,EAAOW,OAAOohB,GAAmB,EAAE,IA3PvB,CACIX,YAAa,CAAEP,QAAS7V,EAAchL,EAAQ,WAAW,GACzDwV,MAAO,WACHxV,EAAO2V,UAAUC,UAI7B,MACJ,IAAK,SACD+K,EAAQI,WAAa,SACrBJ,EAAQC,OAAS5V,EAAchL,EAAQ,eAAe,EACtD2gB,EAAQE,QAAU,gFAClBF,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,aAAa,GAC5EwV,MAAO,SAAUuK,GACE,YAAXA,EAAEnsB,MAGNouB,GAAWhiB,CAAM,KAI7B2gB,EAAQK,KA5IpB,SAA4BhhB,GACxB,IAAIiiB,EAAWxiB,SAAO,UAAWO,EAAO2V,UAAU9W,OAAO,EACpDojB,EAASxO,cAAc7T,UAAUC,SAAS,mBAAmB,GAC9D0hB,GAAYU,EAAUjX,EAAchL,EAAQ,gBAAgB,CAAC,EAEjEiiB,EAASxO,cAAckK,mBAAmB5S,UAAY,GACtDkX,EAAST,QAAU,WACfC,GAAWzhB,EAAQiiB,CAAQ,GAE/BA,EAASP,QAAU,SAAU3B,GAEZ,KADF4B,GAAW5B,CAAC,GAEnBiC,GAAWhiB,CAAM,GAa7B,SAA4BA,EAAQiiB,GAChCA,EAASL,QACT,IAAIM,EAAM,GACV,CAAA,IACQ3I,EACJ2I,EAFAliB,CAAAA,EAAOiU,QAAWjU,EAAO+W,oBACrBwC,EAAQvZ,EAAOgU,gBAAgBnH,YAAY,GAAG,EACjC,CAAC,IAAX0M,GAGDvZ,EAAOgU,gBAHmChU,EAAOgU,gBAAgBpH,UAAU,EAAG2M,CAAK,EAK7F0I,EAASrgB,MAAQsgB,EACbliB,EAAOiU,QAAUjU,EAAO+W,mBAAsD,CAAC,IAAjCkL,EAASrgB,MAAMoF,QAAQ,GAAG,EACxEib,EAASJ,kBAAkB,EAAGI,EAASrgB,MAAMiL,YAAY,GAAG,CAAC,EAG7DoV,EAASJ,kBAAkB,EAAGI,EAASrgB,MAAMtP,MAAM,CAE3D,EA3BuB0N,EAAQiiB,CAAQ,EACnChB,GAAiBjhB,EAAQA,EAAO2V,UAAW,QAAQ,CACvD,EA2H8CmM,KAAKnwB,KAAMqO,CAAM,EACnD,MACJ,IAAK,UACD2gB,EAAQI,WAAa,eACrBjE,EAAO,IAAIE,uBAAqBhd,EAAO+L,MAAM,EAC7CoW,EAAkBrF,EAAKhR,WAAW,IAAIvD,KAAK4M,EAAQiH,QAAQ,EAAG,CAAEvoB,OAAQ,yBAA0B,EAClGkhB,EAAa,GACR3W,oBAAM+W,EAAQJ,UAAU,IACzBA,EAAa,WAAa/J,EAAchL,EAAQ,YAAY,EAAI,mBAAqBoiB,GAAY,MAC3FxO,GAAeuB,EAAQJ,UAAU,EAAI,cAE/C4L,EAAQC,OAASzL,EAAQvM,KACzB+X,EAAQE,QAAU,kBACD7V,EAAchL,EAAQ,MAAM,EAAI,mBAAqBoiB,GAAY,aAC7EjN,EAAQlB,OAAS,OAAS,UAAY,MAAQkB,EAAQlB,OAAS,OAAS,UACzE,qBAAajJ,EAAchL,EAAQ,MAAM,EAAI,yBAA2BoiB,GAAY,aACpFjN,EAAQlhB,KAAO,KAAOkhB,EAAQlhB,KAC9B,4BAAa+W,EAAchL,EAAQ,UAAU,EAAI,mBAAqBoiB,GAAY,YAClFjN,EAAQ8G,SAAW,KAAO9G,EAAQ8G,SAClC,qBAAajR,EAAchL,EAAQ,UAAU,EAAI,mBAAqBoiB,GAAY,MAChFD,EAAkB,aAClBpN,EAAa,WACnB4L,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,WAAW,GAC1EwV,MAAO,WACHxV,EAAO2V,UAAUC,UAI7B,MACJ,IAAK,sBACD+K,EAAQI,WAAa,eAKH9K,KAAAA,KAJlBoM,EAASriB,EAAO8D,SAAS8X,IAAI,SAAU0G,GAEnC,OAAkB,KADlB/I,EAAQ+I,EAAI1Z,KAAK5B,QAAQ,GAAG,EAAI,IACPsb,EAAIrO,OAAkC,IAAVsF,EAAe+I,EAAI1Z,KAAK2Z,OAAOhJ,CAAK,EAAEjR,QAAQ,IAAK,EAAE,EAAI,eAAtE,SAC3C,GACU,KACP+Z,EAASlN,EAAQvM,KAAK3B,MAAM,GAAG,EAAE2U,IAAI,SAAU0G,GAE3C,OAAkB,KADlB/I,EAAQ+I,EAAItb,QAAQ,GAAG,EAAI,GACJ,SAAWsb,EAAIC,OAAOhJ,CAAK,EAAEjR,QAAQ,IAAK,EAAE,EACtE,GAELzB,EAAWwb,EAAOG,MAAM,SAAUF,EAAK3vB,EAAG8vB,GAAO,OAAOH,IAAQG,EAAI,GAAK,EACrD,WAAdJ,EAAO,GAAmB,SAAWA,EAAO,GAAGK,oBAAsB,QAAW,iBACtFzG,EAAW9G,EAAQ8G,SACnB0E,EAAQC,OAASzL,EAAQvM,KACzB+X,EAAQE,QAAU,kBAAoB7V,EAAchL,EAAQ,MAAM,EAC5D,oBAAsBoiB,GAAY,KAAOvb,EAC3C,qBAAamE,EAAchL,EAAQ,MAAM,EAAI,aAC7CmV,EAAQlhB,KAAO,gBAAkBmuB,GAAY,aAAejN,EAAQlhB,KAC1C,8BAAa+W,EAAchL,EAAQ,UAAU,EACvE,oBAAsBoiB,GAAY,YAAcnG,EAAW,KACzDA,EAA0B,qBAChC0E,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,WAAW,GAC1EwV,MAAO,SAAUuK,GACE,YAAXA,EAAEnsB,MAGNoM,EAAO2V,UAAUC,UAI7B,MACJ,IAAK,QACD5V,EAAOW,OAAOgiB,GAAsB,EAAE,EACtChC,EAAQI,WAAa,QACA,QAAjBhB,EAAEjV,MAAMyD,KACRoS,EAAQC,OAAS,oFACb5V,EAAchL,EAAQ,eAAe,EAAI,SAG7C2gB,EAAQC,OAAS5V,EAAchL,EAAQ,OAAO,EAElD2gB,EAAQE,QAAU,eAAiB+B,GAAoB,KAAO7C,EAAEjV,MAAM0D,QAAU,SAChFmS,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,WAAW,GAC1EwV,MAAO,WACHxV,EAAO2V,UAAUC,UAMrC,OAAO+K,CACX,EA7qB6B3gB,EAAQjC,EAAMgiB,EAAG5K,CAAO,EAC7C/W,oBAAM4B,EAAO2V,SAAS,GACtB3V,EAAO2V,UAAY,IAAIkN,SAAO,CAC1BC,WAAYC,GAAcjB,KAAKnwB,KAAMqO,EAAQ2gB,EAAQI,UAAU,EAC/DiC,YAAa,SAAUpf,GACnBqf,GAAwBjjB,EAAQA,EAAO2V,UAAW/R,EAAM+c,EAAQI,UAAU,GAE9EH,OAAQD,EAAQC,OAChBC,QAASF,EAAQE,QACjBC,QAASH,EAAQG,QACjBoC,kBAAmB,CAAEC,OAAQ,QAC7BC,cAAe,CAAA,EACfC,cAAe,CAAA,EACf3F,QAAS,CAAA,EACT4F,cAAe,CAAA,EACfC,QAAS,CAAA,EACTtxB,OAAQ+N,EAAOwjB,aAAmC,IAAMxjB,EAAOnB,QAAQZ,GACvEmO,SAAUF,GAAYlM,EAAQA,EAAOuM,SAAWkX,GAAgBC,EAAc,EAC9E5vB,MAAO,QACPktB,KAAML,EAAQK,KACdE,MAAOP,EAAQO,MACfyC,UAAW3jB,EAAO2jB,UAClBC,oBAAqB5jB,EAAO4jB,oBAC5B7X,OAAQ/L,EAAO+L,OAClB,EACD/L,EAAO2V,UAAUkO,iBAAmB,CAAA,EACpC7jB,EAAO2V,UAAUmO,SAAS,IAAM9jB,EAAOnB,QAAQZ,GAAK8lB,EAAa,GA4sBzE,SAAuB/jB,EAAQ2gB,GAC3B3gB,EAAO2V,UAAUiL,OAASD,EAAQC,OAClC5gB,EAAO2V,UAAUkL,QAAUF,EAAQE,QACnC7gB,EAAO2V,UAAUmL,QAAUH,EAAQG,QACnC9gB,EAAO2V,UAAUgO,UAAY3jB,EAAO2jB,UACpC3jB,EAAO2V,UAAUqL,KAAOL,EAAQK,KAChChhB,EAAO2V,UAAUuL,MAAQP,EAAQO,MACjClhB,EAAO2V,UAAUmN,WAAaC,GAAcjB,KAAKnwB,KAAMqO,EAAQ2gB,EAAQI,UAAU,EACjF/gB,EAAO2V,UAAUqN,YAAc,SAAUpf,GACrCqf,GAAwBjjB,EAAQA,EAAO2V,UAAW/R,EAAM+c,EAAQI,UAAU,GAE9E/gB,EAAO2V,UAAUqO,WACjBhkB,EAAO2V,UAAUsO,MACrB,EAttBsBjkB,EAAQ2gB,CAAO,CAErC,CAUO,SAASjC,GAAgB1e,EAAQjC,EAAMmmB,EAAcjkB,GACxD,IAAIkkB,EAmHR,SAAuBnkB,EAAQjC,EAAMmmB,EAAcjkB,GAC/C,IAGImkB,EACArhB,EACAwW,EALAoH,EAAU,CACVC,OAAQ,GAAIC,QAAS,GAAIC,QAAS,GAAIC,WAAY,GAKtDC,KAAe,WAAcC,GAAiBjhB,EAAQA,EAAOqkB,aAAc1D,EAAQI,UAAU,GAC7FG,MAAgB,WAAcC,GAAkBnhB,EAAQA,EAAOqkB,aAAc1D,EAAQI,UAAU,IAC/F,OAAQhjB,GACJ,IAAK,YACD4iB,EAAQC,OAAS5V,EAAchL,EAAQ,4BAA4B,EACnE2gB,EAAQE,QAAU,QAAU7V,EAAchL,EAAQ,6BAA6B,EAAI,SACnF2gB,EAAQG,QAAU,CAAC,CACXM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,YAAY,GAC3EwV,MAAO,WACHxV,EAAOqkB,aAAazO,OACpBgB,GAAO5W,EAAQC,EAASD,EAAOme,UAAU,IAGjD,CACIiD,YAAa,CAAEP,QAAS7V,EAAchL,EAAQ,WAAW,GACzDwV,MAAO,WACHxV,EAAOqkB,aAAazO,OACpB5V,EAAO2V,UAAUC,UAG7B+K,EAAQI,WAAa,mBACrB,MACJ,IAAK,iBACDJ,EAAQI,WAAa,kBACrB/gB,EAAOkkB,aAAeA,EACtBnhB,EAAO/C,EAAOkkB,aAAalkB,EAAOye,YAElC1b,EAAiB,CAAC,KADlBwW,EAAQxW,EAAK8J,YAAY,GAAG,GACN9J,EAAOA,EAAK6J,UAAU2M,CAAK,EACjDoH,EAAQC,OAAS5V,EAAchL,EAAQ,kBAAkB,EACzDokB,EAAmB,QAAUpZ,EAAchL,EAAQ,mBAAmB,EAAI,SAC1E2gB,EAAQE,QAAU,EAAmBvY,QAAQ,MAAOvF,CAAI,EACxD4d,EAAQO,MAAQ,WACZ,IACQtd,EADH5D,EAAOgQ,WAA8C,IAAjChQ,EAAO0P,eAAepd,SACvCsR,EAAO,CAAEmE,YAAa/H,EAAO6P,gBACjC7P,EAAO6H,QAAQ,cAAejE,CAAI,EAClC5D,EAAOgQ,UAAYhQ,EAAO+N,WAAa,CAAA,GAE3CoT,GAAkBnhB,EAAQA,EAAOqkB,aAAc1D,EAAQI,UAAU,GAErEJ,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,YAAY,GAC3EwV,MAAO,WAIH,IASQpU,EACA9C,EAEAwC,EAfRd,EAAO0P,eAAezQ,KAAKe,EAAOkkB,aAAalkB,EAAOye,WAAW,EACjEze,EAAO8P,iBAAiB7Q,KAAK0R,GAAiB3Q,EAAQA,EAAOkkB,aAAalkB,EAAOye,WAAW,CAAC,EAC7Fze,EAAOye,UAAU,GACbyF,EAAalkB,EAAOye,aAGpB6F,EAAsB,CAAC,KADnBC,GAAWD,EADFtkB,EAAOkkB,aAAalkB,EAAOye,aAClB5R,YAAY,GAAG,GACVyX,EAASA,EAAO1X,UAAU2X,CAAQ,EAC7DvkB,EAAOqkB,aAAaxD,QAAU,EAAmBvY,QAAQ,MAAOgc,CAAM,EACtEtkB,EAAOqkB,aAAaJ,SAGpBjkB,EAAOqkB,aAAazO,OAChBxU,EAAapB,EAAO+N,WAAa/N,EAAO0O,SAAW1O,EAAOoB,WAC1D9C,EAAO0B,EAAO+N,WAAa/N,EAAO7C,SAAmC,KAAtB6C,EAAOgO,WAAqBhO,EAAO1B,KAClF0B,EAAOgO,WACPlN,EAASd,EAAO+N,WAAa,OAAS/N,EAAO2G,WACjD0H,GAAMrO,EAAQoB,EAAYpB,EAAO0P,eAAgBpR,EAAMwC,EAAQd,EAAO0P,eAAgB1P,EAAO8P,gBAAgB,KAIzH,CACIsR,YAAa,CAAEP,QAAS7V,EAAchL,EAAQ,WAAW,GACzDwV,MAAO,WAEH,IAUY1U,EACAM,EACA9C,EAbZ0B,EAAOye,UAAU,GACbyF,EAAalkB,EAAOye,aAGpB+F,EAAiB,CAAC,KADdC,GAAMD,EADGxkB,EAAOkkB,aAAalkB,EAAOye,aACvB5R,YAAY,GAAG,GACV2X,EAASA,EAAO5X,UAAU6X,CAAG,EACnDzkB,EAAOqkB,aAAaxD,QAAU,EAAmBvY,QAAQ,MAAOkc,CAAM,EACtExkB,EAAOqkB,aAAaJ,SAGpBjkB,EAAOqkB,aAAazO,OACiB,IAAjC5V,EAAO0P,eAAepd,SAClBwO,EAASd,EAAO+N,WAAa,OAAS/N,EAAO2G,WAC7CvF,EAAapB,EAAO+N,WAAa/N,EAAO0O,SAAW1O,EAAOoB,WAC1D9C,EAAO0B,EAAO+N,WAAa/N,EAAO7C,SAAmC,KAAtB6C,EAAOgO,WAAqBhO,EAAO1B,KAClF0B,EAAOgO,WACXK,GAAMrO,EAAQoB,EAAYpB,EAAO0P,eAAgBpR,EAAMwC,EAAQd,EAAO0P,eAAgB1P,EAAO8P,gBAAgB,OAMjI,MACJ,IAAK,cACD6Q,EAAQI,WAAa,eACrBJ,EAAQC,OAAS5V,EAAchL,EAAQ,cAAc,EACrD2gB,EAAQE,QAAU7gB,EAAO0kB,WAAW,GAAG9b,KAAO,kCACzCoC,EAAchL,EAAQ,eAAgB,EAAI,SAC/C2gB,EAAQK,KA8GpB,SAAqBhhB,EAAQ4D,GACzB5D,EAAO2kB,cAAgB,CAAA,EACvB,IAAIC,EAAY5mB,WAAS,UAAW4F,CAAI,EACpCihB,EAAYplB,SAAO,iBAAkBmlB,CAAS,EAC9CE,EAAiB9kB,EAAOsK,cAAc,MAAO,CAC7CC,UAAW,iBACd,EACGwa,EAAW/kB,EAAOsK,cAAc,QAAS,CACzCrM,GAAI+B,EAAOnB,QAAQZ,GAAK,YAC3B,EACD6mB,EAAeja,YAAYka,CAAQ,EACnCF,EAAUha,YAAYia,CAAc,EAClB,IAAIE,WAAS,CAC3BC,MAAOja,EAAchL,EAAQ,gBAAgB,EAC7CklB,OAAQ,SAAUthB,GACd5D,EAAOmlB,YAAcvhB,EAAKwhB,SAEjC,EACWtB,SAAS,IAAM9jB,EAAOnB,QAAQZ,GAAK,WAAW,EAC1DgjB,GAAiBjhB,EAAQA,EAAOqkB,aAAc,cAAc,CAChE,EAlIuCvC,KAAKnwB,KAAMqO,CAAM,EAC5C2gB,EAAQO,MAAQ,WACZlhB,EAAO2kB,cAAgB,CAAA,EACvBU,GAAcrlB,CAAM,EACpBmhB,GAAkBnhB,EAAQA,EAAOqkB,aAAc1D,EAAQI,UAAU,GAErEJ,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,kBAAkB,GACjFwV,MAAO,WACH8P,GAAetlB,EAAQ,CAAA,CAAI,IAGnC,CACIohB,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,gBAAgB,GAC/EwV,MAAO,WACH8P,GAAetlB,EAAQ,CAAA,CAAK,IAGpC,CACIohB,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAS7V,EAAchL,EAAQ,aAAa,GAC5EwV,MAAO,WACH,IAAI5F,EAAQ,EACR5P,EAAOmlB,aACPvV,EAAQ5P,EAAO0kB,WAAWpyB,OAC1B0N,EAAO0kB,WAAa,GACpBW,GAAcrlB,CAAM,IAIpBA,EAAO0kB,WAAWlL,OAAO,EADzB5J,EAAQ,CACqB,EACI,IAA7B5P,EAAO0kB,WAAWpyB,OAClBosB,GAAgB1e,EAAQ,aAAa,EAGrCqlB,GAAcrlB,CAAM,GAG5BA,EAAOW,OAAO4kB,GAAmB,CAAE3V,MAAOA,EAAO,KAMrE,OAAO+Q,CACX,EApQmC3gB,EAAQjC,EAAMmmB,EAAcjkB,CAAO,EAClED,EAAOmlB,YAAc,CAAA,EACjB/mB,oBAAM4B,EAAOqkB,YAAY,GACzBrkB,EAAOqkB,aAAe,IAAIxB,SAAO,CAC7BC,WAAY0C,GAAc1D,KAAKnwB,KAAMqO,EAAQmkB,EAAWpD,UAAU,EAClEiC,YAAa,SAAUpf,GACnBqf,GAAwBjjB,EAAQA,EAAOqkB,aAAczgB,EAAMugB,EAAWpD,UAAU,GAEpFF,QAASsD,EAAWtD,QACpBD,OAAQuD,EAAWvD,OACnByC,cAAe,CAAA,EACfC,cAAe,CAAA,EACfJ,kBAAmB,CAAEC,OAAQ,QAC7BlxB,OAAQ+N,EAAOwjB,aAAmC,IAAMxjB,EAAOnB,QAAQZ,GACvEmO,SAAUF,GAAYlM,EAAQA,EAAOuM,SAAWkX,GAAgBC,EAAc,EAC9EC,UAAW3jB,EAAO2jB,UAClBP,cAAe,CAAA,EACfG,QAAS,CAAA,EACTzvB,MAAO,IACPgtB,QAASqD,EAAWrD,QACpBE,KAAMmD,EAAWnD,KACjBE,MAAOiD,EAAWjD,MAClB0C,oBAAqB5jB,EAAO4jB,oBAC5B7X,OAAQ/L,EAAO+L,OAClB,EACD/L,EAAOqkB,aAAaR,iBAAmB,CAAA,EACvC7jB,EAAOqkB,aAAaP,SAAS,IAAM9jB,EAAOnB,QAAQZ,GAAKwnB,EAAkB,IAGzEzlB,EAAOqkB,aAAazD,OAASuD,EAAWvD,OACxC5gB,EAAOqkB,aAAanD,MAAQiD,EAAWjD,MACvClhB,EAAOqkB,aAAarD,KAAOmD,EAAWnD,KACtChhB,EAAOqkB,aAAanD,MAAQiD,EAAWjD,MACvClhB,EAAOqkB,aAAaxD,QAAUsD,EAAWtD,QACzC7gB,EAAOqkB,aAAavD,QAAUqD,EAAWrD,QACzC9gB,EAAOqkB,aAAaV,UAAY3jB,EAAO2jB,UACvC3jB,EAAOqkB,aAAatY,OAAS/L,EAAO+L,OACpC/L,EAAOqkB,aAAavB,WAAa0C,GAAc1D,KAAKnwB,KAAMqO,EAAQmkB,EAAWpD,UAAU,EACvF/gB,EAAOqkB,aAAarB,YAAc,SAAUpf,GACxCqf,GAAwBjjB,EAAQA,EAAOqkB,aAAczgB,EAAMugB,EAAWpD,UAAU,GAEpF/gB,EAAOqkB,aAAaL,WACpBhkB,EAAOqkB,aAAaJ,OAE5B,CAUA,SAASyB,GAAuB1lB,EAAQ2lB,EAAW/hB,EAAMmd,GACjD3Y,EAAY,CACZoJ,OAAQ5N,EAAK4N,OAAQoU,UAAW7E,EAAY8E,YAAaF,GAE7D3lB,EAAO6H,QAAQ,kBAAmBO,EAAW,SAAU0d,GACnDliB,EAAK4N,OAASsU,EAAUtU,OAC3B,CACL,CAUA,SAASyR,GAAwBjjB,EAAQ2lB,EAAW/hB,EAAMmd,GAClD3Y,EAAY,CACZoJ,OAAQ5N,EAAK4N,OAAQqU,YAAaF,EAAWC,UAAW7E,GAE5D/gB,EAAO6H,QAAQ,mBAAoBO,EAAW,SAAU0d,GACpDliB,EAAK4N,OAASsU,EAAUtU,OACnB5N,EAAK4N,QAAU5N,CAAAA,EAAKmiB,cAAiC,WAAfhF,GAA4C,kBAAfA,GACpE/gB,EAAO6H,QAAQ8a,GAAsB,EAAE,EAE9C,CACL,CASA,SAAS1B,GAAiBjhB,EAAQ2lB,EAAW5E,GACrCnd,EAAO,CAAEiiB,YAAaF,EAAW9mB,QAAS8mB,EAAU9mB,QAAS+mB,UAAW7E,GAC5E/gB,EAAO6H,QAAQ,YAAajE,CAAI,CACpC,CASA,SAASud,GAAkBnhB,EAAQ2lB,EAAW5E,GACtCnd,EAAO,CAAEiiB,YAAaF,EAAW9mB,QAAS8mB,EAAU9mB,QAAS+mB,UAAW7E,GAC5E/gB,EAAO6H,QAAQ,aAAcjE,CAAI,CACrC,CAmKA,SAAS0hB,GAAetlB,EAAQgmB,GAC5B,GAAIhmB,EAAOmlB,YAAa,CACpB,GAAIa,EAmFR,IAlFQC,IAiFWjmB,EAjFGA,EAkFc,IAA7BA,EAAO0kB,WAAWpyB,QACrB0N,EAAOkmB,UAAUjnB,KAAK,CAAE6B,OAAQ,WAAYgG,KAAM9G,EAAO0kB,WAAW,GAAI,EACxE1kB,EAAO6R,UAAUsU,MAAMnmB,EAAO0kB,WAAW,EAAE,EAC3C1kB,EAAO0kB,WAAWlL,OAAO,EAAG,CAAC,OAUjC,IA5FQ4M,IA2FUpmB,EA3FGA,EA4Fe,IAA7BA,EAAO0kB,WAAWpyB,QACrB0N,EAAOkmB,UAAUjnB,KAAK,CAAE6B,OAAQ,UAAWgG,KAAM9G,EAAO0kB,WAAW,GAAI,EACvE1kB,EAAO6R,UAAUsU,MAAMnmB,EAAO0kB,WAAW,EAAE,EAC3C1kB,EAAO0kB,WAAWlL,OAAO,EAAG,CAAC,EA7F7B6L,GAAcrlB,CAAM,OAGpBA,EAAOkmB,UAAUjnB,KAAK,CAClB6B,OAAQklB,EAAa,WAAa,UAClClf,KAAM9G,EAAO0kB,WAAW,GAC3B,EACD1kB,EAAO6R,UAAUsU,MAAMnmB,EAAO0kB,WAAW,EAAE,EAC3C1kB,EAAO0kB,WAAWlL,OAAO,EAAG,CAAC,EACI,IAA7BxZ,EAAO0kB,WAAWpyB,OAClBosB,GAAgB1e,EAAQ,aAAa,EAGrCqlB,GAAcrlB,CAAM,CAGhC,CAOA,SAASqlB,GAAcrlB,GACnB,IAAIqmB,EAAO,CAAA,EAOPnV,GANAlR,EAAO2kB,cACP3kB,EAAO2kB,cAAgB,CAAA,EAGvB0B,EAAO,CAAA,EAED5mB,SAAO,kBAAmBO,EAAOqkB,aAAaxlB,OAAO,GAC3DqS,GACA5O,SAAO4O,CAAG,EAEVmV,EACArmB,EAAOqkB,aAAazO,OAGpB5V,EAAO0kB,WAAa,EAE5B,CAoJA,SAASnD,GAAYrQ,EAAKoV,GACtBC,QAAMhF,YAAY,CACd1iB,QAASqS,EACTsV,WAAY,CACRF,YAAaA,GAEpB,CACL,CAoLA,SAASvD,GAAc/iB,EAAQ+gB,EAAYnd,GAEvC6iB,GADiBC,YAAU,SAAU1mB,EAAO2V,UAAU9W,OAAO,CACpC,EACzB6mB,GAAuB1lB,EAAQA,EAAO2V,UAAW/R,EAAMmd,CAAU,CACrE,CASA,SAASyE,GAAcxlB,EAAQ2mB,EAAS/iB,GAEpC6iB,GADiBC,YAAU,SAAU1mB,EAAOqkB,aAAaxlB,OAAO,CACvC,EACzB6mB,GAAuB1lB,EAAQA,EAAOqkB,aAAczgB,EAAM+iB,CAAO,CACrE,CAOA,SAASF,GAAeG,GAapB,IAZA,IAYSC,EAAW,EAAGA,EAAWD,EAAWt0B,OAAQu0B,CAAQ,GACzDC,CAbU,SAAUD,GACpBD,EAAWC,GAAUE,UAAY,SAAUhH,GACrB,KAAdA,EAAEiH,SACFjH,EAAEkH,kBAGVL,EAAWC,GAAUnF,QAAU,SAAU3B,GACnB,KAAdA,EAAEiH,SACFJ,EAAWC,GAAUrR,UAKrBqR,CAAQ,CAExB,CA4BA,SAASvF,GAASthB,GACd,IAAIkR,EAAMzR,SAAO,WAAYO,EAAO2V,UAAU9W,OAAO,EACrDqoB,GAAiBlnB,EAAQkR,CAAG,EAC2B,KAAnDA,EAAIuC,cAAckK,mBAAmB5S,WAGzCsL,GAAarW,EAAQkR,EAAItP,KAAK,CAClC,CAQA,SAASogB,GAAWhiB,GAChB,IAyBQmnB,EAEAC,EATJnnB,EAlBAiR,EAAMzR,SAAO,UAAWO,EAAO2V,UAAU9W,OAAO,EACpDqoB,GAAiBlnB,EAAQkR,CAAG,EAC2B,KAAnDA,EAAIuC,cAAckK,mBAAmB5S,YAGrChN,EAAOmT,EAAItP,MACXylB,EAASrnB,EAAOgU,gBAAgBnH,YAAY,GAAG,EAC/C7M,EAAOiU,QAAU,CAACjU,EAAO+W,oBAEzBhZ,GADuB,CAAC,IAAZspB,EAAiB,GAAKrnB,EAAOgU,gBAAgBuO,OAAO8E,CAAM,GAG1ErnB,EAAOme,WAAapgB,EAChBiC,EAAOgU,kBAAoBjW,EAC3BiC,EAAO2V,UAAUC,QAGjB3V,EAAU,GAEVA,EADwB,mBAAxBD,EAAOmB,aACG+M,GAAclO,EAAQA,EAAO8D,SAAS,EAAE,EAGxC9D,EAAO1B,KAErB0B,EAAOsnB,UAAYtpB,WAAS,KAAMgC,EAAO8D,SAAS,EAAE,EAChD9D,EAAOiU,SACHkT,EAA2B,CAAC,IAAZE,EAAiB,GAAKrnB,EAAOgU,gBAAgBuO,OAAO8E,CAAM,EAE1ED,EAA2B,CAAC,KAD5BG,EAASxpB,EAAK8O,YAAY,GAAG,GACI,GAAK9O,EAAKwkB,OAAOgF,CAAM,EACxDvnB,EAAO+W,oBAAqBoQ,IAAiBC,EAC7C1I,GAAgB1e,EAAQ,YAAa,KAAMC,CAAO,EAOtD2W,GAAO5W,EAAQC,EAASlC,CAAI,GAEpC,CAkBA,SAAS0jB,GAAWzhB,EAAQkR,GACpB,eAAesW,KAAKtW,EAAItP,KAAK,EAC7B6lB,GAAWznB,EAAQkR,CAAG,EAEH,KAAdA,EAAItP,MACTsP,EAAIuC,cAAckK,mBAAmB5S,UAAYC,EAAchL,EAAQ,kBAAkB,EAGzFkR,EAAIuC,cAAckK,mBAAmB5S,UAAY,EAEzD,CAQA,SAASmc,GAAiBlnB,EAAQkR,GAC9BuQ,GAAWzhB,EAAQkR,CAAG,EACtB,IAAI3F,EAAM2F,EAAItP,MAAMtP,OAAS,EACX,KAAd4e,EAAItP,OAAkBsP,EAAItP,MAAMiL,YAAY,GAAG,IAAMtB,GAAS2F,EAAItP,MAAMiL,YAAY,GAAG,IAAMtB,GAC5FvL,CAAAA,EAAO+W,mBAAqD,CAAC,IAAhC7F,EAAItP,MAAMiL,YAAY,GAAG,GAAuE,IAA3DqE,EAAItP,MAAMgL,UAAUsE,EAAItP,MAAMoF,QAAQ,GAAG,EAAI,CAAC,EAAE1U,QACnHm1B,GAAWznB,EAAQkR,CAAG,CAE9B,CAQA,SAASuW,GAAWznB,EAAQkR,GACxB,IAAIpG,EAAQE,EAAchL,EAAQ,oBAAoB,EAAEsI,QAAQ,MAAO,IAAM4I,EAAItP,MAAQ,GAAG,EACxF5B,EAAO4jB,oBACP1S,EAAIuC,cAAckK,mBAAmBhe,YAAcmL,EAGnDoG,EAAIuC,cAAckK,mBAAmB5S,UAAYD,CAEzD,CAOA,SAAS6W,GAAW5B,GAGZxR,EADAwR,EAAEiH,SAGGjH,EAAE2H,OAIA3H,EAAE4H,SAEb,OAAOpZ,CACX,CASO,SAASqZ,GAAkB5nB,EAAQ4gB,EAAQ5Y,GAC9C,IAAI6Y,EAAUvW,gBAAc,MAAO,CAAEC,UAAW,eAAgB,EAC5Dsd,EAAQvd,gBAAc,MAAO,CAAEC,UAAW,UAAW4U,MAAO,CAAE2I,IAAK9f,EAAU+f,IAAKnH,GAAU,EAChGC,EAAQhW,YAAYgd,CAAK,EACrBzpB,oBAAM4B,EAAOgoB,SAAS,GACtBhoB,EAAOgoB,UAAY,IAAInF,SAAO,CAC1BjC,OAAQA,EACRC,QAASA,EACTqC,kBAAmB,CAAEC,OAAQ,QAC7BC,cAAe,CAAA,EACfC,cAAe,CAAA,EACf3F,QAAS,CAAA,EACT6F,QAAS,CAAA,EACTzvB,MAAO,QACPm0B,OAAQ,QACRh2B,OAAQ+N,EAAOwjB,aAAmC,IAAMxjB,EAAOnB,QAAQZ,GACvEmO,SAAUF,GAAYlM,EAAQA,EAAOuM,SAAWkX,GAAgBC,EAAc,EAC9E3X,OAAQ/L,EAAO+L,OACfmc,aAAc,CAAA,EACd5E,cAAe,CAAA,EACfM,oBAAqB5jB,EAAO4jB,oBAC5B5Q,SAAU,CAAEmV,EAAG,SAAUC,EAAG,UAC5BzE,UAAW3jB,EAAO2jB,UAClB3C,KA6BZ,SAAmBhhB,GACfuT,WAAW,WACHvT,EAAOgoB,WACPhoB,EAAOgoB,UAAUnpB,QAAQ+iB,QAEhC,EACDyG,GAAYroB,CAAM,EAClBihB,GAAiBjhB,EAAQA,EAAOgoB,UAAW,eAAe,CAC9D,EArC4BlG,KAAKnwB,KAAMqO,CAAM,EACjCkhB,MAAO,WAAcC,GAAkBnhB,EAAQA,EAAOgoB,UAAW,eAAe,GAChFlF,WAAY,SAAUlf,GAClB8hB,GAAuB1lB,EAAQA,EAAOgoB,UAAWpkB,EAAM,eAAe,GAE1Eof,YAAa,SAAUpf,GACnBqf,GAAwBjjB,EAAQA,EAAOgoB,UAAWpkB,EAAM,eAAe,GAE3E0kB,SAAUD,GAAYvG,KAAKnwB,KAAMqO,CAAM,EACvCuoB,WAAYF,GAAYvG,KAAKnwB,KAAMqO,CAAM,EAC5C,EACDA,EAAOgoB,UAAUnE,iBAAmB,CAAA,EACpC7jB,EAAOgoB,UAAUlE,SAAS,IAAM9jB,EAAOnB,QAAQZ,GAAKuqB,EAAiB,IAGrExoB,EAAOgoB,UAAU7hB,UACjBnG,EAAOgoB,UAAUpH,OAASA,EAC1B5gB,EAAOgoB,UAAUnH,QAAUA,EAC3B7gB,EAAOgoB,UAAUrE,UAAY3jB,EAAO2jB,UACpC3jB,EAAOgoB,UAAUhE,WACjBhkB,EAAOgoB,UAAU/D,OAEzB,CAsBA,SAASoE,GAAYroB,GACjB,IAAI6gB,EAAUphB,SAAO,iBAAkBO,EAAOgoB,UAAUnpB,OAAO,EAC3D4pB,EAAUhpB,SAAO,gBAAiBO,EAAOgoB,UAAUnpB,OAAO,EAC1D6pB,EAAShX,OAAOiX,iBAAiB9H,EAAS,IAAI,EAC9C+H,EAAeF,EAAU,EAAIG,WAAWH,EAAOI,YAAY,EAAK,GAChEC,EAAgBL,EAAU,EAAIG,WAAWH,EAAOM,aAAa,EAAK,GACtEP,EAAQxd,MAAMnX,MAAS+sB,EAAQoI,YAAcL,EAAgB,KAC7DH,EAAQxd,MAAMgd,OAAUpH,EAAQ9W,aAAegf,EAAiB,IACpE,CCl5BIG,EAAer3B,UAAUs3B,OAAS,SAAUvlB,GAIxC,GAHAjS,KAAKqO,OAAOopB,YAAc,KAC1Bz3B,KAAK03B,UAAY,KACjBC,cAAY33B,KAAKqO,OAAOnB,OAAO,EACN,eAArBlN,KAAKqO,OAAO0F,KAAuB,CACnC/T,KAAK43B,mBACL53B,KAAKkN,QAAQ2qB,aAAa,WAAY,GAAG,EACrC73B,KAAK83B,UACL93B,KAAK+3B,eACL/3B,KAAKg4B,uBAETh4B,KAAKqO,OAAOW,OAAOipB,GAAmB,EAAE,EACxC,IAAIC,EAAYpqB,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAK6rB,GAAkBn4B,KAAKqO,OAAOnB,OAAO,EACvFkrB,EAAKtqB,SAAO,KAAMoqB,CAAS,EAuD3BG,GAtDAD,GACAznB,SAAOynB,CAAE,EAEbp4B,KAAK83B,QAAU,CACXQ,eAAgB,CACZC,SAAU,SAAUC,SAAU,UAAWC,SAAU,GACnDC,cAAe,QAASC,YAAa,IAEzCC,SAAU,CAAA,EACVC,OAAQ,CAAEzsB,KAAM,OAAQ0sB,QAAS,WAAYziB,SAAU,eAAgB0iB,eAAgB,gBACvF1hB,UAAWrX,KAAKqO,OAAOgJ,UACvB2hB,YAAah5B,KAAKi5B,cAAc9I,KAAKnwB,IAAI,EACzCiyB,oBAAqBjyB,KAAKqO,OAAO4jB,qBAErCjyB,KAAKmX,MAAQ,GACbnX,KAAKmX,MAAQnX,KAAKk5B,WAAWjnB,CAAI,EAC7BjS,KAAKqO,OAAO8qB,cAAuC,SAAvBn5B,KAAKqO,OAAOkJ,OACxCvX,KAAKmX,MAAQnX,KAAK6T,SAAWulB,WAASC,KAAKr5B,KAAKmX,MAAOnX,KAAKqO,OAAOkJ,OAAQvX,KAAKs5B,SAASnJ,KAAKnwB,IAAI,CAAC,EAGnGA,KAAKmX,MAAQnX,KAAK6T,SAAWqD,GAAclX,KAAKqO,OAAQrO,KAAKmX,KAAK,EAEtE+gB,EAAUjqB,UAAU0C,OAAO4oB,EAAgB,EACvCv5B,KAAKqO,OAAOmrB,sBAA+C,EAAvBx5B,KAAK6T,SAASlT,QAClDX,KAAKqO,OAAOorB,qBAAqBC,sBAErC15B,KAAK25B,aAAeC,WAASC,mBAAmBlhB,gBAAe3Y,KAAKmX,MAAOnX,KAAK83B,OAAO,EACvF93B,KAAK85B,SAAWp6B,MAAMQ,UAAUqR,MAAMiV,KAAKuO,YAAU,IAAMlnB,EAAe7N,KAAK25B,YAAY,CAAC,EAC5F35B,KAAKkN,QAAQgM,YAAYlZ,KAAK25B,YAAY,EAC1C35B,KAAK25B,aAAa9B,aAAa,aAAc,SAAS,EACtD73B,KAAK+5B,iBACL/5B,KAAKg6B,gBACwB,IAAzBh6B,KAAK85B,SAASn5B,QACVs5B,EAAYj6B,KAAKkN,QAAQsL,cAAc,IAAM0hB,EAAe,EAChEl6B,KAAKkN,QAAQ6gB,YAAYkM,CAAS,EAClCpiB,GAAmB7X,KAAKqO,OAAQrO,KAAKkN,QAAS+E,CAAI,GAEpB,IAAzBjS,KAAK85B,SAASn5B,QAAgBX,KAAKkN,QAAQsL,cAAc,IAAMC,CAAS,GAC7EzY,KAAKkN,QAAQ6gB,YAAY/tB,KAAKkN,QAAQsL,cAAc,IAAMC,CAAS,CAAC,EAE1C,CAAA,IAA1BzY,KAAKm6B,mBACLn6B,KAAKo6B,YAAYp6B,KAAKqO,OAAO2P,UAAU,EACvChe,KAAKm6B,iBAAmB,CAAA,GAGC,CAAA,IAAzBn6B,KAAKq6B,kBACLr6B,KAAKo6B,YAAYp6B,KAAKqO,OAAOqV,UAAU,EACvC1jB,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKie,KAAK,GACNje,KAAKie,QAAUje,KAAKqO,OAAOqV,WAAW/iB,UACtCX,KAAKq6B,gBAAkB,CAAA,EACvBr6B,KAAKqO,OAAOqV,WAAa,IAGjB1jB,KAAKkN,QAAQuD,iBAAiB,IAAM6pB,CAAU,GACrC,IAArBjC,EAAU13B,SACVX,KAAKqO,OAAOmB,aAAe,kBAE/B,IAAK,IAAIxO,EAAI,EAAGA,EAAIq3B,EAAU13B,OAAQK,CAAC,GACnCq3B,EAAUr3B,GAAG62B,aAAa,gBAAiB,MAAM,EAErD73B,KAAKkN,QAAQoM,MAAMihB,UAAY,OAC/Bv6B,KAAKw6B,eACLx6B,KAAKy6B,mBACLz6B,KAAK06B,aACD16B,KAAKqO,OAAOmrB,sBAA+C,EAAvBx5B,KAAK6T,SAASlT,SAClDX,KAAKqO,OAAOorB,qBAAqBkB,qBACjC36B,KAAKqO,OAAOorB,qBAAqBmB,gBAAgB,CAAA,CAAK,GAE1D56B,KAAK66B,WAAa,CAAA,EAClBC,cAAY96B,KAAKqO,OAAOnB,OAAO,EAC3BlN,KAAKqO,OAAO+B,cAAczP,QAC1BX,KAAK+6B,cAIjBxD,EAAer3B,UAAUo5B,SAAW,SAAU0B,EAAGjZ,GAC7C,IACQkZ,EAIR,MAL8B,eAA1Bj7B,KAAKqO,OAAOgJ,YACR4jB,EAAID,EACRA,EAAIjZ,EACJA,EAAIkZ,GAEDj7B,KAAKqO,OAAO8qB,aAAa6B,EAAGjZ,CAAC,GAExCwV,EAAer3B,UAAU65B,eAAiB,WAEtC,IADA,IAAI/4B,EAAI,EACDA,EAAIhB,KAAK85B,SAASn5B,QACjBX,KAAK85B,SAAS94B,GAAGwX,cAAc,KAAK,IAEpCxY,KAAK85B,SAAS94B,GAAGk6B,YAAc,WAAc,MAAO,CAAA,IAExDl6B,CAAC,IAGTu2B,EAAer3B,UAAU85B,cAAgB,WACrC,IAAImB,EAAQn7B,KACRA,KAAK83B,UACD93B,KAAKqO,OAAOqS,kBACR1gB,KAAKygB,SACLzgB,KAAKygB,QAAQrX,UAEjBpJ,KAAKygB,QAAU,IAAI2a,YAAUp7B,KAAK25B,aAAc,CAC5C0B,eAAgB,CAAA,EAChBC,SAAU,EACVC,iBAAkB,CAAA,EAClBC,WAAY,IAAM1qB,GAClB2qB,OAAQz7B,KAAK07B,WAAWvL,KAAKnwB,IAAI,EACjC27B,SAAU37B,KAAKqO,OAAOutB,mBACtBC,SAAU77B,KAAKqO,OAAOnB,QACtB4uB,SAAUnc,GAAgBwQ,KAAKnwB,KAAMA,KAAKqO,MAAM,EAChD0tB,KAAMra,GAAgByO,KAAKnwB,KAAMA,KAAKqO,MAAM,EAC5C2tB,MAAO,CAAA,EACPC,UAAW,SAAUhqB,GACjBuO,GAAiB2a,EAAM9sB,OAAQ4D,EAAMkpB,EAAM1a,OAAO,GAEzD,GAEIzgB,KAAKygB,SAAW,CAACzgB,KAAKqO,OAAOqS,kBAClC1gB,KAAKygB,QAAQrX,YAIzBmuB,EAAer3B,UAAUw7B,WAAa,SAAUzpB,GACxCupB,EAAavpB,EAAKiqB,OAAO57B,OACzB67B,EAAStrB,UAAQ2qB,EAAY,cAAc,EAC/C,GAAI,CAACW,EACD,OAAO,KAEPA,GAAU,CAACA,EAAOluB,UAAUC,SAAS,UAAU,GAC/ClO,KAAKo8B,SAASD,CAAM,EAExB,IAAI9D,EAAYr4B,KAAKkN,QAAQuD,iBAAiB,IAAM6pB,CAAU,EAC9Dt6B,KAAKqO,OAAOgB,eAAiB,GAC7BrP,KAAKqO,OAAO6O,SAAW,GACvB,IAAK,IAAIlc,EAAI,EAAGA,EAAIq3B,EAAU13B,OAAQK,CAAC,GACnChB,KAAKqO,OAAO6O,SAAS5P,KAAKtN,KAAKq8B,cAAchE,EAAU9pB,SAASvN,EAAEwN,WAAY,EAAE,EAAE,CAAC,EACnFxO,KAAKqO,OAAOgB,eAAe/B,KAAK+qB,EAAUr3B,EAAE,EAKhD,OAHA2O,GAAU3P,KAAKqO,OAAQ8tB,CAAM,EAC7Bn8B,KAAKqO,OAAO0O,SAAW/c,KAAKqO,OAAO1B,KACnCuS,GAAyBlf,KAAKqO,MAAM,EAC7BrO,KAAKqO,OAAOqR,oBAEvB6X,EAAer3B,UAAUo8B,WAAa,SAAUrqB,GAC5C,IAEQsqB,EAFJv8B,KAAKqO,OAAOkG,eAAiBvU,KAAKw8B,kBAC9BC,EAAS5rB,UAAQoB,EAAK3R,OAAQ,cAAc,EAC5Ci8B,EAAUlwB,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,EAC1FguB,GACIC,EAAO18B,KAAKq8B,cAAcI,CAAM,EACpCz8B,KAAKqO,OAAO7C,SAAWkxB,EAAKpa,OAAStiB,KAAKqO,OAAO1B,KAAOmK,GAAY9W,KAAKqO,OAAQquB,EAAM18B,KAAKqO,OAAO1B,IAAI,EACvG3M,KAAKqO,OAAOkP,SAAWmf,EAAKpa,OAASia,EAAUG,IAG/C18B,KAAKqO,OAAO7C,SAAWxL,KAAKqO,OAAO1B,KACnC3M,KAAKqO,OAAOkP,SAAWgf,KAUnChF,EAAer3B,UAAUs8B,cAAgB,WACrC,MAAO,kBAEXjF,EAAer3B,UAAU+4B,cAAgB,SAAUhnB,GAC/CA,EAAKb,KAAKurB,gBAAgB,YAAY,EAClC,CAAC38B,KAAKqO,OAAO+W,mBAAqB/Y,WAAS,SAAU4F,EAAK2qB,OAAO,IAC7DC,EAAU5qB,EAAKb,KAAKoH,cAAc,IAAMzK,EAAa,EACrDwiB,EAAMlkB,WAAS,OAAQ4F,EAAK2qB,OAAO,EACnC36B,EAAOoK,WAAS,OAAQ4F,EAAK2qB,OAAO,EACd,CAAC,IAAvBrM,EAAIlb,QAAQpT,CAAI,KAChB46B,EAAQzjB,UAAYmX,EAAIK,OAAO,EAAGL,EAAI5vB,OAASsB,EAAKtB,MAAM,GAGlEX,KAAK88B,eAAe7qB,CAAI,EARxB,IAEQse,EACAtuB,EAMJwU,EAAY,CACZvJ,QAAS+E,EAAKb,KACdgF,YAAanE,EAAK2qB,QAClB9hB,OAAQ,kBAEZ9a,KAAKqO,OAAO6H,QAAQ,WAAYO,CAAS,GAE7C8gB,EAAer3B,UAAU48B,eAAiB,SAAU7qB,GAChD,IAGI8qB,EAHC/8B,KAAKqO,OAAO2uB,sBAGbD,EAAeE,iBAAetkB,gBAAe,CAAA,EAAO,CACpD8a,QAAS,CAAA,EACThZ,SAAU,UACb,GACYod,aAAa,OAAQ,UAAU,EAC5CkF,EAAalF,aAAa,eAAgB,OAAO,EACjDkF,EAAalF,aAAa,aAAc,UAAU,EAClD5lB,EAAKb,KAAK4Q,kBAAkBkb,aAAaH,EAAc9qB,EAAKb,KAAK4Q,kBAAkBmb,WAAW,EAAE,IAEpG5F,EAAer3B,UAAUk9B,eAAiB,SAAUnrB,GAChD,GAAyB,eAArBjS,KAAKqO,OAAO0F,KAAuB,CAOnC,GANA/T,KAAKoJ,UACDpJ,KAAKqO,OAAOmrB,sBACZx5B,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAEzDpQ,KAAKw3B,OAAOvlB,CAAI,EAEe,kBAA3B5F,WAAS,OAAQ4F,CAAI,GAAoD,SAA3BjS,KAAKqO,OAAO2G,YAC1DhV,KAAKqO,OAAOM,OAAS3O,KAAKqO,OAAOQ,eAAsD,IAArC7O,KAAKqO,OAAOQ,cAAclO,OAG5E,IAFA,IAAI08B,EAAUr9B,KAAKs9B,WAAWt9B,KAAKqO,OAAOQ,aAAa,EACnD0uB,EAAW,EACRA,EAAWF,EAAQ18B,QACtBiP,GAAQ5P,KAAK85B,SAASuD,EAAQE,GAAU,EACxCA,CAAQ,GAIS,IADTv9B,KAAKkN,QAAQuD,iBAAiB,IAAM6pB,CAAU,EAChD35B,QACVX,KAAKkN,QAAQ+iB,QAEjBjwB,KAAK+6B,YACL/6B,KAAKqO,OAAOwD,eAAiB,CAAA,OAG7B7R,KAAKkN,QAAQ2qB,aAAa,WAAY,IAAI,GAGlDN,EAAer3B,UAAU66B,UAAY,WACjC,IAAIyC,EAAWx9B,KAAKkN,QAAQuD,iBAAiB,IAAM6pB,CAAU,EAC7D,GAAIkD,EAEA,IADA,IAAIC,EAAc,EACXA,EAAcD,EAAS78B,QAC1BX,KAAK09B,WAAWF,EAASC,GAAc,CAAA,CAAI,EAC3CA,CAAW,IAIvBlG,EAAer3B,UAAUg5B,WAAa,SAAUjnB,GAG5C,IAFA,IAAIjR,EAAI,EACJmW,EAAQiS,KAAK0B,MAAM1B,KAAKC,UAAUpX,EAAKsB,KAAK,CAAC,EAC1CvS,EAAImW,EAAMxW,QAAQ,CACrB,IAUQsV,EAVJ0nB,EAAOzoB,GAASiC,EAAMnW,EAAE,EACxBic,EAAS5Q,WAAS,OAAQ8K,EAAMnW,EAAE,EAClC48B,EAAWze,GAAYnf,KAAKqO,OAAQ8I,EAAMnW,EAAE,EAC5C4X,EAAc5Y,KAAKqO,OAAO+B,eACsB,CAAC,IAAjDpQ,KAAKqO,OAAO+B,cAAciF,QAAQuoB,CAAQ,EAC1C9sB,GAAiB,YAAcA,GAC9B2R,EAActL,EAAMnW,EAAE,IACvB4X,GAAa,IAAMuK,GAAehM,EAAMnW,EAAE,GAE1C28B,IAASnoB,IAAkBxV,KAAKqO,OAAOwvB,eAAiBppB,GAAc0C,EAAMnW,EAAE,GAC1EiV,EAASL,GAAY5V,KAAKqO,OAAQ8I,EAAMnW,EAAE,EAC9C6Y,WAAS,eAAgB5D,EAAQkB,EAAMnW,EAAE,EACzC6Y,WAAS,gBAAiB,CAAEuc,IAAKnZ,GAAU9F,EAAMnW,EAAE,GAGnD6Y,WAAS,WAAY8jB,EAAMxmB,EAAMnW,EAAE,EAEvC6Y,WAAS,eAAgB,CAAE7X,MAAO4W,EAAWklB,MAAO7gB,GAAU9F,EAAMnW,EAAE,EACtEA,CAAC,GAEL,OAAOmW,GAEXogB,EAAer3B,UAAU69B,cAAgB,SAAU9rB,GAC/CjS,KAAKw3B,OAAOvlB,CAAI,GAEpBslB,EAAer3B,UAAU89B,YAAc,SAAU/rB,GACpB,eAArBjS,KAAKqO,OAAO0F,OAGhB/T,KAAKo9B,eAAenrB,CAAI,EACxBjS,KAAKi+B,cACLj+B,KAAKo6B,YAAY,CAAC/tB,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQ7M,KAAKqO,OAAO4d,WAAW,EAAE,EACvFjsB,KAAKqO,OAAO4d,YAAc,KAC1BjsB,KAAKqO,OAAOuF,qBAAqB1G,QAAQ+iB,QACzCjwB,KAAKqO,OAAOmB,aAAe,mBAE/B+nB,EAAer3B,UAAUg+B,eAAiB,WACL,mBAA7Bl+B,KAAKqO,OAAOmB,cACZxP,KAAKm+B,sBAGb5G,EAAer3B,UAAUk+B,aAAe,WACH,mBAA7Bp+B,KAAKqO,OAAOmB,cACZyT,GAAOjjB,KAAKqO,OAAQrO,KAAKqO,OAAO+B,cAAepQ,KAAKqO,OAAO1B,KAAM,QAAQ,GAIjF4qB,EAAer3B,UAAUm+B,YAAc,SAAUpsB,GACpB,eAArBjS,KAAKqO,OAAO0F,OAGhB/T,KAAKo9B,eAAenrB,CAAI,EACxBjS,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKi+B,gBAET1G,EAAer3B,UAAUo+B,aAAe,SAAUrsB,GACrB,eAArBjS,KAAKqO,OAAO0F,MAGhB/T,KAAKo9B,eAAenrB,CAAI,GAE5BslB,EAAer3B,UAAUq+B,aAAe,WACH,mBAA7Bv+B,KAAKqO,OAAOmB,cAA0E,IAArCxP,KAAKqO,OAAO+B,cAAczP,QAC3EX,KAAKw+B,oBAGbjH,EAAer3B,UAAUu+B,cAAgB,SAAUxsB,GAC/CjS,KAAKqO,OAAOM,MAAQ,CAAA,EAE4C,KAA5D3O,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,QAClDjQ,KAAKqO,OAAOqwB,cAAgB,IAEP,eAArB1+B,KAAKqO,OAAO0F,OACZnF,EAAW5O,KAAKqO,MAAM,EACtBrO,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKo9B,eAAenrB,CAAI,EACpBjS,KAAKqO,OAAO0b,cAA4C,mBAA7B/pB,KAAKqO,OAAOmB,eACvCxP,KAAKi+B,cACLj+B,KAAK2+B,aAAa3+B,KAAKqO,OAAO0b,WAAW,IAIrDwN,EAAer3B,UAAU0+B,WAAa,SAAU3sB,GACX,mBAA7BjS,KAAKqO,OAAOmB,cACZxP,KAAK6+B,aAAa5sB,EAAK3R,MAAM,GAGrCi3B,EAAer3B,UAAU4+B,aAAe,WACX,eAArB9+B,KAAKqO,OAAO0F,MAAyB/T,KAAKkN,SAC1ClN,KAAKkN,QAAQe,UAAUqC,IAAIipB,EAAgB,GAGnDhC,EAAer3B,UAAU6+B,gBAAkB,WACvC,IAEQC,EAFiB,eAArBh/B,KAAKqO,OAAO0F,OACZ/T,KAAK03B,UAAY13B,KAAKi/B,eAClBD,EAAWh/B,KAAKk/B,cAEpBl/B,KAAKm/B,YAAYH,EADH,CAAEI,QAAS,CAAA,EAAMC,SAAU,CAAA,EACP,EAClCr/B,KAAKs/B,cAAgB,CAAA,EACrBt/B,KAAKo0B,aAAe,CAAA,IAG5BmD,EAAer3B,UAAUq/B,eAAiB,WACb,eAArBv/B,KAAKqO,OAAO0F,OACZ/T,KAAKw/B,iBACLx/B,KAAKs/B,cAAgB,CAAA,EACrBt/B,KAAKo0B,aAAe,CAAA,IAG5BmD,EAAer3B,UAAUu/B,gBAAkB,WACvCz/B,KAAK66B,WAAa,CAAA,GAEtBtD,EAAer3B,UAAUw/B,eAAiB,WACtC1/B,KAAK66B,WAAa,CAAA,GAGtBtD,EAAer3B,UAAUy/B,SAAW,SAAU1tB,GACjB,eAArBjS,KAAKqO,OAAO0F,OACZ/T,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKqO,OAAOW,OAAO4c,EAAyB,EAAE,EAC9C5rB,KAAKqO,OAAOqwB,cAAgBzsB,EAAKsB,MACjCvT,KAAKo9B,eAAenrB,CAAI,IAGhCslB,EAAer3B,UAAU0/B,gBAAkB,WACnC5/B,KAAKqO,OAAO0F,MAIpBwjB,EAAer3B,UAAU2/B,sBAAwB,WACpB,eAArB7/B,KAAKqO,OAAO0F,MAGhB/T,KAAKm+B,sBAET5G,EAAer3B,UAAU4/B,aAAe,WACX,eAArB9/B,KAAKqO,OAAO0F,MAA0BtH,oBAAMzM,KAAK83B,OAAO,GACI,KAA5D93B,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,YACrD,eAAvBlQ,KAAKqO,OAAOkJ,SACfvX,KAAKqO,OAAOkJ,OAAS,OACrBvX,KAAKqO,OAAOW,OAAO+L,GAAqB,EAAE,IAGlDwc,EAAer3B,UAAU83B,oBAAsB,WACvCh4B,KAAKqO,OAAO0xB,cAGhB//B,KAAKqO,OAAO2xB,IAAIhuB,GAAmBhS,KAAK8/B,YAAY,EACpD9/B,KAAKqO,OAAO2xB,IAAIrkB,EAAoB3b,KAAK+9B,aAAa,EACtD/9B,KAAKqO,OAAO2xB,IAAI9T,GAAkBlsB,KAAKg+B,WAAW,EAClDh+B,KAAKqO,OAAO2xB,IAAIC,GAAqBjgC,KAAKk+B,cAAc,EACxDl+B,KAAKqO,OAAO2xB,IAAI5P,GAAmBpwB,KAAKo+B,YAAY,EACpDp+B,KAAKqO,OAAO2xB,IAAIhT,GAAkBhtB,KAAKq+B,WAAW,EAClDr+B,KAAKqO,OAAO2xB,IAAItrB,GAAmB1U,KAAKs+B,YAAY,EACpDt+B,KAAKqO,OAAO2xB,IAAIrT,EAAoB3sB,KAAKy+B,aAAa,EACtDz+B,KAAKqO,OAAO2xB,IAAI3tB,EAAqBrS,KAAKo9B,cAAc,EACxDp9B,KAAKqO,OAAO2xB,IAAI9sB,GAAelT,KAAK2/B,QAAQ,EAC5C3/B,KAAKqO,OAAO2xB,IAAIE,GAAiBlgC,KAAK4+B,UAAU,EAChD5+B,KAAKqO,OAAO2xB,IAAIlrB,GAAgB9U,KAAKy+B,aAAa,EAClDz+B,KAAKqO,OAAO2xB,IAAIG,EAAqBngC,KAAKogC,iBAAiB,EAC3DpgC,KAAKqO,OAAO2xB,IAAIK,GAAmBrgC,KAAKsgC,YAAY,EACpDtgC,KAAKqO,OAAO2xB,IAAIhP,GAAsBhxB,KAAKugC,eAAe,EAC1DvgC,KAAKqO,OAAO2xB,IAAIQ,GAAmBxgC,KAAKu+B,YAAY,EACpDv+B,KAAKqO,OAAO2xB,IAAIpT,EAAkB5sB,KAAKy+B,aAAa,EACpDz+B,KAAKqO,OAAO2xB,IAAI/H,GAAmBj4B,KAAK8+B,YAAY,EACpD9+B,KAAKqO,OAAO2xB,IAAIS,GAAsBzgC,KAAK++B,eAAe,EAC1D/+B,KAAKqO,OAAO2xB,IAAIU,GAAqB1gC,KAAKu/B,cAAc,EACxDv/B,KAAKqO,OAAO2xB,IAAIW,GAAqB3gC,KAAK4gC,cAAc,EACxD5gC,KAAKqO,OAAO2xB,IAAInW,GAAsB7pB,KAAKy/B,eAAe,EAC1Dz/B,KAAKqO,OAAO2xB,IAAI9U,GAAqBlrB,KAAK0/B,cAAc,EACxD1/B,KAAKqO,OAAO2xB,IAAIa,GAAuB7gC,KAAK8gC,qBAAqB,EACjE9gC,KAAKqO,OAAO2xB,IAAIe,GAAkB/gC,KAAKghC,aAAa,EACpDhhC,KAAKqO,OAAO2xB,IAAIvjB,GAAkBzc,KAAKihC,WAAW,EAClDjhC,KAAKqO,OAAO2xB,IAAIxhB,GAAiBxe,KAAKkhC,UAAU,EAChDlhC,KAAKqO,OAAO2xB,IAAI1wB,GAAoBtP,KAAKmhC,aAAa,EACtDnhC,KAAKqO,OAAO2xB,IAAI1f,GAAiBtgB,KAAKs8B,UAAU,EAChDt8B,KAAKqO,OAAO2xB,IAAIoB,EAAoBphC,KAAKqhC,aAAa,EACtDrhC,KAAKqO,OAAO2xB,IAAIsB,GAAsBthC,KAAK4/B,eAAe,EAC1D5/B,KAAKqO,OAAO2xB,IAAIjhB,GAAiB/e,KAAKuhC,UAAU,EAChDvhC,KAAKqO,OAAO2xB,IAAIwB,GAA4BxhC,KAAK6/B,qBAAqB,EACtE7/B,KAAKqO,OAAO2xB,IAAIyB,GAAkBzhC,KAAKy+B,aAAa,IAExDlH,EAAer3B,UAAUu6B,iBAAmB,WACxCz6B,KAAKqO,OAAOqzB,GAAG1vB,GAAmBhS,KAAK8/B,aAAc9/B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG/lB,EAAoB3b,KAAK+9B,cAAe/9B,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGxV,GAAkBlsB,KAAKg+B,YAAah+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGhtB,GAAmB1U,KAAKs+B,aAAct+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGzB,GAAqBjgC,KAAKk+B,eAAgBl+B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAG/U,EAAoB3sB,KAAKy+B,cAAez+B,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGtR,GAAmBpwB,KAAKo+B,aAAcp+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGjlB,GAAkBzc,KAAKihC,YAAajhC,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAG1U,GAAkBhtB,KAAKq+B,YAAar+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGrvB,EAAqBrS,KAAKo9B,eAAgBp9B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAGxuB,GAAelT,KAAK2/B,SAAU3/B,IAAI,EACjDA,KAAKqO,OAAOqzB,GAAGxB,GAAiBlgC,KAAK4+B,WAAY5+B,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGlB,GAAmBxgC,KAAKu+B,aAAcv+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG9U,EAAkB5sB,KAAKy+B,cAAez+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG5sB,GAAgB9U,KAAKy+B,cAAez+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGvB,EAAqBngC,KAAKogC,kBAAmBpgC,IAAI,EAChEA,KAAKqO,OAAOqzB,GAAGrB,GAAmBrgC,KAAKsgC,aAActgC,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG1Q,GAAsBhxB,KAAKugC,gBAAiBvgC,IAAI,EAC/DA,KAAKqO,OAAOqzB,GAAGzJ,GAAmBj4B,KAAK8+B,aAAc9+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGjB,GAAsBzgC,KAAK++B,gBAAiB/+B,IAAI,EAC/DA,KAAKqO,OAAOqzB,GAAGhB,GAAqB1gC,KAAKu/B,eAAgBv/B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAGf,GAAqB3gC,KAAK4gC,eAAgB5gC,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAG7X,GAAsB7pB,KAAKy/B,gBAAiBz/B,IAAI,EAC/DA,KAAKqO,OAAOqzB,GAAGxW,GAAqBlrB,KAAK0/B,eAAgB1/B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAGphB,GAAiBtgB,KAAKs8B,WAAYt8B,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGN,EAAoBphC,KAAKqhC,cAAerhC,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGb,GAAuB7gC,KAAK8gC,sBAAuB9gC,IAAI,EACtEA,KAAKqO,OAAOqzB,GAAGX,GAAkB/gC,KAAKghC,cAAehhC,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGljB,GAAiBxe,KAAKkhC,WAAYlhC,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGpyB,GAAoBtP,KAAKmhC,cAAenhC,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGJ,GAAsBthC,KAAK4/B,gBAAiB5/B,IAAI,EAC/DA,KAAKqO,OAAOqzB,GAAG3iB,GAAiB/e,KAAKuhC,WAAYvhC,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGF,GAA4BxhC,KAAK6/B,sBAAuB7/B,IAAI,EAC3EA,KAAKqO,OAAOqzB,GAAGD,GAAkBzhC,KAAKy+B,cAAez+B,IAAI,GAE7Du3B,EAAer3B,UAAUqgC,gBAAkB,WAAcvgC,KAAKs/B,cAAgB,CAAA,EAAMt/B,KAAKo0B,aAAe,CAAA,GACxGmD,EAAer3B,UAAU0gC,eAAiB,SAAU3uB,GAC5CjS,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBAC9Bjd,EAAM1O,UAAQoB,EAAK3R,OAAQ,IAAI,EACnCN,KAAKqO,OAAO8D,SAAW,CAACnS,KAAKq8B,cAAc9c,CAAG,KAGtDgY,EAAer3B,UAAUmhC,cAAgB,WACjCrhC,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBACO,IAArCx8B,KAAKqO,OAAO+B,cAAczP,OAC1BX,KAAKm+B,qBAGLn+B,KAAKqO,OAAO8D,SAAW,CAAC9F,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,KAIpH8oB,EAAer3B,UAAU+gC,YAAc,WAC/BjhC,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBAClCx8B,KAAKqO,OAAO8D,SAAuC,KAA3BnS,KAAKqO,OAAOgO,WAAqB,CAACjJ,EAAcpT,KAAKqO,MAAM,GAC/E,CAACrO,KAAKq8B,cAAcvuB,SAAO,YAAa9N,KAAKkN,OAAO,CAAC,KAGjEqqB,EAAer3B,UAAUihC,cAAgB,WACrC,GAAInhC,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,gBAAiB,CACnD,IAAInE,EAAYr4B,KAAKkN,QAAQuD,iBAAiB,IAAM6pB,CAAU,EAC9Dt6B,KAAKqO,OAAOyB,cAAgB,GAC5B9P,KAAKqO,OAAOgB,eAAiB,GAC7B,IAAK,IAAIrO,EAAI,EAAGA,EAAIq3B,EAAU13B,OAAQK,CAAC,GACnChB,KAAKqO,OAAOgB,eAAe/B,KAAK+qB,EAAUr3B,EAAE,EAC5ChB,KAAKqO,OAAOyB,cAAcxC,KAAKtN,KAAKq8B,cAAchE,EAAUr3B,EAAE,CAAC,IAI3Eu2B,EAAer3B,UAAUghC,WAAa,SAAUjvB,GACnB,eAArBjS,KAAKqO,OAAO0F,OACZ/T,KAAKm6B,iBAAmB,CAAA,EACpBn6B,KAAKqO,OAAO1B,OAAS3M,KAAKqO,OAAOqX,iBACjC1lB,KAAKqO,OAAO1B,OAAS8Q,GAAiBzd,KAAKqO,OAAQ4D,CAAI,GAAKjS,CAAAA,KAAKqO,OAAOxB,OACxE7M,KAAKy+B,cAAcxsB,CAAI,IAInCslB,EAAer3B,UAAUqhC,WAAa,SAAUtvB,GACnB,eAArBjS,KAAKqO,OAAO0F,OACZ/T,KAAKm6B,iBAAmB,CAAA,EACxBn6B,KAAKy+B,cAAcxsB,CAAI,IAG/BslB,EAAer3B,UAAUkgC,kBAAoB,SAAUhS,GACnD,IAAIuT,EACJ,GAAIvT,EAAEtT,SAAW9a,KAAKw8B,iBAAgC,WAAbpO,EAAEtT,OAG3C,IAAK,IAAI8mB,EAAK,EAAGC,EAAKtiC,OAAO4iB,KAAKiM,EAAE0T,OAAO,EAAGF,EAAKC,EAAGlhC,OAAQihC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,mBACD5hC,KAAKg6B,gBACL,MACJ,IAAK,gBACDh6B,KAAKs/B,cAAgB,CAAA,EACrBt/B,KAAKo0B,aAAe,CAAA,EACpBuN,EAAkBl1B,oBAAMzM,KAAKqO,OAAO+B,aAAa,EAAI,GAAKpQ,KAAKqO,OAAO+B,cAAcmB,MAAM,CAAC,EAC3FowB,EAAkB3hC,KAAKqO,OAAO0zB,oBAAsBJ,EAChDA,EAAgBpwB,MAAMowB,EAAgBhhC,OAAS,CAAC,EACpDX,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKu/B,iBACDoC,EAAgBhhC,QAChBX,KAAKo6B,YAAYuH,CAAe,EAEpC3hC,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,EAC5EpQ,KAAKs/B,cAAgB,CAAA,EACrBt/B,KAAKo0B,aAAe,CAAA,EACpB,MACJ,IAAK,gBACD5f,GAAQxU,KAAKqO,MAAM,EACnB,MACJ,IAAK,oBAGL,IAAK,kBACD+D,EAAKpS,KAAKqO,OAAQse,EAAoB3sB,KAAKqO,OAAO1B,IAAI,EACtD,MACJ,IAAK,sBACL,IAAK,qBACwB,eAArB3M,KAAKqO,OAAO0F,MAGhBS,GAAQxU,KAAKqO,MAAM,EACnB,MACJ,IAAK,OACDyF,GAAa9T,KAAKqO,OAAQ,YAAY,IAKtDkpB,EAAer3B,UAAUkJ,QAAU,WAC3BpJ,KAAKqO,OAAO0xB,cAGhB//B,KAAKg4B,sBACDh4B,KAAK83B,SACL93B,KAAK+3B,eAET/3B,KAAK03B,UAAY,KACjB13B,KAAK25B,aAAe,OAExBpC,EAAer3B,UAAUw6B,WAAa,WAClC16B,KAAKgiC,eAAe,CAAA,CAAI,EACxBhiC,KAAKiiC,eAAiB,IAAIC,iBAAeliC,KAAKkN,QAAS,CACnDi1B,UAAWniC,KAAKoiC,iBAAiBjS,KAAKnwB,IAAI,EAC1CqiC,WAAYriC,KAAKqiC,WACjB3mB,UAAW,QACd,EACD1b,KAAKsiC,mBAAqB,IAAIJ,iBAAeliC,KAAKkN,QAAS,CACvDi1B,UAAWniC,KAAKuiC,qBAAqBpS,KAAKnwB,IAAI,EAC9CqiC,WAAYriC,KAAKqiC,WACjB3mB,UAAW,UACd,EACD8mB,eAAalyB,IAAItQ,KAAKkN,QAAS,YAAalN,KAAKyiC,YAAaziC,IAAI,GAEtEu3B,EAAer3B,UAAU63B,aAAe,WACpC/3B,KAAKgiC,eAAe,CAAA,CAAK,EACzBQ,eAAa7xB,OAAO3Q,KAAKkN,QAAS,YAAalN,KAAKyiC,WAAW,EAC/DziC,KAAKiiC,eAAe74B,UACpBpJ,KAAKsiC,mBAAmBl5B,WAG5BmuB,EAAer3B,UAAUuiC,YAAc,SAAUrU,GACzCsU,EAAY7xB,UAAQud,EAAE9tB,OAAQ,cAAc,EAChDsO,EAAW5O,KAAKqO,OAAQ,OAAO,EACb,OAAdq0B,GACAA,EAAUz0B,UAAUqC,IAAII,EAAS,GAGzC6mB,EAAer3B,UAAU8hC,eAAiB,SAAUW,GAChD,IAAIxH,EAAQn7B,KACR2iC,EACA3iC,KAAK4iC,SAAW,IAAIC,QAAM7iC,KAAKkN,QAAS,CACpC41B,IAAK,SAAUC,GACP5H,EAAM9sB,OAAO20B,UACb7H,EAAM8H,SAAWF,EAAIE,SACrB9H,EAAM+H,SAAWH,EACjBnhB,WAAW,WACc,EAAjBuZ,EAAM8H,UACN9H,EAAMgI,YAAYhI,EAAM+H,QAAQ,EAEpC/H,EAAM8H,SAAW,GAClB,GAAG,GAGe,IAAjBF,EAAIE,UAA8C,IAA5BF,EAAIK,cAAcrN,MACxCoF,EAAMkI,gBAAgBN,CAAG,EAGzB5H,EAAMmI,aAAaP,CAAG,GAIlCQ,QAAS,SAAUnV,GACX+M,EAAM9sB,OAAO20B,WACb7H,EAAMqI,YAAcrI,CAAAA,CAAAA,EAAM9sB,OAAO0zB,oBAC7B5G,EAAM9sB,OAAO0zB,qBACb0B,WAAS,CAACtI,EAAM9sB,OAAOnB,SAAUw2B,EAAgB,EAErDvI,EAAMmI,aAAalV,CAAC,IAG/B,EAGGpuB,KAAK4iC,UACL5iC,KAAK4iC,SAASx5B,WAI1BmuB,EAAer3B,UAAUijC,YAAc,SAAUJ,GAC7C,IAAIziC,EAASyiC,EAAIK,cAAc9iC,OAC3B8Q,EAAOP,UAAQvQ,EAAQ,IAAMuN,CAAa,EAC1C7N,KAAKwjC,aAAeljC,EAAO2N,UAAUC,SAASgsB,EAAe,GAAKztB,oBAAM2E,CAAI,EAC5EpR,KAAKsjC,aAAaP,CAAG,GAGrB/iC,KAAKqO,OAAOiU,OAAS,CAAA,EACrBtiB,KAAK2jC,WAAWvyB,CAAI,EACfpR,KAAKqO,OAAOiU,OAGS,IAAjBygB,EAAIE,UACTjjC,KAAKsjC,aAAaP,CAAG,EACrB/iC,KAAKqjC,gBAAgBN,CAAG,GAGxB/iC,KAAKsjC,aAAaP,CAAG,EAPrB/iC,KAAKqjC,gBAAgBN,CAAG,IAWpCxL,EAAer3B,UAAUojC,aAAe,SAAUlV,GAC9C,IAAI9tB,EAAS8tB,EAAEgV,cAAc9iC,OAC7BsO,EAAW5O,KAAKqO,OAAQ,OAAO,EAC/BrO,KAAKm/B,YAAY7+B,EAAQ8tB,EAAEgV,aAAa,EACxCpjC,KAAKqO,OAAOmB,aAAe,kBAS/B+nB,EAAer3B,UAAUi/B,YAAc,SAAU7+B,EAAQ8tB,GACrD,IAAIgR,EAAUp/B,KAAKqO,OAAOu1B,MAAQxV,EAAEyV,QAAUzV,EAAEgR,QAC5C0E,EAAkB9jC,KAAKqO,OAAOu1B,OAASxV,EAAEgR,SAAWhR,EAAEiR,SACtDjuB,EAAOP,UAAQvQ,EAAQ,IAAMuN,CAAa,EAC1Ck2B,EAAQzjC,EAAO2N,UAEfkB,GADJnP,KAAKqO,OAAOiU,OAAS,CAAA,EACR,UACb,GAAiB,IAAZ8L,EAAE2H,OAAe+N,CAAAA,GAAqBr3B,oBAAM2E,CAAI,GAAKA,CAAAA,EAAKnD,UAAUC,SAASosB,CAAU,EAA5F,CAKK,GAAK7tB,oBAAM2E,CAAI,EAsDZpR,KAAKqO,OAAO+B,cAAczP,SAAWX,KAAK85B,SAASn5B,SACnDX,KAAKgkC,kBAAoB,CAAA,GAE7BhkC,KAAKw/B,sBAhDL,GARIx/B,KAAKqO,OAAO0zB,qBAAuB3wB,EAAKnD,UAAUC,SAASosB,CAAU,IACjE8E,GAAW9+B,EAAO2N,UAAUC,SAAS+1B,EAAS,KAClD90B,EAAS,YAETif,EAAEgR,SAAWhR,EAAEiR,UAAY,CAACyE,IAC5B9jC,KAAKgkC,kBAAoB,CAAA,GAGI,CAAA,IADThkC,KAAKkkC,iBAAiB/0B,EAAQiC,CAAI,EACpCyO,OAAiB,CAMnC,GALM7f,KAAKqO,OAAO0zB,sBAAyB/hC,KAAKwjC,aAAgBpV,CAAAA,GAAMgR,IAC9D2E,EAAM71B,SAASi2B,EAAS,IAC5BnkC,KAAK2jC,WAAWvyB,CAAI,EACpBpR,KAAKi+B,eAELj+B,KAAKqO,OAAO0zB,qBAAuB3T,EAAEiR,UAAY,CAACyE,EAAiB,CAC7D1V,GAAKA,EAAEgR,SACTp/B,KAAKi+B,cAEJj+B,KAAK03B,YACN13B,KAAK03B,UAAYtmB,GAErB,IAAIgzB,EAAapkC,KAAK85B,SAASzkB,QAAQrV,KAAK03B,SAAS,EACjD2M,EAAWrkC,KAAK85B,SAASzkB,QAAQjE,CAAI,EACzC,GAAiBizB,EAAbD,EACA,IAAK,IAAIpjC,EAAIojC,EAAiBC,GAALrjC,EAAeA,CAAC,GACrChB,KAAKskC,UAAUtkC,KAAK85B,SAAS94B,EAAE,OAInC,IAASA,EAAIojC,EAAYpjC,GAAKqjC,EAAUrjC,CAAC,GACrChB,KAAKskC,UAAUtkC,KAAK85B,SAAS94B,EAAE,EAGvChB,KAAKukC,SAASvkC,KAAK85B,SAASuK,EAAS,OAGrCrkC,KAAK03B,UAAYtmB,EACbpR,KAAKqO,OAAO0zB,qBAAuB3wB,EAAKnD,UAAUC,SAASosB,CAAU,EACrEt6B,KAAK0O,aAAa0C,CAAI,EAGtBpR,KAAKskC,UAAUlzB,CAAI,EAEvBpR,KAAKukC,SAASnzB,CAAI,EAEmB,IAArCpR,KAAKqO,OAAO+B,cAAczP,QAC1BX,KAAK43B,mBAET53B,KAAKqO,OAAOW,OAAO4c,EAAyB,EAAE,EAC9C5rB,KAAKwkC,cAAcr1B,EAAQiC,CAAI,EASlC3E,oBAAM2E,CAAI,IACXpR,KAAKgkC,kBAAoB,CAAA,EACzBhkC,KAAK2jC,WAAWvyB,CAAI,QAjEpBpR,KAAKskC,UAAUlzB,CAAI,EACnBpR,KAAK2jC,WAAWvyB,CAAI,GAmE5BmmB,EAAer3B,UAAUmjC,gBAAkB,SAAUjV,GACjDpuB,KAAKqO,OAAOmB,aAAe,iBACvBlP,EAAS8tB,EAAEgV,cAAc9iC,OAC7BN,KAAK6+B,aAAav+B,CAAM,GAE5Bi3B,EAAer3B,UAAUs/B,eAAiB,WACtCx/B,KAAKi+B,cACLj+B,KAAK43B,mBACL53B,KAAKqO,OAAOW,OAAO4c,EAAyB,EAAE,GAElD2L,EAAer3B,UAAU03B,iBAAmB,WACxC53B,KAAKwjC,YAAc,CAAA,EACnBiB,cAAY,CAACzkC,KAAKqO,OAAOnB,SAAUw2B,EAAgB,GAEvDnM,EAAer3B,UAAU2+B,aAAe,SAAUv+B,GAC9C,IAQQokC,EARJvJ,EAAQn7B,KACRyM,oBAAMnM,CAAM,IAGZ8Q,EAAOP,UAAQvQ,EAAQ,IAAMuN,CAAa,EAC9C7N,KAAKqO,OAAOiU,OAAS,CAAA,EAChB7V,oBAAM2E,CAAI,KACXpR,KAAK2jC,WAAWvyB,CAAI,EAEfqD,GADDiwB,EAAY1kC,KAAKq8B,cAAcjrB,CAAI,CACX,EAK5BpR,KAAKqO,OAAO6H,QAAQ,WADJ,CAAE2J,OAAQ,CAAA,EAAOzJ,YAAasuB,EAAW5pB,OAAQ,kBACtB,SAAU6pB,GACjD,IAOgBr2B,EAPXq2B,EAAa9kB,SACVzT,EAAOC,WAAS,OAAQq4B,CAAS,EAChCvJ,EAAM9sB,OAAOiU,OAmBHpN,GAASwvB,CAAS,IAChBlvB,KACLS,EAASL,GAAYulB,EAAM9sB,OAAQq2B,CAAS,EAChDzO,GAAkBkF,EAAM9sB,OAAQjC,EAAM6J,CAAM,IApBpC,KADFklB,EAAM9sB,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAC1CkrB,EAAM9sB,OAAO6B,WAW5B2L,GAAiBsf,EAAM9sB,OAAQq2B,CAAS,GAVpCp4B,EAAKD,WAAS,KAAMq4B,CAAS,EACjCvJ,EAAM9sB,OAAOmP,QAAU2d,EAAM9sB,OAAO1B,KAChC2B,EAAU6sB,EAAM9sB,OAAO1B,MAAQF,oBAAMH,CAAE,EAAIF,EAAOE,GAAM,IAC5D6uB,EAAM9sB,OAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EAClD6sB,EAAM9sB,OAAOrB,UAAUM,KAAKlB,CAAI,EAChC+uB,EAAM9sB,OAAOvB,OAAOQ,KAAKjB,WAAS,SAAUq4B,CAAS,CAAC,EACtDvJ,EAAM9sB,OAAO8D,SAAW,CAACuyB,GACzB7vB,GAAWsmB,EAAM9sB,MAAM,GAK3B8sB,EAAM9sB,OAAO6B,WAAa,CAAA,EAC1BirB,EAAM9sB,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,IAUjE,EAjCGuE,EAAmB3U,KAAKqO,OAAQq2B,EAAW9vB,EAAqB,IAoC5E2iB,EAAer3B,UAAUyjC,WAAa,SAAUvyB,GACxCwzB,EAAS92B,SAAO,IAAM6H,GAAYvE,CAAI,EAC1CpR,KAAKqO,OAAOiU,OAAS7V,CAAAA,CAAAA,oBAAMm4B,CAAM,GAGrCrN,EAAer3B,UAAUqiC,qBAAuB,SAAUnU,GACtD,GAAKpuB,KAAK66B,WAGV,OAAQzM,EAAEjf,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,QACDif,EAAEkH,mBAOdiC,EAAer3B,UAAUkiC,iBAAmB,SAAUhU,GAClD,IAAI+M,EAAQn7B,KACZ,GAAKA,KAAK66B,WAAV,CAGA,IAAIgK,EAAQ7kC,KAAK8kC,iBACbC,EAAY/kC,KAAKi/B,eACjBD,EAAWh/B,KAAKk/B,cACpB,OAAQ9Q,EAAEjf,QACN,IAAK,MACGnP,KAAKqO,OAAOmrB,sBACZx5B,KAAKi+B,cACLj+B,KAAKkN,QAAQ8U,kBAAkBgjB,SAAS,EAAGhlC,KAAKkN,QAAQ8U,kBAAkBijB,YAAY,EACtFrjB,WAAW,WACPuZ,EAAM+J,aAAa/J,EAAMrB,SAASqB,EAAMrB,SAASn5B,OAAS,EAAE,GAC7D,EAAE,GAGLX,KAAKklC,aAAalG,CAAQ,EAE9B,MACJ,IAAK,OACGh/B,KAAKqO,OAAOmrB,sBACZx5B,KAAKi+B,cACLj+B,KAAKkN,QAAQ8U,kBAAkBmjB,UAAY,EAC3CvjB,WAAW,WACPuZ,EAAM+J,aAAa/J,EAAMrB,SAAS,EAAE,GACrC,EAAE,GAGL95B,KAAKklC,aAAaH,CAAS,EAE/B,MACJ,IAAK,MACIt4B,oBAAMo4B,CAAK,EAGNp4B,oBAAMs4B,CAAS,GACrB/kC,KAAKukC,SAASQ,CAAS,EAHvB/kC,KAAKukC,SAASM,CAAK,EAKvB,MACJ,IAAK,WACD7kC,KAAKolC,aAAaP,EAAO,CAAA,CAAI,EAC7B,MACJ,IAAK,WACD7kC,KAAKqlC,cAAcR,EAAO,CAAA,CAAK,EAC/B,MACJ,IAAK,YACD7kC,KAAKqlC,cAAcR,EAAO,CAAA,CAAI,EAC9B,MACJ,IAAK,SACD7kC,KAAKolC,aAAaP,EAAO,CAAA,CAAK,EAC9B,MACJ,IAAK,UACL,IAAK,WACL,IAAK,QACD7kC,KAAKslC,SAAStG,EAAU5Q,CAAC,EACzB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDpuB,KAAKulC,UAAUR,EAAW3W,CAAC,EAC3B,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDpuB,KAAKwlC,UAAUX,EAAOzW,CAAC,EACvB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDpuB,KAAKylC,UAAUZ,EAAOzW,CAAC,EACvB,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACDpuB,KAAK0lC,WAAWb,EAAOzW,CAAC,EACxB,MACJ,IAAK,SACL,IAAK,UACL,IAAK,OACDpuB,KAAK2lC,QAAQd,EAAOzW,CAAC,EACrB,MACJ,IAAK,QACDpuB,KAAK4lC,SAASf,CAAK,EACnB,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACIp4B,oBAAMo4B,CAAK,GACZ7kC,KAAKm/B,YAAY0F,EAAOzW,CAAC,EAE7B,MACJ,IAAK,QACDpuB,KAAK6lC,SAASd,EAAW/F,CAAQ,EACjC,MACJ,IAAK,QACDh/B,KAAK6+B,aAAa7+B,KAAKqO,OAAOopB,aAAwCz3B,KAAK8lC,gBAAgB,EAC3F,MACJ,IAAK,WACD9lC,KAAKqO,OAAOW,OAAOoyB,EAAoB,EAAE,EACzCvb,GAAW7lB,KAAKqO,OAAQrO,KAAKqO,OAAO+B,cAAepQ,KAAKqO,OAAO1B,KAAM,SAAS,EAC9E,MACJ,IAAK,MACD+B,GAAa1O,KAAKqO,MAAM,EACxB,MACJ,IAAK,MACL,IAAK,WACDrO,KAAK+lC,gBACL,MACJ,IAAK,QACDhxB,GAAU/U,KAAKqO,MAAM,EACrB,MACJ,IAAK,QACDrO,KAAKqO,OAAOgO,WAAa,GACzBF,GAAanc,KAAKqO,MAAM,EACxB,MACJ,IAAK,QACD4G,GAASjV,KAAKqO,MAAM,EACpB,MACJ,IAAK,KACDrO,KAAKgmC,gBACL,MACJ,IAAK,QACDhmC,KAAK2iB,aACL,MACJ,IAAK,OACD3iB,KAAKqO,OAAO43B,sBAIxB1O,EAAer3B,UAAUyiB,WAAa,WAClC3iB,KAAKm+B,qBACLxb,GAAW3iB,KAAKqO,MAAM,GAE1BkpB,EAAer3B,UAAU6lC,cAAgB,WACrC,GAAI/lC,KAAKqO,OAAO+B,eAAoD,EAAnCpQ,KAAKqO,OAAO+B,cAAczP,OAAY,CACnEX,KAAKm+B,qBAEL,IADA,IAAI97B,EAAOrC,KAAKqO,OAAO8D,SACdnR,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAI,CAACyhB,EAAcpgB,EAAKrB,EAAE,EAEtB,OADA2T,KAAAA,EAAmB3U,KAAKqO,OAAQhM,EAAKrB,GAAI0hB,CAAqB,EAItE/F,EAAa3c,KAAKqO,OAAQ,QAAQ,IAG1CkpB,EAAer3B,UAAU8lC,cAAgB,WACI,IAArChmC,KAAKqO,OAAO+B,cAAczP,SAC1BX,KAAKw+B,mBACLhc,GAASxiB,KAAKqO,MAAM,IAG5BkpB,EAAer3B,UAAUs+B,iBAAmB,WACxC,IAAIptB,EAAOtD,SAAO,IAAMD,EAAgB,IAAMysB,EAAYt6B,KAAKkN,OAAO,EAClE7K,EAAOrC,KAAKq8B,cAAcjrB,CAAI,EAClCgR,GAAmBpiB,KAAKqO,OAAQhM,CAAI,GAExCk1B,EAAer3B,UAAU4lC,eAAiB,WACtC,IAAI10B,EAAOpR,KAAKqO,OAAO+B,cAAcpQ,KAAKqO,OAAO+B,cAAczP,OAAS,GACpE08B,EAAUr9B,KAAKs9B,WAAW,CAAClsB,GAAOpR,KAAKqO,OAAOxB,KAAK,EACvD,OAAO7M,KAAK85B,SAASuD,EAAQ,KAEjC9F,EAAer3B,UAAU4kC,eAAiB,WACtC,OAAOh3B,SAAO,IAAMD,EAAgB,IAAMq4B,GAAWlmC,KAAKkN,OAAO,GAErEqqB,EAAer3B,UAAUimC,cAAgB,WACrC,OAAOr4B,SAAO,IAAMD,EAAgB,IAAMysB,EAAYt6B,KAAKkN,OAAO,GAEtEqqB,EAAer3B,UAAU++B,aAAe,WACpC,OAAOj/B,KAAK85B,SAAS,IAEzBvC,EAAer3B,UAAUg/B,YAAc,WACnC,OAAOl/B,KAAK85B,SAAS95B,KAAK85B,SAASn5B,OAAS,IAEhD42B,EAAer3B,UAAUglC,aAAe,SAAU9zB,GAC9CpR,KAAKo8B,SAAShrB,CAAI,GAEtBmmB,EAAer3B,UAAUklC,aAAe,SAAUP,EAAOuB,GACjDC,EAAQrmC,KAAKsmC,YAAYzB,EAAOuB,EAAWpmC,KAAKumC,MAAM,EAC1DvmC,KAAKo8B,SAASiK,CAAK,GAEvB9O,EAAer3B,UAAUmlC,cAAgB,SAAUR,EAAOuB,GAClDC,EAAQrmC,KAAKsmC,YAAYzB,EAAOuB,CAAS,EAC7CpmC,KAAKo8B,SAASiK,CAAK,GAEvB9O,EAAer3B,UAAUomC,YAAc,SAAUE,EAAIJ,EAAWG,GAC5D,GAAI95B,oBAAM+5B,CAAE,EACR,OAAOxmC,KAAK8kC,kBAAoB9kC,KAAKmmC,iBAAmBnmC,KAAKi/B,eAEjE,IAAIrX,EAAQ5nB,KAAK85B,SAASzkB,QAAQmxB,CAAE,EAEpC,EAAG,CAQC,IAGQvB,EATJrd,EADAwe,EACQG,EAAS3e,EAAQ2e,EAAS3e,EAAQ,EAGlC2e,EAAS3e,EAAQ2e,EAAS3e,EAAQ,EAE9C6e,EAAWzmC,KAAK85B,SAASlS,GAOzB,GANI5nB,KAAKqO,OAAOmrB,sBAAwB/sB,oBAAMg6B,CAAQ,IAC9CC,EAAcn4B,SAASwR,OAAOiX,iBAAiBh3B,KAAK85B,SAAS,EAAE,EAAE6M,iBAAiB,YAAY,EAAG,EAAE,EACnGp4B,SAASwR,OAAOiX,iBAAiBh3B,KAAK85B,SAAS,EAAE,EAAE6M,iBAAiB,eAAe,EAAG,EAAE,EACxF1B,EAAejlC,KAAK85B,SAAS,GAAGvY,wBAAwB+U,OAASoQ,EACrE1mC,KAAKkN,QAAQ8U,kBAAkBgjB,SAAShlC,KAAKkN,QAAQ8U,kBAAkBmjB,UAAWnlC,KAAKkN,QAAQ8U,kBAAkBmjB,UAAYF,CAAY,GAEzIx4B,oBAAMg6B,CAAQ,EACd,OAAOD,QAEN,CAACI,YAAUH,CAAQ,GAC5B,OAAOA,GAEXlP,EAAer3B,UAAUk8B,SAAW,SAAUqK,GACrCh6B,oBAAMg6B,CAAQ,GAEkB,CAAA,IADTzmC,KAAKkkC,iBAAiB,SAAUuC,CAAQ,EAC1C5mB,SAClB7f,KAAK03B,UAAY+O,EACjBzmC,KAAKi+B,cACLj+B,KAAKskC,UAAUmC,CAAQ,EACvBzmC,KAAKukC,SAASkC,CAAQ,EACtBzmC,KAAKqO,OAAOW,OAAO4c,EAAyB,EAAE,EAC9C5rB,KAAKwkC,cAAc,SAAUiC,CAAQ,IAIjDlP,EAAer3B,UAAU0lC,SAAW,SAAUf,GACrCp4B,oBAAMo4B,CAAK,GAAMA,EAAM52B,UAAUC,SAASosB,CAAU,GAEpB,CAAA,IADTt6B,KAAKkkC,iBAAiB,SAAUW,CAAK,EACvChlB,SAClB7f,KAAKskC,UAAUO,CAAK,EACpB7kC,KAAKqO,OAAOW,OAAO4c,EAAyB,EAAE,EAC9C5rB,KAAKwkC,cAAc,SAAUK,CAAK,IAI9CtN,EAAer3B,UAAU2lC,SAAW,SAAUd,EAAW/F,GACrD,IAIQ6H,EACAC,EALJ9mC,KAAKqO,OAAO0zB,qBAAuB,CAACt1B,oBAAMs4B,CAAS,IACnD/kC,KAAK03B,UAAYqN,EAGb8B,GADAE,EAAW/mC,KAAKkN,QAAQsL,cAAc,IAAM0hB,EAAe,GACvCiL,UACpB2B,EAAoB9mC,KAAK8kC,iBAC7B9kC,KAAKm/B,YAAYH,EAJH,CAAEI,QAAS,CAAA,EAAMC,SAAU,CAAA,EAIP,EAClC0H,EAAS5B,UAAY0B,EAChBp6B,oBAAMq6B,CAAiB,GACxB9mC,KAAKukC,SAASuC,CAAiB,IAI3CvP,EAAer3B,UAAUolC,SAAW,SAAUtG,EAAU5Q,GAC/CpuB,KAAKqO,OAAO0zB,oBAGPt1B,oBAAMuyB,CAAQ,IACH,YAAb5Q,EAAEjf,OACFnP,KAAKukC,SAASvF,CAAQ,EAGtBh/B,KAAKm/B,YAAYH,EAAU5Q,CAAC,GAPhCpuB,KAAKklC,aAAalG,CAAQ,GAWlCzH,EAAer3B,UAAUqlC,UAAY,SAAUR,EAAW3W,GACjDpuB,KAAKqO,OAAO0zB,oBAGPt1B,oBAAMs4B,CAAS,IACJ,aAAb3W,EAAEjf,OACFnP,KAAKukC,SAASQ,CAAS,EAGvB/kC,KAAKm/B,YAAY4F,EAAW3W,CAAC,GAPjCpuB,KAAKklC,aAAaH,CAAS,GAWnCxN,EAAer3B,UAAUslC,UAAY,SAAUX,EAAOzW,GAClD,IAIQ4Y,EAJHhnC,KAAKqO,OAAO0zB,qBAITiF,EAAQhnC,KAAKsmC,YAAYzB,EAAO,CAAA,EAAM7kC,KAAKumC,MAAM,EAChD95B,oBAAMu6B,CAAK,IACK,aAAb5Y,EAAEjf,OACFnP,KAAKukC,SAASyC,CAAK,EAGnBhnC,KAAKm/B,YAAY6H,EAAO5Y,CAAC,IATjCpuB,KAAKolC,aAAaP,EAAO,CAAA,CAAI,GAcrCtN,EAAer3B,UAAUulC,UAAY,SAAUZ,EAAOzW,GAClD,IAIQ6Y,EAJHjnC,KAAKqO,OAAO0zB,qBAITkF,EAAQjnC,KAAKsmC,YAAYzB,EAAO,CAAA,CAAK,EACpCp4B,oBAAMw6B,CAAK,IACK,aAAb7Y,EAAEjf,OACFnP,KAAKukC,SAAS0C,CAAK,EAGnBjnC,KAAKm/B,YAAY8H,EAAO7Y,CAAC,IATjCpuB,KAAKqlC,cAAcR,EAAO,CAAA,CAAK,GAcvCtN,EAAer3B,UAAUwlC,WAAa,SAAUb,EAAOzW,GACnD,IAIQ8Y,EAJHlnC,KAAKqO,OAAO0zB,qBAITmF,EAAQlnC,KAAKsmC,YAAYzB,EAAO,CAAA,CAAI,EACnCp4B,oBAAMy6B,CAAK,IACK,cAAb9Y,EAAEjf,OACFnP,KAAKukC,SAAS2C,CAAK,EAGnBlnC,KAAKm/B,YAAY+H,EAAO9Y,CAAC,IATjCpuB,KAAKqlC,cAAcR,EAAO,CAAA,CAAI,GActCtN,EAAer3B,UAAUylC,QAAU,SAAUd,EAAOzW,GAChD,IAIQ+Y,EAJHnnC,KAAKqO,OAAO0zB,qBAIToF,EAAQnnC,KAAKsmC,YAAYzB,EAAO,CAAA,EAAO7kC,KAAKumC,MAAM,EACjD95B,oBAAM06B,CAAK,IACK,WAAb/Y,EAAEjf,OACFnP,KAAKukC,SAAS4C,CAAK,EAGnBnnC,KAAKm/B,YAAYgI,EAAO/Y,CAAC,IATjCpuB,KAAKolC,aAAaP,EAAO,CAAA,CAAK,GActCtN,EAAer3B,UAAUokC,UAAY,SAAUmC,GACtCh6B,oBAAMg6B,CAAQ,IACVA,EAASx4B,UAAUC,SAASosB,CAAU,IACvCt6B,KAAKqO,OAAO+B,cAAc9C,KAAKtN,KAAKonC,YAAYX,CAAQ,CAAC,EACzDzmC,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,EAC5EqzB,WAAS,CAACgD,GAAW,CAACnM,EAAW,EACjCmM,EAAS5O,aAAa,gBAAiB,MAAM,EAC7C73B,KAAK09B,WAAW+I,EAAU,CAAA,CAAI,GAElCzmC,KAAKqO,OAAOopB,YAAcgP,IAGlClP,EAAer3B,UAAUwO,aAAe,SAAU24B,GACzC56B,oBAAM46B,CAAO,IACd5C,cAAY,CAAC4C,GAAU,CAAC/M,EAAW,EAC/Bt6B,KAAKqO,OAAO0zB,oBACZsF,EAAQxP,aAAa,gBAAiB,OAAO,EAG7CwP,EAAQ1K,gBAAgB,eAAe,EAE3C38B,KAAK09B,WAAW2J,EAAS,CAAA,CAAK,EAElB,CAAC,GADTzf,EAAQ5nB,KAAKqO,OAAO+B,cAAciF,QAAQrV,KAAKonC,YAAYC,CAAO,CAAC,KAEnErnC,KAAKqO,OAAO+B,cAAcyX,OAAOD,EAAO,CAAC,EACzC5nB,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,GAEhFpQ,KAAKqO,OAAOopB,YAAc,OAGlCF,EAAer3B,UAAUknC,YAAc,SAAUh2B,GACzC/O,EAAOrC,KAAKq8B,cAAcjrB,CAAI,EAClC,OAAO+N,GAAYnf,KAAKqO,OAAQhM,CAAI,GAExCk1B,EAAer3B,UAAUqkC,SAAW,SAAUnzB,GAC1CpR,KAAKkN,QAAQ2qB,aAAa,WAAY,IAAI,EAC1C,IAAIgN,EAAQ7kC,KAAK8kC,iBACbD,IACAA,EAAMlI,gBAAgB,UAAU,EAChC8H,cAAY,CAACI,GAAQ,CAACqB,GAAU,GAEpCzC,WAAS,CAACryB,GAAO,CAAC80B,GAAU,EAC5B90B,EAAKymB,aAAa,WAAY,GAAG,EACjCzmB,EAAK6e,SAETsH,EAAer3B,UAAUw9B,WAAa,SAAUtsB,EAAMk2B,GAC7CtnC,KAAKqO,OAAO2uB,qBAGbQ,EAAW1vB,SAAO,IAAMq2B,GAAW/yB,CAAI,EACvC3E,oBAAM+wB,CAAQ,IAGd8J,EACK9J,EAASvvB,UAAUC,SAAS+1B,EAAS,IACtCR,WAAS,CAACjG,GAAWyG,EAAS,EAC9BpzB,UAAQ2sB,EAAU,IAAM+J,EAAW,EAAE1P,aAAa,eAAgB,MAAM,GAIxE2F,EAASvvB,UAAUC,SAAS+1B,EAAS,IACrCQ,cAAY,CAACjH,GAAWyG,EAAS,EACjCpzB,UAAQ2sB,EAAU,IAAM+J,EAAW,EAAE1P,aAAa,eAAgB,OAAO,MAIrFN,EAAer3B,UAAU+9B,YAAc,WACnC,IAAIuJ,EAAO9nC,MAAMQ,UAAUqR,MAAMiV,KAAKuO,YAAU,IAAMuF,EAAYt6B,KAAK25B,YAAY,CAAC,EAEpF,GAAoB,IAAhB6N,EAAK7mC,OAAc,CAEnB,GAAiC,CAAA,IADbX,KAAKkkC,iBAAiB,WAAYsD,EAAK,EAAE,EACvC3nB,OAClB,IAAK,IAAI7e,EAAI,EAAG4Y,EAAM4tB,EAAK7mC,OAAQK,EAAI4Y,EAAK5Y,CAAC,GACzChB,KAAK0O,aAAa84B,EAAKxmC,EAAE,EAGjChB,KAAKwkC,cAAc,WAAYgD,EAAK,EAAE,IAG9CjQ,EAAer3B,UAAU8gC,cAAgB,WACrChhC,KAAKw6B,gBAETjD,EAAer3B,UAAU4gC,sBAAwB,WAC7C9gC,KAAKw6B,gBAETjD,EAAer3B,UAAUs6B,aAAe,WACpC,IAAI+L,EAAS,EACb,GAAIvmC,KAAK85B,SACL,IAAK,IAAI94B,EAAI,EAAG4Y,EAAM5Z,KAAK85B,SAASn5B,OAAS,EAAGK,EAAI4Y,GAC5C5Z,KAAK85B,SAAS94B,GAAGugB,wBAAwBlJ,MAAQrY,KAAK85B,SAAS94B,EAAI,GAAGugB,wBAAwBlJ,IAD7CrX,CAAC,GAElDulC,CAAM,GAOlBvmC,KAAKumC,OAASA,GAElBhP,EAAer3B,UAAUgkC,iBAAmB,SAAU/0B,EAAQiC,GAC1D,IAAI/O,EAAO,GACX,GAAIrC,KAAKgkC,kBACL,IAAK,IAAIhjC,EAAI,EAAG4Y,EAAM5Z,KAAK85B,SAASn5B,OAAQK,EAAI4Y,EAAK5Y,CAAC,GAClDqB,EAAKrB,GAAKhB,KAAKq8B,cAAcr8B,KAAK85B,SAAS94B,EAAE,OAIjDqB,EAAK,GAAKrC,KAAKq8B,cAAcjrB,CAAI,EAEjCqF,EAAY,CAAEtH,OAAQA,EAAQiH,YAA2B,EAAd/T,EAAK1B,OAC1C0B,EAAOA,EAAK,GAAI+xB,aAAcp0B,KAAKs/B,cAAezf,OAAQ,CAAA,EAAOvf,OAAQN,KAAKgkC,kBAAoB,KAClG5yB,GAIV,OAFApR,KAAKqO,OAAO6H,QAAQ,gBAAiBO,CAAS,EAC9CzW,KAAKs/B,cAAgB,CAAA,EACd7oB,GAEX8gB,EAAer3B,UAAUskC,cAAgB,SAAUr1B,EAAQiC,GACvD,IAAI/O,EAAO,GACX,GAAIrC,KAAKgkC,kBAAmB,CACxB,IAAK,IAAIhjC,EAAI,EAAG4Y,EAAM5Z,KAAK85B,SAASn5B,OAAQK,EAAI4Y,EAAK5Y,CAAC,GAClDqB,EAAKrB,GAAKhB,KAAKq8B,cAAcr8B,KAAK85B,SAAS94B,EAAE,EAEjDhB,KAAKgkC,kBAAoB,CAAA,OAGzB3hC,EAAK,GAAKrC,KAAKq8B,cAAcjrB,CAAI,EAErCpR,KAAKqO,OAAOo5B,YAA4B,EAAdplC,EAAK1B,OAAa0B,EAAKA,EAAK1B,OAAS,GAAK0B,EAAK,GACrEoU,EAAY,CAAEtH,OAAQA,EAAQiH,YAA2B,EAAd/T,EAAK1B,OAC1C0B,EACAA,EAAK,GAAI+xB,aAAcp0B,KAAKo0B,cACtCp0B,KAAKqO,OAAO6H,QAAQ,aAAcO,CAAS,EAC3CzW,KAAKo0B,aAAe,CAAA,GAExBmD,EAAer3B,UAAUk6B,YAAc,SAAUjjB,GAE7C,IADA,IAAIkmB,EAAUr9B,KAAKs9B,WAAWnmB,EAAOnX,KAAKqO,OAAOxB,KAAK,EAC7C66B,EAAI,EAAG9tB,EAAMyjB,EAAQ18B,OAAQ+mC,EAAI9tB,EAAK8tB,CAAC,GAE5C1nC,KAAKm/B,YAAYn/B,KAAK85B,SAASuD,EAAQqK,IADzB,CAAEtI,QAAS,CAAA,EAAMC,SAAU,CAAA,EACU,GAG3D9H,EAAer3B,UAAUo9B,WAAa,SAAUnmB,EAAOwwB,GAGnD,IAFA,IAAItK,EAAU,GACVlsB,EAASw2B,EAAO,KAAO,OAClB3mC,EAAI,EAAG4Y,EAAM5Z,KAAKmX,MAAMxW,OAAQK,EAAI4Y,EAAK5Y,CAAC,GACQ,CAAC,IAApDmW,EAAM9B,QAAQhJ,WAAS8E,EAAQnR,KAAKmX,MAAMnW,EAAE,CAAC,GAC7Cq8B,EAAQ/vB,KAAKtM,CAAC,EAGtB,OAAOq8B,GAEX9F,EAAer3B,UAAUm8B,cAAgB,SAAUjrB,GAC3CwW,EAAQ5nB,KAAK85B,SAASzkB,QAAQjE,CAAI,EACtC,OAAOpR,KAAKmX,MAAMyQ,IAEtB2P,EAAer3B,UAAUy+B,aAAe,SAAUt8B,GAC9C,IAAIulC,EAAa,GACb5nC,KAAKqO,OAAOxB,MACZ+6B,EAAa,IAAIl1B,cAAY1S,KAAKmX,KAAK,EACnCxE,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAAS7S,KAAKqO,OAAOsnB,UAAW,CAAA,CAAK,CAAC,EAK1D,GAFjBkS,EAAU,IAAIn1B,cAAY1S,KAAKmX,KAAK,EACpCxE,cAAa,IAAIC,SAAQC,MAAM,OAAQ,QAASxG,WAAS,OAAQhK,CAAI,EAAG,CAAA,CAAK,CAAC,GACtE1B,SACRinC,EAAa,IAAIl1B,cAAYm1B,CAAO,EAChCl1B,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAAS7S,KAAKqO,OAAOkU,WAAY,CAAA,CAAK,CAAC,GAGxE,EAApBqlB,EAAWjnC,SACPinB,EAAQ5nB,KAAKmX,MAAM9B,QAAQuyB,EAAW,EAAE,EAE5C5nC,KAAKm/B,YAAYn/B,KAAK85B,SAASlS,GADjB,CAAEwX,QAAS,CAAA,EAAMC,SAAU,CAAA,EACK,IAGtD9H,EAAer3B,UAAUi+B,mBAAqB,WAG1C,IAFA,IAAI97B,EAAO,GACP8U,EAAQ4d,YAAU,IAAMlnB,EAAgB,IAAMysB,EAAYt6B,KAAKkN,OAAO,EACjElM,EAAI,EAAGA,EAAImW,EAAMxW,OAAQK,CAAC,GAC/BqB,EAAKrB,GAAKhB,KAAKq8B,cAAcllB,EAAMnW,EAAE,EAEzChB,KAAKqO,OAAO8D,SAAW9P,GAE3Bk1B,EAAer3B,UAAUogC,aAAe,SAAUruB,GAC9C,GAAyB,eAArBjS,KAAKqO,OAAO0F,KAIhB,OADa1H,WAAS,SAAU4F,CAAI,GAEhC,IAAK,cACDjS,KAAK8nC,YAAYz7B,WAAS,MAAO4F,CAAI,CAAC,EACtC,MACJ,IAAK,gBACDjS,KAAK+nC,cAAc17B,WAAS,MAAO4F,CAAI,CAAC,EACxC,MACJ,IAAK,WACDjS,KAAKgoC,SAAS37B,WAAS,KAAM4F,CAAI,CAAC,EAClC,MACJ,IAAK,aACDjS,KAAKs/B,cAAgB,CAAA,EACrBt/B,KAAKo0B,aAAe,CAAA,EACpBp0B,KAAKioC,WAAW57B,WAAS,KAAM4F,CAAI,EAAG5F,WAAS,UAAW4F,CAAI,CAAC,EAC/D,MACJ,IAAK,eACDjS,KAAKs/B,cAAgB,CAAA,EACrBt/B,KAAKo0B,aAAe,CAAA,EACpB,MACJ,IAAK,iBACDp0B,KAAKs/B,cAAgB,CAAA,EACrBt/B,KAAKo0B,aAAe,CAAA,EACpBp0B,KAAKu/B,iBACL,MACJ,IAAK,YACDv/B,KAAKs/B,cAAgB,CAAA,EACrBt/B,KAAKo0B,aAAe,CAAA,EACpBp0B,KAAK++B,oBAIjBxH,EAAer3B,UAAUgoC,cAAgB,SAAU/wB,GAC/C,IAAIkmB,EAAU,GACV8K,EAAW,EAA6D,KAA5DnoC,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgBjQ,CAAAA,KAAKqO,OAAO6B,YAC1Fk4B,EAAapoC,KAAKqO,OAAOxB,MAAQ,KAAO,OAC5C,GAAI7M,KAAKqO,OAAOxB,OAAS,CAACs7B,EACtB,IAAK,IAAInnC,EAAI,EAAG4Y,EAAM5Z,KAAKmX,MAAMxW,OAAQK,EAAI4Y,EAAK5Y,CAAC,GACY,CAAC,IAAxDmW,EAAM9B,QAAQhJ,WAAS+7B,EAAYpoC,KAAKmX,MAAMnW,EAAE,CAAC,GACjDq8B,EAAQ/vB,KAAKtM,CAAC,OAKtB,IAASA,EAAI,EAAG4Y,EAAM5Z,KAAKmX,MAAMxW,OAAQK,EAAI4Y,EAAK5Y,CAAC,GAAI,CACnD,IAAIqnC,EAASh8B,WAAS,aAAcrM,KAAKmX,MAAMnW,EAAE,EAAIqL,WAAS,OAAQrM,KAAKmX,MAAMnW,EAAE,EACpD,CAAC,IAA3BmW,EAAM9B,QAAQgzB,CAAM,GAAqE,CAAC,IAAxDlxB,EAAM9B,QAAQhJ,WAAS+7B,EAAYpoC,KAAKmX,MAAMnW,EAAE,CAAC,GACpFq8B,EAAQ/vB,KAAKtM,CAAC,EAI1B,OAAOq8B,GAEX9F,EAAer3B,UAAU4nC,YAAc,SAAUz6B,GAE7C,GADArN,KAAKqO,OAAOmB,aAAe,iBACvB/C,oBAAMY,CAAG,EACTrN,KAAK+lC,oBADT,CAIA,IAAI1I,EAAUr9B,KAAKkoC,cAAc76B,CAAG,EACpC,GAAuB,IAAnBgwB,EAAQ18B,OAAZ,CAKA,IAFA,IAAI0B,EAAO,GACP2gB,EAAS,GACJhiB,EAAI,EAAGA,EAAIq8B,EAAQ18B,OAAQK,CAAC,GACjCqB,EAAKrB,GAAKhB,KAAKmX,MAAMkmB,EAAQr8B,IAC7BgiB,EAAOhiB,GAAKme,GAAYnf,KAAKqO,OAAQhM,EAAKrB,EAAE,EAEhD+hB,GAAc/iB,KAAKqO,OAAQhM,EAAM2gB,CAAM,KAE3CuU,EAAer3B,UAAU6nC,cAAgB,SAAU16B,GAC/C,GAAIZ,oBAAMY,CAAG,EACTrN,KAAK2iB,iBADT,CAIA,IAAIiF,EAAQ5nB,KAAKkoC,cAAc76B,CAAG,EAClC,GAAqB,IAAjBua,EAAMjnB,OAAV,CAKA,IAFA,IAAI0B,EAAO,GACP2gB,EAAS,GACJhiB,EAAI,EAAGA,EAAI4mB,EAAMjnB,OAAQK,CAAC,GAC/BqB,EAAKrB,GAAKhB,KAAKmX,MAAMyQ,EAAM5mB,IAC3BgiB,EAAOhiB,GAAKme,GAAYnf,KAAKqO,OAAQhM,EAAKrB,EAAE,EAEhDkiB,GAAgBljB,KAAKqO,OAAQhM,EAAM2gB,CAAM,KAE7CuU,EAAer3B,UAAU8nC,SAAW,SAAU17B,GACtCG,oBAAMH,CAAE,GAIS,GADjB+wB,EAAUr9B,KAAKkoC,cAAc,CAAC57B,EAAG,GACzB3L,QACRX,KAAK6+B,aAAa7+B,KAAK85B,SAASuD,EAAQ,GAAG,GAGnD9F,EAAer3B,UAAU+nC,WAAa,SAAU37B,EAAI2K,GAChDjX,KAAKqO,OAAOmB,aAAe,iBACvB/C,oBAAMH,CAAE,EACRtM,KAAKgmC,gBAIY,GADjB3I,EAAUr9B,KAAKkoC,cAAc,CAAC57B,EAAG,GACzB3L,SACRyhB,GAAmBpiB,KAAKqO,OAAQrO,KAAKmX,MAAMkmB,EAAQ,GAAG,EAClD5wB,oBAAMwK,CAAI,EACVuL,GAASxiB,KAAKqO,MAAM,EAGfoU,EAAcziB,KAAKqO,OAAO8D,SAAS,EAAE,EAItC8S,GAAOjlB,KAAKqO,OAAQrO,KAAKqO,OAAO1B,KAAMsK,CAAI,EAH1CtC,EAAmB3U,KAAKqO,OAAQrO,KAAKqO,OAAO8D,SAAS,GAAIuQ,CAAqB,QAxiD9F6U,GAgjDOA,EAziDP,SAASA,EAAelpB,GACpBrO,KAAKs/B,cAAgB,CAAA,EACrBt/B,KAAKq6B,gBAAkB,CAAA,EACvBr6B,KAAKie,MAAQ,EACbje,KAAK66B,WAAa,CAAA,EAClB76B,KAAKijC,SAAW,EAChBjjC,KAAKgkC,kBAAoB,CAAA,EACzBhkC,KAAKm6B,iBAAmB,CAAA,EACxBn6B,KAAKo0B,aAAe,CAAA,EACpBp0B,KAAKqO,OAASA,EACdrO,KAAKkN,QAAUY,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAK6rB,GAAkBn4B,KAAKqO,OAAOnB,OAAO,EAC1Fu2B,WAAS,CAACzjC,KAAKkN,SAAUoH,EAAe,EACxCtU,KAAKy6B,mBACLz6B,KAAKqiC,WAAa,CACdiG,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,MAAOxqC,KAAKqO,OAAOu1B,MAAQ,QAAU,SACrC6G,MAAOzqC,KAAKqO,OAAOu1B,MAAQ,QAAU,SACrC8G,MAAO1qC,KAAKqO,OAAOu1B,MAAQ,QAAU,SACrC+G,GAAI,KACJC,SAAU,eACVC,KAAM,YACNC,MAAO,UClDfC,EAAc7qC,UAAUkgC,kBAAoB,SAAUhS,GAClD,GAAIA,EAAEtT,SAAW9a,KAAKw8B,iBAAgC,WAAbpO,EAAEtT,OAG3C,IAAK,IAAI8mB,EAAK,EAAGC,EAAKtiC,OAAO4iB,KAAKiM,EAAE0T,OAAO,EAAGF,EAAKC,EAAGlhC,OAAQihC,CAAE,GAAI,CAChE,IAAIoJ,EAAOnJ,EAAGD,GACV3xB,EAAQme,EAAE0T,QAAQxvB,eAEb,mBADD04B,IAEK1zB,oBAAkBrH,EAAMg7B,mBAAmB,GAC5CjrC,KAAKkrC,gBAAgBj7B,EAAMg7B,mBAAmB,EAE9CjrC,CAAAA,KAAKqO,OAAO0B,oBAAoBC,UAAUC,OAA6D,KAApDjQ,KAAKqO,OAAO0B,oBAAoBC,UAAUC,OAC1FqH,CAAAA,oBAAkBrH,EAAMg7B,mBAAmB,GAAK3zB,oBAAkBrH,EAAMsC,UAAU,GACjF+E,oBAAkBrH,EAAM6C,UAAU,GACtClB,GAAkB5R,KAAKqO,OAAQrO,KAAKqO,OAAO0B,oBAAoBC,UAAUC,MAAO,CAAA,CAAK,KAMzG86B,EAAc7qC,UAAUs3B,OAAS,WAC7Bx3B,KAAKy6B,oBAETsQ,EAAc7qC,UAAUirC,aAAe,WACnC,IAAIn+B,EAAYhN,KAAKqO,OAAOrB,UACxBo+B,EAAQprC,KAAKqO,OAAO1B,KAAK2I,MAAM,GAAG,EAClC+1B,EAAerrC,KAAKqO,OAAOsK,cAAc,KAAM,CAAEC,UAAW,kBAAmB,EAC/E0yB,EAAe,KACfC,EAAev+B,EAAUrM,OAC7B,GAAuB,EAAnBqM,EAAUrM,OAAY,CAEtB,IADA,IAAI2L,EAAK,GACAtL,EAAI,EAAGA,EAAIuqC,EAAcvqC,CAAC,GAAI,CAGnC,IAFA,IAOQ28B,EAPJ6N,EAAc,KAClBF,EAAetrC,KAAKqO,OAAOsK,cAAc,KAAM,CAAEC,UAAW,sBAAuB,EAC1E8uB,EAAI,EAAGA,GAAK1mC,EAAG0mC,CAAC,GACrBp7B,EAAKA,EAAK8+B,EAAM1D,GAAK,IAEzB4D,EAAazT,aAAa,aAAcvrB,CAAE,EAChC,IAANtL,IACI28B,EAAOhlB,gBAAc,OAAQ,CAAEC,UAAW6yB,GAAW,EACzDH,EAAapyB,YAAYykB,CAAI,GAE7B4N,EAAevqC,GAAM,GACrBwqC,EAAc7yB,gBAAc,IAAK,CAAEC,UAAW7K,GAAe,EAC7Du9B,EAAazT,aAAa,WAAY,GAAG,GAGzC2T,EAAc7yB,gBAAc,OAAQ,CAAEC,UAAW7K,GAAe,EAEpEzB,EAAK,GACLk/B,EAAYE,UAAY1+B,EAAUhM,GAClCsqC,EAAapyB,YAAYsyB,CAAW,EACpCH,EAAanyB,YAAYoyB,CAAY,EAEzC,IAAIK,EAAY3rC,KAAKqO,OAAOu9B,wBAAwBpzB,cAAc,kBAAkB,EAOhFqzB,GANCv0B,oBAAkBq0B,CAAS,IACvBr0B,oBAAkBtX,KAAK8rC,UAAU,GAClC9rC,KAAK8rC,WAAW1iC,UAEpBuH,SAAOg7B,CAAS,GAEH3rC,KAAKqO,OAAOu9B,wBAAwBpzB,cAAc,gBAAgB,GAC9EqzB,EAID7rC,KAAKqO,OAAOu9B,wBAAwB1yB,YAAYmyB,CAAY,EAH5DrrC,KAAKqO,OAAOu9B,wBAAwB1O,aAAamO,EAAcQ,CAAU,EAK7E7rC,KAAK+rC,oBAAoBV,CAAY,IAI7CN,EAAc7qC,UAAU6rC,oBAAsB,SAAUC,GAUpD,IATA,IAAIC,EAAaD,EAAYv7B,iBAAiB,IAAI,EAC9Ck7B,EAAY3rC,KAAKqO,OAAOu9B,wBAAwBpzB,cAAc,kBAAkB,EAChFc,EAAQyG,OAAOiX,iBAAiB2U,EAAW,IAAI,EAC/CO,EAAShV,WAAW5d,EAAMqtB,iBAAiB,eAAe,CAAC,EAC3DwF,EAAQjV,WAAW5d,EAAMqtB,iBAAiB,cAAc,CAAC,EACzDyF,EAAqBT,EAAUrU,YAAc4U,EAASC,EACtDd,EAAerrC,KAAKqO,OAAOsK,cAAc,KAAM,CAAEC,UAAW,kBAAmB,EAC/EyzB,EAAkB,EAClBC,EAAmB,GACdtrC,EAAI,EAAGA,EAAIirC,EAAWtrC,OAAQK,CAAC,GAAI,CACxC,IAAImB,EAAQ8pC,EAAWjrC,GAAGurC,YAC1BD,EAAiBh/B,KAAKnL,CAAK,EAC3BkqC,GAAoClqC,EAEnCmV,oBAAkBq0B,CAAS,GAC5Bh7B,SAAOg7B,CAAS,EAEpB,IAAIa,EAAkBxsC,KAAKqO,OAAOsK,cAAc,KAAK,EAEjDrM,GADJkgC,EAAgB3U,aAAa,QAAS,eAAe,EAC5C73B,KAAKqO,OAAOnB,QAAQZ,GAAKmgC,IAC9BC,EAAc/zB,gBAAc,QAAS,CAAErM,GAAIA,EAC3CkhB,MAAO,CAAEmf,aAAc,MAAOC,aAAcvzB,EAAcrZ,KAAKqO,OAAQ,QAAQ,GAAK,EAEpFw+B,GADJL,EAAgBtzB,YAAYwzB,CAAW,EACvB1sC,KAAKqO,OAAOu9B,wBAAwBpzB,cAAc,yBAAyB,GAmBvFqzB,GAlBAv0B,oBAAkBu1B,CAAS,IAC3B7sC,KAAKqO,OAAOu9B,wBAAwB1yB,YAAYszB,CAAe,EAC3DM,EAAOn0B,gBAAc,OAAQ,CAAEC,UAAW,sBAAuB,EACrE4pB,eAAalyB,IAAIw8B,EAAM,QAAS9sC,KAAK+sC,YAAa/sC,IAAI,EACtD0sC,EAAY5qB,cAAcob,aAAa4P,EAAMJ,CAAW,EACxD1sC,KAAKgQ,UAAY,IAAIg9B,UAAQ,CACzB/8B,MAAO,GACPg9B,gBAAiB,CAAA,EACjBtY,YAAatb,EAAcrZ,KAAKqO,OAAQ,QAAQ,EAChD4hB,MAAOjwB,KAAKktC,QAAQ/c,KAAKnwB,IAAI,EAC7BmtC,KAAMntC,KAAKotC,OAAOjd,KAAKnwB,IAAI,EAC9B,EACDA,KAAKgQ,UAAUmiB,SAAS,IAAMnyB,KAAKqO,OAAOnB,QAAQZ,GAAKmgC,EAAa,EACpEzsC,KAAKkrC,gBAAgBlrC,KAAKqO,OAAOiE,eAAe24B,mBAAmB,EAC/DvhC,EAAS1J,KAAKgQ,UAAU9C,QAAQ8e,mBACpCwW,eAAalyB,IAAI5G,EAAQ,YAAa1J,KAAKqtC,oBAAoBld,KAAKnwB,IAAI,EAAGA,IAAI,EAC/EwiC,eAAalyB,IAAItQ,KAAKgQ,UAAU9C,QAAS,QAASlN,KAAKstC,QAAQnd,KAAKnwB,IAAI,EAAGA,IAAI,GAElEA,KAAKqO,OAAOu9B,wBAAwBpzB,cAAc,gBAAgB,GAEnF,IADA4zB,GAA2CpsC,KAAKutC,iBAAyC1B,EAAWvU,aAChG+U,EAAsC,CAEtC,IADIrrC,EAAIirC,EAAWtrC,OACZK,CAAC,IAAI,CACR,IAAIwsC,EAAOpB,EAAqBE,EAAiBtrC,GACjD,GAAIwsC,EAAO,GAAPA,GAIC,CAED,IADA,IAAIr2B,EAAQ,GACHuwB,EAAI,EAAGA,GAAK1mC,EAAG0mC,CAAC,GAAI,CACzB,IAAI+F,EAAYxB,EAAWvE,GAC3BvwB,EAAM7J,KAAK,CACPlB,KAAMqhC,EAAU/B,UAChBgC,MAAOD,EAAUlhC,aAAa,YAAY,EAC7C,EAEL,IAAIohC,EAAY3tC,KAAKqO,OAAOsK,cAAc,KAAM,CAAEC,UAAW,oBAAqB,EAE9Eg1B,EAAc5tC,KAAKqO,OAAOsK,cAAc,SAD3B,CAAEC,UAAW,uBACkC,EAChE+0B,EAAUz0B,YAAY00B,CAAW,EACjCvC,EAAanO,aAAayQ,EAAWtC,EAAa7yB,cAAc,IAAI,CAAC,EACrExY,KAAK8rC,WAAa,IAAI+B,iBAAe,CACjC12B,MAAOA,EACPsD,SAAU,yBACVqe,QAASgV,GACTC,aAAc,MACd9b,oBAAqBjyB,KAAKqO,OAAO4jB,oBACjC+b,iBAAkBhuC,KAAKiuC,qBAAqB9d,KAAKnwB,IAAI,EACrD8N,OAAQ9N,KAAKkuC,wBAAwB/d,KAAKnwB,IAAI,EACjD,EACDA,KAAK8rC,WAAW5Z,iBAAmB,CAAA,EACnClyB,KAAK8rC,WAAW3Z,SAASyb,CAAW,EACpC,MA5BAvC,EAAanO,aAAa+O,EAAWjrC,GAAIqqC,EAAa7yB,cAAc,IAAI,CAAC,EACzE4zB,EAAqBoB,EA8B7BxtC,KAAKqO,OAAOu9B,wBAAwB1O,aAAamO,EAAcQ,CAAU,OAGzE7rC,KAAKqO,OAAOu9B,wBAAwB1O,aAAa8O,EAAaH,CAAU,GAIhFd,EAAc7qC,UAAUgtC,QAAU,WACnBr8B,UAAQ7Q,KAAKgQ,UAAU9C,QAAS,gBAAgB,EACtDe,UAAUqC,IAAI,SAAS,GAGhCy6B,EAAc7qC,UAAUotC,QAAU,WAC9BttC,KAAKqO,OAAOW,OAAOgD,GAAmB,CAAEC,KAAMjS,KAAKqO,OAAQ,GAG/D08B,EAAc7qC,UAAUktC,OAAS,WAClBv8B,UAAQ7Q,KAAKgQ,UAAU9C,QAAS,gBAAgB,EACtDe,UAAU0C,OAAO,SAAS,GAGnCo6B,EAAc7qC,UAAUguC,wBAA0B,SAAUttB,GACpD3O,EAAO,CAAE3R,OAAQsgB,EAAM1T,SAC3BlN,KAAKmuC,wBAAwBl8B,CAAI,GAGrC84B,EAAc7qC,UAAU+tC,qBAAuB,SAAUh8B,GACrDA,EAAK/E,QAAQ2qB,aAAa,aAAcxrB,WAAS,QAAS4F,EAAKb,IAAI,CAAC,EACpE,IAAIg9B,EAASpuC,KAAKqO,OAAOsK,cAAc,IAAK,CAAEC,UAAW,cAAe,EACxE3G,EAAK/E,QAAQgM,YAAYk1B,CAAM,GAEnCrD,EAAc7qC,UAAUgrC,gBAAkB,SAAUmD,GAC5CA,GACAruC,KAAKgQ,UAAU2d,MAAQ3tB,KAAKqtC,oBAAoBld,KAAKnwB,IAAI,EACzDA,KAAKgQ,UAAUujB,OAAS,OAGxBvzB,KAAKgQ,UAAUujB,OAASvzB,KAAKqtC,oBAAoBld,KAAKnwB,IAAI,EAC1DA,KAAKgQ,UAAU2d,MAAQ,OAG/Bod,EAAc7qC,UAAUmtC,oBAAsB,SAAUp7B,GACpD,IAAIkpB,EAAQn7B,KACPsX,oBAAkBrF,EAAKhC,KAAK,IAC7BjQ,KAAKqO,OAAO6B,WAAa,CAAA,EACrBlQ,KAAKqO,OAAOiE,eAAe24B,qBAC3BlrB,OAAOC,aAAahgB,KAAKsuC,WAAW,EACpCtuC,KAAKsuC,YAAcvuB,OAAO6B,WAAW,WAAchQ,GAAkBupB,EAAM9sB,OAAQ4D,EAAKhC,MAAO,CAAA,CAAK,GAAM,GAAG,GAG7G2B,GAAkB5R,KAAKqO,OAAQ4D,EAAKhC,MAAO,CAAA,CAAK,IAI5D86B,EAAc7qC,UAAUiuC,wBAA0B,SAAU/f,GACxD,IAAIoY,EAAKpY,EAAE9tB,OACS,OAAhBkmC,EAAG+H,UAAqC,MAAhB/H,EAAG+H,WACvBriC,EAAuB,OAAhBs6B,EAAG+H,SAAoB/H,EAAGv1B,SAAS,GAAKu1B,EAC9ClvB,oBAAkBpL,CAAI,KACvBlM,KAAKqO,OAAO6B,WAAa,CAAA,EACrBs+B,EAAcxuC,KAAKiM,WAAWC,CAAI,EACtClM,KAAKqO,OAAO8D,SAAW,CAAC9F,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,GACxGzO,KAAKyuC,gBAAgBzuC,KAAKqO,OAAO8D,SAAS,EAAE,EAC5CC,EAAKpS,KAAKqO,OAAQse,EAAoB6hB,CAAW,EAC7CE,EAAa1uC,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAChEX,KAAKqO,OAAOW,OAAO2/B,GAA4B,CAAE7zB,OAAQ,WAAYoB,aAAcwyB,EAAY,IAI3G3D,EAAc7qC,UAAUuuC,gBAAkB,SAAUpsC,GAC5CoU,EAAY,CAAEoJ,OAAQ,CAAA,EAAOzJ,YAAa/T,EAAMyY,OAAQ,iBAC5D,OAAOrE,EAAUoJ,OACjB7f,KAAKqO,OAAO6H,QAAQ,WAAYO,CAAS,GAG7Cs0B,EAAc7qC,UAAU6sC,YAAc,WAClC,IAMYlB,EANR7rC,KAAKqO,OAAOuM,WACR5a,KAAKqO,OAAOnB,QAAQe,UAAUC,SAAS0gC,EAAU,GACjDnK,cAAY,CAACzkC,KAAKqO,OAAOnB,SAAU0hC,EAAU,EAC7C5uC,KAAKutC,gBAAkB,OAGnB1B,EAAa7rC,KAAKqO,OAAOu9B,wBAAwBpzB,cAAc,gBAAgB,EACnFxY,KAAKutC,gBAAkB1B,EAAWvU,YAClCmM,WAAS,CAACzjC,KAAKqO,OAAOnB,SAAU0hC,EAAU,EAC1C5uC,KAAKgQ,UAAU9C,QAAQ+iB,WAInC8a,EAAc7qC,UAAU+L,WAAa,SAAU4iC,GAU3C,IATA,IACIC,EADKj+B,UAAQg+B,EAAM,IAAI,EACNtiC,aAAa,YAAY,EAE1CqiB,GADJ5uB,KAAK+uC,eAAiBD,EACX9uC,KAAK+uC,eAAez5B,MAAM,GAAG,GACpCjI,EAAMrN,KAAKqO,OAAOvB,OAClBS,EAAQvN,KAAKqO,OAAOrB,UAGpBgiC,GAFJhvC,KAAKqO,OAAOvB,OAAS,GACrB9M,KAAKqO,OAAOrB,UAAY,GACV,IACLhM,EAAI,EAAG4Y,EAAMgV,EAAKjuB,OAAS,EAAGK,EAAI4Y,EAAK5Y,CAAC,GAC7ChB,KAAKqO,OAAOvB,OAAOQ,KAAKD,EAAIrM,EAAE,EAC9BhB,KAAKqO,OAAOrB,UAAUM,KAAKC,EAAMvM,EAAE,EACnCguC,GAAWpgB,EAAK5tB,GAAK,IAGzB,OADAhB,KAAKqO,OAAO3B,cAAc,CAAEC,KAAMqiC,GAAW,CAAA,CAAI,EAC1CA,GAEXjE,EAAc7qC,UAAU+uC,aAAe,WACnCjvC,KAAKmrC,eACLnrC,KAAKkvC,qBAETnE,EAAc7qC,UAAU89B,YAAc,WAClCh+B,KAAKmrC,gBAETJ,EAAc7qC,UAAUivC,YAAc,WAClCnvC,KAAKmrC,gBAGTJ,EAAc7qC,UAAUm+B,YAAc,WAClCr+B,KAAKivC,gBAGTlE,EAAc7qC,UAAUgvC,kBAAoB,WACxClvC,KAAKqO,OAAO6B,WAAa,CAAA,EACrBlQ,CAAAA,KAAKgQ,WAAuC,KAAzBhQ,KAAKgQ,UAAUC,OAAiD,KAAjCjQ,KAAKgQ,UAAU9C,QAAQ+C,QACzEjQ,KAAKgQ,UAAUC,MAAQ,GACvBjQ,KAAKgQ,UAAU9C,QAAQ+C,MAAQ,GAC/BjQ,KAAKgQ,UAAUqiB,aAGvB0Y,EAAc7qC,UAAUkvC,SAAW,WAC/BpvC,KAAKmrC,gBAETJ,EAAc7qC,UAAUmvC,WAAa,WACjCrvC,KAAKmrC,gBAETJ,EAAc7qC,UAAUu6B,iBAAmB,WACvCz6B,KAAKiiC,eAAiB,IAAIC,iBAAeliC,KAAKqO,OAAOu9B,wBAAyB,CAC1EzJ,UAAWniC,KAAKoiC,iBAAiBjS,KAAKnwB,IAAI,EAC1CqiC,WAAYriC,KAAKqiC,WACjB3mB,UAAW,UACd,EACD1b,KAAKqO,OAAOqzB,GAAGvB,EAAqBngC,KAAKogC,kBAAmBpgC,IAAI,EAChEwiC,eAAalyB,IAAItQ,KAAKqO,OAAOu9B,wBAAyB,QAAS5rC,KAAKmuC,wBAAyBnuC,IAAI,EACjGA,KAAKqO,OAAOqzB,GAAG4N,GAAgBtvC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOqzB,GAAG/U,EAAoB3sB,KAAKivC,aAAcjvC,IAAI,EAC1DA,KAAKqO,OAAOqzB,GAAG/lB,EAAoB3b,KAAKivC,aAAcjvC,IAAI,EAC1DA,KAAKqO,OAAOqzB,GAAGhtB,GAAmB1U,KAAKivC,aAAcjvC,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG5sB,GAAgB9U,KAAKivC,aAAcjvC,IAAI,EACtDA,KAAKqO,OAAOqzB,GAAGxV,GAAkBlsB,KAAKg+B,YAAah+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAG9U,EAAkB5sB,KAAKmvC,YAAanvC,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAG1U,GAAkBhtB,KAAKq+B,YAAar+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGb,GAAuB7gC,KAAKovC,SAAUpvC,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGljB,GAAiBxe,KAAKqvC,WAAYrvC,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGX,GAAkB/gC,KAAKovC,SAAUpvC,IAAI,EACpDA,KAAKqO,OAAOqzB,GAAGhW,GAAyB1rB,KAAKuvC,mBAAoBvvC,IAAI,EACrEA,KAAKqO,OAAOqzB,GAAGphB,GAAiBtgB,KAAKs8B,WAAYt8B,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGJ,GAAsBthC,KAAKovC,SAAUpvC,IAAI,EACxDA,KAAKqO,OAAOqzB,GAAG3iB,GAAiB/e,KAAKmrC,aAAcnrC,IAAI,GAE3D+qC,EAAc7qC,UAAUkiC,iBAAmB,SAAUhU,GAExC,UADDA,EAAEjf,QAEFnP,KAAKmuC,wBAAwB/f,CAAC,GAI1C2c,EAAc7qC,UAAU83B,oBAAsB,WAC1Ch4B,KAAKiiC,eAAe74B,UACpBpJ,KAAKqO,OAAO2xB,IAAIrT,EAAoB3sB,KAAKivC,YAAY,EACrDjvC,KAAKqO,OAAO2xB,IAAIrkB,EAAoB3b,KAAKivC,YAAY,EACrDjvC,KAAKqO,OAAO2xB,IAAItrB,GAAmB1U,KAAKivC,YAAY,EACpDjvC,KAAKqO,OAAO2xB,IAAIlrB,GAAgB9U,KAAKivC,YAAY,EACjDjvC,KAAKqO,OAAO2xB,IAAIxhB,GAAiBxe,KAAKqvC,UAAU,EAChDrvC,KAAKqO,OAAO2xB,IAAI9T,GAAkBlsB,KAAKg+B,WAAW,EAClDh+B,KAAKqO,OAAO2xB,IAAIpT,EAAkB5sB,KAAKmvC,WAAW,EAClDnvC,KAAKqO,OAAO2xB,IAAIhT,GAAkBhtB,KAAKq+B,WAAW,EAClDr+B,KAAKqO,OAAO2xB,IAAIa,GAAuB7gC,KAAKovC,QAAQ,EACpDpvC,KAAKqO,OAAO2xB,IAAIe,GAAkB/gC,KAAKovC,QAAQ,EAC/CpvC,KAAKqO,OAAO2xB,IAAItU,GAAyB1rB,KAAKuvC,kBAAkB,EAChEvvC,KAAKqO,OAAO2xB,IAAI1f,GAAiBtgB,KAAKs8B,UAAU,EAChDt8B,KAAKqO,OAAO2xB,IAAIsB,GAAsBthC,KAAKovC,QAAQ,EACnDpvC,KAAKqO,OAAO2xB,IAAIjhB,GAAiB/e,KAAKmrC,YAAY,GAGtDJ,EAAc7qC,UAAUo8B,WAAa,SAAUrqB,GACvCjS,KAAKqO,OAAOkG,eAAiBvU,KAAKw8B,kBAC9BgT,EAAQv9B,EAAK3R,OAAOuQ,QAAQ,IAAI,EACpC7Q,KAAKqO,OAAO7C,SAAWxL,KAAKiM,WAAYujC,EAAMv+B,SAAS,IACvDjR,KAAKqO,OAAOkP,SAAWlR,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,EACvGzO,KAAKyuC,gBAAgBzuC,KAAKqO,OAAOkP,QAAQ,EACrCmxB,EAAa1uC,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAChEX,KAAKqO,OAAOW,OAAO2/B,GAA4B,CAAE7zB,OAAQ,WAAYoB,aAAcwyB,EAAY,IASvG3D,EAAc7qC,UAAUs8B,cAAgB,WACpC,MAAO,iBAEXuO,EAAc7qC,UAAUkJ,QAAU,WAC1BpJ,KAAKqO,OAAO0xB,cAGhB//B,KAAKg4B,sBAEA1gB,oBAAkBtX,KAAK8rC,UAAU,GAClC9rC,KAAK8rC,WAAW1iC,UAEfkO,oBAAkBtX,KAAKgQ,SAAS,IACjChQ,KAAKgQ,UAAU5G,WAGvB2hC,EAAc7qC,UAAUqvC,mBAAqB,SAAUt9B,GACnDjS,KAAKgQ,UAAU9C,QAAQynB,YAAyD,MAA1C30B,KAAKqO,OAAOiE,eAAeqiB,YAAuB30B,KAAKqO,OAAOiE,eAAeqiB,YAActb,EAAcrZ,KAAKqO,OAAQ,QAAQ,EAAI,IAAMgL,EAAcrZ,KAAKqO,OAAQ4D,EAAKyL,IAAIzG,KAAKzI,UAAU,OAxYrOu8B,GA0YOA,EAjYP,SAASA,EAAc18B,GACnBrO,KAAKyvC,YAAc,GACnBzvC,KAAK+uC,eAAiB,GACtB/uC,KAAKsuC,YAAc,KACnBtuC,KAAKutC,gBAAkB,KACvBvtC,KAAKqO,OAASA,EACdrO,KAAKqiC,WAAa,CACd+H,MAAO,SAEXpqC,KAAKw3B,SCDTkY,EAAYxvC,UAAUs3B,OAAS,WAC3Bx3B,KAAKqiC,WAAa,CACdsN,UAAW,YACXC,QAAS,YAEb5vC,KAAK6vC,YAAc,IAAIC,cAAK,CACxB9d,UAAWhyB,KAAKqO,OAAO2jB,UACvB5X,OAAQpa,KAAKqO,OAAO+L,OACpB9Z,OAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAClC2lB,oBAAqBjyB,KAAKqO,OAAO4jB,oBACjC+b,iBAAkBhuC,KAAK+vC,mBAAmB5f,KAAKnwB,IAAI,EACnD8N,OAAQ9N,KAAKgwC,SAAS7f,KAAKnwB,IAAI,EAC/BmxB,WAAYnxB,KAAKiwC,aAAa9f,KAAKnwB,IAAI,EACvCqxB,YAAarxB,KAAKkwC,cAAc/f,KAAKnwB,IAAI,EACzCya,SAAUF,GAAYva,KAAKqO,OAAQ0jB,EAAc,EACpD,EACD/xB,KAAK6vC,YAAY3d,iBAAmB,CAAA,EACpClyB,KAAK6vC,YAAY1d,SAAS,IAAMnyB,KAAKqO,OAAOnB,QAAQZ,GAAK6jC,EAAmB,EAC5EnwC,KAAKy6B,oBAGTiV,EAAYxvC,UAAU6vC,mBAAqB,SAAU99B,GACjD,IAOQm+B,EACAljC,EARJ+E,EAAKb,KAAK9E,KAAOtM,KAAKqwC,UAAU,gBAAgB,IAC5CD,EAAWz3B,gBAAc,MAAM,GAEnCzL,EADc+E,EAAK/E,SACXgwB,aAAakT,EAA+B,eAArBpwC,KAAKqO,OAAO0F,KAAwB7G,EAAQiwB,WAAW,GAAKjwB,EAAQiwB,WAAW,EAAE,EAChHiT,EAASvY,aAAa,QAASyY,GAAiB,IAAMC,EAAa,GAEnEt+B,EAAKb,KAAK9E,KAAOtM,KAAKqwC,UAAU,aAAa,IACzCD,EAAWz3B,gBAAc,MAAM,GAEnCzL,EADc+E,EAAK/E,SACXgwB,aAAakT,EAA+B,YAArBpwC,KAAKqO,OAAO0F,KAAqB7G,EAAQiwB,WAAW,GAAKjwB,EAAQiwB,WAAW,EAAE,EAC7GiT,EAASvY,aAAa,QAAS2Y,GAAgB,IAAMD,EAAa,IAG1Eb,EAAYxvC,UAAUgwC,cAAgB,SAAUj+B,GAC5C,IAAIwE,EAAY,CACZoJ,OAAQ,CAAA,EACR3S,QAAS+E,EAAK/E,QACd0T,MAAO3O,EAAK2O,MACZ6vB,UAAWx+B,EAAKw+B,UAChBr6B,YAAa,CAACpW,KAAKqK,cACnB8M,MAAOlF,EAAKkF,MACZu5B,WAAYz+B,EAAKy+B,WACjBC,SAAU3wC,KAAK2wC,UASnB,GAPA3wC,KAAKqO,OAAO6H,QAAQ,YAAaO,EAAW,SAAUm6B,GAC9CA,EAAc/wB,SACd5N,EAAK4N,OAAS+wB,EAAc/wB,QAGnC,EACD7f,KAAK6wC,WAAa,KACd,CAAC7wC,KAAK8wC,mBAAiD,EAA5B9wC,KAAKqO,OAAOvB,OAAOnM,QAA2C,mBAA7BX,KAAKqO,OAAOmB,aAAmC,CAC3GxP,KAAKqO,OAAOvB,OAAO+e,MAGnB,IAFA,IAAIklB,EAAY,GAEPnP,EAAK,EAAGoP,EADFzxC,OAAO4iB,KAAKniB,KAAKqO,OAAOI,QAAQ,EACPmzB,EAAKoP,EAAWrwC,OAAQihC,CAAE,GAAI,CAClE,IAAIxwB,EAAO4/B,EAAWpP,GAElBzvB,EAAW9F,WAAS+E,EAAMpR,KAAKqO,OAAOI,QAAQ,EACG,CAAC,IAAlDzO,KAAKqO,OAAOrB,UAAUqI,QAAQlD,EAAS8E,IAAI,GAC3C85B,EAAUzjC,KAAK6E,EAAS8+B,MAAM,EAGtCjxC,KAAKqO,OAAOvB,OAAOQ,KAAKyjC,EAAUA,EAAUpwC,OAAS,EAAE,EACvDX,KAAKqO,OAAOuQ,qBAAqBC,QAAQnS,cAAc,CAAEmC,cAAe,CAAC7O,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,IAAK,EAEjIX,KAAK8wC,kBAAoB,CAAA,GAG7BpB,EAAYxvC,UAAU+vC,aAAe,SAAUh+B,GAC3C,IAEIi/B,EAFA/V,EAAQn7B,KACR49B,EAAW,CAAA,EAGXuT,EAAa,CAAA,EACb7wC,EAAS2R,EAAK2O,MAAMtgB,OAWpByT,GAVJ/T,KAAK6wC,WAAa7wC,KAAKoxC,kBAAoB9wC,EAC3CN,KAAKqxC,eAAiBp/B,EAAK/E,QACvB5M,EAAO2N,UAAUC,SAAS,gBAAgB,IAC1C5N,EAASN,KAAKqO,OAAOuQ,qBAAqB0yB,WAAWC,uBAAuBC,EAAW,EAAE,GACzFxxC,KAAK6wC,WAAa7wC,KAAKoxC,kBAAoB9wC,GAE/CN,KAAKyxC,cAAqC,YAArBzxC,KAAKqO,OAAO0F,KAAqBlD,UAAQvQ,EAAQ,UAAU,EAAIA,EAChFN,KAAKqO,OAAOmrB,uBAAyBl5B,EAAO2N,UAAUC,SAAS,kBAAkB,GAAK5N,EAAO2N,UAAUC,SAAS,gBAAgB,KAChI5N,EAASA,EAAOwhB,cAAcjR,QAAQ,KAAK,GAEpC7Q,KAAK0xC,cAAcpxC,CAAM,GAGpC,GAFAN,KAAK2xC,qBAEDrxC,EAAO2N,UAAUC,SAASC,EAAa,GAAK0C,UAAQvQ,EAAQ,IAAI,GAC/DuQ,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAK6L,EAAqB,GACpEtH,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAKslC,EAAe,EAC/D3/B,EAAK4N,OAAS,CAAA,OAEb,GAA2B,eAArB7f,KAAKqO,OAAO0F,MAA0B/T,KAAKyxC,eAClDzxC,KAAKyxC,cAAcxjC,UAAUC,SAAS,YAAY,EAClDlO,KAAK6xC,cAAcvxC,CAAM,OAGxB,GAAIuQ,UAAQvQ,EAAQ,IAAMmY,CAAS,EACpCzY,KAAK6xC,cAAcvxC,CAAM,OAExB,GAAI,CAACA,EAAO2N,UAAUC,SAAS4jC,EAAa,GAC7C,CAACxxC,EAAO2N,UAAUC,SAASqiC,EAAa,GAAK,CAACjwC,EAAO2N,UAAUC,SAAS6jC,EAAgB,EA4BxF,GA1ByB,eAArB/xC,KAAKqO,OAAO0F,MAA0BtH,oBAAMoE,UAAQvQ,EAAQ,IAAI,CAAC,GAAMuQ,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAK0lC,EAAW,EAQ3HvlC,oBAAMoE,UAAQvQ,EAAQ,UAAU,CAAC,EAUlCuQ,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAK0lC,EAAW,IAC/Dd,EAAMrgC,UAAQvQ,EAAQ,IAAI,EAAEiM,aAAa,UAAU,EAC9CE,oBAAMykC,CAAG,IACVlxC,KAAKiyC,OAASf,GAElBC,EAAa,CAAA,IAdbD,EAAMlxC,KAAKyxC,cAAcllC,aAAa,UAAU,EAChDlK,EAAOrC,KAAKqO,OAAOoF,kBAAkBC,QAAQw+B,oBAAoBhB,CAAG,EAAE7uC,KAClEoK,oBAAMzM,KAAKyxC,cAAcllC,aAAa,eAAe,CAAC,GAEtDvM,KAAKqO,OAAOoF,kBAAkBC,QAAQy+B,WAAW,CAAC5jC,SAASvO,KAAKyxC,cAAcllC,aAAa,eAAe,EAAG,EAAE,EAAE,EAErHqxB,EAAW,CAAA,IAbN/sB,UAAQvQ,EAAQ,IAAI,EAAE2N,UAAUC,SAAS,UAAU,GACpDlO,KAAKqO,OAAOuF,qBAAqBurB,YAAY7+B,EAFnC,CAAE8+B,QAAS,CAAA,EAAMC,SAAU,CAAA,EAEuB,EAEhEh9B,EAAOrC,KAAKqO,OAAOo5B,YACnB7J,EAAW,CAAA,GAoBXA,EACiC,CAAA,IAA7BvxB,WAAS,SAAUhK,CAAI,EACvBrC,KAAKoyC,cAGLpyC,KAAKqyC,cAAc,CAAA,CAAK,OAI3B,GAAIlB,EAEL,GADAnxC,KAAKqyC,cAAc,CAAA,CAAI,EACnBnB,IAAQlxC,KAAKqO,OAAOvB,OAAO,GAC3B9M,KAAKsyC,cAAchlC,KAAK,SAAU,SAAU,MAAO,MAAM,OAIzD,IADA,IAAIilC,EAAgB,CAAC,SAAU,SAAU,MAAO,QACvCvxC,EAAI,EAAGA,EAAIhB,KAAKsyC,cAAc3xC,OAAQK,CAAC,GAAI,CAChD,IAAIoQ,EAAOpR,KAAKsyC,cAActxC,GACM,CAAC,IAAjCuxC,EAAcl9B,QAAQjE,CAAI,IAC1BpR,KAAKsyC,cAAczqB,OAAO7mB,EAAG,CAAC,EAC9BA,CAAC,QAMC,aAAT+S,GAAgC,aAATA,GAAgC,cAATA,EACnD/T,KAAK6xC,cAAcvxC,CAAM,EAIzB2R,EAAK4N,OAAS,CAAA,EAGtB,IAQQ2yB,EAUJC,EAlBAC,EAAW5kC,SAAO,IAAM9N,KAAKqwC,UAAU,OAAO,EAAGrwC,KAAK6vC,YAAY3iC,OAAO,EACxE+E,EAAK4N,QAAW7f,KAAKqO,OAAOU,aAC7B2jC,CAAAA,GAAaA,EAASzkC,UAAUC,SAAS,YAAY,EAOlC,CAAC,KADhBskC,EAAaxyC,KAAKsyC,cAAcj9B,QAAQ,OAAO,IAE/CrV,KAAKsyC,cAAczqB,OAAO2qB,EAAY,CAAC,EAPC,CAAC,IAAzCxyC,KAAKsyC,cAAcj9B,QAAQ,OAAO,GAClCrV,KAAKsyC,cAAchlC,KAAK,OAAO,EASnC2E,EAAK4N,OACL7f,KAAK6wC,WAAa7wC,KAAKqxC,eAAiB,MAG5CrxC,KAAK6vC,YAAYxd,WACbogB,EAAY,CAAA,GACZnyC,EAAO2N,UAAUC,SAAS4jC,EAAa,GACvCxxC,EAAO2N,UAAUC,SAASqiC,EAAa,GAAKjwC,EAAO2N,UAAUC,SAAS6jC,EAAgB,KACtFU,EAAY,CAAA,GAEhBzyC,KAAKqK,aAAeooC,EAAYzyC,KAAKqK,aAAerK,KAAK2yC,kBACrDl8B,EAAY,CACZL,YAAa,CAACpW,KAAKqK,cACnB6C,QAAS+E,EAAK/E,QACd5M,OAAQA,EACR6W,OAAOs7B,EAAYxgC,EAAajS,KAAK6vC,aAAb14B,MACxBy7B,WAAY5yC,KAAK6vC,YACjBhwB,OAAQ,CAAA,EACR8wB,SAAU3wC,KAAK2wC,SACf8B,UAAWA,GAEfzyC,KAAK6yC,aAAep8B,EAAUU,MAC9BnX,KAAKqO,OAAO6H,QAAQ,WAAYO,EAAW,SAAUq8B,GAC5CL,IACDtX,EAAM0U,YAAYxd,WAClB8I,EAAM0U,YAAY14B,MAAQ27B,EAAa37B,MACvCgkB,EAAM0U,YAAYxd,YAEtB8I,EAAM4X,YAAY5X,EAAMmX,cAAe,CAAA,EAAO,CAAA,CAAI,EAClDrgC,EAAK4N,OAASizB,EAAajzB,OACvBizB,EAAajzB,SACbsb,EAAM0V,WAAa1V,EAAMiW,kBAAoBjW,EAAMkW,eAAiB,MAE3E,IAEL3B,EAAYxvC,UAAUyxC,mBAAqB,WACvC3xC,KAAKqO,OAAOmB,aAAeqB,UAAQ7Q,KAAK6wC,WAAY,IAAM7wC,KAAKqO,OAAOnB,QAAQZ,GAAK0lC,EAAW,EAC1F,iBAAmBnhC,UAAQ7Q,KAAK6wC,WAAY,IAAM7wC,KAAKqO,OAAOnB,QAAQZ,GAAK0mC,EAAW,EACtF,cAAgBniC,UAAQ7Q,KAAK6wC,WAAY,IAAM7wC,KAAKqO,OAAOnB,QAAQZ,GAAK6rB,EAAgB,EACxF,iBAAmBn4B,KAAKqO,OAAOmB,cASvCkgC,EAAYxvC,UAAUwxC,cAAgB,SAAUpxC,GAC5C,OAAOA,EAAO2N,UAAUC,SAASC,EAAa,EAC1C,WAAa7N,EAAO2N,UAAUC,SAAS+K,EAAa,EACpD,WAAa3Y,EAAO2N,UAAUC,SAAS+kC,EAAa,GACtC3yC,EAAO2N,UAAUC,SAASoG,EAAe,EACvD,YAAc,IAEtBo7B,EAAYxvC,UAAUgzC,aAAe,SAAU9hC,GAE3C,IADA,IAAI+hC,EAASnzC,KAAKqwC,UAAUj/B,CAAI,EACvBpQ,EAAI,EAAGA,EAAIhB,KAAK6yC,aAAalyC,OAAQK,CAAC,GAC3C,GAAKhB,KAAK6yC,aAAa7xC,GAAGsL,KAAO6mC,GAAYnzC,KAAK6yC,aAAa7xC,GAAGsL,KAAO8E,EACrE,OAAOpQ,EAGf,MAAO,CAAC,GAEZ0uC,EAAYxvC,UAAUkzC,YAAc,SAAUj8B,GACrB,IAAjBA,EAAMxW,SACNX,KAAKsyC,cAAgBtyC,KAAKsyC,cAAc3gC,OAAOwF,CAAK,IAG5Du4B,EAAYxvC,UAAU6yC,YAAc,SAAU57B,EAAOk8B,EAAQC,GACzD,IAAK,IAAItyC,EAAI,EAAGA,EAAImW,EAAMxW,OAAQK,CAAC,GACO,IAAlChB,KAAKuzC,eAAep8B,EAAMnW,EAAE,EAC5BhB,KAAK6vC,YAAYkD,YAAY,CAAC/yC,KAAKqwC,UAAUl5B,EAAMnW,EAAE,GAAIqyC,EAAQC,CAAU,EAEpC,IAAlCtzC,KAAKuzC,eAAep8B,EAAMnW,EAAE,GACjChB,KAAK6vC,YAAYkD,YAAY,CAAC57B,EAAMnW,IAAKqyC,EAAQC,CAAU,GAIvE5D,EAAYxvC,UAAUmyC,cAAgB,SAAUmB,GAI5C,IAqBYC,EAxBZzzC,KAAK2wC,SAAW,SAChB3wC,KAAK6vC,YAAY14B,MAAQnX,KAAK0zC,YAAY1zC,KAAKqO,OAAOslC,oBAAoB/O,OAAO3a,IAAI,SAAU7Y,GAAQ,OAAOA,EAAKwiC,OAAS,CAAC,EAC7H5zC,KAAK6vC,YAAYxd,WACbmhB,GACIK,EAAmB/lC,SAAO,cAAgB9N,KAAKiyC,OAAS,KAAMjyC,KAAKqO,OAAOuQ,qBAAqBC,QAAQ3R,OAAO,EAC7GT,oBAAMonC,CAAgB,GACvB7zC,KAAKqO,OAAOrB,UAAUhN,KAAKqO,OAAOrB,UAAUrM,OAAS,KAAOkzC,EAAiBr7B,cAAc,cAAc,EAAEY,WAA0C,mBAA7BpZ,KAAKqO,OAAOmB,aAK9G,CAAC,KADnBskC,EAAgB9zC,KAAKsyC,cAAcj9B,QAAQ,MAAM,IAEjDrV,KAAKsyC,cAAczqB,OAAOisB,EAAe,CAAC,EAL9C9zC,KAAKsyC,cAAchlC,KAAK,MAAM,EAQO,IAArCtN,KAAKqO,OAAO+B,cAAczP,QAEN,CAAC,KAAjB8yC,EADczzC,KAAKsyC,cAAcj9B,QAAQ,QAAQ,IAEjDrV,KAAKsyC,cAAczqB,OAAO4rB,EAAa,CAAC,GAId,mBAA7BzzC,KAAKqO,OAAOmB,eACwB,IAArCxP,KAAKqO,OAAO+B,cAAczP,OAEN,CAAC,KAAjB8yC,EADczzC,KAAKsyC,cAAcj9B,QAAQ,QAAQ,IAEjDrV,KAAKsyC,cAAczqB,OAAO4rB,EAAa,CAAC,EAI5CzzC,KAAKsyC,cAAchlC,KAAK,SAAU,OAAO,IAIrDoiC,EAAYxvC,UAAUkyC,YAAc,WAIhC,IACQqB,EAJRzzC,KAAK2wC,SAAW,OAChB3wC,KAAK6vC,YAAY14B,MAAQnX,KAAK0zC,YAAY1zC,KAAKqO,OAAOslC,oBAAoBx+B,KAAK8U,IAAI,SAAU7Y,GAAQ,OAAOA,EAAKwiC,OAAS,CAAC,EAC3H5zC,KAAK6vC,YAAYxd,WACwB,IAArCryB,KAAKqO,OAAO+B,cAAczP,OAEN,CAAC,KADjB8yC,EAAczzC,KAAKsyC,cAAcj9B,QAAQ,QAAQ,IAEjDrV,KAAKsyC,cAAczqB,OAAO4rB,EAAa,CAAC,EAI5CzzC,KAAKsyC,cAAchlC,KAAK,QAAQ,GAGxCoiC,EAAYxvC,UAAU2xC,cAAgB,SAAUvxC,GAC5CN,KAAK2wC,SAAW,SAChB3wC,KAAK6vC,YAAY14B,MAAQnX,KAAK0zC,YAAY1zC,KAAKqO,OAAOslC,oBAAoBI,OAAO9pB,IAAI,SAAU7Y,GAAQ,OAAOA,EAAKwiC,OAAS,CAAC,EAC7H5zC,KAAK6vC,YAAYxd,WACb,CAACryB,KAAKqO,OAAO0zB,qBAA8C,eAArB/hC,KAAKqO,OAAO0F,MAC6D,IAA9GlD,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAK6rB,EAAgB,EAAEoZ,uBAAuB94B,CAAS,EAAE9X,QAC3E,YAArBX,KAAKqO,OAAO0F,MAC8F,IAAzGlD,UAAQvQ,EAAQ,IAAMN,KAAKqO,OAAOnB,QAAQZ,GAAK0mC,EAAW,EAAEzB,uBAAuB94B,CAAS,EAAE9X,OACnGX,KAAKsyC,cAAchlC,KAAK,WAAW,EAGnCtN,KAAKsyC,cAAgBtyC,KAAKsyC,cAAcnhC,OAAO,SAAUC,GAAQ,MAAgB,cAATA,EAAuB,EAE1D,IAArCpR,KAAKqO,OAAOQ,cAAclO,QACkB,CAAC,IAAzCX,KAAKsyC,cAAcj9B,QAAQ,OAAO,GAClCrV,KAAKsyC,cAAchlC,KAAK,OAAO,EAGvCtN,KAAK6vC,YAAYxd,YAErBqd,EAAYxvC,UAAUqzC,eAAiB,SAAUS,GAC7C,OAAKvnC,oBAAMqB,SAAO,IAAM9N,KAAKqwC,UAAU2D,CAAO,EAAGh0C,KAAKqxC,cAAc,CAAC,EAG3D5kC,oBAAMqB,SAAO,IAAMkmC,EAASh0C,KAAKqxC,cAAc,CAAC,EAI/C,CAAC,EAHD,EAHA,GASf3B,EAAYxvC,UAAUyyC,gBAAkB,WACpC,IAIQ1gC,EAJR,MAAsB,WAAlBjS,KAAK2wC,SACEv9B,EAAcpT,KAAKqO,MAAM,GAG5B4D,EAAO,CAAE3R,OAAQN,KAAK6wC,YAC1B7wC,KAAKqO,OAAOW,OAAO2xB,GAAqB1uB,CAAI,EACrCjS,KAAKqO,OAAO8D,SAAS,KAIpCu9B,EAAYxvC,UAAU8vC,SAAW,SAAU/9B,GACvC,IAIIwmB,EACAjV,EAcA/M,EAnBA0kB,EAAQn7B,KACRyM,CAAAA,oBAAMwF,EAAKb,IAAI,GAAMa,EAAKb,KAAK9E,KAKlB,aAFbmsB,EAAWxmB,EAAKb,KAAK9E,GAAGskB,QAAQ5wB,KAAKqO,OAAOnB,QAAQZ,GAAK,QAAQ3L,MAAM,IAEhC,cAAb83B,GAAyC,WAAbA,GACtDjV,EAAU,CAACpQ,EAAcpT,KAAKqO,MAAM,GACpCrO,KAAKqO,OAAO8D,SAAWqR,IAGvBxjB,KAAKqO,OAAOW,OAAOixB,GAAqB,EAAE,EAEtCzc,EAD6B,mBAA7BxjB,KAAKqO,OAAOmB,cAAkD,SAAbipB,EACvC,CAACz4B,KAAKqK,cAGNrK,KAAKqO,OAAO8D,UAG1BsE,EAAY,CACZoJ,OAAQ,CAAA,EACR3S,QAAS+E,EAAK/E,QACdkJ,YAAaoN,EACbpS,KAAMa,EAAKb,MAEfpR,KAAKqO,OAAO6H,QAAQ,YAAaO,EAAW,SAAUw9B,GAClD,IAAIC,EACJ,GAAI,CAACD,EAAcp0B,OAEf,OADAsb,EAAM2V,kBAAoB,CAAA,EAClBrY,GACJ,IAAK,MACDxjB,GAASkmB,EAAM9sB,MAAM,EACrB,MACJ,IAAK,OACD0G,GAAUomB,EAAM9sB,MAAM,EACtB,MACJ,IAAK,QACsB,WAAnB8sB,EAAMwV,SAC4B,mBAA9BxV,EAAM9sB,OAAOmB,cACb2rB,EAAM9sB,OAAOuQ,qBAAqBu1B,2BAA2BtjC,UAAQsqB,EAAMiW,kBAAmB,IAAI,CAAC,EACnGjW,EAAM9sB,OAAOgO,WAAa8e,EAAM9sB,OAAO1B,MAGvCwuB,EAAM9sB,OAAOgO,WAAavF,GAAYqkB,EAAM9sB,OAAQ8sB,EAAM9wB,aAAc8wB,EAAM9sB,OAAO1B,IAAI,EAI7FwuB,EAAM9sB,OAAOgO,WAAa,GAE9BF,GAAagf,EAAM9sB,MAAM,EACzB,MACJ,IAAK,SACD,IAAK,IAAIq5B,EAAI,EAAGA,EAAIlkB,EAAQ7iB,OAAQ+mC,CAAC,GACjC,GAAI,CAACjlB,EAAce,EAAQkkB,EAAE,EAEzB,OADA/yB,KAAAA,EAAmBwmB,EAAM9sB,OAAQmV,EAAQkkB,GAAIhlB,CAAqB,EAI1E/F,EAAawe,EAAM9sB,OAAQ,QAAQ,EACnC,MAEJ,IAAK,WACD,IAAK,IAAIrN,EAAI,EAAGA,EAAIwiB,EAAQ7iB,OAAQK,CAAC,GACjC,GAAI,CAAC4hB,GAAkBY,EAAQxiB,EAAE,EAE7B,OADA2T,KAAAA,EAAmBwmB,EAAM9sB,OAAQmV,EAAQxiB,GAAI6hB,EAAyB,EAI5C,mBAA9BsY,EAAM9sB,OAAOmB,aACb2rB,EAAM9sB,OAAOW,OAAOolC,GAAqB,EAAE,EAEF,EAApCjZ,EAAM9sB,OAAO+B,cAAczP,QAChCmiB,GAASqY,EAAM9sB,OAAQ8sB,EAAM9sB,OAAO1B,KAAMwuB,EAAM9sB,OAAO+B,aAAa,EAExE,MACJ,IAAK,SACIqS,EAAce,EAAQ,EAAE,GAIzB2X,EAAM9sB,OAAOW,OAAOwxB,GAAmB,EAAE,EACzC7jB,EAAawe,EAAM9sB,OAAQ,QAAQ,GAJnCsG,EAAmBwmB,EAAM9sB,OAAQmV,EAAQ,GAAId,CAAqB,EAMtE,MACJ,IAAK,YAEDyY,EAAM9sB,OAAOW,OAAOyxB,GAAsB,EAAE,EAC5C,MACJ,IAAK,UACDjsB,GAAQ2mB,EAAM9sB,MAAM,EACpB,MACJ,IAAK,OACG8sB,EAAM9sB,OAAOopB,aAA6C,mBAA9B0D,EAAM9sB,OAAOmB,aACzC2rB,EAAM9sB,OAAOW,OAAOkxB,GAAiB,CAAE5/B,OAAQ66B,EAAM9sB,OAAOopB,YAAa,EAEtC,mBAA9B0D,EAAM9sB,OAAOmB,eACd2rB,EAAM9sB,OAAOopB,aACb0D,EAAM9sB,OAAOW,OAAOkxB,GAAiB,CAAE5/B,OAAQ66B,EAAM9sB,OAAOopB,YAAa,EAE7E0D,EAAM9sB,OAAOuQ,qBAAqBu1B,2BAA2BtjC,UAAQsqB,EAAMiW,kBAAmB,IAAI,CAAC,GAEvG,MACJ,IAAK,UACDjW,EAAM9sB,OAAOW,OAAOoyB,EAAoB,EAAE,EAC1C8S,EAAS/Y,EAAM9sB,OAAO+B,cACY,mBAA9B+qB,EAAM9sB,OAAOmB,eACb0kC,EAAS,GACT/Y,EAAM9sB,OAAOuQ,qBAAqBu1B,2BAA2BtjC,UAAQsqB,EAAMiW,kBAAmB,IAAI,CAAC,GAEvGvrB,GAAWsV,EAAM9sB,OAAQ6lC,EAAQ/Y,EAAM9sB,OAAO1B,KAAM,SAAS,EAC7D,MACJ,IAAK,YACD4W,GAAgB4X,EAAM9sB,MAAM,EAC5B,MACJ,IAAK,SACDqV,GAAWyX,EAAM9sB,MAAM,EACvB,MACJ,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,YACL,IAAK,aAKL,IAAK,OAEDqM,GAAmBygB,EAAM9sB,OAAQ4D,CAAI,EACrC,MAEJ,IAAK,iBACD6B,GAAaqnB,EAAM9sB,OAAQ,YAAY,EACvC,MAEJ,IAAK,cACDyF,GAAaqnB,EAAM9sB,OAAQ,SAAS,GAInD,IAELqhC,EAAYxvC,UAAUkgC,kBAAoB,SAAUhS,GAChD,GAAIA,EAAEtT,SAAW9a,KAAKw8B,iBAAgC,WAAbpO,EAAEtT,OAI3C,IAAK,IAAI8mB,EAAK,EAAGC,EAAKtiC,OAAO4iB,KAAKiM,EAAE0T,OAAO,EAAGF,EAAKC,EAAGlhC,OAAQihC,CAAE,GAGnD,aAFEC,EAAGD,KAGN5hC,KAAK6vC,YAAYp1B,SAAWF,GAAYva,KAAKqO,OAAQ0jB,EAAc,IAKnF2d,EAAYxvC,UAAUu6B,iBAAmB,WACrCz6B,KAAKqO,OAAOqzB,GAAG4N,GAAgBtvC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOqzB,GAAGvB,EAAqBngC,KAAKogC,kBAAmBpgC,IAAI,EAChEA,KAAKiiC,eAAiB,IAAIC,iBAAeliC,KAAK6vC,YAAY3iC,QAAS,CAC/Di1B,UAAWniC,KAAKoiC,iBAAiBjS,KAAKnwB,IAAI,EAC1CqiC,WAAYriC,KAAKqiC,WACjB3mB,UAAW,UACd,GAELg0B,EAAYxvC,UAAU83B,oBAAsB,WACxCh4B,KAAKqO,OAAO2xB,IAAIsP,GAAgBtvC,KAAKoJ,OAAO,EAC5CpJ,KAAKqO,OAAO2xB,IAAIG,EAAqBngC,KAAKogC,iBAAiB,EAC3DpgC,KAAKiiC,eAAe74B,WAExBsmC,EAAYxvC,UAAUkiC,iBAAmB,SAAUhU,GAC/C,OAAQA,EAAEjf,QACN,IAAK,UACL,IAAK,YACDif,EAAEkH,mBASdoa,EAAYxvC,UAAUs8B,cAAgB,WAClC,MAAO,eAEXkT,EAAYxvC,UAAUkJ,QAAU,WACxBpJ,KAAKqO,OAAO0xB,cAGhB//B,KAAKg4B,sBACLh4B,KAAK6vC,YAAYzmC,UACjBpJ,KAAKyxC,cAAgB,OAGzB/B,EAAYxvC,UAAUwzC,YAAc,SAAUrxC,GAE1C,IADA,IAAI8U,EAAQ,GACHnW,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAAI,CAClC,IAAIoQ,EAAO,KAAA,EACP+hC,EAASnzC,KAAKqwC,UAAUhuC,EAAKrB,EAAE,EAC/By3B,EAAWpf,EAAcrZ,KAAKqO,OAAQhM,EAAKrB,EAAE,EACjD,OAAQqB,EAAKrB,IACT,IAAK,IACDoQ,EAAO,CAAEijC,UAAW,CAAA,GACpB,MACJ,IAAK,OACDjjC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAASwb,IAC9C,MACJ,IAAK,SACDljC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAASyb,IAC9C,MACJ,IAAK,MACDnjC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAAS0b,IAC9C,MACJ,IAAK,OACDpjC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAAS2b,IAC9C,MACJ,IAAK,QACDrjC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAAS4b,IAC9C,MACJ,IAAK,SACDtjC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAAS6b,IAC9C,MACJ,IAAK,SACDvjC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAAS8b,IAC9C,MACJ,IAAK,YACDxjC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAAS+b,IAC9C,MACJ,IAAK,UACDzjC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAASgc,IAC9C,MACJ,IAAK,SACD1jC,EAAO,CACH9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAASic,GACrC59B,MAAO,CACH,CACI7K,GAAItM,KAAKqwC,UAAU,MAAM,EAAGjkC,KAAMiN,EAAcrZ,KAAKqO,OAAQ,MAAM,EACnEyqB,QAAgC,SAAvB94B,KAAKqO,OAAOkJ,OAAoBy9B,GAAoB,MAEjE,CACI1oC,GAAItM,KAAKqwC,UAAU,MAAM,EAAGjkC,KAAMiN,EAAcrZ,KAAKqO,OAAQ,MAAM,EACnEyqB,QAAgC,SAAvB94B,KAAKqO,OAAOkJ,OAAoBy9B,GAAoB,MAEjE,CACI1oC,GAAItM,KAAKqwC,UAAU,MAAM,EAAGjkC,KAAMiN,EAAcrZ,KAAKqO,OAAQ,cAAc,EAC3EyqB,QAAgC,iBAAvB94B,KAAKqO,OAAOkJ,OAA4By9B,GAAoB,MAEzE,CAAEX,UAAW,CAAA,GACb,CACI/nC,GAAItM,KAAKqwC,UAAU,WAAW,EAAGjkC,KAAMiN,EAAcrZ,KAAKqO,OAAQ,WAAW,EAC7EyqB,QAAmC,cAA1B94B,KAAKqO,OAAOgJ,UAA4B49B,EAAqB,MAE1E,CACI3oC,GAAItM,KAAKqwC,UAAU,YAAY,EAAGjkC,KAAMiN,EAAcrZ,KAAKqO,OAAQ,YAAY,EAC/EyqB,QAAmC,eAA1B94B,KAAKqO,OAAOgJ,UAA6B49B,EAAqB,MAE3E,CACI3oC,GAAItM,KAAKqwC,UAAU,MAAM,EAAGjkC,KAAMiN,EAAcrZ,KAAKqO,OAAQ,MAAM,EACnEyqB,QAAmC,SAA1B94B,KAAKqO,OAAOgJ,UAAuB49B,EAAqB,QAI7E,MAEJ,IAAK,OACD7jC,EAAO,CACH9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAA8B,YAArB94B,KAAKqO,OAAO0F,KAAqBy8B,GAAgBF,GACtFn5B,MAAO,CACH,CACI7K,GAAItM,KAAKqwC,UAAU,gBAAgB,EAAGjkC,KAAMiN,EAAcrZ,KAAKqO,OAAQ,iBAAiB,EACxFyqB,QAA8B,YAArB94B,KAAKqO,OAAO0F,KAAqB,KAAOkhC,GAErD,CACI3oC,GAAItM,KAAKqwC,UAAU,aAAa,EAAGjkC,KAAMiN,EAAcrZ,KAAKqO,OAAQ,cAAc,EAClFyqB,QAA8B,YAArB94B,KAAKqO,OAAO0F,KAAqBkhC,EAAqB,QAI3E,MACJ,IAAK,UACD7jC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAASoc,IAC9C,MACJ,IAAK,YACD9jC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAASqc,IAC9C,MAEJ,IAAK,WACD/jC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUK,QAASsc,IAC9C,MAEJ,QACIhkC,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,GAGnCthB,EAAM7J,KAAK8D,CAAI,EAEnB,OAAO+F,GAEXu4B,EAAYxvC,UAAUmwC,UAAY,SAAU/jC,GACxC,OAAOtM,KAAKqO,OAAOnB,QAAQZ,GAAK,OAASA,EAAGgJ,MAAM,GAAG,EAAEC,KAAK,EAAE,EAAEvC,mBA1pBpE08B,GA4pBOA,EArpBP,SAASA,EAAYrhC,GACjBrO,KAAK8wC,kBAAoB,CAAA,EACzB9wC,KAAK6yC,aAAe,GACpB7yC,KAAKqxC,eAAiB,KACtBrxC,KAAKsyC,cAAgB,GACrBtyC,KAAKqO,OAASA,EACdrO,KAAKw3B,SCvBN,ICFCp4B,GAqDmCS,GA8wCnCw1C,GDj0CGC,GAAgB,CACvBC,UAAa,aACbC,OAAU,SACVvyB,OAAU,SACVwyB,OAAU,SACV3yB,SAAY,WACZ4yB,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,UAChBhlC,OAAU,SACVilC,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,oCACpB,ECnGIj7C,GACIV,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GAEtB,SAAUD,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,KAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAoCIo6C,GAAuCn7C,GAm9CzCo7C,YAl9CEn7C,EAAUk7C,EAAan7C,EAAM,GAoD7Bw1C,GAAgB2F,GAOJ96C,UAAUs8B,cAAgB,WAClC,MAAO,eAOXwe,EAAY96C,UAAUg7C,UAAY,WAC1BzuC,CAAAA,oBAAMzM,KAAKkN,QAAQZ,EAAE,GAAyB,KAApBtM,KAAKkN,QAAQZ,IACvCtM,KAAKkN,QAAQ2qB,aAAa,KAAMsjB,cAAY,aAAa,CAAC,EAE9Dn7C,KAAKo7C,aACLp7C,KAAKyO,SAAW,GAChBzO,KAAK4X,QAAU,GACfyjC,oBAAQr7C,KAAKkN,QAAS,CAAE/K,MAASm5C,aAAWt7C,KAAKmC,KAAK,EAAGm0B,OAAUglB,aAAWt7C,KAAKs2B,MAAM,EAAG,EAC5Ft2B,KAAKgjC,SAAWuY,UAAQvY,SACxBhjC,KAAK4a,SAAW5a,KAAKw7C,cACjBx7C,KAAK4a,UACL5a,KAAK0M,cAAc,CAAE+uC,uBAAwB,CAAE1vB,QAAS,CAAA,IAAW,CAAA,CAAI,EAE3E,IAAIxM,EAAM1O,UAAQ7Q,KAAKkN,QAAS,WAAW,EAC3ClN,KAAK07C,SAAWn8B,CAAAA,CAAAA,EAChBvf,KAAKwP,aAA8B,eAAdxP,KAAK+T,KAAyB,iBAAmB,cACtE4nC,gBAAc,CAAEr7C,OAAQN,KAAKkN,SAAWyL,eAAa,EACrD3Y,KAAK47C,aACL57C,KAAKqiC,WAAa,CACdwZ,KAAM,QACNC,GAAI,KACJC,WAAY,eACZC,WAAY,eACZC,MAAO,UAEXj8C,KAAKqa,UAAY,IAAI6hC,OAAKl8C,KAAKw8B,gBAAiB8Y,GAAet1C,KAAKoa,MAAM,GAQ9E4gC,EAAY96C,UAAUi8C,eAAiB,WAEnC,OAAOn8C,KAAKo8C,aADI,CAAC,OAAQ,OAAQ,gBACC,GAQtCpB,EAAY96C,UAAUm8C,gBAAkB,WACpC,IAAIC,EAAU,GA4Cd,OA3CAA,EAAQhvC,KAAK,CACTivC,OAAQ,gBACRtqC,KAAM,CAACjS,MACV,EACDs8C,EAAQhvC,KAAK,CACTivC,OAAQ,iBACRtqC,KAAM,CAACjS,MACV,EACGA,KAAKw8C,gBAAgBzwB,SACrBuwB,EAAQhvC,KAAK,CACTivC,OAAQ,UACRtqC,KAAM,CAACjS,MACPiX,KAAM,UACT,EAEDjX,KAAKy7C,uBAAuB1vB,SAC5BuwB,EAAQhvC,KAAK,CACTivC,OAAQ,iBACRtqC,KAAM,CAACjS,MACPiX,KAAM,iBACT,EAEDjX,KAAK+T,MACLuoC,EAAQhvC,KAAK,CACTivC,OAAQ,cACRtqC,KAAM,CAACjS,MACPiX,KAAM,cACT,EAEDjX,KAAK2zC,oBAAoB5nB,SAAW,CAAC/rB,KAAKgjC,UAC1CsZ,EAAQhvC,KAAK,CACTivC,OAAQ,cACRtqC,KAAM,CAACjS,MACPiX,KAAM,cACT,EAEDjX,KAAKw5B,sBACL8iB,EAAQhvC,KAAK,CACTivC,OAAQ,iBACRtqC,KAAM,CAACjS,MACPiX,KAAM,iBACT,EAEEqlC,GAQXtB,EAAY96C,UAAUs3B,OAAS,WAC3Bx3B,KAAKy8C,aACL,IAAIC,EAAUjwC,oBAAMzM,KAAKoQ,aAAa,EAAI,GACtCpQ,KAAK+hC,oBAAsB/hC,KAAKoQ,cAAgBpQ,KAAKoQ,cAAcmB,MAAMvR,KAAKoQ,cAAczP,OAAS,CAAC,EAC1GX,KAAK0M,cAAc,CAAE0D,cAAessC,GAAW,CAAA,CAAI,EACnD18C,KAAK28C,SAAW38C,KAAK+T,KACrB/T,KAAK4jC,MAA2D,GAAnDgZ,UAAUC,SAASC,cAAcznC,QAAQ,KAAK,EAC3DrV,KAAK+8C,OAAO/8C,KAAKgyB,SAAS,EAC1BhyB,KAAKg9C,oBACL5qC,EAAKpS,KAAOA,KAAK2M,OAAS3M,KAAKwb,aAAgBI,GAAoBD,EAAoB3b,KAAK2M,IAAI,EAC1E,YAAlB3M,KAAK28C,UACL38C,KAAK4T,qBAAqB1G,QAAQe,UAAUqC,IAAIipB,EAAgB,EAEpEv5B,KAAKi9C,eACDxwC,oBAAMzM,KAAK4e,oBAAoB,IAC/B5e,KAAKk9C,YAAYC,SAASn9C,KAAKgyB,UAAY,EAAI,CAAC,EACtClkB,SAAO,IAAMsvC,GAAep9C,KAAKkN,OAAO,EAC9Ce,UAAUqC,IAAIipB,EAAgB,GAEtCv5B,KAAK06B,aACL16B,KAAKq9C,kBAETrC,EAAY96C,UAAUk7C,WAAa,WAC/B,IAAI5M,EAAcxuC,KAAK2M,KAQnBy+B,IANAoD,EADA/hC,oBAAM+hC,CAAW,EACH,IAEdA,GAAYtzB,YAAY,GAAG,IAAOszB,EAAY7tC,OAAS,IACvD6tC,GAA4B,MAEhCxuC,KAAKwb,aAAegzB,GACIl5B,MAAM,GAAG,GACjCtV,KAAK0M,cAAc,CAAEC,KAAMy+B,EAAM,GAAK,KAAO,CAAA,CAAI,EACjDprC,KAAKgN,UAAY,GACjBhN,KAAK8M,OAAS,CAAC,WACf9M,KAAKmS,SAAW,IAEpB6oC,EAAY96C,UAAUu8C,WAAa,WAC3Bz8C,KAAK4a,UACL6oB,WAAS,CAACzjC,KAAKkN,SAAUowC,EAAU,EAEnCt9C,KAAK+hC,qBACL0B,WAAS,CAACzjC,KAAKkN,SAAUqwC,EAAgB,EAE7Cv9C,KAAKw9C,YAAY,KAAMx9C,KAAKya,QAAQ,EACpCza,KAAKy9C,oBAETzC,EAAY96C,UAAU07C,WAAa,WAC/B,IAAI8B,EAAa19C,KAAK2Y,cAAc,MAAO,CAAErM,GAAItM,KAAKkN,QAAQZ,GAAKslC,GAAgB,EAE/E+L,GADJ39C,KAAKkN,QAAQgM,YAAYwkC,CAAU,EAClB19C,KAAK2Y,cAAc,MAAO,CACvCrM,GAAItM,KAAKkN,QAAQZ,GAAK2L,GAAeW,UAAWglC,GACnD,GAEGC,GADJ79C,KAAKkN,QAAQgM,YAAYykC,CAAU,EACd39C,KAAK2Y,cAAc,MAAO,CAC3CrM,GAAItM,KAAKkN,QAAQZ,GAAKwxC,GAAmBllC,UAAWmlC,GACvD,GACGC,EAAWh+C,KAAK2Y,cAAc,MAAO,CACrCrM,GAAItM,KAAKkN,QAAQZ,GAAK0lC,GACzB,EAEGiM,GADJJ,EAAe3kC,YAAY8kC,CAAQ,EACjBh+C,KAAK2Y,cAAc,MAAO,CACxCrM,GAAItM,KAAKkN,QAAQZ,GAAK8T,GAAgBxH,UAAWslC,GACpD,GAMGC,GALJn+C,KAAK4rC,wBAA0B5rC,KAAK2Y,cAAc,MAAO,CACrDrM,GAAItM,KAAKkN,QAAQZ,GAAK6L,GACtBS,UAAWwlC,GACd,EACDH,EAAY/kC,YAAYlZ,KAAK4rC,uBAAuB,EACrC5rC,KAAK2Y,cAAc,MAAO,CACrCrM,GAAItM,KAAKkN,QAAQZ,GAAK0mC,GACzB,GAEGqL,GADJJ,EAAY/kC,YAAYilC,CAAQ,EACZn+C,KAAK2Y,cAAc,MAAO,CAC1CrM,GAAItM,KAAKkN,QAAQZ,GAAK6rB,GACtBvf,UAAWtE,GAAiBkZ,MAAO,CAAE8wB,KAAQ,SAChD,GAEGC,GADJN,EAAY/kC,YAAYmlC,CAAa,EACvBr+C,KAAK2Y,cAAc,OAAQ,CAAEC,UAAW4lC,GAAa,GAkC/DC,GAjCJR,EAAY/kC,YAAYqlC,CAAO,EAgB3BG,EAdC1+C,KAAKgyB,WAYN2rB,EAAWzkC,YAAY+kC,CAAW,EAClCN,EAAWzkC,YAAY2kC,CAAc,EACtB,CACX,CAAEv7C,KAAM,MAAOq8C,IAAK,SACpB,CACIr8C,KAAM,MAAOq8C,IAAK3+C,KAAKy7C,uBAAuB55C,SAAS2M,WACvDowC,IAAK5+C,KAAKy7C,uBAAuBoD,SAASrwC,eAjBlDmvC,EAAWzkC,YAAY2kC,CAAc,EACrCF,EAAWzkC,YAAY+kC,CAAW,EACnB,CACX,CACI37C,KAAM,MAAOq8C,IAAK3+C,KAAKy7C,uBAAuB55C,SAAS2M,WACvDowC,IAAK5+C,KAAKy7C,uBAAuBoD,SAASrwC,YAE9C,CAAElM,KAAM,MAAOq8C,IAAK,WAc5B3+C,KAAKk9C,YAAc,IAAI4B,WAAS,CAC5BJ,aAAcA,EACdv8C,MAAO,OACP6vB,UAAW,CAAA,EACXC,oBAAqBjyB,KAAKiyB,oBAC1B0E,SAAU32B,KAAKkJ,eAAeinB,KAAKnwB,IAAI,EAC1C,EACDA,KAAKk9C,YAAYhrB,iBAAmB,CAAA,EACpClyB,KAAKk9C,YAAY/qB,SAASwrB,CAAU,EACnB39C,KAAK2Y,cAAc,MAAO,CAAErM,GAAItM,KAAKkN,QAAQZ,GAAK8lB,GAAe,GAE9E2sB,GADJ/+C,KAAKkN,QAAQgM,YAAYulC,CAAU,EACpBz+C,KAAK2Y,cAAc,KAAM,CAAErM,GAAItM,KAAKkN,QAAQZ,GAAK6jC,GAAqB,GAEjF6O,GADJh/C,KAAKkN,QAAQgM,YAAY6lC,CAAQ,EACb/+C,KAAK2Y,cAAc,MAAO,CAAErM,GAAItM,KAAKkN,QAAQZ,GAAKuqB,GAAmB,GAErFooB,GADJj/C,KAAKkN,QAAQgM,YAAY8lC,CAAa,EACjBh/C,KAAK2Y,cAAc,MAAO,CAAErM,GAAItM,KAAKkN,QAAQZ,GAAKwnB,GAAoB,GAEvForB,GADJl/C,KAAKkN,QAAQgM,YAAY+lC,CAAc,EAChBj/C,KAAK2Y,cAAc,MAAO,CAAErM,GAAItM,KAAKkN,QAAQZ,GAAK6yC,GAAsB,GAC/Fn/C,KAAKkN,QAAQgM,YAAYgmC,CAAgB,GAE7ClE,EAAY96C,UAAU+8C,aAAe,WACjC,IAAImC,EAAUtxC,SAAO,IAAM9N,KAAKkN,QAAQZ,GAAKslC,GAAgB5xC,KAAKkN,OAAO,EACrEmyC,EAAgBD,EAAUA,EAAQhnC,aAAe,EACjDpY,KAAKk9C,cACLl9C,KAAKk9C,YAAY5mB,QAAUt2B,KAAKkN,QAAQsU,aAAe69B,GAAe7wC,WACtExO,KAAKk9C,YAAY7qB,aAIzB2oB,EAAY96C,UAAUgJ,eAAiB,WACnClJ,KAAKgP,OAAO6xB,GAAuB,EAAE,GAEzCma,EAAY96C,UAAUo/C,eAAiB,WACnC,IAAIC,EAAMzxC,SAAO,IAAMsvC,GAAep9C,KAAKkN,OAAO,EAC9ClN,KAAKy7C,uBAAuB1vB,SAC5B/rB,KAAKk9C,YAAYsC,OAAOx/C,KAAKgyB,UAAY,EAAI,CAAC,EAC9CutB,EAAItxC,UAAU0C,OAAO4oB,EAAgB,IAGrCv5B,KAAKk9C,YAAYC,SAASn9C,KAAKgyB,UAAY,EAAI,CAAC,EAChDutB,EAAItxC,UAAUqC,IAAIipB,EAAgB,IAG1CyhB,EAAY96C,UAAUs9C,YAAc,SAAUiC,EAAQC,GAC7CjzC,oBAAMgzC,CAAM,GAAgB,KAAXA,GAClBhb,cAAY,CAACzkC,KAAKkN,SAAUuyC,EAAOnqC,MAAM,GAAG,CAAC,EAE5C7I,oBAAMizC,CAAM,GAAgB,KAAXA,GAClBjc,WAAS,CAACzjC,KAAKkN,SAAUwyC,EAAOpqC,MAAM,GAAG,CAAC,GAGlD0lC,EAAY96C,UAAUy3B,YAAc,WAChCA,cAAY33B,KAAKkN,OAAO,GAE5B8tC,EAAY96C,UAAU46B,YAAc,WAChCA,cAAY96B,KAAKkN,OAAO,GAE5B8tC,EAAY96C,UAAUy/C,cAAgB,SAAUvxB,GAC5CA,EAAEkH,kBAEN0lB,EAAY96C,UAAUs7C,YAAc,WAChC,MAAQ,kFAAkF3lB,KAAK0lB,UAAQqE,UAAU5sC,aAAa,GACvH,UAAU6iB,KAAK0lB,UAAQqE,UAAU5sC,aAAa,GAEzDgoC,EAAY96C,UAAUu9C,iBAAmB,WACrC,IAAInxC,EAAKtM,KAAKkN,QAAQZ,GAAKsX,GACvBi8B,EAAY7/C,KAAK2Y,cAAc,QAAS,CAAErM,GAAIA,EAAIkhB,MAAO,CAAEvW,KAAM,cAAehV,KAAM,QAAU,EACpGjC,KAAKkN,QAAQgM,YAAY2mC,CAAS,EAClC7/C,KAAK8/C,gBAAkB,IAAI5uB,SAAO,CAC9BjC,OAAQ5V,EAAcrZ,KAAM,eAAe,EAC3CkvB,QAAS2wB,EACTtuB,kBAAmB,CAAEC,OAAQ,QAC7BC,cAAe,CAAA,EACfC,cAAe,CAAA,EACf3F,QAAS,CAAA,EACT6F,QAAS,CAAA,EACTzvB,MAAO,QACP7B,OAAQN,KAAK6xB,aAAiC,IAAM7xB,KAAKkN,QAAQZ,GACjEmO,SAAUF,GAAYva,KAAMA,KAAK4a,SAAWkX,GAAgBC,EAAc,EAC1E3X,OAAQpa,KAAKoa,OACbuX,cAAe,CAAA,EACftQ,SAAU,CAAEmV,EAAG,SAAUC,EAAG,UAC5BzE,UAAWhyB,KAAKgyB,UAChBC,oBAAqBjyB,KAAKiyB,oBAC1B5C,KAAMrvB,KAAK+/C,OAAO5vB,KAAKnwB,IAAI,EAC3BuvB,MAAOvvB,KAAKggD,QAAQ7vB,KAAKnwB,IAAI,EAC7BmxB,WAAYnxB,KAAKiwC,aAAa9f,KAAKnwB,IAAI,EACvCqxB,YAAarxB,KAAKkwC,cAAc/f,KAAKnwB,IAAI,EAC5C,EACDA,KAAK8/C,gBAAgB3tB,SAAS,IAAMnyB,KAAKkN,QAAQZ,GAAK6yC,EAAoB,EAC1En/C,KAAKigD,mBAETjF,EAAY96C,UAAU+/C,gBAAkB,WACpC,IAAIC,EAAYlgD,KAAKsW,aAAa4pC,WAA0ClgD,KAAKsW,aAAaC,IAC9FvW,KAAKkgB,UAAY,IAAIigC,WAAS,CAC1BhgC,SAAUrS,SAAO,IAAM9N,KAAKkN,QAAQZ,GAAK8T,GAAgBpgB,KAAKkN,OAAO,EACrEkzC,cAAe,CACXC,QAASH,EACTI,UAAWJ,EACXK,UAAWvgD,KAAKwgD,eAAeD,UAC/BE,WAAY,GAEhBrmC,OAAQpa,KAAKoa,OACb4X,UAAWhyB,KAAKgyB,UAChB0uB,UAAW1gD,KAAK2gD,YAAYxwB,KAAKnwB,IAAI,EACrC4gD,eAAgB5gD,KAAK6gD,iBAAiB1wB,KAAKnwB,IAAI,EAC/C8gD,SAAU9gD,KAAK+gD,WAAW5wB,KAAKnwB,IAAI,EACnCghD,UAAWhhD,KAAKihD,SAAS9wB,KAAKnwB,IAAI,EAClCkhD,SAAUlhD,KAAKmhD,WAAWhxB,KAAKnwB,IAAI,EACnC49B,SAAU59B,KAAKohD,WAAWjxB,KAAKnwB,IAAI,EACnCqhD,QAASrhD,KAAKshD,gBAAgBnxB,KAAKnwB,IAAI,EACvCuhD,QAASvhD,KAAKwhD,gBAAgBrxB,KAAKnwB,IAAI,EACvCyhD,WAAYzhD,KAAKwgD,eAAeiB,WAChCC,YAAa1hD,KAAKwgD,eAAekB,YACjCC,YAAa3hD,KAAKwgD,eAAemB,YACjCC,kBAAmB5hD,KAAKwgD,eAAeoB,kBACvCC,gBAAiB7hD,KAAKwgD,eAAeqB,gBACrCC,kBAAmB9hD,KAAK+hD,iBAAiB5xB,KAAKnwB,IAAI,EACrD,EACDA,KAAKkgB,UAAUiS,SAAS,IAAMnyB,KAAKkN,QAAQZ,GAAKsX,EAAa,GAEjEo3B,EAAY96C,UAAU6hD,iBAAmB,SAAU9vC,GAC/CjS,KAAKkW,QAAQ,mBAAoBjE,CAAI,GAEzC+oC,EAAY96C,UAAU8hD,eAAiB,WACnChiD,KAAKkgB,UAAUuhC,WAAazhD,KAAKwgD,eAAeiB,WAChDzhD,KAAKkgB,UAAUwhC,YAAc1hD,KAAKwgD,eAAekB,YACjD1hD,KAAKkgB,UAAUyhC,YAAc3hD,KAAKwgD,eAAemB,YACjD3hD,KAAKkgB,UAAU0hC,kBAAoB5hD,KAAKwgD,eAAeoB,kBACvD5hD,KAAKkgB,UAAU2hC,gBAAkB7hD,KAAKwgD,eAAeqB,gBACrD7hD,KAAKkgB,UAAUmS,YAEnB2oB,EAAY96C,UAAU+vC,aAAe,SAAUh+B,GAC3C,IAAIwE,EAAY,CACZoJ,OAAQ5N,EAAK4N,OAAQoU,UAAW,SAAUC,YAAal0B,KAAK8/C,iBAEhE9/C,KAAKkW,QAAQ,kBAAmBO,EAAW,SAAU0d,GACjDliB,EAAK4N,OAASsU,EAAUtU,OAC3B,GAELm7B,EAAY96C,UAAUgwC,cAAgB,SAAUj+B,GAC5C,IAAIwE,EAAY,CACZoJ,OAAQ5N,EAAK4N,OAAQoU,UAAW,SAAUC,YAAal0B,KAAK8/C,iBAEhE9/C,KAAKkW,QAAQ,mBAAoBO,EAAW,SAAU0d,GAClDliB,EAAK4N,OAASsU,EAAUtU,OAC3B,GAELm7B,EAAY96C,UAAU6/C,OAAS,WAC3B//C,KAAKiiD,SAAW,CAAA,EAChBjiD,KAAK8/C,gBAAgB5yC,QAAQ+iB,QAC7B,IAAIhe,EAAO,CACPiiB,YAAal0B,KAAK8/C,gBAAiB7rB,UAAW,SAC9C/mB,QAASlN,KAAK8/C,gBAAgB5yC,SAElClN,KAAKkW,QAAQ,YAAajE,CAAI,GAElC+oC,EAAY96C,UAAU8/C,QAAU,WAC5BhgD,KAAKiiD,SAAW,CAAA,EAChBjiD,KAAKkgB,UAAUgiC,WACf,IAAIjwC,EAAO,CACPiiB,YAAal0B,KAAK8/C,gBAAiB7rB,UAAW,SAC9C/mB,QAASlN,KAAK8/C,gBAAgB5yC,SAElClN,KAAKkW,QAAQ,aAAcjE,CAAI,GAGnC+oC,EAAY96C,UAAU2gD,iBAAmB,SAAU5uC,GAC/C,IAAI9C,EAAS,OACb,GAA+B,IAA1BnP,KAAKu0B,UAAU5zB,OAChB,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKu0B,UAAU5zB,OAAQK,CAAC,GACpCiR,EAAKiV,SAASjQ,OAASjX,KAAKu0B,UAAUvzB,GAAGmU,KAAK8B,OAC9C9H,EAASnP,KAAKu0B,UAAUvzB,GAAGmO,QAIvC,IAAI9M,EAAO+mB,KAAKC,UAAUhd,WAASrM,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAAIX,KAAKyO,QAAQ,CAAC,EACtFwD,EAAKkwC,eAAiB,CAAC,CAAEx1C,KAAQ3M,KAAK2M,MAAQ,CAAErK,KAAQ2P,EAAKiV,SAAS5kB,MAAQ,CAAE6M,OAAUA,GAAU,CAAE9M,KAAQA,GAAQ,CAAE+/C,SAAYnwC,EAAKiV,SAASjQ,QAGtJ+jC,EAAY96C,UAAUygD,YAAc,SAAU1uC,GAC1C,IAAI9C,EAAS,OACb,GAA+B,IAA1BnP,KAAKu0B,UAAU5zB,OAChB,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKu0B,UAAU5zB,OAAQK,CAAC,GACpCiR,EAAKiV,SAASjQ,OAASjX,KAAKu0B,UAAUvzB,GAAGmU,KAAK8B,OAC9C9H,EAASnP,KAAKu0B,UAAUvzB,GAAGmO,OACW,IAAlCnP,KAAKwgD,eAAeD,aACpBvgD,KAAKu0B,UAAU1M,OAAO7mB,EAAG,CAAC,EAC1BA,EAAIhB,KAAKu0B,UAAU5zB,QAKnC,IAAI0B,EAAO+mB,KAAKC,UAAUhd,WAASrM,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAAIX,KAAKyO,QAAQ,CAAC,EACtFwD,EAAKkwC,eAAiB,CAAC,CAAEx1C,KAAQ3M,KAAK2M,MAAQ,CAAErK,KAAQ2P,EAAKiV,SAAS5kB,MAAQ,CAAE6M,OAAUA,GAAU,CAAE9M,KAAQA,GAAQ,CAAE+/C,SAAYnwC,EAAKiV,SAASjQ,OAE9IX,EAAe,CACfC,IAFYvW,KAAKsW,aAAa4pC,WAA0ClgD,KAAKsW,aAAaC,IAG1FtU,KAAM,OACNgnB,KAAM,CAAA,EACNC,SAAU,KACVC,YAAa,KACb9mB,KAAM+mB,KAAKC,UAAUpX,EAAKkwC,cAAc,EACxC74B,UAAW,KACXC,UAAW,KACXC,WAAY,MAEhBxpB,KAAKqiD,gBAAkB,CAAElzC,OAAQ,SAAUmH,aAAcA,EAAcuJ,OAAQ,CAAA,GAC/E7f,KAAKkW,QAAQ,aAAclW,KAAKqiD,gBAAiB,SAAUA,GACvDpwC,EAAKkwC,eAAiB/4B,KAAK0B,MAAMze,WAAS,OAAQg2C,EAAgB/rC,YAAY,CAAC,EAC/ErE,EAAK4N,OAASwiC,EAAgBxiC,OAC9B,IAAIpJ,EAAY,CACZoJ,OAAQ,CAAA,EACRyiC,YAAarwC,EAAKswC,gBAE8C,YAAhE,OAAOl2C,WAAS,aAAcg2C,EAAgB/rC,YAAY,IAC1DjK,WAAS,aAAcg2C,EAAgB/rC,YAAY,EAAEG,CAAS,EAC1DpK,WAAS,SAAUoK,CAAS,KAC5BxE,EAAK4N,OAASxT,WAAS,SAAUoK,CAAS,GAGrD,GAELukC,EAAY96C,UAAU6gD,WAAa,WAC/B/gD,KAAKwiD,oBAAoB,CAAEvkC,MAAO,EAAG,EACQ,IAAzCje,KAAKkgB,UAAUuiC,eAAe9hD,QAC9BX,KAAK8/C,gBAAgB77B,QAI7B+2B,EAAY96C,UAAU+gD,SAAW,SAAUhvC,GACvC,IAAI5P,EAAO+mB,KAAKC,UAAUhd,WAASrM,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAAIX,KAAKyO,QAAQ,CAAC,EACtFwD,EAAKkwC,eAAiB,CAAC,CAAEx1C,KAAQ3M,KAAK2M,MAAQ,CAAEwC,OAAU,UAAY,CAAE9M,KAAQA,KAGpF24C,EAAY96C,UAAUihD,WAAa,WAC3BnhD,KAAKiiD,UACLjiD,KAAK8/C,gBAAgB77B,QAI7B+2B,EAAY96C,UAAUkhD,WAAa,SAAUnvC,GACzC,IAKIuR,EAL0B,IAA1BvR,EAAKywC,UAAU/hD,SAGnBX,KAAK2iD,eAAiB1wC,EAAKywC,UAAU/hD,OACrCX,KAAK4iD,cAAgB,EAEhBt/B,GADDE,EAAUpQ,EAAcpT,IAAI,CACJ,EAK5BA,KAAK8/C,gBAAgBxtB,QAJjBrgB,EAAK4N,OAAS,CAAA,EACdlL,EAAmB3U,KAAMwjB,EAASM,EAAuB,KAKjEk3B,EAAY96C,UAAUsiD,oBAAsB,SAAUvwC,GAClDjS,KAAK4iD,cAAgB5iD,KAAK4iD,cAAgB3wC,EAAKgM,MAC3Cje,KAAKwgD,eAAeqC,WAAc7iD,KAAK2iD,iBAAmB3iD,KAAK4iD,eAC/D5iD,KAAK8/C,gBAAgB77B,QAG7B+2B,EAAY96C,UAAU4iD,sBAAwB,SAAUvvC,GACpD,GAA+B,IAA1BvT,KAAKu0B,UAAU5zB,OAChB,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKu0B,UAAU5zB,OAAQK,CAAC,IACtBsW,oBAAkB/D,CAAK,EAAmC,GAA/BlH,WAAS,OAAQkH,CAAK,EAAE0D,QAClDjX,KAAKu0B,UAAUvzB,GAAGmU,KAAK8B,OACtCjX,KAAKu0B,UAAU1M,OAAO7mB,EAAG,CAAC,EAC1BA,EAAIhB,KAAKu0B,UAAU5zB,SAMnCq6C,EAAY96C,UAAUohD,gBAAkB,SAAU/tC,GACV,EAAhCvT,KAAKwgD,eAAeD,WACpBvgD,KAAK8iD,sBAAsBvvC,CAAK,EAGpCvT,KAAKkW,QAAQ,UADF,CAAE/G,OAAQ,SAAUwI,OAAQpE,EACX,EAC5BvT,KAAKmS,SAAW,CAAC9F,WAASrM,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAAIX,KAAKyO,QAAQ,GAC5E2D,EAAKpS,KAAM2sB,EAAoB3sB,KAAK2M,IAAI,EACxC3M,KAAKwiD,oBAAoB,CAAEvkC,MAAO,EAAG,EACmC,YAApE,OAAO5R,WAAS,YAAarM,KAAKqiD,gBAAgB/rC,YAAY,GAC9DjK,WAAS,YAAarM,KAAKqiD,gBAAgB/rC,YAAY,KAI/D0kC,EAAY96C,UAAUshD,gBAAkB,SAAUjuC,GACV,EAAhCvT,KAAKwgD,eAAeD,WACpBvgD,KAAK8iD,sBAAsBvvC,CAAK,EAEpC,IAAIwvC,EAAW12C,WAAS,WAAYkH,CAAK,EACrCyvC,EAAa32C,WAAS,aAAc02C,CAAQ,EAC7B,KAAfC,GACAnpC,WAAS,aAAcmpC,EAAYzvC,CAAK,EAG5CvT,KAAKkW,QAAQ,UADF,CAAE/G,OAAQ,SAAUgK,MAAO5F,EACV,EACa,MAArClH,WAAS,aAAc02C,CAAQ,IAC/B/iD,KAAK+yB,WAAWzlB,KAAKjB,WAAS,OAAQkH,CAAK,CAAC,EACvCvT,KAAKgzB,eACNjG,GAAgB/sB,KAAM,aAAa,GAG6B,YAApE,OAAOqM,WAAS,YAAarM,KAAKqiD,gBAAgB/rC,YAAY,GAC9DjK,WAAS,YAAarM,KAAKqiD,gBAAgB/rC,YAAY,KAG/D0kC,EAAY96C,UAAU+iD,aAAe,WACjC5nC,GAAYrb,KAAMA,KAAK2M,IAAI,GAE/BquC,EAAY96C,UAAU88C,kBAAoB,WACtCh9C,KAAK0hC,GAAG7X,GAAsB7pB,KAAK23B,YAAa33B,IAAI,EACpDA,KAAK0hC,GAAGxW,GAAqBlrB,KAAK86B,YAAa96B,IAAI,EACnDA,KAAK0hC,GAAG9lB,GAAmB5b,KAAKijD,aAAcjjD,IAAI,EAClDA,KAAK0hC,GAAGN,EAAoBphC,KAAKqhC,cAAerhC,IAAI,EACpDA,KAAK0hC,GAAG9N,GAAmB5zB,KAAKwiD,oBAAqBxiD,IAAI,EACzDwiC,eAAalyB,IAAItQ,KAAKkN,QAAS,cAAelN,KAAK2/C,cAAe3/C,IAAI,GAE1Eg7C,EAAY96C,UAAUgjD,qBAAuB,WACrCljD,KAAK+/B,cAGT//B,KAAKggC,IAAInW,GAAsB7pB,KAAK23B,WAAW,EAC/C33B,KAAKggC,IAAI9U,GAAqBlrB,KAAK86B,WAAW,EAC9C96B,KAAKggC,IAAIpkB,GAAmB5b,KAAKijD,YAAY,EAC7CjjD,KAAKggC,IAAIoB,EAAoBphC,KAAKqhC,aAAa,EAC/CrhC,KAAKggC,IAAIpM,GAAmB5zB,KAAKwiD,mBAAmB,EACpDhgB,eAAa7xB,OAAO3Q,KAAKkN,QAAS,cAAelN,KAAK2/C,aAAa,IAEvE3E,EAAY96C,UAAUmhC,cAAgB,WAC9B50B,oBAAMzM,KAAKwP,YAAY,IACvBxP,KAAKmS,SAAW,CAAC9F,WAASrM,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAAIX,KAAKyO,QAAQ,KAGpFusC,EAAY96C,UAAU8gC,cAAgB,WAClChhC,KAAKi9C,eACLj9C,KAAKgP,OAAO+xB,GAAkB,EAAE,GAEpCia,EAAY96C,UAAUkiC,iBAAmB,SAAUhU,GAE/C,OAAQA,EAAEjf,QACN,IAAK,OACDif,EAAEkH,iBACFt1B,KAAKmS,SAAW,CAACiB,EAAcpT,IAAI,GAC9BqjB,GAAiBrjB,KAAKmS,SAAS,EAAE,EAIlCwK,EAAa3c,KAAM,WAAW,EAH9B2U,EAAmB3U,KAAMA,KAAKmS,SAAS,GAAIsR,EAA6B,EAK5E,MACJ,IAAK,KACD2K,EAAEkH,iBACF9gB,GAAQxU,IAAI,EACZ,MAEJ,IAAK,aACDouB,EAAEkH,iBACFt1B,KAAK28C,SAAW,UAChB38C,KAAK0M,cAAc,CAAEqH,KAAM,WAAa,CAAA,CAAI,EAC5C4jB,cAAY33B,KAAKkN,OAAO,EACxB4G,GAAa9T,KAAM,SAAS,EAC5B,MAEJ,IAAK,aACDouB,EAAEkH,iBACFt1B,KAAK28C,SAAW,aAChB38C,KAAK0M,cAAc,CAAEqH,KAAM,cAAgB,CAAA,CAAI,EAC/C4jB,cAAY33B,KAAKkN,OAAO,EACxB4G,GAAa9T,KAAM,YAAY,EAC/B,MACJ,IAAK,QACDouB,EAAEkH,iBACmD,CAAC,IAAlDt1B,KAAKw8C,gBAAgBrlC,MAAM9B,QAAQ,QAAQ,GAC/BvH,SAAO,IAAM9N,KAAKkN,QAAQZ,GAAKsX,GAAe5jB,KAAKkN,OAAO,EAC5D2W,UAK1Bm3B,EAAY96C,UAAUijD,sBAAwB,SAAUC,GAChD32C,oBAAMzM,KAAK+T,IAAI,IAGfqvC,IACApjD,KAAKqjD,SAAyB,eAAdrjD,KAAK+T,KAAwB/T,KAAK4T,qBAAqB1G,QAAUlN,KAAKkN,QAAQsL,cAAc,gBAAgB,GAE3HxY,KAAKqjD,WAGND,EACIpjD,KAAK+hC,sBACLS,eAAalyB,IAAItQ,KAAKqjD,SAAU,YAAarjD,KAAKsjD,YAAatjD,IAAI,EACnEA,KAAK0hC,GAAGrvB,EAAqBrS,KAAKo9B,eAAgBp9B,IAAI,EACtDA,KAAK0hC,GAAG9V,EAAyB5rB,KAAKo9B,eAAgBp9B,IAAI,IAI9DwiC,eAAa7xB,OAAO3Q,KAAKqjD,SAAU,YAAarjD,KAAKsjD,WAAW,EAChEtjD,KAAKggC,IAAI3tB,EAAqBrS,KAAKo9B,cAAc,EACjDp9B,KAAKggC,IAAIpU,EAAyB5rB,KAAKo9B,cAAc,MAG7D4d,EAAY96C,UAAUw6B,WAAa,WAC3B16B,KAAKujD,sBACLvjD,KAAKmjD,sBAAsB,CAAA,CAAI,EAEnC3gB,eAAalyB,IAAIyP,OAAQ,SAAU/f,KAAKghC,cAAehhC,IAAI,EAC3DA,KAAKiiC,eAAiB,IAAIC,iBAAeliC,KAAKkN,QAAS,CACnDi1B,UAAWniC,KAAKoiC,iBAAiBjS,KAAKnwB,IAAI,EAC1CqiC,WAAYriC,KAAKqiC,WACjB3mB,UAAW,UACd,GAELs/B,EAAY96C,UAAU63B,aAAe,WACjC/3B,KAAKmjD,sBAAsB,CAAA,CAAK,EAChC3gB,eAAa7xB,OAAOoP,OAAQ,SAAU/f,KAAKghC,aAAa,EACxDhhC,KAAKiiC,eAAe74B,WAExB4xC,EAAY96C,UAAUojD,YAAc,SAAU1iC,GAC1C,GAAI5gB,KAAKqjD,SAAU,CACf,GAAIrjD,KAAK0gB,iBAEL,GADoB7P,UAAQ+P,EAAMtgB,OAAQN,KAAKqjD,SAASp1C,UAAUC,SAAS,eAAe,EAAI,eAAiB,YAAY,EAEvH,OAGR0S,EAAM0U,iBACNt1B,KAAKwjD,MAAQ5iC,EAAM6iC,MACnBzjD,KAAK0jD,MAAQ9iC,EAAM+iC,MACd3jD,KAAK4jD,oBACN5jD,KAAK4jD,kBAAoBjrC,gBAAc,MAAO,CAC1CrM,GAAItM,KAAKkN,QAAQZ,GAAK,QACtBsM,UAAW,8BACXirC,OAAQ,SAAW7jD,KAAKwjD,MAAQ,WAAaxjD,KAAK0jD,MAAQ,MAC7D,EACD5kC,SAASgQ,KAAKg1B,OAAO9jD,KAAK4jD,iBAAiB,GAE/CphB,eAAalyB,IAAIwO,SAAU,UAAW9e,KAAK+jD,WAAY/jD,IAAI,EAC3DwiC,eAAalyB,IAAItQ,KAAKqjD,SAAU,YAAarjD,KAAKgkD,OAAQhkD,IAAI,EAC9DwiC,eAAalyB,IAAItQ,KAAK4jD,kBAAmB,YAAa5jD,KAAKgkD,OAAQhkD,IAAI,IAG/Eg7C,EAAY96C,UAAU8jD,OAAS,SAAUpjC,GAErC,IACQqjC,EAFRrjC,EAAMsjC,kBACFlkD,KAAK4jD,mBACDK,EAAQrjC,EAAM6iC,MAAQzjD,KAAKwjD,MAC3BW,EAAQvjC,EAAM+iC,MAAQ3jD,KAAK0jD,MAC/BU,oBAAkBpkD,KAAK4jD,kBAAmB,CACtCS,KAAQJ,EAAQ,EAAIjkD,KAAKwjD,MAAQS,EAAQ,KAAOjkD,KAAKwjD,MAAQ,KAAMnrC,IAAO8rC,EAAQ,EAAInkD,KAAK0jD,MAAQS,EAAQ,KAAOnkD,KAAK0jD,MAAQ,KAC/HptB,OAAUguB,KAAKC,IAAIJ,CAAK,EAAI,KAAMhiD,MAASmiD,KAAKC,IAAIN,CAAK,EAAI,KAChE,EACDjkD,KAAKo6B,eAGLoI,eAAa7xB,OAAO3Q,KAAKqjD,SAAU,YAAarjD,KAAKgkD,MAAM,GAGnEhJ,EAAY96C,UAAU6jD,WAAa,WAC3B/jD,KAAKqjD,WACL7gB,eAAa7xB,OAAOmO,SAAU,UAAW9e,KAAK+jD,UAAU,EACxDvhB,eAAa7xB,OAAO3Q,KAAKqjD,SAAU,YAAarjD,KAAKgkD,MAAM,GAE3DhkD,KAAK4jD,oBACLphB,eAAa7xB,OAAO3Q,KAAK4jD,kBAAmB,YAAa5jD,KAAKgkD,MAAM,EAC1B,EAAtChkD,KAAK4jD,kBAAkBpiC,cAAyD,EAArCxhB,KAAK4jD,kBAAkBrX,aAClEvsC,KAAK0M,cAAc,CAAE0D,cAAepQ,KAAKwkD,kBAAmB,EAEhExkD,KAAKwkD,kBAAoB,GACzBnkC,SAAOrgB,KAAK4jD,iBAAiB,EAC7B5jD,KAAK4jD,kBAAoB,OAGjC5I,EAAY96C,UAAUk6B,YAAc,WAChCp6B,KAAKwkD,kBAAoB,GACzB,IAAIC,EAAWzkD,KAAK4jD,kBAAkBriC,wBAClC1N,EAAWkhB,YAAU/0B,KAAKqjD,SAASp1C,UAAUC,SAAS,eAAe,EAAI,eAAiB,SAAUlO,KAAKqjD,QAAQ,EACrH5e,cAAY1P,YAAU,YAAa/0B,KAAKqjD,QAAQ,EAAG,CAAC,WAAY,UAAU,EAC1E5e,cAAY1P,YAAU,WAAY/0B,KAAKqjD,QAAQ,EAAG,CAAC,UAAU,EAC7D,IAAK,IAAIzhB,EAAK,EAAG8iB,EAAa7wC,EAAU+tB,EAAK8iB,EAAW/jD,OAAQihC,CAAE,GAAI,CAClE,IAAIxwB,EAAOszC,EAAW9iB,GAClB+iB,EAAWvzC,EAAKmQ,wBAChB,EAAEkjC,EAASG,MAAQD,EAASN,MAAQI,EAASJ,KAAOM,EAASC,OAC1DH,EAASI,OAASF,EAAStsC,KAAOosC,EAASpsC,IAAMssC,EAASE,SACnB,EAAtC7kD,KAAK4jD,kBAAkBpiC,cAAyD,EAArCxhB,KAAK4jD,kBAAkBrX,cAClEvsC,KAAKqjD,SAASp1C,UAAUC,SAAS,eAAe,GAChDkD,EAAKnD,UAAUqC,IAAI,UAAU,EAC7BtQ,KAAKwkD,kBAAkBl3C,KAAK8D,EAAK7E,aAAa,OAAO,CAAC,IAGtDk3B,WAAS1O,YAAU,aAAc3jB,CAAI,EAAG,CAAC,WAAW,EACpDpR,KAAKwkD,kBAAkBl3C,KAAK8D,EAAKoH,cAAc,cAAc,EAAExK,WAAW,GAE9EoD,EAAKoH,cAAc,UAAU,EAAEvK,UAAUqC,IAAI,SAAS,KAIlE0qC,EAAY96C,UAAUk9B,eAAiB,WAC/Bp9B,KAAKujD,uBACLvjD,KAAK+3B,eACL/3B,KAAK06B,eAGbsgB,EAAY96C,UAAU4kD,QAAU,WAC5B9kD,KAAK0M,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAC9CpQ,KAAKo7C,aACLp7C,KAAKgP,OAAOiN,GAAsB,CAAEC,aAAclc,KAAK8M,OAAO,GAAI,EAClEsF,EAAKpS,KAAOA,KAAK2M,OAAS3M,KAAKwb,aAAgBI,GAAoBD,EAAoB3b,KAAK2M,IAAI,GAWpGquC,EAAY96C,UAAUkgC,kBAAoB,SAAU0B,EAASijB,GAIzD,IAHA,IAAI5pB,EAAQn7B,KAERglD,EAAkB,CAAA,EACbpjB,EAAK,EAAGC,EAAKtiC,OAAO4iB,KAAK2f,CAAO,EAAGF,EAAKC,EAAGlhC,OAAQihC,CAAE,GAE1D,OADWC,EAAGD,IAEV,IAAK,eACD5hC,KAAKilD,oBAAoBnjB,CAAO,EAChC,MACJ,IAAK,mBACD9hC,KAAK0gB,iBAAmBohB,EAAQphB,iBAChC1gB,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,SAAUgnB,QAASA,EAASijB,QAASA,EAAS,EACzF,MACJ,IAAK,qBACD/kD,KAAKg9B,mBAAqB8E,EAAQ9E,mBAClCh9B,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,SAAUgnB,QAASA,EAASijB,QAASA,EAAS,EACzF,MACJ,IAAK,uBACD/kD,KAAKw5B,qBAAuBsI,EAAQtI,qBACpCwrB,EAAkB,CAAA,EAClB,MACJ,IAAK,sBACGhlD,KAAK+hC,oBACL0B,WAAS,CAACzjC,KAAKkN,SAAUqwC,EAAgB,GAGT,EAA5Bv9C,KAAKoQ,cAAczP,QACnBX,KAAK0M,cAAc,CAAE0D,cAAepQ,KAAKoQ,cAAcmB,MAAMvR,KAAKoQ,cAAczP,OAAS,CAAC,GAAK,CAAA,CAAI,EAEvG8jC,cAAY,CAACzkC,KAAKkN,SAAUqwC,EAAgB,GAEhDv9C,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,SAAUgnB,QAASA,EAASijB,QAASA,EAAS,EACzF,MACJ,IAAK,WACD/kD,KAAKw9C,YAAYuH,EAAQtqC,SAAUqnB,EAAQrnB,QAAQ,EACnDza,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,SAAUgnB,QAASA,EAASijB,QAASA,EAAS,EACzF,MACJ,IAAK,sBACD/kD,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,cAAegnB,QAASA,EAASijB,QAASA,EAAS,EAC9F,MACJ,IAAK,uBACD/kD,KAAKmjD,sBAAsB,CAAA,CAAK,EAC5BrhB,EAAQyhB,sBACRvjD,KAAKmjD,sBAAsB,CAAA,CAAI,EAEnC,MACJ,IAAK,YACDnjD,KAAKgyB,UAAY8P,EAAQ9P,UACzBgzB,EAAkB,CAAA,EAClB,MACJ,IAAK,gBACDhlD,KAAKorB,cAAgB0W,EAAQ1W,cAC7B45B,EAAkB,CAAA,EAClB,MACJ,IAAK,SACD1uB,EAAU7pB,oBAAMq1B,EAAQxL,MAAM,EAAiCwL,EAAQxL,OAArCglB,aAAWxZ,EAAQxL,MAAM,EAC3D+kB,oBAAQr7C,KAAKkN,QAAS,CAAEopB,OAAUA,EAAQ,EAC1Ct2B,KAAKi9C,eACLj9C,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,SAAUgnB,QAASA,EAASijB,QAASA,EAAS,EACzF,MACJ,IAAK,SACIt4C,oBAAMq1B,EAAQ9P,SAAS,GACxBhyB,KAAK0M,cAAc,CAAEslB,UAAW8P,EAAQ9P,WAAa,CAAA,CAAI,EAE7DhyB,KAAKklD,qBAAqBpjB,CAAO,EACjC,MACJ,IAAK,yBACD9hC,KAAKs/C,iBACLt/C,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,iBAAkBgnB,QAASA,EAASijB,QAASA,EAAS,EACjG,MACJ,IAAK,OACD/kD,KAAK8kD,UACL,MACJ,IAAK,iBACIxtC,oBAAkBwqB,EAAQxvB,eAAe24B,mBAAmB,GAC7DjrC,KAAK0M,cAAc,CAAE4F,eAAgB,CAAE24B,oBAAqBnJ,EAAQxvB,eAAe24B,sBAAyB,CAAA,CAAI,EAEhH3zB,oBAAkBwqB,EAAQxvB,eAAeQ,UAAU,GACnD9S,KAAK0M,cAAc,CAAE4F,eAAgB,CAAEQ,WAAYgvB,EAAQxvB,eAAeQ,aAAgB,CAAA,CAAI,EAE9FwE,oBAAkBwqB,EAAQxvB,eAAeC,UAAU,GACnDvS,KAAK0M,cAAc,CAAE4F,eAAgB,CAAEC,WAAYuvB,EAAQxvB,eAAeC,aAAgB,CAAA,CAAI,EAElGvS,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,gBAAiBgnB,QAASA,EAASijB,QAASA,EAAS,EAChG,MACJ,IAAK,gBACiB,YAAd/kD,KAAK+T,KACL/T,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,cAAegnB,QAASA,EAASijB,QAASA,EAAS,EAE3E,eAAd/kD,KAAK+T,MACV/T,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,iBAAkBgnB,QAASA,EAASijB,QAASA,EAAS,EAErG,MACJ,IAAK,oBAGL,IAAK,kBACD/kD,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,SAAUgnB,QAASA,EAASijB,QAASA,EAAS,EACzF,MACJ,IAAK,gBACD/kD,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,iBAAkBgnB,QAASA,EAASijB,QAASA,EAAS,EACjG,MACJ,IAAK,kBACL,IAAK,eACD/kD,KAAKi9C,eACLj9C,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,UAAWgnB,QAASA,EAASijB,QAASA,EAAS,EAC1F,MACJ,IAAK,iBACD/kD,KAAKgiD,iBACL,MACJ,IAAK,OACoB,YAAjBlgB,EAAQ/tB,KACR/T,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,cAAegnB,QAASA,EAASijB,QAASA,EAAS,EAExE,eAAjBjjB,EAAQ/tB,MACb/T,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,iBAAkBgnB,QAASA,EAASijB,QAASA,EAAS,EAErG,MACJ,IAAK,QACD1J,oBAAQr7C,KAAKkN,QAAS,CAAE/K,MAAUsK,oBAAMq1B,EAAQ3/B,KAAK,EAAgC2/B,EAAQ3/B,MAApCm5C,aAAWxZ,EAAQ3/B,KAAK,EAAmB,EACpGnC,KAAKgP,OAAOmxB,EAAqB,CAAErlB,OAAQ,SAAUgnB,QAASA,EAASijB,QAASA,EAAS,EACzF,MACJ,IAAK,YACDvwC,GAAQxU,IAAI,EACZA,KAAKgP,OAAO+L,GAAqB,EAAE,EACnC,MACJ,IAAK,SACD,GAAkB,YAAd/a,KAAK+T,KAAoB,CACzB,IAAIqH,EAAUpb,KAAKmb,oBAAoBC,QAGvC,GAAI,EAFmB,CAAC9D,oBAAkB8D,CAAO,GACgC,CAAC,IAA9EA,EAAQ8K,UAAU,SAAUi/B,GAAO,OAAOA,EAAIxjD,QAAUw5B,EAAM5jB,OAAS,GAEvE,OAEJ/C,GAAQxU,IAAI,EACZA,KAAKgP,OAAO+L,GAAqB,EAAE,EACnC/a,KAAKgP,OAAO6L,GAAmB,EAAE,OAGjCrG,GAAQxU,IAAI,EACZA,KAAKgP,OAAO+L,GAAqB,EAAE,EAEvC,MACJ,IAAK,cACG/a,KAAK8/C,kBACL9/C,KAAK8/C,gBAAgBx/C,OAASwhC,EAAQjQ,aAEtC7xB,KAAKgkB,YACLhkB,KAAKgkB,UAAU1jB,OAASwhC,EAAQjQ,aAEhC7xB,KAAK0yB,eACL1yB,KAAK0yB,aAAapyB,OAASwhC,EAAQjQ,aAEnC7xB,KAAKq2B,YACLr2B,KAAKq2B,UAAU/1B,OAASwhC,EAAQjQ,aAEpC,MACJ,IAAK,iBACD7xB,KAAKkR,eAAiB4wB,EAAQ5wB,eAC9B8zC,EAAkB,CAAA,EAI1BA,GACAhlD,KAAKwU,WAIbwmC,EAAY96C,UAAU+kD,oBAAsB,SAAUnjB,GAC7CxqB,oBAAkBwqB,EAAQxrB,aAAaC,GAAG,GAC3CvW,KAAK0M,cAAc,CAAE4J,aAAc,CAAEC,IAAKurB,EAAQxrB,aAAaC,MAAS,CAAA,CAAI,EAE3Ee,oBAAkBwqB,EAAQxrB,aAAa4pC,SAAS,GACjDlgD,KAAK0M,cAAc,CAAE4J,aAAc,CAAE4pC,UAAWpe,EAAQxrB,aAAa4pC,YAAe,CAAA,CAAI,EAEvF5oC,oBAAkBwqB,EAAQxrB,aAAa6W,WAAW,GACnDntB,KAAK0M,cAAc,CAAE4J,aAAc,CAAE6W,YAAa2U,EAAQxrB,aAAa6W,cAAiB,CAAA,CAAI,EAE3F7V,oBAAkBwqB,EAAQxrB,aAAaV,WAAW,GACnD5V,KAAK0M,cAAc,CAAE4J,aAAc,CAAEV,YAAaksB,EAAQxrB,aAAaV,cAAiB,CAAA,CAAI,EAEhG5V,KAAK0M,cAAc,CAAEC,KAAM,KAAO,CAAA,CAAI,EACtC3M,KAAK0M,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAC9CvQ,GAAOK,UAAUsU,QAAQgS,KAAKxmB,IAAI,GAGtCg7C,EAAY96C,UAAUglD,qBAAuB,SAAUpjB,GACnD9hC,KAAKkgB,UAAU9F,OAAS0nB,EAAQ1nB,OAChCva,GAAOK,UAAUsU,QAAQgS,KAAKxmB,IAAI,GAOtCg7C,EAAY96C,UAAUkJ,QAAU,WACxBpJ,KAAK+/B,cAGJ//B,KAAKolD,YACNplD,KAAKgP,OAAOsgC,GAAgB,EAAE,EAElCtvC,KAAKkgB,UAAU9W,UACfpJ,KAAKkgB,UAAY,KACjBlgB,KAAK8/C,gBAAgB12C,UACrBpJ,KAAK8/C,gBAAkB,KACvB9/C,KAAKk9C,YAAY9zC,UACjBpJ,KAAKk9C,YAAc,KACfl9C,KAAKgkB,YACLhkB,KAAKgkB,UAAU5a,UACfpJ,KAAKgkB,UAAY,MAEjBhkB,KAAKq2B,YACLr2B,KAAKq2B,UAAUjtB,UACfpJ,KAAKq2B,UAAY,MAEjBr2B,KAAK0yB,eACL1yB,KAAK0yB,aAAatpB,UAClBpJ,KAAK0yB,aAAe,MAExB1yB,KAAKkN,QAAQyvB,gBAAgB,OAAO,EACpC38B,KAAKkN,QAAQyvB,gBAAgB,UAAU,EACvC38B,KAAKkjD,uBACLljD,KAAK+3B,eACL/3B,KAAKw9C,YAAYx9C,KAAKya,SAAU,IAAI,EACpCgqB,cAAY,CAACzkC,KAAKkN,SAAU,CAACm4C,GAAS/H,GAAYC,GAAiB,EACnEv9C,KAAKkN,QAAQkM,UAAY,GACzBpZ,KAAK4rC,wBAA0B,KAC/B5rC,KAAKqP,eAAiB,KACtBrP,KAAK0f,mBAAqB,KAC1B1f,KAAKy3B,YAAc,KACnB53B,GAAOK,UAAUkJ,QAAQod,KAAKxmB,IAAI,EAClCA,KAAKy5B,qBAAuB,KAC5Bz5B,KAAK4e,qBAAuB,KAC5B5e,KAAKslD,cAAgB,KACrBtlD,KAAKulD,kBAAoB,KACzBvlD,KAAK4T,qBAAuB,KAC5B5T,KAAKyT,kBAAoB,KACzBzT,KAAK+P,oBAAsB,KAC3B/P,KAAKqjD,SAAW,KAChBrjD,KAAK4jD,kBAAoB,KACzB5jD,KAAKwkD,kBAAoB,OAS7BxJ,EAAY96C,UAAUwkB,aAAe,SAAUzN,GAC3CjX,KAAKgP,OAAOqxB,GAAmB,CAAElxB,OAAQ,eAAgB,EACzD,IAAIqU,EAAU,CAACpQ,EAAcpT,IAAI,GACjCA,KAAKmS,SAAWqR,EACZvM,EACI,eAAe4e,KAAK5e,CAAI,EASxB0F,EAAa3c,KAAM,QARN,CACTuT,MAAO,KACP4F,MAAO,CACHyD,KAAM,MACNC,QAASxD,EAAcrZ,KAAM,oBAAoB,EAAE2W,QAAQ,MAAO,IAAMM,EAAO,GAAG,EAClF6F,WAAY,MAGc,EAG7BuG,GAAiBG,EAAQ,EAAE,EAI5BkB,GAAa1kB,KAAMiX,CAAI,EAHvBtC,EAAmB3U,KAAMwjB,EAAQ,GAAIC,EAA6B,EAQ1EF,GAAgBvjB,IAAI,GAa5Bg7C,EAAY96C,UAAU4nC,YAAc,SAAUz6B,GAC1CrN,KAAKgP,OAAOqxB,GAAmB,CAAElxB,OAAQ,cAAe9B,IAAKA,EAAK,GAQtE2tC,EAAY96C,UAAUslD,oBAAsB,SAAUruC,GAC9C,CAAC1K,oBAAM0K,CAAK,GAAKnX,KAAKslD,eACtBtlD,KAAKslD,cAAcvS,YAAY57B,EAAO,CAAA,CAAK,GAanD6jC,EAAY96C,UAAU6nC,cAAgB,SAAU16B,GAC5CrN,KAAKgP,OAAOqxB,GAAmB,CAAElxB,OAAQ,gBAAiB9B,IAAKA,EAAK,GAQxE2tC,EAAY96C,UAAUulD,mBAAqB,SAAUtuC,GAC7C,CAAC1K,oBAAM0K,CAAK,GAAKnX,KAAKslD,eACtBtlD,KAAKslD,cAAcvS,YAAY57B,EAAO,CAAA,CAAI,GASlD6jC,EAAY96C,UAAUwlD,iBAAmB,SAAUvuC,GAC1C1K,oBAAM0K,CAAK,GAAM1K,oBAAMzM,KAAKulD,kBAAkB1V,WAAW,GAC1D7vC,KAAKulD,kBAAkBnS,YAAYj8B,CAAK,GAShD6jC,EAAY96C,UAAUylD,iBAAmB,SAAUv0C,GAC/C,OAAIpR,KAAKulD,kBACEvlD,KAAKulD,kBAAkBrS,aAAa9hC,CAAI,EAGxC,CAAC,GAShB4pC,EAAY96C,UAAU0lD,oBAAsB,SAAUx0C,GAClD,OAAIpR,KAAKslD,cACEtlD,KAAKslD,cAAcpS,aAAa9hC,CAAI,EAGpC,CAAC,GAWhB4pC,EAAY96C,UAAU2lD,YAAc,SAAU/gC,GAC1C9kB,KAAK8kB,WAAaA,GAA0B,KAC5C9kB,KAAK0M,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAC9CpQ,KAAKgP,OAAO4c,EAAyB,EAAE,EACvC5rB,KAAKkQ,WAAa,CAAA,EACuC,KAArDlQ,KAAK+P,oBAAoBC,UAAU9C,QAAQ+C,QAC3CjQ,KAAK+P,oBAAoBC,UAAU9C,QAAQ+C,MAAQ,IAEvDkB,GAAOnR,KAAMyhC,EAAgB,GAOjCuZ,EAAY96C,UAAU4lD,iBAAmB,WAErC,OADA9lD,KAAKgP,OAAOwyB,GAA4B,EAAE,EACnCxhC,KAAKmS,UAWhB6oC,EAAY96C,UAAU8nC,SAAW,SAAU17B,GACvCtM,KAAKgP,OAAOqxB,GAAmB,CAAElxB,OAAQ,WAAY7C,GAAIA,EAAI,GAOjE0uC,EAAY96C,UAAU6lD,aAAe,WACjCvxC,GAAQxU,IAAI,GAOhBg7C,EAAY96C,UAAU8lD,cAAgB,WAClChmD,KAAKi9C,eACLj9C,KAAKgP,OAAOsyB,GAAsB,EAAE,GAOxC0Z,EAAY96C,UAAU60B,UAAY,WAC9B/0B,KAAKgP,OAAOqxB,GAAmB,CAAElxB,OAAQ,YAAa,GAO1D6rC,EAAY96C,UAAU+lC,iBAAmB,WACrC,IAOQyI,EAPoB,EAAxB1uC,KAAKgN,UAAUrM,QAAmE,KAArDX,KAAK+P,oBAAoBC,UAAU9C,QAAQ+C,OAAgB,CAACjQ,KAAKkQ,aAC9FlQ,KAAK8M,OAAO+e,MACZ7rB,KAAKgN,UAAU6e,MACXvd,EAAUtO,KAAKgN,UAAUuE,MAAM,CAAC,EAAEgE,KAAK,GAAG,EAE9CvV,KAAK0M,cAAc,CAAEC,KAAM2B,EADL,KAAZA,EAAiB,IAAM,IAAMA,EAAU,KACX,CAAA,CAAI,EAC1C8D,EAAKpS,KAAM2sB,EAAoB3sB,KAAK2M,IAAI,EACpC+hC,EAAa1uC,KAAK8M,OAAO9M,KAAK8M,OAAOnM,OAAS,GAClDX,KAAKgP,OAAO2/B,GAA4B,CAAE7zB,OAAQ,WAAYoB,aAAcwyB,EAAY,IAQhGsM,EAAY96C,UAAUs/B,eAAiB,WACnCx/B,KAAKgP,OAAOqxB,GAAmB,CAAElxB,OAAQ,iBAAkB,GAe/D6rC,EAAY96C,UAAU+nC,WAAa,SAAU37B,EAAI2K,GAC7CjX,KAAKgP,OAAOqxB,GAAmB,CAAElxB,OAAQ,aAAc7C,GAAIA,EAAI6Y,QAASlO,EAAM,GAOlF+jC,EAAY96C,UAAU+lD,YAAc,WAChC,IAAIziC,EAAU,CAACpQ,EAAcpT,IAAI,GACjCA,KAAKmS,SAAWqR,EAChBE,GAAW1jB,IAAI,GAOnBg7C,EAAY96C,UAAUgmD,YAAc,WAChCniC,GAAW/jB,IAAI,GAQnBg7C,EAAY96C,UAAU68C,OAAS,SAAUoJ,GACjCA,EACAnmD,KAAKw9C,YAAY,KAAM6H,EAAO,EAG9BrlD,KAAKw9C,YAAY6H,GAAS,IAAI,EAE9BrlD,KAAKkgB,YACLlgB,KAAK8/C,gBAAgB9tB,UAAYm0B,EACjCnmD,KAAKkgB,UAAU8R,UAAYm0B,IAInC/lD,EAAW,CACPgmD,UAAQ,GAAIllD,CAAY,GACzB85C,EAAY96C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,EAAE,GACZ45C,EAAY96C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf45C,EAAY96C,UAAW,mBAAoB,KAAA,CAAM,EACpDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd45C,EAAY96C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd45C,EAAY96C,UAAW,qBAAsB,KAAA,CAAM,EACtDE,EAAW,CACPgmD,UAAQ,GAAIzjD,EAAmB,GAChCq4C,EAAY96C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,EAAE,GACZ45C,EAAY96C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgmD,UAAQ,GAAI7jD,EAAmB,GAChCy4C,EAAY96C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd45C,EAAY96C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf45C,EAAY96C,UAAW,oBAAqB,KAAA,CAAM,EACrDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf45C,EAAY96C,UAAW,uBAAwB,KAAA,CAAM,EACxDE,EAAW,CACPgB,WAAS,OAAO,GACjB45C,EAAY96C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPgB,WAAS,YAAY,GACtB45C,EAAY96C,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgmD,UAAQ,GAAIxjD,EAAsB,GACnCo4C,EAAY96C,UAAW,yBAA0B,KAAA,CAAM,EAC1DE,EAAW,CACPgB,WAAS,GAAG,GACb45C,EAAY96C,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,IAAI,GACd45C,EAAY96C,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPgmD,UAAQ,GAAI3kD,CAAc,GAC3Bu5C,EAAY96C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,cACD45C,EAAY96C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd45C,EAAY96C,UAAW,oBAAqB,KAAA,CAAM,EACrDE,EAAW,CACPgB,WAAS,IAAI,GACd45C,EAAY96C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf45C,EAAY96C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd45C,EAAY96C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPgB,WAAS,WAAW,GACrB45C,EAAY96C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPgB,WAAS,MAAM,GAChB45C,EAAY96C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPgB,WAAS,IAAI,GACd45C,EAAY96C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf45C,EAAY96C,UAAW,uBAAwB,KAAA,CAAM,EACxDE,EAAW,CACPgmD,UAAQ,GAAI7kD,CAAe,GAC5By5C,EAAY96C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACPimD,aAAW,GAAI7kD,CAAW,GAC3Bw5C,EAAY96C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPgmD,UAAQ,GAAIvjD,EAAc,GAC3Bm4C,EAAY96C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,WAAS,MAAM,GAChB45C,EAAY96C,UAAW,QAAS,KAAA,CAAM,EACzCE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,mBAAoB,KAAA,CAAM,EACpDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,qBAAsB,KAAA,CAAM,EACtDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPkmD,WACDtL,EAAY96C,UAAW,mBAAoB,KAAA,CAAM,EACtCm1C,GAAgBj1C,EAAW,CACrCmmD,yBACDvL,CAAW,GA/8Cd,SAASA,EAAYhsB,EAAS9hB,GACtBiuB,EAAQt7B,GAAO2mB,KAAKxmB,KAAMgvB,EAAS9hB,CAAO,GAAKlN,KAgDnD,OA/CAm7B,EAAMrW,WAAa,KACnBqW,EAAMtsB,cAAgB,GACtBssB,EAAMpd,eAAiB,GACvBod,EAAMhd,iBAAmB,GACzBgd,EAAMqrB,aAAe,GACrBrrB,EAAMsrB,SAAW,GACjBtrB,EAAM9S,kBAAoB,EAC1B8S,EAAMtpB,eAAiB,CAAA,EACvBspB,EAAMnnB,oBAAsB,GAC5BmnB,EAAMxF,UAAY,KAClBwF,EAAMzX,WAAa,GACnByX,EAAMurB,cAAgB,GACtBvrB,EAAM7Y,OAAS,CAAA,EACf6Y,EAAMxsB,MAAQ,CAAA,EACdwsB,EAAM/rB,YAAc,CAAA,EACpB+rB,EAAM7c,aAAe,CAAA,EACrB6c,EAAM/c,aAAe,CAAA,EACrB+c,EAAM9e,WAAa,GACnB8e,EAAMwrB,aAAe,CAAA,EACrBxrB,EAAMjrB,WAAa,CAAA,EAEnBirB,EAAM7nB,gBAAkB,CAAA,EACxB6nB,EAAMpsB,YAAc,CAAA,EACpBosB,EAAMyrB,YAAc,CAAA,EACpBzrB,EAAM5G,UAAY,GAClB4G,EAAM8mB,SAAW,CAAA,EACjB9mB,EAAMnI,cAAgB,CAAA,EACtBmI,EAAM5c,WAAa,CAAA,EACnB4c,EAAMuD,cAAgB,GACtBvD,EAAMpI,WAAa,GACnBoI,EAAM3H,YAAc,CAAA,EACpB2H,EAAMje,SAAW,GACjBie,EAAM/d,UAAY,GAClB+d,EAAMpe,SAAW,GACjBoe,EAAM3vB,SAAW,GACjB2vB,EAAM/e,WAAa,CAAA,EACnB+e,EAAMrb,gBAAkB,KACxBqb,EAAMS,mBAAqB,CAAEyoB,KAAM,GAAIhsC,IAAK,IAC5C8iB,EAAM9c,UAAY,CAAA,EAClB8c,EAAM5a,UAAY,EAClB4a,EAAMjd,eAAiB,GACvBid,EAAMwnB,eAAiB,EACvBxnB,EAAMynB,cAAgB,EAEtBznB,EAAMyI,MAAQ,CAAA,EACdzI,EAAMqpB,kBAAoB,GAC1BnP,GAAcwR,OAAO9b,GAAexT,GAAgBmY,EAAW,EACxDvU,ECzEX2rB,EAAQ5mD,UAAUs3B,OAAS,WACvB,IAAI2D,EAAQn7B,KAERyW,GADJzW,KAAKmX,MAAQnX,KAAK+mD,gBAAgB/mD,KAAKgnD,SAAShnD,KAAKqO,OAAOmuC,gBAAgBrlC,MAAM8S,IAAI,SAAU7Y,GAAQ,OAAOA,EAAKwiC,OAAS,CAAC,CAAC,EAC/G,CAAEz8B,MAAOnX,KAAKmX,QAC9BnX,KAAKqO,OAAO6H,QAAQ,gBAAiBO,EAAW,SAAUwwC,GACtD9rB,EAAMhkB,MAAQ8vC,EAAkB9vC,MAChCgkB,EAAM+rB,WAAa,IAAIC,UAAY,CAC/BhwC,MAAOgkB,EAAMhkB,MACbqT,QAAS2Q,EAAMisB,qBAAqBj3B,KAAKgL,CAAK,EAC9CksB,aAAc,QACdC,QAASnsB,EAAMosB,UAAUp3B,KAAKgL,CAAK,EACnClJ,oBAAqBkJ,EAAM9sB,OAAO4jB,oBAClCD,UAAWmJ,EAAM9sB,OAAO2jB,UAC3B,EACDmJ,EAAM+rB,WAAWh1B,iBAAmB,CAAA,EACpCiJ,EAAM+rB,WAAWzrC,KAAO0f,EAAM9sB,OAAOoN,MAA2B0f,EAAM9sB,OACtE8sB,EAAM+rB,WAAW/0B,SAAS,IAAMgJ,EAAM9sB,OAAOnB,QAAQZ,GAAKslC,EAAc,EAC3E,GAELkV,EAAQ5mD,UAAUgzC,aAAe,SAAU9hC,GAEvC,IADA,IAAI+hC,EAASnzC,KAAKwnD,MAAMp2C,CAAI,EACnBpQ,EAAI,EAAGA,EAAIhB,KAAKmX,MAAMxW,OAAQK,CAAC,GACpC,GAAIhB,KAAKmX,MAAMnW,GAAGsL,KAAO6mC,EACrB,OAAOnyC,EAGf,MAAO,CAAC,GAEZ8lD,EAAQ5mD,UAAU8mD,SAAW,SAAU7vC,GAC/BswC,EAAYtwC,EAAM5F,QAOtB,OANIvR,KAAKqO,OAAO20B,UAAYhjC,KAAKqO,OAAO0zB,qBACpC0lB,EAAUn6C,KAAK,WAAW,EAG1Bm6C,EADkC,EAAlCznD,KAAKqO,OAAOq5C,aAAa/mD,OACbX,KAAKqO,OAAOq5C,aAAaz9B,IAAI,SAAU7Y,GAAQ,OAAOA,EAAK6F,KAAO,EAE3EwwC,GAGXX,EAAQ5mD,UAAUqnD,UAAY,SAAUt1C,GACpC,IAII01C,EACAnkC,EASA/M,EAdA0kB,EAAQn7B,KACRyM,CAAAA,oBAAMwF,EAAKb,IAAI,GAAMa,EAAKb,KAAK9E,KAKtB,aAFTq7C,EAAO11C,EAAKb,KAAK9E,GAAGskB,QAAQ5wB,KAAKqO,OAAOnB,QAAQZ,GAAK,QAAQ3L,MAAM,IAEpC,cAATgnD,GAAiC,WAATA,GAC9CnkC,EAAU,CAACpQ,EAAcpT,KAAKqO,MAAM,GACpCrO,KAAKqO,OAAO8D,SAAWqR,IAGvBxjB,KAAKqO,OAAOW,OAAOixB,GAAqB,EAAE,EAC1Czc,EAAUxjB,KAAKqO,OAAO8D,UAEtBsE,EAAY,CAAEoJ,OAAQ,CAAA,EAAOzJ,YAAaoN,EAASpS,KAAMa,EAAKb,MAClEpR,KAAKqO,OAAO6H,QAAQ,eAAgBO,EAAW,SAAUmxC,GACrD,IACItnD,EACJ,GAAI,CAACsnD,EAAiB/nC,OAClB,OAAQ8nC,GACJ,IAAK,UACDrnD,EAASuQ,UAAQoB,EAAKmxB,cAAc9iC,OAAQ,IAAMunD,EAAW,IAC/CvnD,EAAO2N,UAAUC,SAAS,iBAAiB,IACrD+D,EAAK4N,OAAS,CAAA,GAElB,MACJ,IAAK,YACD0D,GAAgB4X,EAAM9sB,MAAM,EAC5B,MACJ,IAAK,MACD4G,GAASkmB,EAAM9sB,MAAM,EACrB,MACJ,IAAK,OACD0G,GAAUomB,EAAM9sB,MAAM,EACtB,MACJ,IAAK,SACD,IAAK,IAAIrN,EAAI,EAAGA,EAAIwiB,EAAQ7iB,OAAQK,CAAC,GACjC,GAAI,CAACyhB,EAAce,EAAQxiB,EAAE,EAEzB,OADA2T,KAAAA,EAAmBwmB,EAAM9sB,OAAQmV,EAAQxiB,GAAI0hB,CAAqB,EAI1E/F,EAAawe,EAAM9sB,OAAQ,QAAQ,EACnC,MACJ,IAAK,UACD8sB,EAAM9sB,OAAOW,OAAOoyB,EAAoB,EAAE,EAC1C8S,EAAS/Y,EAAM9sB,OAAO+B,cACY,mBAA9B+qB,EAAM9sB,OAAOmB,eACb0kC,EAAS,IAEbruB,GAAWsV,EAAM9sB,OAAQ6lC,EAAQ/Y,EAAM9sB,OAAO1B,KAAM,SAAS,EAC7D,MACJ,IAAK,QACDwuB,EAAM9sB,OAAOgO,WAAa,GAC1BF,GAAagf,EAAM9sB,MAAM,EACzB,MACJ,IAAK,UACDmG,GAAQ2mB,EAAM9sB,MAAM,EACpB,MACJ,IAAK,WACDsU,GAAWwY,EAAM9sB,MAAM,EACvB,MACJ,IAAK,SACIoU,EAAce,EAAQ,EAAE,GAIzB2X,EAAM9sB,OAAOW,OAAOwxB,GAAmB,EAAE,EACzC7jB,EAAawe,EAAM9sB,OAAQ,QAAQ,GAJnCsG,EAAmBwmB,EAAM9sB,OAAQmV,EAAQ,GAAId,CAAqB,EAMtE,MACJ,IAAK,SACDgB,GAAWyX,EAAM9sB,MAAM,EACvB,MACJ,IAAK,YACD8sB,EAAM9sB,OAAOW,OAAOyxB,GAAsB,EAAE,EAC5C,MACJ,IAAK,YACDtF,EAAM9sB,OAAOW,OAAO0xB,GAAqB,EAAE,GAI1D,IAELomB,EAAQ5mD,UAAUknD,qBAAuB,WAgFrC,IA/EA,IA6BQ1kD,EA7BJy4B,EAAQn7B,KAiERi1B,GAhECxoB,oBAAMqB,SAAO,IAAM9N,KAAKwnD,MAAM,QAAQ,EAAGxnD,KAAKqO,OAAOnB,OAAO,CAAC,IAC1DiK,EAAQ,CACR,CAAE7K,GAAItM,KAAK8nD,WAAW,MAAM,EAAG17C,KAAMiN,EAAcrZ,KAAKqO,OAAQ,MAAM,EAClEyqB,QAAgC,SAAvB94B,KAAKqO,OAAOkJ,OAAoBy9B,GAAoB,IACjE,CAAE1oC,GAAItM,KAAK8nD,WAAW,MAAM,EAAG17C,KAAMiN,EAAcrZ,KAAKqO,OAAQ,MAAM,EAClEyqB,QAAgC,SAAvB94B,KAAKqO,OAAOkJ,OAAoBy9B,GAAoB,IACjE,CAAE1oC,GAAItM,KAAK8nD,WAAW,MAAM,EAAG17C,KAAMiN,EAAcrZ,KAAKqO,OAAQ,cAAc,EAC1EyqB,QAAgC,iBAAvB94B,KAAKqO,OAAOkJ,OAA4By9B,GAAoB,IACzE,CAAEX,UAAW,CAAA,GACb,CAAE/nC,GAAItM,KAAK8nD,WAAW,WAAW,EAAG17C,KAAMiN,EAAcrZ,KAAKqO,OAAQ,WAAW,EAC5EyqB,QAAmC,cAA1B94B,KAAKqO,OAAOgJ,UAA4B49B,EAAqB,IAC1E,CAAE3oC,GAAItM,KAAK8nD,WAAW,YAAY,EAAG17C,KAAMiN,EAAcrZ,KAAKqO,OAAQ,YAAY,EAC9EyqB,QAAmC,eAA1B94B,KAAKqO,OAAOgJ,UAA6B49B,EAAqB,IAC3E,CAAE3oC,GAAItM,KAAK8nD,WAAW,MAAM,EAAG17C,KAAMiN,EAAcrZ,KAAKqO,OAAQ,MAAM,EAClEyqB,QAAmC,SAA1B94B,KAAKqO,OAAOgJ,UAAuB49B,EAAqB,KAEzEj1C,KAAK+nD,UAAY,IAAIla,iBAAe,CAChC12B,MAAOA,EAAOsD,SAAUF,GAAYva,KAAKqO,OAAQ0jB,EAAc,EAC/DjkB,OAAQ4M,GAAmByV,KAAKnwB,KAAMA,KAAKqO,MAAM,EACjD4jB,oBAAqBjyB,KAAKqO,OAAO4jB,oBACjCD,UAAWhyB,KAAKqO,OAAO2jB,UAAW8G,QAASic,GAC9C,EACD/0C,KAAK+nD,UAAU71B,iBAAmB,CAAA,EAClClyB,KAAK+nD,UAAU51B,SAAS,IAAMnyB,KAAKwnD,MAAM,QAAQ,CAAC,GAEjD/6C,oBAAMqB,SAAO,IAAM9N,KAAKwnD,MAAM,MAAM,EAAGxnD,KAAKqO,OAAOnB,OAAO,CAAC,IAGxDxK,EAAc,CACd,CACI4J,GAAItM,KAAK8nD,WAAW,OAAO,EAAG17C,KAAMiN,EAAcrZ,KAAKqO,OAAQ,iBAAiB,EAChFyqB,QAA8B,YAArB94B,KAAKqO,OAAO0F,KAAqB,GAAKkhC,GAEnD,CACI3oC,GAAItM,KAAK8nD,WAAW,SAAS,EAAG17C,KAAMiN,EAAcrZ,KAAKqO,OAAQ,cAAc,EAC/EyqB,QAA8B,YAArB94B,KAAKqO,OAAO0F,KAAqBkhC,EAAqB,KAGvEj1C,KAAKgoD,aAAe,IAAIna,iBAAe,CACnC/U,QAA8B,YAArB94B,KAAKqO,OAAO0F,KAAqBy8B,GAAgBF,GAC1D71B,SAAUF,GAAYva,KAAKqO,OAAQ,gBAAkB0jB,EAAc,EACnE5a,MAAOzU,EAAaoL,OAAQ9N,KAAKiK,aAAakmB,KAAKnwB,IAAI,EACvDgyB,UAAWhyB,KAAKqO,OAAO2jB,UACvB9C,QAAS,iCAAmC7V,EAAcrZ,KAAKqO,OAAQ,MAAM,EAAI,UACjF2/B,iBAAkB,SAAU/7B,GACxB,IAAIg2C,EAAWh2C,EAAKb,KAAK0nB,QACrBovB,EAAWj2C,EAAKb,KAAKhF,OAASiN,EAAc8hB,EAAM9sB,OAAQ,iBAAiB,EAG3Ey+B,GADJ76B,EAAK/E,QAAQkM,UAAY,iBADT6uC,EAAW,gBAAkBA,EAAW,IACD,aAAeC,EArBxD,uDADL,uDAsBwGj2C,EAAKb,KAAKhF,KAChH6F,EAAK/E,QAAQi7C,YACpBrb,GAA2B,KAAnBA,EAAKl0B,WACb3G,EAAK/E,QAAQ6gB,YAAY+e,CAAI,GAGxC,EACD9sC,KAAKgoD,aAAa91B,iBAAmB,CAAA,EACrClyB,KAAKgoD,aAAa71B,SAAS,IAAMnyB,KAAKwnD,MAAM,MAAM,CAAC,GAEvDxnD,KAAKooD,UAAUpoD,KAAKqoD,QAAS,CAAA,CAAI,EACjCroD,KAAKsoD,aACDtoD,KAAKqO,OAAOk6C,SAAWvoD,KAAKknD,WAAWqB,UACvCvoD,KAAKqO,OAAOk6C,QAAUvoD,KAAKqO,OAAOk6C,QAAQ52C,OAAO3R,KAAKknD,WAAWqB,OAAO,EACxEvoD,KAAKqO,OAA6B,wBAErB0mB,YAAU,SAAU/0B,KAAKknD,WAAWh6C,OAAO,GAcnDgoB,EAAW,EAAGA,EAAWD,EAAWt0B,OAAQu0B,CAAQ,GACzDC,CAdU,SAAUD,GAEpBD,EAAWC,GAAUE,UAAY,SAAUhH,GACrB,KAAdA,EAAEiH,SAAmBjH,EAAE9tB,OAAO2N,UAAUC,SAAS,YAAY,GAC7DkgB,EAAEkH,kBAGVL,EAAWC,GAAUnF,QAAU,SAAU3B,GACnB,KAAdA,EAAEiH,SAAmBjH,EAAE9tB,OAAO2N,UAAUC,SAAS,YAAY,GAC7D+mB,EAAWC,GAAUrR,UAKrBqR,CAAQ,EAEpBl1B,KAAKqO,OAAO23C,iBAEhBc,EAAQ5mD,UAAUsoD,mBAAqB,WACnC,GAAIxoD,KAAK+nD,UAEL,IADA,IAAI5wC,EAAQnX,KAAK+nD,UAAU5wC,MAClBsxC,EAAY,EAAGA,EAAYtxC,EAAMxW,OAAQ8nD,CAAS,GACnDtxC,EAAMsxC,GAAWn8C,KAAOtM,KAAK8nD,WAAW,MAAM,EAC9C3wC,EAAMsxC,GAAW3vB,QAAiC,SAAvB94B,KAAKqO,OAAOkJ,OAAoBy9B,GAAoB,GAE1E79B,EAAMsxC,GAAWn8C,KAAOtM,KAAK8nD,WAAW,MAAM,EACnD3wC,EAAMsxC,GAAW3vB,QAAiC,SAAvB94B,KAAKqO,OAAOkJ,OAAoBy9B,GAAoB,GAE1E79B,EAAMsxC,GAAWn8C,KAAOtM,KAAK8nD,WAAW,MAAM,EACxB,iBAAvB9nD,KAAKqO,OAAOkJ,QAAoD,gBAAvBvX,KAAKqO,OAAOkJ,OACrDJ,EAAMsxC,GAAW3vB,QAAU94B,KAAKqO,OAAOkJ,QAAWvX,KAAKqO,OAAOkJ,OAASy9B,GAAoB,GAG3F79B,EAAMsxC,GAAW3vB,QAAiC,iBAAvB94B,KAAKqO,OAAOkJ,OAA4By9B,GAAoB,GAGtF79B,EAAMsxC,GAAWn8C,KAAOtM,KAAK8nD,WAAW,WAAW,EACxD3wC,EAAMsxC,GAAW3vB,QAAoC,cAA1B94B,KAAKqO,OAAOgJ,UAA4B49B,EAAqB,GAEnF99B,EAAMsxC,GAAWn8C,KAAOtM,KAAK8nD,WAAW,YAAY,EACzD3wC,EAAMsxC,GAAW3vB,QAAoC,eAA1B94B,KAAKqO,OAAOgJ,UAA6B49B,EAAqB,GAEpF99B,EAAMsxC,GAAWn8C,KAAOtM,KAAK8nD,WAAW,MAAM,IACnD3wC,EAAMsxC,GAAW3vB,QAAoC,SAA1B94B,KAAKqO,OAAOgJ,UAAuB49B,EAAqB,KAKnG6R,EAAQ5mD,UAAU4nD,WAAa,SAAUx7C,GACrC,OAAOtM,KAAKqO,OAAOnB,QAAQZ,GAAK,QAAUA,EAAG0G,eAEjD8zC,EAAQ5mD,UAAU+J,aAAe,SAAUgI,GACd,YAArBjS,KAAKqO,OAAO0F,KACR9B,EAAKb,KAAK9E,KAAOtM,KAAK8nD,WAAW,OAAO,GACxCh0C,GAAa9T,KAAKqO,OAAQ,YAAY,EAItC4D,EAAKb,KAAK9E,KAAOtM,KAAK8nD,WAAW,SAAS,GAC1Ch0C,GAAa9T,KAAKqO,OAAQ,SAAS,GAI/Cy4C,EAAQ5mD,UAAU6mD,gBAAkB,SAAU1kD,GAC1C,IAAI8U,EAAQ,GACR8R,EAAO,OACPjpB,KAAKqO,OAAOuM,WACZqO,EAAO,YAEX,IAAK,IAAIjoB,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAAI,CAClC,IAsFQ0nD,EAtFJt3C,EAAO,KAAA,EACPu3C,EAAW,KAAA,EAIXxV,GAHkC,EAAlCnzC,KAAKqO,OAAOq5C,aAAa/mD,SACzBgoD,EAAW3oD,KAAK4oD,aAAa5oD,KAAKqO,OAAOq5C,aAAan5C,SAASvN,EAAEwN,WAAY,EAAE,EAAE,GAExExO,KAAKwnD,MAAMnlD,EAAKrB,EAAE,GAC3By3B,EAAWpf,EAAcrZ,KAAKqO,OAAQhM,EAAKrB,EAAE,EAC7C6nD,EAAcxvC,EAAcrZ,KAAKqO,OAAQ,WAAahM,EAAKrB,EAAE,EACjE,OAAQqB,EAAKrB,IACT,IAAK,IACDoQ,EAAO,CAAEnP,KAAM,aACf,MACJ,IAAK,SACDmP,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAYxU,GAAiByU,WAAY//B,GACxG,MACJ,IAAK,SACD,IAAIggC,EAAc,iDAAmDxwB,EAAW,UAIhFrnB,EAAO,CACH9E,GAAI6mC,EAAQ2V,YAAaD,EACzB/mD,SAAU,eAAiBqxC,EAAS,kDAJpC8V,EADAN,GAAYA,EAASv8C,KACP,iDAAmDu8C,EAASv8C,KAAO,UAIM68C,GAAc,aAEzG,MAEJ,IAAK,UACD73C,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAY7T,GAAkB8T,WAAY//B,GACzG,MACJ,IAAK,YACD7X,EAAO,CACH9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaK,WAAYC,GAAgBC,SAAU,OAC5FC,MAAO,SAEX,MACJ,IAAK,OACGnB,EAAW,KAAA,EAEXA,EADAS,GAAYA,EAASv8C,KACVu8C,EAASv8C,KAGTiN,EAAcrZ,KAAKqO,OAAQ,MAAM,EAEhD+C,EAAO,CACH9E,GAAI6mC,EAAQ2V,YAAaD,EAAaE,WAAiC,YAArB/oD,KAAKqO,OAAO0F,KAAqBy8B,GAAgBF,GACnG8Y,SAAU,OAAQC,MAAO,QAASj9C,KAAMqsB,EAAUuwB,WAAY,WAC9DlnD,SAAU,eAAiBqxC,EAAS,4DAChC+U,EAAW,cAEnB,MAEJ,IAAK,UACD92C,EAAO,CACH9E,GAAI6mC,EAAQ2V,YAAaD,EAAaE,WAAYjU,GAAkBsU,SAAU,OAAQC,MAAO,QAC7Fj9C,KAAMqsB,EAAUuwB,WAAY,YAEhC,MACJ,IAAK,YACD53C,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAYlU,GAAoBmU,WAAY//B,GAC3G,MACJ,IAAK,MACD7X,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAYvU,GAAcwU,WAAY//B,GACrG,MACJ,IAAK,OACD7X,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAYtU,GAAeuU,WAAY//B,GACtG,MACJ,IAAK,QACD7X,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAYrU,GAAgBsU,WAAY//B,GACvG,MACJ,IAAK,SACD7X,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAYpU,GAAiBqU,WAAY//B,GACxG,MACJ,IAAK,SACD7X,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAYnU,GAAiBoU,WAAY//B,GACxG,MACJ,IAAK,WACD7X,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAY3T,GAAmB4T,WAAY//B,GAC1G,MACJ,IAAK,YACD7X,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAaE,WAAY5T,GAAoB6T,WAAY//B,GAC3G,MACJ,QACI7X,EAAO,CAAE9E,GAAI6mC,EAAQ/mC,KAAMqsB,EAAUqwB,YAAaD,EAAa/mD,SAAU,IAG3C,EAAlC9B,KAAKqO,OAAOq5C,aAAa/mD,QAAcgoD,GACnCD,EAAcnpD,OAAOmnB,OAAO,GAAItV,EAAMu3C,CAAQ,EAClDxxC,EAAM7J,KAAKo7C,CAAW,GAGtBvxC,EAAM7J,KAAK8D,CAAI,EAGvB,OAAO+F,GAEX2vC,EAAQ5mD,UAAU0oD,aAAe,SAAUD,GACvC,IAAIv3C,EAAO,GAoDX,OAnDIu3C,EAASr8C,KACT8E,EAAK9E,GAAKq8C,EAASr8C,IAEnBq8C,EAASv8C,OACTgF,EAAKhF,KAAOu8C,EAASv8C,MAErBu8C,EAASG,cACT13C,EAAK03C,YAAcH,EAASG,aAE5BH,EAASI,aACT33C,EAAK23C,WAAaJ,EAASI,YAE3BJ,EAASluC,WACTrJ,EAAKqJ,SAAWkuC,EAASluC,UAED,SAAxBkuC,EAASK,aACT53C,EAAK43C,WAAaL,EAASK,YAE3BL,EAAS7mD,WACTsP,EAAKtP,SAAW6mD,EAAS7mD,UAEzB6mD,EAASW,WACTl4C,EAAKk4C,SAAWX,EAASW,UAEN,SAAnBX,EAASxmD,QACTiP,EAAKjP,MAAQwmD,EAASxmD,OAEtBwmD,EAASO,aACT93C,EAAK83C,WAAaP,EAASO,YAER,SAAnBP,EAASU,QACTj4C,EAAKi4C,MAAQV,EAASU,OAEA,SAAtBV,EAASS,WACTh4C,EAAKg4C,SAAWT,EAASS,UAEzBT,EAAS5vB,iBACT3nB,EAAK2nB,eAAiB4vB,EAAS5vB,gBAEb,WAAlB4vB,EAAS1mD,OACTmP,EAAKnP,KAAO0mD,EAAS1mD,MAEA,CAAA,IAArB0mD,EAAS58B,UACT3a,EAAK2a,QAAU48B,EAAS58B,SAExB48B,EAASY,oBACTn4C,EAAKm4C,kBAAoBZ,EAASY,mBAEZ,CAAC,IAAvBZ,EAASa,WACTp4C,EAAKo4C,SAAWb,EAASa,UAEtBp4C,GAEX01C,EAAQ5mD,UAAUsnD,MAAQ,SAAUl7C,GAChC,OAAOtM,KAAKqO,OAAOnB,QAAQZ,GAAK,OAASA,EAAG0G,eAEhD8zC,EAAQ5mD,UAAUu6B,iBAAmB,WACjCz6B,KAAKqO,OAAOqzB,GAAGvB,EAAqBngC,KAAKogC,kBAAmBpgC,IAAI,EAChEA,KAAKqO,OAAOqzB,GAAG9V,EAAyB5rB,KAAKypD,mBAAoBzpD,IAAI,EACrEA,KAAKqO,OAAOqzB,GAAGrvB,EAAqBrS,KAAKo9B,eAAgBp9B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAG7xB,GAAkB7P,KAAKyK,UAAWzK,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGzyB,GAAkBjP,KAAK0K,UAAW1K,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAG4N,GAAgBtvC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOqzB,GAAG3mB,GAAqB/a,KAAKwoD,mBAAoBxoD,IAAI,GAErE8mD,EAAQ5mD,UAAUwpD,gBAAkB,SAAUt7B,GAC1C,IAAI+M,EAAQn7B,KACR2pD,EAAiB,GACiB,EAAlC3pD,KAAKqO,OAAOq5C,aAAa/mD,OACzBgpD,EAAiB3pD,KAAKqO,OAAOq5C,aAAaz9B,IAAI,SAAU7Y,GACpD,OAAOA,EAAK6F,KACf,EAEwCqN,KAAAA,IAApC8J,EAAE0T,QAAQ0a,gBAAgBrlC,QAC/BwyC,EAAiBv7B,EAAE0T,QAAQ0a,gBAAgBrlC,MAAM8S,IAAI,SAAU7Y,GAC3D,OAAOA,EAAKwiC,OACf,GAEuB,EAAxB+V,EAAehpD,SACfX,KAAKmX,MAAQnX,KAAK+mD,gBAAgB/mD,KAAKgnD,SAAS2C,CAAc,CAAC,EAC3DlzC,EAAY,CAAEU,MAAOnX,KAAKmX,OAC9BnX,KAAKqO,OAAO6H,QAAQ,gBAAiBO,EAAW,SAAUwwC,GAClD9rB,EAAM4sB,WACN5sB,EAAM4sB,UAAU3+C,UAEhB+xB,EAAM6sB,cACN7sB,EAAM6sB,aAAa5+C,UAEvB+xB,EAAMhkB,MAAQ8vC,EAAkB9vC,MAChCgkB,EAAM+rB,WAAW/vC,MAAQgkB,EAAMhkB,MAC/BgkB,EAAM+rB,WAAW70B,WACjB8I,EAAMisB,uBACT,IAGTN,EAAQ5mD,UAAUupD,mBAAqB,WACnCzpD,KAAKsoD,aACLtoD,KAAKooD,UAAUpoD,KAAK4pD,OAAQ,CAAA,CAAI,EAChC5pD,KAAKooD,UAAUpoD,KAAK6pD,UAAW,CAAA,CAAK,EACK,IAArC7pD,KAAKqO,OAAO+B,cAAczP,QAC1BX,KAAKooD,UAAUpoD,KAAK4pD,OAAQ,CAAA,CAAK,EACjC5pD,KAAKooD,UAAUpoD,KAAK6pD,UAAW,CAAA,CAAI,GAEK,EAAnC7pD,KAAKqO,OAAO+B,cAAczP,SAC/BX,KAAKooD,UAAUpoD,KAAK8pD,SAAU,CAAA,CAAK,EACnC9pD,KAAKooD,UAAUpoD,KAAK6pD,UAAW,CAAA,CAAI,GAEvC,IAIQt5B,EAJJhR,EAAMzR,SAAO,IAAM9N,KAAKwnD,MAAM,WAAW,EAAGxnD,KAAKknD,WAAWh6C,OAAO,EAChC,EAAnClN,KAAKqO,OAAO+B,cAAczP,QAAc4e,GAAO,CAACvf,KAAKqO,OAAOmrB,uBACxDjJ,EAAM,KAAA,EAENA,EADqC,IAArCvwB,KAAKqO,OAAO+B,cAAczP,OACpBX,KAAKqO,OAAO+B,cAAczP,OAAS,IAAM0Y,EAAcrZ,KAAKqO,OAAQ,gBAAgB,EAGpFrO,KAAKqO,OAAO+B,cAAczP,OAAS,IAAM0Y,EAAcrZ,KAAKqO,OAAQ,iBAAiB,EAE/FP,SAAO,mBAAoByR,CAAG,EAAEvR,YAAcuiB,EAC9CvwB,KAAKknD,WAAW6C,SAASxqC,EAAIuC,cAAe,CAAA,CAAK,IAGzDglC,EAAQ5mD,UAAUkoD,UAAY,SAAU4B,EAAOC,GAC3C,IAAK,IAAIjpD,EAAI,EAAGA,EAAIgpD,EAAMrpD,OAAQK,CAAC,GAAI,CACnC,IAAIue,EAAMzR,SAAO,IAAM9N,KAAKwnD,MAAMwC,EAAMhpD,EAAE,EAAGhB,KAAKqO,OAAOnB,OAAO,EAC5DqS,GACAvf,KAAKknD,WAAW6C,SAASxqC,EAAIuC,cAAemoC,CAAM,IAI9DnD,EAAQ5mD,UAAUooD,WAAa,WAC3B,IAAI/oC,EAAMzR,SAAO,IAAM9N,KAAKwnD,MAAM,WAAW,EAAGxnD,KAAKknD,WAAWh6C,OAAO,EACnEqS,GACAvf,KAAKknD,WAAW6C,SAASxqC,EAAIuC,cAAe,CAAA,CAAI,GAGxDglC,EAAQ5mD,UAAUuK,UAAY,WAC1BzK,KAAKooD,UAAU,CAAC,SAAU,CAAA,CAAK,GAEnCtB,EAAQ5mD,UAAUwK,UAAY,WAC1B1K,KAAKooD,UAAU,CAAC,SAAU,CAAA,CAAI,GAElCtB,EAAQ5mD,UAAUk9B,eAAiB,WAC/B,GAAIp9B,KAAKgoD,aAAc,CACnBhoD,KAAKgoD,aAAalvB,QAA+B,YAArB94B,KAAKqO,OAAO0F,KAAqBy8B,GAAgBF,GAE7E,IADA,IAAIn5B,EAAQnX,KAAKgoD,aAAa7wC,MACrBsxC,EAAY,EAAGA,EAAYtxC,EAAMxW,OAAQ8nD,CAAS,GACnDtxC,EAAMsxC,GAAWn8C,KAAOtM,KAAK8nD,WAAW,OAAO,EAC/C3wC,EAAMsxC,GAAW3vB,QAA+B,eAArB94B,KAAKqO,OAAO0F,KAAwBkhC,EAAqB,GAE/E99B,EAAMsxC,GAAWn8C,KAAOtM,KAAK8nD,WAAW,SAAS,IACtD3wC,EAAMsxC,GAAW3vB,QAA+B,YAArB94B,KAAKqO,OAAO0F,KAAqBkhC,EAAqB,MAKjG6R,EAAQ5mD,UAAU83B,oBAAsB,WACpCh4B,KAAKqO,OAAO2xB,IAAIG,EAAqBngC,KAAKogC,iBAAiB,EAC3DpgC,KAAKqO,OAAO2xB,IAAIpU,EAAyB5rB,KAAKypD,kBAAkB,EAChEzpD,KAAKqO,OAAO2xB,IAAI3tB,EAAqBrS,KAAKo9B,cAAc,EACxDp9B,KAAKqO,OAAO2xB,IAAInwB,GAAkB7P,KAAKyK,SAAS,EAChDzK,KAAKqO,OAAO2xB,IAAI/wB,GAAkBjP,KAAK0K,SAAS,EAChD1K,KAAKqO,OAAO2xB,IAAIsP,GAAgBtvC,KAAKoJ,OAAO,EAC5CpJ,KAAKqO,OAAO2xB,IAAIjlB,GAAqB/a,KAAKwoD,kBAAkB,GAQhE1B,EAAQ5mD,UAAUs8B,cAAgB,WAC9B,MAAO,WAEXsqB,EAAQ5mD,UAAUkgC,kBAAoB,SAAUhS,GAC5C,GAAIA,EAAEtT,SAAW9a,KAAKw8B,iBAAgC,WAAbpO,EAAEtT,OAI3C,IAAK,IAAI8mB,EAAK,EAAGC,EAAKtiC,OAAO4iB,KAAKiM,EAAE0T,OAAO,EAAGF,EAAKC,EAAGlhC,OAAQihC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,WACG5hC,KAAK+nD,YACL/nD,KAAK+nD,UAAUttC,SAAWF,GAAYva,KAAKqO,OAAQ0jB,EAAc,GAEjE/xB,KAAKgoD,eACLhoD,KAAKgoD,aAAavtC,SAAWF,GAAYva,KAAKqO,OAAQ,gBAAkB0jB,EAAc,GAE1F,MACJ,IAAK,SACL,IAAK,QACD/xB,KAAKknD,WAAWgD,kBAChB,MACJ,IAAK,kBACL,IAAK,eACDlqD,KAAK0pD,gBAAgBt7B,CAAC,IAKtC04B,EAAQ5mD,UAAUkJ,QAAU,WACpBpJ,KAAKqO,OAAO0xB,cAGhB//B,KAAKg4B,sBACDh4B,KAAK+nD,WACL/nD,KAAK+nD,UAAU3+C,UAEfpJ,KAAKgoD,cACLhoD,KAAKgoD,aAAa5+C,UAEtBpJ,KAAKknD,WAAW99C,UAChBpJ,KAAKqO,OAAO23C,kBAEhBc,EAAQ5mD,UAAU6yC,YAAc,SAAU57B,EAAOgzC,GAC7C,IAAK,IAAInpD,EAAI,EAAGA,EAAImW,EAAMxW,OAAQK,CAAC,GAAI,CACnC,IAAIue,EAAMzR,SAAO,IAAM9N,KAAKwnD,MAAMrwC,EAAMnW,EAAE,EAAGhB,KAAKqO,OAAOnB,OAAO,EAC5DqS,GACAvf,KAAKknD,WAAWnU,YAAYxzB,EAAIuC,cAAeqoC,CAAQ,IAhlBnErD,EAolBOA,EA5kBP,SAASA,EAAQz4C,GACbrO,KAAKqoD,QAAU,CAAC,SAAU,SAAU,WAAY,MAAO,OAAQ,SAC/DroD,KAAK4pD,OAAS,CAAC,SAAU,SAAU,WAAY,MAAO,QACtD5pD,KAAK8pD,SAAW,CAAC,SAAU,WAAY,MAAO,OAAQ,WACtD9pD,KAAK6pD,UAAY,CAAC,YAAa,SAAU,SAAU,WACnD7pD,KAAKqO,OAASA,EACdrO,KAAKw3B,SACLx3B,KAAKy6B,mBChBT2vB,GAAelqD,UAAUw5B,oBAAsB,WAE3C,IAAI2wB,EAAmBrqD,KAAKsqD,kBAAkBnzC,MAE1C4tB,EAAYslB,EAAiB94C,MAAM,EAAG,CAAC,EAEvCooB,EAAeC,WAASC,mBAAmBlhB,gBAAeosB,EAAW/kC,KAAKsqD,kBAAkBxyB,OAAO,EAEvG93B,KAAK85B,SAAWp6B,MAAMQ,UAAUqR,MAAMiV,KAAKuO,YAAU,IAAMlnB,EAAe8rB,CAAY,CAAC,EAEvF35B,KAAKsqD,kBAAkBp9C,QAAQgM,YAAYygB,CAAY,EAC1B,IAAzB35B,KAAK85B,SAASn5B,QAAgBX,KAAKsqD,kBAAkBp9C,QAAQsL,cAAc,IAAMC,CAAS,GAC1FzY,KAAKsqD,kBAAkBp9C,QAAQ6gB,YAAY/tB,KAAKsqD,kBAAkBp9C,QAAQsL,cAAc,IAAMC,CAAS,CAAC,EAG5GzY,KAAKyoD,UAAYzoD,KAAKw6B,aAAaj7B,OAAO4iB,KAAKniB,KAAKsqD,kBAAkBz2C,QAAQ,EAAElT,MAAM,EAEtFX,KAAKsqD,kBAAkBp9C,QAAQi7C,WAAWx3C,SAE1C3Q,KAAKsqD,kBAAkBnzC,MAAQkzC,EAAiB94C,MAAM,EAAGvR,KAAKyoD,SAAS,GAQ3E2B,GAAelqD,UAAUy6B,mBAAqB,WAE1C36B,KAAKuqD,cAAgBvqD,KAAKsqD,kBAAkBz2C,SAASlT,OAASX,KAAKyoD,WAAazoD,KAAKwqD,cAChFxqD,KAAKsqD,kBAAkBz2C,SAASlT,OAASX,KAAKyoD,WAAazoD,KAAKwqD,aAAexqD,KAAKwqD,aAEzFxqD,KAAKyqD,WAAazqD,KAAK0qD,oBAAoB/xC,cAAc,KAAK,EAC9D3Y,KAAKyqD,WAAWx8C,UAAUqC,IAAI,eAAe,EAC7CtQ,KAAKsqD,kBAAkBp9C,QAAQ8U,kBAAkBkb,aAAal9B,KAAKyqD,WAAYzqD,KAAKsqD,kBAAkBp9C,QAAQ8U,kBAAkBmmC,UAAU,EAC1InoD,KAAK2qD,cAAgB3qD,KAAK0qD,oBAAoB/xC,cAAc,KAAK,EACjE3Y,KAAK2qD,cAAc18C,UAAUqC,IAAI,kBAAkB,EACnDtQ,KAAKsqD,kBAAkBp9C,QAAQ8U,kBAAkBkb,aAAal9B,KAAK2qD,cAAe,IAAI,EAEtF,IAAIjkB,EAAcn4B,SAASwR,OAAOiX,iBAAiBh3B,KAAKsqD,kBAAkBxwB,SAAS,EAAE,EAAE6M,iBAAiB,YAAY,EAAG,EAAE,EACrHp4B,SAASwR,OAAOiX,iBAAiBh3B,KAAKsqD,kBAAkBxwB,SAAS,EAAE,EAAE6M,iBAAiB,eAAe,EAAG,EAAE,EAE9G3mC,KAAK4qD,eAAiB5qD,KAAKsqD,kBAAkBxwB,SAAS,GAAGvY,wBAAwB+U,OAASoQ,EAE1F1mC,KAAK6qD,YAAetrD,OAAO4iB,KAAKniB,KAAKsqD,kBAAkBz2C,QAAQ,EAAElT,OAASX,KAAKwqD,aAAgBxqD,KAAK4qD,eAEpG5qD,KAAKyqD,WAAWnxC,MAAMgd,OAAS,MAC/Bt2B,KAAK2qD,cAAcrxC,MAAMgd,OAASt2B,KAAK6qD,YAAc,KAErD7qD,KAAK8qD,iBAAmB,EACxB9qD,KAAK+qD,oBAAsB/qD,KAAK6qD,YAEhC7qD,KAAKgrD,SAAW,EAEhBhrD,KAAKirD,cAAgBjrD,KAAKyoD,WAQ9B2B,GAAelqD,UAAUs6B,aAAe,SAAU0wB,GAE9C,IAAIC,EAAc58C,SAASwR,OAAOiX,iBAAiBh3B,KAAK85B,SAAS,EAAE,EAAE6M,iBAAiB,cAAc,EAAG,EAAE,EACrGp4B,SAASwR,OAAOiX,iBAAiBh3B,KAAK85B,SAAS,EAAE,EAAE6M,iBAAiB,aAAa,EAAG,EAAE,EAMtF8hB,GAJJzoD,KAAKwqD,aACDlG,KAAK8G,MAAMl0B,WAAWokB,aAAWt7C,KAAKsqD,kBAAkBp9C,QAAQ8U,kBAAkBuqB,WAAW,CAAC,GACzFvsC,KAAK85B,SAAS,GAAGxC,YAAc6zB,EAAY,EAEpCnrD,KAAKwqD,aAChBlG,KAAK+G,MAAMn0B,WAAWokB,aAAWt7C,KAAKsqD,kBAAkBp9C,QAAQsU,YAAY,CAAC,EAAIxhB,KAAK85B,SAAS,GAAG1hB,YAAa,GAKpH,OAFIqwC,EADYyC,EAAZzC,GAA8C,IAAdA,EACpByC,EAETzC,GAQX2B,GAAelqD,UAAU06B,gBAAkB,SAAUxxB,GAC5CA,EAMDo5B,eAAa7xB,OAAO3Q,KAAKsqD,kBAAkBp9C,QAAQ8U,kBAAmB,SAAUhiB,KAAKsrD,iBAAiB,EAJtG9oB,eAAalyB,IAAItQ,KAAKsqD,kBAAkBp9C,QAAQ8U,kBAAmB,SAAUhiB,KAAKsrD,kBAAmBtrD,IAAI,GAcjHoqD,GAAelqD,UAAUorD,kBAAoB,WAKzCtrD,KAAKurD,eAAiBj0C,oBAAkBtX,KAAKurD,cAAc,EAAI,EAAIvrD,KAAKurD,eAJxE,IAAI1pB,EA0BQmpB,EArBRQ,EAASxrD,KAAKyrD,kBAHG,CAG6B,EAElDzrD,KAAK8qD,iBAAmB9qD,KAAK4qD,eAAiBtG,KAAK8G,MAAMI,EAASxrD,KAAK4qD,cAAc,EAErF5qD,KAAK+qD,oBAAsB/qD,KAAK6qD,YAAc7qD,KAAK8qD,iBAGnDjpB,EAAK2pB,GAAUxrD,KAAK6qD,YAChB,CAAC7qD,KAAK8qD,iBAAkB9qD,KAAK+qD,qBAAuB,CAAC/qD,KAAK6qD,YAAa,GAAI7qD,KAAK8qD,iBAAmBjpB,EAAG,GAAI7hC,KAAK+qD,oBAAsBlpB,EAAG,GAExI7hC,KAAK8qD,mBAAqB5zB,WAAWl3B,KAAKyqD,WAAWnxC,MAAMgd,MAAM,IACjEt2B,KAAKyqD,WAAWnxC,MAAMgd,OAASt2B,KAAK8qD,iBAAmB,KACvD9qD,KAAK2qD,cAAcrxC,MAAMgd,OAASt2B,KAAK+qD,oBAAsB,KAEzDS,EAASxrD,KAAKurD,gBAEVP,EAAW1G,KAAK+G,MAAQrrD,KAAK8qD,iBAAmB9qD,KAAK4qD,eAAkB5qD,KAAKgrD,UAChFhrD,KAAK0rD,eAAeV,EAAU,CAAA,CAAI,IAI9BA,EAAW1G,KAAK+G,MAAOrrD,KAAKgrD,SAAYhrD,KAAK8qD,iBAAmB9qD,KAAK4qD,gBACzE5qD,KAAK0rD,eAAeV,EAAU,CAAA,CAAK,IAI3ChrD,KAAKgrD,SAAW1G,KAAK+G,MAAMrrD,KAAK8qD,iBAAmB9qD,KAAK4qD,cAAc,EACtE5qD,KAAKurD,eAAiBC,EAEtBxrD,KAAKsqD,kBAAkBxwB,SAAWp6B,MAAMQ,UAAUqR,MAAMiV,KAAKuO,YAAU,IAAMlnB,EAAe7N,KAAKsqD,kBAAkBp9C,OAAO,CAAC,EAC3HlN,KAAKyoD,UAAYzoD,KAAKyoD,YAAczoD,KAAKsqD,kBAAkBxwB,SAASn5B,OAChEX,KAAKsqD,kBAAkBxwB,SAASn5B,OAASX,KAAKyoD,UAClDzoD,KAAKsqD,kBAAkBnzC,MAAQnX,KAAKsqD,kBAAkBz2C,SAAStC,MAAMvR,KAAKirD,cACtEjrD,KAAKyoD,UAAWzoD,KAAKirD,aAAa,GAS1Cb,GAAelqD,UAAUurD,kBAAoB,SAAUE,GAGnD,OAAS3rD,KAAKsqD,kBAAkBp9C,QAAQ8U,kBAAkBmjB,UAAYwmB,GAAmB,EAAK,EACzF3rD,KAAKsqD,kBAAkBp9C,QAAQ8U,kBAAkBmjB,UAAYwmB,GAUtEvB,GAAelqD,UAAUwrD,eAAiB,SAAUV,EAAUY,GAE1D,IAAK,IAAI5qD,EAAI,EAAGA,EAAIgqD,EAAUhqD,CAAC,GAC3BhB,KAAK6rD,SAASD,CAAe,GAUrCxB,GAAelqD,UAAU2rD,SAAW,SAAUD,GAC1C,IAAIzwB,EAAQn7B,KACZ,GAAI4rD,GAIA,GAFA5rD,KAAKmX,MAAQnX,KAAKsqD,kBAAkBz2C,SAAStC,MAAMvR,KAAKirD,cAAejrD,KAAKirD,cAAgBjrD,KAAKwqD,YAAY,EAErF,EAApBxqD,KAAKmX,MAAMxW,OAAY,CACvB,IAAIg5B,EAAeC,WAASC,mBAAmBlhB,gBAAe3Y,KAAKmX,MAAOnX,KAAKsqD,kBAAkBxyB,OAAO,EACxG93B,KAAK85B,SAAWp6B,MAAMQ,UAAUqR,MAAMiV,KAAKuO,YAAU,IAAMlnB,EAAe8rB,CAAY,CAAC,EACvF35B,KAAK85B,SAAStoB,QAAQ,SAAUg+B,GAC5BrU,EAAMmvB,kBAAkBp9C,QAAQ8U,kBAAkBkb,aAAasS,EAAOrU,EAAMwvB,aAAa,EAC5F,EAED3qD,KAAKirD,cAAiBjrD,KAAKsqD,kBAAkBz2C,SAASlT,QAAUX,KAAKirD,cAAgBjrD,KAAKwqD,aACtFxqD,KAAKirD,cAAgBjrD,KAAKwqD,aAAexqD,KAAKirD,cAAgBjrD,KAAKuqD,aAEvE,IAAK,IAAIvpD,EAAI,EAAGA,EAAIhB,KAAKwqD,aAAcxpD,CAAC,GACpCqf,SAAOrgB,KAAKyqD,WAAWz+B,kBAAkB,OAIhD,CAED,IAAI8/B,EAAgB,KAAA,EAChBC,EAAgB,KAAA,EAkBhBC,GAjBAhsD,KAAKirD,gBAAkBjrD,KAAKsqD,kBAAkBz2C,SAASlT,QAEvDmrD,EAAgB9rD,KAAKirD,eAAiBjrD,KAAKyoD,UAAYzoD,KAAKwqD,aAAexqD,KAAKuqD,cAEhFvqD,KAAKirD,cAAkBjrD,KAAKirD,cAAgBjrD,KAAKuqD,aAAgBvqD,KAAKyoD,UAClEzoD,KAAKyoD,UAAazoD,KAAKirD,cAAgBjrD,KAAKuqD,aAEhDwB,EAAgB,CAAA,IAIhBD,EAAgB9rD,KAAKirD,cAAgBjrD,KAAKyoD,UAE1CzoD,KAAKirD,cAAkBjrD,KAAKirD,cAAgBjrD,KAAKwqD,aAAgBxqD,KAAKyoD,UAClEzoD,KAAKyoD,UAAazoD,KAAKirD,cAAgBjrD,KAAKwqD,cAGM,EAApCsB,EAAgB9rD,KAAKwqD,aAAoBsB,EAAgB9rD,KAAKwqD,aAAe,GAGnG,GADAxqD,KAAKmX,MAAQnX,KAAKsqD,kBAAkBz2C,SAAStC,MAAMy6C,EAAgBF,CAAa,EACxD,EAApB9rD,KAAKmX,MAAMxW,OAAY,CAEnBg5B,EAAeC,WAASC,mBAAmBlhB,gBAAe3Y,KAAKmX,MAAOnX,KAAKsqD,kBAAkBxyB,OAAO,EAExG93B,KAAK85B,SAAWp6B,MAAMQ,UAAUqR,MAAMiV,KAAKuO,YAAU,IAAMlnB,EAAe8rB,CAAY,CAAC,EAEvF,IAAK,IAAI/f,EAAM5Z,KAAK85B,SAASn5B,OAAc,EAANiZ,EAASA,CAAG,GAC7C5Z,KAAKsqD,kBAAkBp9C,QAAQ8U,kBAAkBkb,aAAal9B,KAAK85B,SAASlgB,EAAM,GAAI5Z,KAAKyqD,WAAWz+B,kBAAkB,EAG5H,IAAShrB,EAAI,EAAGA,GAAK,EAAkBhB,KAAKuqD,aAAevqD,KAAKwqD,cAAexpD,CAAC,GAC5Eqf,SAAOrgB,KAAK2qD,cAAcsB,sBAAsB,KAWhE7B,GAAelqD,UAAUs8B,cAAgB,WACrC,MAAO,kBAOX4tB,GAAelqD,UAAUkJ,QAAU,WAE3BpJ,KAAK0qD,oBAAoB3qB,aAIxBzoB,oBAAkBtX,KAAKsqD,kBAAkBp9C,QAAQ8U,iBAAiB,GACnEhiB,KAAK46B,gBAAgB,CAAA,CAAI,OA7QjCwvB,GAgROA,GA/QP,SAASA,GAAej+C,GACpBnM,KAAK0qD,oBAAsBv+C,EAC3BnM,KAAKsqD,kBAAoBn+C,EAASyH,qBC+CtCs4C,EAAehsD,UAAUisD,OAAS,WAC9B,IAGIC,EAEAC,EACA//C,EANCG,oBAAMzM,KAAK6e,OAAO,IAGnButC,EAAW//C,WAASrM,KAAKqO,OAAOvB,OAAO,GAAI9M,KAAKqO,OAAOI,QAAQ,EACnEoL,WAAS,WAAY,cAAeuyC,CAAQ,EACxCC,EAAO,GACP//C,EAAKD,WAAS,KAAM+/C,CAAQ,EAC3B3/C,oBAAMH,CAAE,GACTuN,WAAS,UAAWvN,EAAI+/C,CAAI,EAE3B5pC,EAAc2pC,CAAQ,GACvBvyC,WAAS,QAASsJ,GAAeipC,CAAQ,EAAGC,CAAI,EAE/C5/C,oBAAM4/C,CAAI,GACXxyC,WAAS,eAAgBwyC,EAAMD,CAAQ,EAE3CpsD,KAAK6e,QAAU,IAAIytC,WAAa,CAC5BzzB,OAAQ,CACJllB,WAAY,CAACy4C,GAAW9/C,GAAI,SAAUigD,SAAU,UAAWC,SAAU,eAAgB5uB,SAAU,eAAgBxxB,KAAM,OACrHqgD,YAAa,WAAY3zB,QAAS,WAAYC,eAAgB,eAAgB2zB,QAAS,QAE3Fz6B,oBAAqBjyB,KAAKqO,OAAO4jB,oBACjC5a,UAAWrX,KAAKqO,OAAOotC,uBAAuBpkC,UAC9Cs1C,cAAe3sD,KAAK4sD,gBAAgBz8B,KAAKnwB,IAAI,EAC7C6sD,aAAc7sD,KAAK8sD,eAAe38B,KAAKnwB,IAAI,EAC3C+sD,cAAe/sD,KAAKgtD,aAAa78B,KAAKnwB,IAAI,EAC1CitD,YAAajtD,KAAKktD,cAAc/8B,KAAKnwB,IAAI,EACzCmtD,aAAc,CAAA,EACdC,YAAaptD,KAAKqtD,cAAcl9B,KAAKnwB,IAAI,EACzCstD,SAAUttD,KAAKutD,WAAWp9B,KAAKnwB,IAAI,EACnCgyB,UAAWhyB,KAAKqO,OAAO2jB,UACvBw7B,UAAWxtD,KAAKytD,YAAYt9B,KAAKnwB,IAAI,EACxC,EACDA,KAAK6e,QAAQqT,iBAAmB,CAAA,EAChClyB,KAAK6e,QAAQsT,SAAS,IAAMnyB,KAAKqO,OAAOnB,QAAQZ,GAAK0lC,EAAW,EAChEhyC,KAAK06B,eAETwxB,EAAehsD,UAAUutD,YAAc,WACnC,IAAItyB,EAAQn7B,KACR,CAACA,KAAKqO,OAAOuM,UAAY5a,KAAK6e,UAC1B7e,KAAKqO,OAAOqS,kBAAoBjU,oBAAMzM,KAAKygB,OAAO,EAClDzgB,KAAKygB,QAAU,IAAI2a,YAAUp7B,KAAK6e,QAAQ3R,QAAS,CAC/CyuB,SAAU37B,KAAKqO,OAAOutB,mBACtBJ,WAAY,IAAMgW,GAClBlW,SAAU,EACVO,SAAU77B,KAAKqO,OAAOnB,QACtB6uB,KAAMra,GAAgByO,KAAKnwB,KAAMA,KAAKqO,MAAM,EAC5C4tB,UAAW,SAAUhqB,GACjBuO,GAAiB2a,EAAM9sB,OAAQ4D,EAAMkpB,EAAM1a,OAAO,GAEtDqb,SAAUnc,GAAgBwQ,KAAKnwB,KAAMA,KAAKqO,MAAM,EAChDgtB,eAAgB,CAAA,EAChBE,iBAAkB,CAAA,EAClBE,OAAQz7B,KAAK07B,WAAWvL,KAAKnwB,IAAI,EACpC,EAEI,CAACA,KAAKqO,OAAOqS,kBAAoB1gB,KAAKygB,UAC3CzgB,KAAKygB,QAAQrX,UACbpJ,KAAKygB,QAAU,QAI3ByrC,EAAehsD,UAAUw7B,WAAa,SAAUzpB,GAC5C,IAAIupB,EAAavpB,EAAKiqB,OAAO57B,OAC7B,OAAKk7B,EAAWvtB,UAAUC,SAASsjC,EAAW,GAG1CrV,EAAStrB,UAAQ2qB,EAAY,IAAI,EACrCx7B,KAAKqO,OAAO0O,SAAW,GACvB/c,KAAKqO,OAAO6O,SAAW,GACvBld,KAAKqO,OAAOgB,eAAiB,GAC7BrP,KAAKqO,OAAOgB,eAAiB,CAAC8sB,GAC9Bn8B,KAAKqO,OAAO+O,UAAY,GACxBzN,GAAU3P,KAAKqO,OAAQ8tB,CAAM,EAC7Bn8B,KAAKqO,OAAO6O,SAAWld,KAAK0sB,YAAYyP,CAAM,EAC9Cn8B,KAAKqO,OAAO0O,SAAW/c,KAAK0tD,YAAYvxB,EAAQn8B,KAAKqO,OAAO6O,SAAS,GAAGjG,IAAI,EAC5EjX,KAAKqO,OAAO+O,UAAU9P,KAAKtN,KAAKqO,OAAO6O,SAAS,GAAGjG,IAAI,EACvDiI,GAAyBlf,KAAKqO,MAAM,EAC7BrO,KAAKqO,OAAOqR,oBAbR,MAefwsC,EAAehsD,UAAUwtD,YAAc,SAAUvxB,EAAQ/vB,GAErD,OAAOsD,GADI1P,KAAK2tD,YAAYxxB,EAAQ/vB,CAAI,CACf,GAE7B8/C,EAAehsD,UAAUytD,YAAc,SAAUzhD,EAAME,GACnD,IAAIE,EAAKJ,EAAKK,aAAa,SAAS,EAEpC,OAAOK,GAAQV,EADDlM,KAAKqO,OAAOxB,MAAQP,EAAKF,EACTpM,KAAKqO,OAAOxB,KAAK,GAEnDq/C,EAAehsD,UAAUqtD,WAAa,SAAUt7C,GACxCwE,EAAY,CACZvJ,QAAS+E,EAAK/F,KACdkK,YAAanE,EAAK27C,SAClB9yC,OAAQ,kBAEZ9a,KAAKqO,OAAO6H,QAAQ,WAAYO,CAAS,GAE7Cy1C,EAAehsD,UAAU2tD,SAAW,SAAUt6C,EAAOjT,EAAQwtD,GACzD,IAAIC,EAAcv0C,GAAejG,CAAK,EAClCy6C,EAAkBhuD,KAAK0sB,YAAYpsB,CAAM,EAC7C,GAAyB,EAArBytD,EAAYptD,QAAuC,EAAzBqtD,EAAgBrtD,SACZ,MAA7BotD,EAAY,GAAGxrC,YACZ9V,oBAAMuhD,EAAgB,EAAE,GACgB,MAAjCA,EAAgB,GAAGzrC,YACvBwrC,EAAY,GAAGxrC,aACdyrC,EAAgB,GAAGzrC,YAAa,CAGxC,IAFA,IAAIgb,EAAW,EACXhiB,EAAUwyC,EACPxwB,EAAWwwB,EAAYptD,QAAQ,CAElC4a,EAAQhN,SAASgvB,EAAS/uB,WAAY,EAAE,GAAGy/C,SAAW,cACtD,IAAI5B,EAAO,GACP//C,EAAKD,WAAS,KAAMkP,EAAQgiB,EAAS,EACpC9wB,oBAAMH,CAAE,GACTuN,WAAS,UAAWvN,EAAI+/C,CAAI,EAE3B5pC,EAAclH,EAAQgiB,EAAS,GAChC1jB,WAAS,QAASsJ,GAAe5H,EAAQgiB,EAAS,EAAG8uB,CAAI,EAExD5/C,oBAAM4/C,CAAI,GACXxyC,WAAS,eAAgBwyC,EAAM9wC,EAAQgiB,EAAS,EAEpDA,CAAQ,GAERrwB,EAAUY,SAAO,cAAgBxN,EAAS,KAAMN,KAAK6e,QAAQ3R,OAAO,EACpEghD,EAAgBpgD,SAAO,KAAMZ,CAAO,EACpCT,oBAAMyhD,CAAa,GACnBluD,KAAK6e,QAAQsvC,SAASJ,EAAaztD,EAAQ,KAAMwtD,CAAO,IAKpE5B,EAAehsD,UAAU0sD,gBAAkB,SAAU36C,GACjD,IAQQ27C,EASQn3C,EAaJ23C,GA9BPn8C,EAAKmiB,cAAiBp0B,KAAKquD,cAC3BruD,KAAKsuD,mBAAsBtuD,KAAKuuD,eAAkBvuD,KAAKwuD,iBAAkBxuD,CAAAA,KAAKyuD,kBAK9EzuD,KAAK0uD,eACN1uD,KAAKqO,OAAOmB,aAAe,iBACvBo+C,EAAW5tD,KAAK0sB,YAAYrgB,WAAS,KAAM4F,EAAK27C,QAAQ,CAAC,EACzD37C,EAAK/F,KAAKK,aAAa,UAAU,IAAMvM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,IAAM,CAACX,KAAKquD,cAAgB,CAACruD,KAAK2uD,mBAAqB3uD,KAAKsuD,mBAClJtuD,KAAK2uD,kBAAoB,CAAA,EACpB3uD,KAAKsuD,oBACNtuD,KAAKsuD,kBAAoB,CAAA,EACrBF,EAAiB,CAAEj/C,OAAQ8C,EAAK9C,OAAQiH,YAAaw3C,EAAS,GAAIx5B,aAAcniB,EAAKmiB,cACzFp0B,KAAKqO,OAAO6H,QAAQ,aAAck4C,CAAc,GAE/CpuD,KAAKquD,eACF53C,EAAY,CAAEoJ,OAAQ,CAAA,EAAOzJ,YAAaw3C,EAAS,GAAI9yC,OAAQ,kBACnE9a,KAAKqO,OAAO6H,QAAQ,WAAYO,CAAS,EACzCxE,EAAK4N,OAASpJ,EAAUoJ,QAExB5N,EAAK4N,SACL7f,KAAKyuD,kBAAoBzuD,CAAAA,CAAAA,KAAK2uD,mBAAoB3uD,KAAKysB,iBAAiB,KAAOxa,EAAK/F,KAAKK,aAAa,UAAU,EAChHvM,KAAK2uD,kBAAoB,CAAA,EACzB3uD,KAAKsuD,kBAAoB,CAAA,EACzBtuD,KAAKysB,iBAAmBzsB,KAAK6e,QAAQhQ,cACrC7O,KAAK6e,QAAQnS,cAAc,CAAEmC,cAAe,CAACoD,EAAK/F,KAAKK,aAAa,UAAU,GAAI,IAGjFvM,KAAKysB,iBAAiB,KAAOxa,EAAK/F,KAAKK,aAAa,UAAU,IAC/D6hD,EAAiB,CAAEj/C,OAAQ8C,EAAK9C,OAAQiH,YAAaw3C,EAAS,GAAIx5B,aAAcp0B,KAAK2uD,mBACzF3uD,KAAKqO,OAAO6H,QAAQ,aAAck4C,CAAc,KA7BpDpuD,KAAKyuD,kBAAoB,CAAA,EACzBzuD,KAAK2uD,kBAAoB,CAAA,IAiCjCzC,EAAehsD,UAAUi0C,2BAA6B,SAAUjoC,GAC5D,IAAI7J,EAAOrC,KAAK6e,QAAQ6N,YAAYxgB,CAAI,EAKpCuK,GAJJzW,KAAKqO,OAAO+B,cAAgB,GAC5BpQ,KAAKqO,OAAO8D,SAAW9P,EACvBrC,KAAKsxC,WAAaplC,EAEF,CAAE2T,OAAQ,EAD1B7f,KAAKqO,OAAOmB,aAAe,kBACM4G,YAAa/T,EAAK,GAAIyY,OAAQ,mBAC/D9a,KAAKqO,OAAO6H,QAAQ,WAAYO,CAAS,EACzCzW,KAAK2uD,kBAAoB,CAAA,EACpBl4C,EAAUoJ,SACX5T,GAAWC,EAAMlM,KAAKqO,OAAO8D,SAAS,GAAInS,KAAKqO,MAAM,EACrD+D,EAAKpS,KAAKqO,OAAQrO,KAAKuuD,cAAgB/vC,GAAkBmO,EAAoB3sB,KAAKqO,OAAO1B,IAAI,EAC7F3M,KAAKqO,OAAOopB,YAAcvrB,EAC1BlM,KAAKuuD,cAAgBvuD,KAAKwuD,eAAiBxuD,KAAKquD,aAAe,CAAA,EAC/DruD,KAAK6e,QAAQnS,cAAc,CAAEmC,cAAe,CAAC3C,EAAKK,aAAa,UAAU,GAAI,IAGrF2/C,EAAehsD,UAAU4sD,eAAiB,SAAU76C,GAOhD,IASIu0C,EAfAxmD,KAAKqO,OAAO0B,qBAAuB/P,KAAKqO,OAAO0B,oBAAoBC,WAAa,CAAChQ,KAAK0uD,eACtF1uD,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,MAAQ,GAC1DjQ,KAAKqO,OAAO6B,WAAa,CAAA,EACzBlQ,KAAK2uD,kBAAoB,CAAA,GAE7B3uD,KAAKqO,OAAOqwB,cAAgB,GACvBzsB,EAAKmiB,cAAiBp0B,KAAKquD,cAAiBruD,KAAKsuD,mBAAsBtuD,KAAKuuD,eAAkBvuD,KAAKwuD,gBAIxGxuD,KAAKsxC,WAAar/B,EAAK/F,KACvBlM,KAAKqO,OAAOmB,aAAe,iBACvBo+C,EAAW5tD,KAAK0sB,YAAYrgB,WAAS,KAAM4F,EAAK27C,QAAQ,CAAC,EAC7D5tD,KAAKqO,OAAO+B,cAAgB,GAC5BpQ,KAAKqO,OAAO8D,SAAWy7C,EACnBpH,EAAexmD,KAAKqO,OAAO1B,KAC3B,CAAC3M,KAAKquD,cAAgBruD,KAAKsuD,kBAC3BriD,GAAWgG,EAAK/F,KAAMlM,KAAKqO,OAAO8D,SAAS,GAAInS,KAAKqO,MAAM,GAG1DrO,KAAKqO,OAAOvB,OAASC,GAAUkF,EAAK/F,IAAI,EACxClM,KAAKqO,OAAOopB,YAAcxlB,EAAK/F,MAE/B+F,EAAK/F,KAAKsM,cAAc,IAAMizB,EAAS,GAAsD,OAAjDx5B,EAAK/F,KAAKsM,cAAc,IAAM3K,CAAa,IACvF7N,KAAK4uD,iBAAmB,OAExBpI,IAAiBxmD,KAAKqO,OAAO1B,OACzB,CAAC3M,KAAKquD,cAAgBruD,KAAKsuD,oBAC3Bl8C,EAAKpS,KAAKqO,OAAQrO,KAAKuuD,cAAgB/vC,GAAkBmO,EAAoB3sB,KAAKqO,OAAO1B,IAAI,EAC7F3M,KAAK2uD,kBAAoB,CAAA,GAE7B3uD,KAAKqO,OAAOopB,YAAcxlB,EAAK/F,MAEnClM,KAAKuuD,cAAgBvuD,KAAKwuD,eAAiBxuD,KAAKquD,aAAeruD,KAAKsuD,kBAAoB,CAAA,GA1BpFtuD,KAAKqO,OAAOvB,OAASC,GAAUkF,EAAK/F,IAAI,GA6BhDggD,EAAehsD,UAAU2uD,WAAa,SAAU58C,GAC5CjS,KAAKuuD,cAAgB,CAAA,EACrBvuD,KAAK8uD,iBAAiB78C,EAAK,EAAE,GAGjCi6C,EAAehsD,UAAU8sD,aAAe,SAAU/6C,GAC9C,IAOQzE,EACAhB,EACAG,GATHsF,EAAKmiB,cAAiBp0B,KAAK+uD,SAGqB,OAAjD98C,EAAK/F,KAAKsM,cAAc,IAAM3K,CAAa,IAC3C7N,KAAKgvD,mBAAqB,CAAA,EACtB5iD,EAAOC,WAAS,OAAQ4F,EAAK27C,QAAQ,EACrCthD,EAAK2F,EAAK/F,KAAKK,aAAa,SAAS,EACrCiB,EAAOf,CAAAA,oBAAMH,CAAE,EACfE,EAAUC,oBAAMH,CAAE,EAAIF,EAAOE,EAC7BK,EAAOC,GAAQqF,EAAK/F,KAAMM,EAASgB,CAAI,EAC3CxN,KAAK4uD,iBAAmB38C,EAAK/F,KAAKK,aAAa,UAAU,EACzDvM,KAAKqO,OAAOqQ,WAAa1e,KAAK4uD,iBAC9B5uD,KAAKqO,OAAO8D,SAAWnS,KAAK0sB,YAAYrgB,WAAS,KAAM4F,EAAK27C,QAAQ,CAAC,EACrE5tD,KAAKqO,OAAOvB,OAAOQ,KAAKjB,WAAS,KAAM4F,EAAK27C,QAAQ,CAAC,EACrDx7C,EAAKpS,KAAKqO,OAAQ4gD,GAAmBtiD,CAAI,IAIjDu/C,EAAehsD,UAAUgvD,eAAiB,SAAUj9C,GAChDjS,KAAK6tD,SAAS57C,EAAKsB,MAAOvT,KAAK4uD,iBAAkB,CAAA,CAAK,EACtD5uD,KAAKqO,OAAOqQ,WAAa,KACzB1e,KAAKgvD,mBAAqB,CAAA,GAE9B9C,EAAehsD,UAAUgtD,cAAgB,SAAUj7C,GAI/C,IAOQ8hC,EAVR/zC,KAAKqO,OAAOmB,aAAe,iBAC3BxP,KAAKysB,iBAAmBzsB,KAAK6e,QAAQhQ,cACrC7O,KAAKsxC,WAAar/B,EAAK/F,KACG,IAArB+F,EAAK2O,MAAMmV,OAAiB9jB,EAAK/F,KAAKK,aAAa,UAAU,IAAMvM,KAAK6e,QAAQhQ,cAAc,IAC/F7O,KAAKquD,aAAe,CAAA,EACpBruD,KAAK2uD,kBAAoB,CAAA,EACzB3uD,KAAK6e,QAAQnS,cAAc,CAAEmC,cAAe,CAACoD,EAAK/F,KAAKK,aAAa,UAAU,GAAI,GAE7E0F,EAAK/F,KAAKK,aAAa,UAAU,IAAMvM,KAAK6e,QAAQhQ,cAAc,IAA2C,IAArC7O,KAAKqO,OAAO+B,cAAczP,QACvGX,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACjD2jC,EAA+B,eAArB/zC,KAAKqO,OAAO0F,KAAyB,iBAAmB,cACtE/T,KAAKqO,OAAOW,OAAOmxB,EAAqB,CAAErlB,OAAQi5B,EAAQjS,QAAS,CAAE1xB,cAAe,IAAM,GAErF6B,EAAK/F,KAAKK,aAAa,UAAU,IAAMvM,KAAK6e,QAAQhQ,cAAc,IAAO7O,KAAK2uD,mBAAsB3uD,KAAKgvD,qBACrF,IAArB/8C,EAAK2O,MAAMmV,QACX/1B,KAAKquD,aAAe,CAAA,GAExBruD,KAAKsuD,kBAAoB,CAAA,EACzBtuD,KAAK2uD,kBAAoB,CAAA,EACzB3uD,KAAK6e,QAAQnS,cAAc,CAAEmC,cAAe,CAACoD,EAAK/F,KAAKK,aAAa,UAAU,GAAI,IAI1F2/C,EAAehsD,UAAUmtD,cAAgB,SAAUp7C,GAC1CxF,oBAAMwF,EAAKk9C,SAAS,IACrBl9C,EAAK4N,OAAS,CAAA,IAGtBqsC,EAAehsD,UAAUu+B,cAAgB,SAAUxsB,GAC/CjS,KAAKqO,OAAOM,MAAQ,CAAA,EACpB,IAGQypB,EAHJg3B,EAAY/iD,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOuJ,OAAO,EACjE,QAA1B5X,KAAK4uD,mBACDS,EAAQvhD,SAAO,cAAgB9N,KAAK6e,QAAQhQ,cAAc,GAAK,KAAM7O,KAAK6e,QAAQ3R,OAAO,EACzFkrB,EAAO3rB,oBAAM4iD,CAAK,EAA4C,KAAvCvhD,SAAO,IAAMosB,GAAiBm1B,CAAK,EAC1D5iD,oBAAM2rB,CAAE,GACRp4B,KAAK6tD,SAAS57C,EAAKsB,MAAOvT,KAAK6e,QAAQhQ,cAAc,GAAI,CAAC7O,KAAKsvD,UAAU,EAE7EtvD,KAAK4uD,iBAAmB,IAE5B5uD,KAAKsvD,WAAa,CAAA,EACd7iD,oBAAM2iD,CAAS,GACfv1C,WAAS7Z,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIsR,EAAKsB,MAAOvT,KAAKqO,OAAOuJ,OAAO,EAE3F5X,KAAKqO,OAAO6R,UAAU2hC,iBAAmB,CAAE7hD,KAAKqO,OAAY,OAC5DrO,KAAKuvD,WAAWt9C,CAAI,GAG5Bi6C,EAAehsD,UAAUqvD,WAAa,SAAUt9C,GAC5C,IACQ3F,EADJtM,KAAK6e,UACDvS,EAAKtM,KAAK6e,QAAQhQ,cAAc,GACpC7O,KAAKwvD,eAAev9C,EAAM3F,CAAE,IAGpC4/C,EAAehsD,UAAUsvD,eAAiB,SAAUv9C,EAAM3F,GACtD,IAAImjD,EAAsD,CAAC,IAA5CzvD,KAAK6e,QAAQ6wC,cAAcr6C,QAAQ/I,CAAE,EACpDtM,KAAK2vD,iBAAiBrjD,CAAE,EACxBtM,KAAK6tD,SAAS57C,EAAKsB,MAAOjH,EAAI,CAACmjD,CAAQ,GAE3CvD,EAAehsD,UAAUyvD,iBAAmB,SAAUrjD,GAC9C+iD,EAAQvhD,SAAO,cAAgBxB,EAAK,KAAMtM,KAAK6e,QAAQ3R,OAAO,EAC9DmB,EAASP,SAAO,IAAMosB,GAAiBm1B,CAAK,EAC5CO,EAASvhD,EAAS3O,MAAMQ,UAAUqR,MAAMiV,KAAKnY,EAAO4C,QAAQ,EAAI,KAChE2+C,GACA5vD,KAAK6e,QAAQgxC,YAAYD,CAAM,GAGvC1D,EAAehsD,UAAU4vD,UAAY,SAAU79C,GAC3C,IAAI89C,EAAQ/vD,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAC3DX,KAAK6e,QAAQmxC,UAAUhwD,KAAK6e,QAAQhQ,aAAa,EACjD7O,KAAK6e,QAAQnS,cAAc,CAAEmC,cAAe,CAACkhD,GAAQ,EACrD/vD,KAAK4uD,iBAAmB,MACxB5uD,KAAKy+B,cAAcxsB,CAAI,GAE3Bi6C,EAAehsD,UAAU0+B,WAAa,SAAU3sB,GACX,mBAA7BjS,KAAKqO,OAAOmB,cACRyC,EAAK3R,OAAOkY,cAAc,IAAMizB,EAAS,GACzCzrC,KAAK6e,QAAQmxC,UAAUhwD,KAAK6e,QAAQhQ,aAAa,GAI7Dq9C,EAAehsD,UAAU+iD,aAAe,SAAUhxC,GAC9CjS,KAAKmsD,SACLnsD,KAAK6tD,SAAS57C,EAAKsB,MAAOlH,WAAS,SAAU4F,EAAKyL,GAAG,EAAG,CAAA,CAAK,GAEjEwuC,EAAehsD,UAAU69B,cAAgB,SAAU9rB,GAC/CjS,KAAKmsD,SACL,IAAI7/C,EAAKD,WAAS,SAAU4F,EAAKyL,GAAG,EACpC1d,KAAK6tD,SAAS57C,EAAKsB,MAAOjH,EAAI,CAAA,CAAK,EACnCtM,KAAK6e,QAAQnS,cAAc,CAAEmC,cAAe,CAAC7O,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,IAAK,GAErGurD,EAAehsD,UAAU89B,YAAc,SAAU/rB,GAC7CjS,KAAKuvD,WAAWt9C,CAAI,GAExBi6C,EAAehsD,UAAUg+B,eAAiB,WACL,mBAA7Bl+B,KAAKqO,OAAOmB,cACZxP,KAAKiwD,kBAGb/D,EAAehsD,UAAUk+B,aAAe,WACpC,IAEQnhB,EAFyB,mBAA7Bjd,KAAKqO,OAAOmB,eACZxP,KAAKkwD,mBACDjzC,EAAS5Q,WAAS,OAAQrM,KAAKqO,OAAO8D,SAAS,EAAE,EACrD8Q,GAAOjjB,KAAKqO,OAAQ,CAAC4O,GAASjd,KAAKqO,OAAO1B,KAAM,QAAQ,IAIhEu/C,EAAehsD,UAAUm+B,YAAc,SAAUpsB,GAC7C,IAGQk+C,EAHyB,mBAA7BnwD,KAAKqO,OAAOmB,eACR0M,EAAelc,KAAK6e,QAAQhQ,cAAc,GAC1CuhD,EAActiD,SAAO,cAAgBoO,EAAe,KAAMlc,KAAK6e,QAAQ3R,OAAO,EAC9EijD,EAAkBt/C,UAAQu/C,EAAa,IAAMl2B,EAAe,EAAEpY,cAClE9hB,KAAK6e,QAAQhQ,cAAgB,CAACshD,EAAgB5jD,aAAa,UAAU,GACrEvM,KAAK6e,QAAQwT,YAEjBryB,KAAKuvD,WAAWt9C,CAAI,GAExBi6C,EAAehsD,UAAUo+B,aAAe,SAAUrsB,GAC9CjS,KAAKuvD,WAAWt9C,CAAI,GAExBi6C,EAAehsD,UAAUq+B,aAAe,WACH,mBAA7Bv+B,KAAKqO,OAAOmB,cACZxP,KAAKw+B,oBAIb0tB,EAAehsD,UAAUmwD,kBAAoB,SAAUp+C,GACnD,IAsBYq+C,EAtBRhkD,EAAKtM,KAAK0uD,cAAmC1uD,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAChGX,KAAKsvD,WAAmF,CAAC,IAAvEtvD,KAAK6e,QAAQ6wC,cAAcr6C,QAAQrV,KAAK6e,QAAQhQ,cAAc,EAAE,EAClF7O,KAAKwvD,eAAev9C,EAAM3F,CAAE,EAC5BtM,KAAKqO,OAAOqQ,WAAa,KACrB1e,KAAK0uD,aACL1uD,KAAK0uD,aAAe,MAGhB9mB,EAAa,GACb5nC,KAAKqO,OAAOxB,MACZ+6B,EAAa,IAAIl1B,cAAY1S,KAAK6e,QAAQ6N,aAAa,EACnD/Z,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAAS7S,KAAKqO,OAAOsnB,UAAW,CAAA,CAAK,CAAC,EAK5D,GAFf46B,EAAQ,IAAI79C,cAAY1S,KAAK6e,QAAQ6N,aAAa,EAClD/Z,cAAa,IAAIC,SAAQC,MAAM7S,KAAK6e,QAAQga,OAAOzsB,KAAM,QAASpM,KAAKqO,OAAOme,WAAY,CAAA,CAAK,CAAC,GAC1F7rB,SACNinC,EAAa,IAAIl1B,cAAY69C,CAAK,EAC9B59C,cAAa,IAAIC,SAAQC,MAAM,UAAW,QAASvG,EAAI,CAAA,CAAK,CAAC,GAGjD,EAApBs7B,EAAWjnC,SACP2vD,EAAsC,EAA/BtwD,KAAKysB,iBAAiB9rB,QAA4E,IAA9DX,KAAK6e,QAAQ6N,YAAY1sB,KAAKysB,iBAAiB,EAAE,EAAE9rB,OAC5FX,KAAKysB,iBAAiB,GAAKpgB,WAASrM,KAAK6e,QAAQga,OAAOvsB,GAAIs7B,EAAW,EAAE,EAC/E5nC,KAAK6e,QAAQhQ,cAAgB,CAACyhD,GAC9BtwD,KAAK6e,QAAQwT,WACbryB,KAAKiwD,oBAKjB/D,EAAehsD,UAAUivC,YAAc,SAAUl9B,GAC7C,IAKQ21B,EAMI2oB,EAXoD,KAA5DvwD,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,YAI3E7N,EAAOrC,KAAK6e,QAAQ6N,cACpBkb,EAAa,GACb5nC,KAAKqO,OAAOxB,MACZ+6B,EAAa,IAAIl1B,cAAYrQ,CAAI,EAC7BsQ,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAAS7S,KAAKqO,OAAOsnB,UAAW,CAAA,CAAK,CAAC,EAK5D,GAFf46B,EAAQ,IAAI79C,cAAYrQ,CAAI,EAC5BsQ,cAAa,IAAIC,SAAQC,MAAM7S,KAAK6e,QAAQga,OAAOzsB,KAAM,QAASpM,KAAKqO,OAAOgU,gBAAiB,CAAA,CAAK,CAAC,GAC/F1hB,SACNinC,EAAa,IAAIl1B,cAAY69C,CAAK,EAC9B59C,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAAS7S,KAAKqO,OAAOkU,WAAY,CAAA,CAAK,CAAC,GAGxE,EAApBqlB,EAAWjnC,SACXX,KAAK0uD,aAAeriD,WAASrM,KAAK6e,QAAQga,OAAO0zB,SAAU3kB,EAAW,EAAE,EACxE5nC,KAAKqO,OAAOqQ,WAAa1e,KAAK0uD,aAC9B1uD,KAAKqO,OAAO8D,SAAWnS,KAAK0sB,YAAY1sB,KAAK0uD,YAAY,EACzDt8C,EAAKpS,KAAKqO,OAAQke,GAAwBvsB,KAAKqO,OAAOkU,WAAW5L,QAAQ,MAAO,GAAG,CAAC,IArBxF3W,KAAKuvD,WAAWt9C,CAAI,GAyB5Bi6C,EAAehsD,UAAUkgC,kBAAoB,SAAUhS,GACnD,GAAIA,EAAEtT,SAAW9a,KAAKw8B,iBAAgC,WAAbpO,EAAEtT,OAI3C,IAAK,IAAI8mB,EAAK,EAAGC,EAAKtiC,OAAO4iB,KAAKiM,EAAE0T,OAAO,EAAGF,EAAKC,EAAGlhC,OAAQihC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,mBACD5hC,KAAKytD,cACL,MACJ,IAAK,yBACDr7C,EAAKpS,KAAKqO,OAAQsN,EAAoB3b,KAAKqO,OAAO1B,IAAI,EAClDyhB,EAAE22B,QAAQtJ,uBAAuBpkC,YAAc+W,EAAE0T,QAAQ2Z,uBAAuBpkC,YAChFrX,KAAK6e,QAAQxH,UAAY+W,EAAE0T,QAAQ2Z,uBAAuBpkC,aAO9E60C,EAAehsD,UAAUswD,eAAiB,WACtCxwD,KAAK2iB,cAETupC,EAAehsD,UAAUupD,mBAAqB,SAAUr7B,GACpDpuB,KAAK6e,QAAQnS,cAAc,CAAEmC,cAAe,CAACuf,EAAElS,cAAe,GAElEgwC,EAAehsD,UAAUuwD,gBAAkB,SAAUriC,GACjDpuB,KAAK2vD,iBAAiBvhC,EAAElS,YAAY,GAExCgwC,EAAehsD,UAAUwwD,UAAY,SAAUz+C,GAC3C,GAAIC,EAAiBlS,KAAKqO,MAAM,EAAG,CAC/BrO,KAAK2wD,UAAY,GAEjB,IADA,IAAI7oC,EAAM9nB,KAAKqO,OAAO6O,SACblc,EAAI,EAAGA,EAAI8mB,EAAInnB,OAAQK,CAAC,GACM,CAAA,IAA/BqL,WAAS,SAAUyb,EAAI9mB,EAAE,GACzBhB,KAAK2wD,UAAUrjD,KAAKjB,WAAS,SAAUyb,EAAI9mB,EAAE,CAAC,EAI1D,IAAI2vD,EAAY,GAEZA,EADA3wD,KAAKqO,OAAO+P,cAAgBpe,KAAKqO,OAAOiQ,aAC5Bte,KAAK4wD,aAAa3+C,EAAKsB,MAAOvT,KAAKqO,OAAOiQ,aAActe,KAAKqO,OAAO0O,QAAQ,EAG5E/c,KAAK2wD,UAErB3wD,KAAK6e,QAAQgxC,YAAYc,CAAS,GAEtCzE,EAAehsD,UAAU0wD,aAAe,SAAUr9C,EAAOmhB,EAAM/nB,GAE3D,IADA,IAAIgkD,EAAY,GACP3vD,EAAI,EAAGA,EAAIuS,EAAM5S,OAAQK,CAAC,GAC/B,GAAI,CAACuS,EAAMvS,GAAGshB,QACN,CAACtiB,KAAKqO,OAAOxB,MAUb,IATA,IAGQ+a,EAHJygB,EAAU90B,EAAMvS,GAAe,aAO/B4mC,GANAlT,IAEI9M,GADJjb,GAAc4G,EAAMvS,GAAG6vD,cACN31C,YAAY,GAAG,EAChCmtB,EAAS17B,EAAKsO,UAAU2M,EAAQ,CAAC,EACjCjb,EAAOA,EAAKsO,UAAU,EAAG2M,EAAQ,CAAC,GAErB,IAAIlV,cAAY1S,KAAK6e,QAAQ6N,aAAa,EACvD/Z,cAAa,IAAIC,SAAQC,MAAM7S,KAAK6e,QAAQga,OAAOzsB,KAAM,QAASi8B,EAAQ,CAAA,CAAK,CAAC,GAC3EX,EAAI,EAAGA,EAAIE,EAAWjnC,OAAQ+mC,CAAC,GAGpC,GAFYr7B,WAAS,aAAcu7B,EAAWF,EAAE,EAClC/wB,QAAQ,MAAO,GAAG,IAClBhK,EAAM,CAChBgkD,EAAUrjD,KAAKjB,WAASrM,KAAK6e,QAAQga,OAAOvsB,GAAIs7B,EAAWF,EAAE,CAAC,EAC9D,MAMpB,OAAOipB,GAEXzE,EAAehsD,UAAU4wD,SAAW,SAAU7+C,GAC1C,IAAI0+C,EAAY,GACZ3wD,KAAKqO,OAAO+P,cAAgBpe,KAAKqO,OAAOe,YACxCpP,KAAK2wD,UAAY3wD,KAAK4wD,aAAa3+C,EAAKsB,MAAOvT,KAAKqO,OAAOe,YAAapP,KAAKqO,OAAOoB,UAAU,EAG9FkhD,EAAY3wD,KAAK2wD,UAErB3wD,KAAK6e,QAAQgxC,YAAYc,CAAS,GAGtCzE,EAAehsD,UAAU4uD,iBAAmB,SAAUiC,GAClD,IAMYnpB,EAGIt7B,EATXtM,KAAKqO,OAAOxB,OAgBTqP,EAAelc,KAAK6e,QAAQ6N,cAAcvb,OAAO,SAAU2W,GAAO,OAAOA,EAAI7Q,OAAS85C,EAAU95C,KAAO,EAAE,GAC7GjX,KAAK6e,QAAQhQ,cAAgB,CAACxC,WAAS,SAAU6P,CAAY,GAC7Dlc,KAAK6e,QAAQwT,aAjBT1lB,EAAON,WAAS,aAAc0kD,CAAS,EACvCC,EAAW3kD,WAAS,OAAQ0kD,CAAS,EAGvB,GAFd1uD,EAAO,IAAIqQ,cAAY1S,KAAK6e,QAAQ6N,aAAa,EACjD/Z,cAAa,IAAIC,SAAQC,MAAM7S,KAAK6e,QAAQga,OAAOzsB,KAAM,QAAS4kD,EAAU,CAAA,CAAK,CAAC,GAC7ErwD,QAGmB,GAFpBinC,EAAa,IAAIl1B,cAAYrQ,CAAI,EACjCsQ,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASlG,EAAM,CAAA,CAAK,CAAC,GACvDhM,SACP2L,EAAKD,WAASrM,KAAK6e,QAAQga,OAAOvsB,GAAIs7B,EAAW,EAAE,EACvD5nC,KAAK6e,QAAQhQ,cAAgB,CAACvC,GAC9BtM,KAAK6e,QAAQwT,cAU7B65B,EAAehsD,UAAUqhC,WAAa,SAAUtvB,GAC5CjS,KAAKkhC,WAAWjvB,CAAI,EACpBjS,KAAK8uD,iBAAiB9uD,KAAKqO,OAAOkP,QAAQ,EAC1Cvd,KAAKqO,OAAOgQ,UAAY,CAACre,KAAKqO,OAAO+P,cAEzC8tC,EAAehsD,UAAUghC,WAAa,SAAUjvB,GAC5C,IAcQ3F,EAdJs7B,EAAa,GACb5nC,KAAKqO,OAAOxB,MACZ+6B,EAAa,IAAIl1B,cAAY1S,KAAK6e,QAAQ6N,aAAa,EACnD/Z,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASxG,WAAS,KAAM4F,EAAKyL,GAAG,EAAG,CAAA,CAAK,CAAC,EAK/D,GAFf6yC,EAAQ,IAAI79C,cAAY1S,KAAK6e,QAAQ6N,aAAa,EAClD/Z,cAAa,IAAIC,SAAQC,MAAM7S,KAAK6e,QAAQga,OAAOzsB,KAAM,QAASC,WAAS,OAAQ4F,EAAKyL,GAAG,EAAG,CAAA,CAAK,CAAC,GAC9F/c,SACNinC,EAAa,IAAIl1B,cAAY69C,CAAK,EAC9B59C,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASxG,WAAS,aAAc4F,EAAKyL,GAAG,EAAG,CAAA,CAAK,CAAC,GAGlF,EAApBkqB,EAAWjnC,SACP2L,EAAKD,WAASrM,KAAK6e,QAAQga,OAAOvsB,GAAIs7B,EAAW,EAAE,EACnD6nB,EAAsD,CAAC,IAA5CzvD,KAAK6e,QAAQ6wC,cAAcr6C,QAAQ/I,CAAE,EACpDtM,KAAK2vD,iBAAiBrjD,CAAE,EACxBtM,KAAK6tD,SAAS57C,EAAKsB,MAAOjH,EAAImjD,CAAQ,GAE1CzvD,KAAKqO,OAAOqQ,WAAa,KACzB1e,KAAKy+B,cAAcxsB,CAAI,EACnBjS,KAAKqO,OAAO+N,YACZpc,KAAKixD,cAAch/C,CAAI,GAI/Bi6C,EAAehsD,UAAU+wD,cAAgB,SAAUh/C,GAC3CC,EAAiBlS,KAAKqO,MAAM,IAAMrO,KAAKqO,OAAO1B,OAAS3M,KAAKqO,OAAO7C,UAAyC,mBAA7BxL,KAAKqO,OAAOkG,gBAGpB,CAAC,IAAvEvU,KAAKqO,OAAO7C,SAAS6J,QAAQoI,GAAiBzd,KAAKqO,OAAQ4D,CAAI,CAAC,GACjEjS,KAAKqO,OAAOgQ,UAAY,CAAA,EACxBI,GAAaze,KAAKqO,MAAM,GAGxBrO,KAAKqO,OAAOgQ,UAAY,CAACre,KAAKqO,OAAO+P,eAG7C8tC,EAAehsD,UAAU+gC,YAAc,WAC/BjhC,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,iBAClCx8B,KAAKiwD,iBAETjwD,KAAK2wD,UAAY,GAEjB,IADA,IAAI7oC,EAAM9nB,KAAKqO,OAAO+N,YAAclK,EAAiBlS,KAAKqO,MAAM,EAAIrO,KAAKqO,OAAO6O,SAAWld,KAAKqO,OAAOS,cAC9F9N,EAAI,EAAGA,EAAI8mB,EAAInnB,OAAQK,CAAC,GACM,CAAA,IAA/BqL,WAAS,SAAUyb,EAAI9mB,EAAE,GACzBhB,KAAK2wD,UAAUrjD,KAAKjB,WAAS,SAAUyb,EAAI9mB,EAAE,CAAC,GAI1DkrD,EAAehsD,UAAUihC,cAAgB,WACjCnhC,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBAClCx8B,KAAKqO,OAAOyB,cAAgB9P,KAAK0sB,YAAY1sB,KAAK6e,QAAQhQ,cAAc,EAAE,EAC1E7O,KAAKqO,OAAOgB,eAAiB,CAACrP,KAAKsxC,cAG3C4a,EAAehsD,UAAUu6B,iBAAmB,WACxCz6B,KAAKqO,OAAOqzB,GAAGvB,EAAqBngC,KAAKogC,kBAAmBpgC,IAAI,EAChEA,KAAKqO,OAAOqzB,GAAG0S,GAAqBp0C,KAAKwwD,eAAgBxwD,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAG9lB,GAAmB5b,KAAKijD,aAAcjjD,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG/lB,EAAoB3b,KAAK+9B,cAAe/9B,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAG/U,EAAoB3sB,KAAKy+B,cAAez+B,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGljB,GAAiBxe,KAAKkhC,WAAYlhC,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAG5jB,GAAe9d,KAAK8wD,SAAU9wD,IAAI,EACjDA,KAAKqO,OAAOqzB,GAAGjlB,GAAkBzc,KAAKihC,YAAajhC,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGutB,GAAmBjvD,KAAKkvD,eAAgBlvD,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGxV,GAAkBlsB,KAAKg+B,YAAah+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGzB,GAAqBjgC,KAAKk+B,eAAgBl+B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAGtR,GAAmBpwB,KAAKo+B,aAAcp+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG1U,GAAkBhtB,KAAKq+B,YAAar+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGhtB,GAAmB1U,KAAKs+B,aAAct+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGiN,GAA4B3uC,KAAKypD,mBAAoBzpD,IAAI,EACxEA,KAAKqO,OAAOqzB,GAAGxB,GAAiBlgC,KAAK4+B,WAAY5+B,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAG5sB,GAAgB9U,KAAK8vD,UAAW9vD,IAAI,EACnDA,KAAKqO,OAAOqzB,GAAG4N,GAAgBtvC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOqzB,GAAGlB,GAAmBxgC,KAAKu+B,aAAcv+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG9U,EAAkB5sB,KAAKmvC,YAAanvC,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGnV,GAAwBvsB,KAAKqwD,kBAAmBrwD,IAAI,EACnEA,KAAKqO,OAAOqzB,GAAGzlB,GAAsBjc,KAAKywD,gBAAiBzwD,IAAI,EAC/DA,KAAKqO,OAAOqzB,GAAGpyB,GAAoBtP,KAAKmhC,cAAenhC,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGphB,GAAiBtgB,KAAKs8B,WAAYt8B,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGf,GAAqB3gC,KAAK4gC,eAAgB5gC,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAG7jB,GAAgB7d,KAAK0wD,UAAW1wD,IAAI,EACnDA,KAAKqO,OAAOqzB,GAAG7f,GAAiB7hB,KAAKkxD,WAAYlxD,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAG3iB,GAAiB/e,KAAKuhC,WAAYvhC,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGN,EAAoBphC,KAAKqhC,cAAerhC,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAG/iB,GAAiB3e,KAAK6uD,WAAY7uD,IAAI,GAEzDksD,EAAehsD,UAAU83B,oBAAsB,WAC3Ch4B,KAAKqO,OAAO2xB,IAAIpkB,GAAmB5b,KAAKijD,YAAY,EACpDjjD,KAAKqO,OAAO2xB,IAAIoU,GAAqBp0C,KAAKwwD,cAAc,EACxDxwD,KAAKqO,OAAO2xB,IAAIrkB,EAAoB3b,KAAK+9B,aAAa,EACtD/9B,KAAKqO,OAAO2xB,IAAIC,GAAqBjgC,KAAKk+B,cAAc,EACxDl+B,KAAKqO,OAAO2xB,IAAIG,EAAqBngC,KAAKogC,iBAAiB,EAC3DpgC,KAAKqO,OAAO2xB,IAAIrT,EAAoB3sB,KAAKy+B,aAAa,EACtDz+B,KAAKqO,OAAO2xB,IAAIxhB,GAAiBxe,KAAKkhC,UAAU,EAChDlhC,KAAKqO,OAAO2xB,IAAIliB,GAAe9d,KAAK8wD,QAAQ,EAC5C9wD,KAAKqO,OAAO2xB,IAAIvjB,GAAkBzc,KAAKihC,WAAW,EAClDjhC,KAAKqO,OAAO2xB,IAAI2O,GAA4B3uC,KAAKypD,kBAAkB,EACnEzpD,KAAKqO,OAAO2xB,IAAIivB,GAAmBjvD,KAAKkvD,cAAc,EACtDlvD,KAAKqO,OAAO2xB,IAAI9T,GAAkBlsB,KAAKg+B,WAAW,EAClDh+B,KAAKqO,OAAO2xB,IAAItrB,GAAmB1U,KAAKs+B,YAAY,EACpDt+B,KAAKqO,OAAO2xB,IAAIE,GAAiBlgC,KAAK4+B,UAAU,EAChD5+B,KAAKqO,OAAO2xB,IAAIlrB,GAAgB9U,KAAK8vD,SAAS,EAC9C9vD,KAAKqO,OAAO2xB,IAAIsP,GAAgBtvC,KAAKoJ,OAAO,EAC5CpJ,KAAKqO,OAAO2xB,IAAIQ,GAAmBxgC,KAAKu+B,YAAY,EACpDv+B,KAAKqO,OAAO2xB,IAAIpT,EAAkB5sB,KAAKmvC,WAAW,EAClDnvC,KAAKqO,OAAO2xB,IAAIzT,GAAwBvsB,KAAKqwD,iBAAiB,EAC9DrwD,KAAKqO,OAAO2xB,IAAI/jB,GAAsBjc,KAAKywD,eAAe,EAC1DzwD,KAAKqO,OAAO2xB,IAAI5P,GAAmBpwB,KAAKo+B,YAAY,EACpDp+B,KAAKqO,OAAO2xB,IAAIhT,GAAkBhtB,KAAKq+B,WAAW,EAClDr+B,KAAKqO,OAAO2xB,IAAI1wB,GAAoBtP,KAAKmhC,aAAa,EACtDnhC,KAAKqO,OAAO2xB,IAAI1f,GAAiBtgB,KAAKs8B,UAAU,EAChDt8B,KAAKqO,OAAO2xB,IAAIniB,GAAgB7d,KAAK0wD,SAAS,EAC9C1wD,KAAKqO,OAAO2xB,IAAIne,GAAiB7hB,KAAKkxD,UAAU,EAChDlxD,KAAKqO,OAAO2xB,IAAIjhB,GAAiB/e,KAAKuhC,UAAU,EAChDvhC,KAAKqO,OAAO2xB,IAAIoB,EAAoBphC,KAAKqhC,aAAa,EACtDrhC,KAAKqO,OAAO2xB,IAAIW,GAAqB3gC,KAAK4gC,cAAc,EACxD5gC,KAAKqO,OAAO2xB,IAAIrhB,GAAiB3e,KAAK6uD,UAAU,GAGpD3C,EAAehsD,UAAUmhC,cAAgB,WACrC,IACQ8vB,EADJnxD,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBAC9B20B,EAAUnxD,KAAK0sB,YAAY1sB,KAAK6e,QAAQhQ,cAAc,EAAE,EAC5D7O,KAAKqO,OAAO8D,SAAWg/C,IAG/BjF,EAAehsD,UAAU0gC,eAAiB,SAAU3uB,GAC5CjS,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBAC9BgT,EAAQ3+B,UAAQoB,EAAK3R,OAAQ,IAAI,EACrCN,KAAKqO,OAAO8D,SAAWnS,KAAK0sB,YAAY8iB,EAAMjjC,aAAa,UAAU,CAAC,IAI9E2/C,EAAehsD,UAAUgxD,WAAa,SAAUj/C,GAC5C,IAGQm/C,EAHJ7xC,EAAM1O,UAAQoB,EAAK3R,OAAQ,IAAI,EAC/Bif,EAAItR,UAAUC,SAAS,kBAAkB,IACzClO,KAAK+uD,OAAS,CAAA,EACVqC,EAAQ7iD,SAASgR,EAAIhT,aAAa,YAAY,EAAG,EAAE,EACvDvM,KAAK6e,QAAQmxC,UAAU,CAACzwC,EAAIhT,aAAa,UAAU,GAAI6kD,EAAQ,CAAC,EAChEpxD,KAAK+uD,OAAS,CAAA,IAGtB7C,EAAehsD,UAAUo8B,WAAa,SAAUrqB,GACxCjS,KAAKqO,OAAOkG,eAAiBvU,KAAKw8B,kBAC9BC,EAAS5rB,UAAQoB,EAAK3R,OAAQ,IAAI,EACtCN,KAAKqO,OAAOkP,SAAWvd,KAAK0sB,YAAY+P,CAAM,EAAE,GAChDz8B,KAAKqO,OAAO7C,SAAWxL,KAAK2tD,YAAYlxB,EAAQpwB,WAAS,OAAQrM,KAAKqO,OAAOkP,QAAQ,CAAC,IAS9F2uC,EAAehsD,UAAUs8B,cAAgB,WACrC,MAAO,kBAEX0vB,EAAehsD,UAAUkJ,QAAU,WAC3BpJ,KAAKqO,OAAO0xB,cAGhB//B,KAAKg4B,sBACDh4B,KAAK6e,UACL7e,KAAK+3B,eACL/3B,KAAK6e,QAAQzV,aAGrB8iD,EAAehsD,UAAUw6B,WAAa,WAClC16B,KAAKiiC,eAAiB,IAAIC,iBAAeliC,KAAK6e,QAAQ3R,QAAS,CAC3Di1B,UAAWniC,KAAKqxD,QAAQlhC,KAAKnwB,IAAI,EACjCqiC,WAAYriC,KAAKqiC,WACjB3mB,UAAW,UACd,GAELwwC,EAAehsD,UAAU63B,aAAe,WACpC/3B,KAAKiiC,eAAe74B,WAGxB8iD,EAAehsD,UAAUmxD,QAAU,SAAUjjC,GACzC,IA2CgB/rB,EA1ChB,OADa+rB,EAAEjf,QAEX,IAAK,WACDnP,KAAKqO,OAAOW,OAAOoyB,EAAoB,EAAE,EACzCvb,GAAW7lB,KAAKqO,OAAQ,GAAIrO,KAAKqO,OAAO1B,KAAM,SAAS,EACvD,MACJ,IAAK,MACD+B,GAAa1O,KAAKqO,MAAM,EACxB,MACJ,IAAK,MACGrO,KAAKqO,OAAOvB,OAAO,KAAO9M,KAAKsxC,WAAW/kC,aAAa,UAAU,IACjEvM,KAAKiwD,iBACAxtC,EAAcziB,KAAKqO,OAAO8D,SAAS,EAAE,GAItCnS,KAAK6vD,YAAc,GACnBlzC,EAAa3c,KAAKqO,OAAQ,QAAQ,GAJlCsG,EAAmB3U,KAAKqO,OAAQrO,KAAKqO,OAAO8D,SAAS,GAAIuQ,CAAqB,GAOtF,MACJ,IAAK,QACD3N,GAAU/U,KAAKqO,MAAM,EACrB,MACJ,IAAK,QACDrO,KAAKqO,OAAOgO,WAAa,GACzBF,GAAanc,KAAKqO,MAAM,EACxB,MACJ,IAAK,QACD4G,GAASjV,KAAKqO,MAAM,EACpB,MACJ,IAAK,WACDrO,KAAKiwD,iBACArtC,GAAkB5iB,KAAKqO,OAAO8D,SAAS,EAAE,EAIL,IAArCnS,KAAKqO,OAAO+B,cAAczP,QAC1BX,KAAK2iB,aAJLhO,EAAmB3U,KAAKqO,OAAQrO,KAAKqO,OAAO8D,SAAS,GAAI0Q,EAAyB,EAMtF,MACJ,IAAK,KACwC,IAArC7iB,KAAKqO,OAAO+B,cAAczP,SAErB8hB,EADDpgB,EAAOrC,KAAK0sB,YAAY1sB,KAAK6e,QAAQhQ,cAAc,EAAE,EAAE,EACpC,GAInB7O,KAAKw+B,mBACL7hB,EAAa3c,KAAKqO,OAAQ,QAAQ,GAJlCsG,EAAmB3U,KAAKqO,OAAQhM,EAAMqgB,CAAqB,KAU/EwpC,EAAehsD,UAAUwsB,YAAc,SAAUza,GAE7C,IADA,IAAI5P,EAAOrC,KAAK6e,QAAQ6N,YAAYza,CAAI,EAC/BjR,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC1ByL,oBAAMJ,WAAS,WAAYhK,EAAKrB,EAAE,CAAC,GACnC6Y,WAAS,WAAY,CAAA,EAAOxX,EAAKrB,EAAE,EAG3C,OAAOqB,GAEX6pD,EAAehsD,UAAUs+B,iBAAmB,WACxCx+B,KAAKiwD,iBACLjwD,KAAKqO,OAAOgU,gBAAkBhW,WAAS,OAAQrM,KAAKqO,OAAO8D,SAAS,EAAE,GAE1E+5C,EAAehsD,UAAU+vD,eAAiB,WACtC,IAAI5tD,EAAOrC,KAAK0sB,YAAY1sB,KAAK6e,QAAQhQ,cAAc,EAAE,EAAE,GAC3D7O,KAAKqO,OAAO8D,SAAW,CAAC9P,GACxBrC,KAAKqO,OAAOiU,OAAS,CAAA,GAEzB4pC,EAAehsD,UAAUgwD,iBAAmB,WACxClwD,KAAKiwD,iBAELhkD,GADW6B,SAAO,cAAgB9N,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAK,KAAMX,KAAK6e,QAAQ3R,OAAO,EAC/FlN,KAAKqO,OAAO8D,SAAS,GAAInS,KAAKqO,MAAM,EADrD,IAEIC,EAAUoB,GAAc1P,KAAKqO,OAAO1B,IAAI,EAC5C3M,KAAKqO,OAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EACjDtO,KAAKqO,OAAOvB,OAAO+e,MACnB7rB,KAAKqO,OAAOrB,UAAU6e,OAG1BqgC,EAAehsD,UAAUyiB,WAAa,WAClC,IAAIrU,EAAUoB,GAAc1P,KAAKqO,OAAO1B,IAAI,EAExCsK,EADSjX,KAAK6e,QAAQhQ,cAAc,KACjB7O,KAAKqO,OAAOvB,OAAO,GAAM,GAAKT,WAAS,OAAQrM,KAAKqO,OAAO8D,SAAS,EAAE,EAC7F2Q,GAAS9iB,KAAKqO,OAAQC,EAAS,CAAC2I,EAAK,OA51BzCi1C,GA81BOA,EAt1BP,SAASA,EAAe79C,GACpBrO,KAAK6vD,YAAc,GACnB7vD,KAAK2wD,UAAY,GAEjB3wD,KAAKysB,iBAAmB,GACxBzsB,KAAKsvD,WAAa,CAAA,EAClBtvD,KAAK+uD,OAAS,CAAA,EACd/uD,KAAKuuD,cAAgB,CAAA,EACrBvuD,KAAKwuD,eAAiB,CAAA,EACtBxuD,KAAKquD,aAAe,CAAA,EACpBruD,KAAKsuD,kBAAoB,CAAA,EACzBtuD,KAAKgvD,mBAAqB,CAAA,EAC1BhvD,KAAK0uD,aAAe,KAEpB1uD,KAAK2uD,kBAAoB,CAAA,EAEzB3uD,KAAKyuD,kBAAoB,CAAA,EACzBzuD,KAAKqO,OAASA,EACdrO,KAAKy6B,mBACLz6B,KAAKqiC,WAAa,CACdgI,SAAU,YACVC,IAAK,SACLC,IAAK,SACLC,MAAOxqC,KAAKqO,OAAOu1B,MAAQ,QAAU,SACrC6G,MAAOzqC,KAAKqO,OAAOu1B,MAAQ,QAAU,SACrC8G,MAAO1qC,KAAKqO,OAAOu1B,MAAQ,QAAU,SACrC0tB,WAAY,eACZC,SAAU,YACV5mB,GAAI,MCqCZ6mB,EAAYtxD,UAAUs3B,OAAS,SAAUvlB,GACrC,IAcQkF,EAEAiE,EACAq2C,EACAC,EAlBJv2B,EAAQn7B,KACRA,KAAKqO,OAAOsjD,oBACRC,EAAuB7xC,OAAO8xC,aAAaC,QAAQ,OAAS9xD,KAAKqO,OAAOnB,QAAQZ,GAAK,OAAO,EAC3FG,oBAAMmlD,CAAoB,IACvBG,EAAQ3oC,KAAK0B,MAAM8mC,CAAoB,EACvC,CAACnlD,oBAAMslD,CAAK,GAAiC,EAA5BxyD,OAAO4iB,KAAK4vC,CAAK,EAAEpxD,QAAc,iBAAkBoxD,IACpE,OAAOA,EAAMN,aACb1xC,OAAO8xC,aAAaG,QAAQ,OAAShyD,KAAKqO,OAAOnB,QAAQZ,GAAK,QAAS8c,KAAKC,UAAU0oC,CAAK,CAAC,KAIxGp6B,cAAY33B,KAAKqO,OAAOnB,OAAO,EACN,YAArBlN,KAAKqO,OAAO0F,OACZ0wB,cAAY,CAACzkC,KAAKqO,OAAOnB,SAAUw2B,EAAgB,EAC/CvsB,EAAQD,GAAclX,KAAKqO,OAAQ4D,EAAKsB,KAAK,EACjDvT,KAAKiyD,iBACD72C,EAAUpb,KAAKkyD,aACfT,EAAe,KAAA,EACfC,EAAmB,CAACp6C,oBAAkB8D,CAAO,GACuC,CAAC,IAArFA,EAAQ8K,UAAU,SAAUi/B,GAAO,OAAOA,EAAIxjD,QAAUw5B,EAAM9sB,OAAOkJ,OAAS,EAC9EvX,KAAKqO,OAAOuM,UAAY,CAAC82C,EACzBD,EAAe,GAGe,SAA1BzxD,KAAKqO,OAAOgJ,YACZo6C,EAAe,CAAC,CAAEU,UAAWnyD,KAAKqO,OAAOgJ,UAAW1V,MAAO3B,KAAKqO,OAAOkJ,UAG/EvX,KAAK0T,QAAU,IAAI0+C,OAAK,CACpBz+C,WAAYwD,EACZk7C,aAAc,CAAA,EACdC,aAActyD,KAAKuyD,YAAYpiC,KAAKnwB,KAAM,QAAQ,EAClDwyD,eAAgBxyD,KAAKuyD,YAAYpiC,KAAKnwB,KAAM,UAAU,EACtDyyD,YAAazyD,KAAKohD,WAAWjxB,KAAKnwB,IAAI,EACtC0yD,cAAe1yD,KAAK2yD,cAAcxiC,KAAKnwB,IAAI,EAC3C4yD,cAAe5yD,KAAKqO,OAAO8M,oBAAoB03C,eAC/CC,kBAAmB,CACf7wD,KAAMjC,KAAKqO,OAAO0zB,oBAAsB,WAAa,SACrDgxB,aAAc,mBAElB/gC,UAAWhyB,KAAKqO,OAAO2jB,UACvBghC,aAAc,CAAEC,SAAU,IAC1Bz5B,qBAAsBx5B,KAAKqO,OAAOmrB,qBAClCm4B,kBAAmB3xD,KAAKqO,OAAOsjD,kBAC/BuB,qBAAsB,CAAA,EACtBzB,aAAc,CAAE0B,YAAa,CAAA,EAAO/3C,QAASq2C,GAC7Cr2C,QAASA,EACTg4C,kBAAmBpzD,KAAKqzD,eAAeljC,KAAKnwB,IAAI,EAChDszD,gBAAiBtzD,KAAKuzD,kBAAkBpjC,KAAKnwB,IAAI,EACjDwtD,UAAWxtD,KAAKwzD,YAAYrjC,KAAKnwB,IAAI,EACrCyzD,aAAczzD,KAAK0zD,eAAevjC,KAAKnwB,IAAI,EAC3C2zD,YAAa3zD,KAAK4zD,cAAczjC,KAAKnwB,IAAI,EACzC6zD,eAAgB7zD,KAAK8zD,iBAAiB3jC,KAAKnwB,IAAI,EAC/CmC,MAAO,OACPm0B,OAASt2B,KAAKqO,OAA2B,qBAAIrO,KAAK+zD,gBAAkB,OACpEC,WAAY,SAAU/hD,GAAQA,EAAK4N,OAAS,CAAA,GAC5Co0C,KAAM,WACFj0D,KAAKk0D,YAAY9qD,WAErBgR,OAAQpa,KAAKqO,OAAO+L,OACvB,EACGpa,KAAKqO,OAAO8lD,UACZn0D,KAAK0T,QAAQygD,QAAU,CAAA,EACvBn0D,KAAK0T,QAAQ60C,QAAU,GACvBvoD,KAAK0T,QAAQguB,GAAG,sBAAuB1hC,KAAKo0D,oBAAqBp0D,IAAI,GAEzEA,KAAK0T,QAAQwe,iBAAmB,CAAA,EAChClyB,KAAK0T,QAAQye,SAAS,IAAMnyB,KAAKqO,OAAOnB,QAAQZ,GAAK0mC,EAAW,EAChEhzC,KAAK06B,aACL16B,KAAKi9C,eACLj9C,KAAKq0D,UAAYpiD,IAGzBu/C,EAAYtxD,UAAUk0D,oBAAsB,SAAUniD,GAClDjS,KAAKqO,OAAgB,QAAI4D,EACrBjS,KAAKqO,OAAOk6C,SAAWvoD,KAAKqO,OAAOi3C,eAAiBtlD,KAAKqO,OAAOi3C,cAAc4B,YAC9ElnD,KAAKqO,OAAOi3C,cAAc4B,WAAWqB,UACrCvoD,KAAKqO,OAAgB,QAAIrO,KAAKqO,OAAgB,QAAEsD,OAAO3R,KAAKqO,OAAOi3C,cAAc4B,WAAWqB,OAAO,GAEvGvoD,KAAKqO,OAAOW,OAAO,sBAAuBhP,KAAKqO,OAAgB,OAAC,EAChErO,KAAKqO,OAA6B,wBAQtCmjD,EAAYtxD,UAAU6zD,cAAgB,WAElC,IAAIO,EAAOxmD,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAK8T,GAAgBpgB,KAAKqO,OAAOnB,OAAO,EAChFqyC,EAAMzxC,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAK6L,GAAsBnY,KAAKqO,OAAOnB,OAAO,EAIzF,OAAQonD,EAAKl8C,aAAemnC,EAAInnC,aAFV,IAI1Bo5C,EAAYtxD,UAAU+xD,eAAiB,WACnC,IAAIsC,EAAgBv0D,KAAKqO,OAAO8M,oBAAoBC,QACpDpb,KAAKw0D,YAAc,CAAA,EACnB,IAAK,IAAIxzD,EAAI,EAAGA,EAAIuzD,EAAc5zD,OAAQK,CAAC,GACvC,GAA+B,SAA3BuzD,EAAcvzD,GAAGW,MAEjB,OADA3B,KAAAA,KAAKw0D,YAAc,CAAC/nD,oBAAM8nD,EAAcvzD,GAAGmB,KAAK,IAK5DqvD,EAAYtxD,UAAUu0D,YAAc,SAAUr5C,EAASs5C,GACnD,GAAI10D,CAAAA,KAAKw0D,aAA8B,SAAdE,EAGzB,IAAK,IAOOC,EAPH3zD,EAAI,EAAGA,EAAIoa,EAAQza,OAAQK,CAAC,GAC7Boa,EAAQpa,GAAGW,QAAU+yD,IACjBC,EAAY,KAAA,EAKZA,EAJ4D,KAA5D30D,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,WAIlElQ,KAAKkN,QAAQq/B,aAAe,IAAuB,SAAdmoB,EAAwB,QAAU,QAAW,OAHlF10D,KAAKkN,QAAQq/B,aAAe,IAAO,QAAU,OAK9DnxB,EAAQpa,GAAGmB,MAAQwyD,IAI/BnD,EAAYtxD,UAAUgyD,WAAa,WAC/B,IAAI92C,EACA6W,EAAsBjyB,KAAKqO,OAAO4jB,oBACtC,GAAIjyB,KAAKqO,OAAOuM,SACZQ,EAAU,CACN,CACIzZ,MAAO,OAAQC,WAAYyX,EAAcrZ,KAAKqO,OAAQ,MAAM,EAAGlM,MAAO,OAAQN,SAAU,IAAK+yD,gBAAiB,OAC9G9yD,SAAUM,wBAAsB,SAAUC,GAEtC,MAAO,2BADI4vB,EAAsB4iC,qBAAmBC,SAASzyD,EAAK4U,IAAI,EAAI5U,EAAK4U,MACnC,gCAAoC5U,EAAK0yD,aAAe,iCAAqC1yD,EAAKC,KAAO,UACxJ,QAIR,CACD8Y,EAAU2J,SAAO,GAAI/kB,KAAKqO,OAAO8M,oBAAoBC,QAAS,KAAM,CAAA,CAAI,EACxEpb,KAAKy0D,YAAYr5C,EAAS,MAAM,EAYhC,IAXA,IAUI45C,EAASh1D,KACJgB,EAAI,EAAG4Y,EAAMwB,EAAQza,OAAQK,EAAI4Y,EAAK5Y,CAAC,GAC5Cm0B,CAZU,SAAUn0B,GAEpB,IACQi0D,EAFR75C,EAAQpa,GAAGY,WAAayX,EAAc27C,EAAO3mD,OAAQ+M,EAAQpa,GAAGY,UAAU,EACjD,SAArBwZ,EAAQpa,GAAGW,OAAqB8K,oBAAM2O,EAAQpa,GAAGc,QAAQ,GAAsC,YAA/B,OAAOsZ,EAAQpa,GAAGc,WAC9EmzD,EAAa75C,EAAQpa,GAAGc,SAC5BsZ,EAAQpa,GAAGc,SAAWM,wBAAsB,SAAUC,GAC9C4U,EAAOgb,EAAsB4iC,qBAAmBC,SAASzyD,EAAK4U,IAAI,EAAI5U,EAAK4U,KAC/E,OAAOg+C,EAAWt+C,QAAQ,YAAaM,CAAI,EAC9C,IAKGjW,CAAM,EAGtB,IAAIk0D,EAAWl1D,KAAKqO,OAAOuM,UAAY5a,KAAKqO,OAAOqtC,SAAY,KAAO,KAClE/d,EAAO,CACPh8B,MAAO,OAAQQ,MAAO+yD,EAAQrzD,SAAUqzD,EACxCpzD,SAAUM,wBAAsB,SAAUC,GACtC,MAAO,0BAA6BA,EAAK8yD,cAAgB,YAC5D,EAAGvC,cAAe,CAAA,EAAOP,aAAc,CAAA,EAAMtwD,iBAAkB,CAAEC,MAAO,kBACzEozD,eAAgBhzD,wBAAsB,WAClC,MAAO,8CACV,GAELgZ,EAAQi6C,QAAQ13B,CAAI,EAChB39B,KAAKqO,OAAO2uB,qBAERs4B,EAAO,CACPrzD,KAAM,WAAYE,MAFlBozD,EAAUv1D,KAAKqO,OAAOqtC,SAAW,KAAO,KAEP75C,SAAU0zD,EAAQxzD,iBAAkB,CAAEC,MAAO,iBAC9E4wD,cAAe,CAAA,EAAOP,aAAc,CAAA,GAEpCryD,KAAKqO,OAAOuM,SACZQ,EAAQ9N,KAAKgoD,CAAI,EAGjBl6C,EAAQi6C,QAAQC,CAAI,GAG5B,IAASt0D,EAAI,EAAG4Y,EAAMwB,EAAQza,OAAQK,EAAI4Y,EAAK5Y,CAAC,GAC5Coa,EAAQpa,GAAGw0D,kBAAoB,CAACx1D,KAAKqO,OAAO4jB,oBAMhD,OAJIjyB,KAAKqO,OAAOk1C,sBAEZnoC,EAAQ9N,KADS,CAAE3L,MAAO,OAAQoqB,QAAS,CAAA,EAAOhqB,iBAAkB,CAAEC,MAAO,eACtD,EAEpBoZ,GAEXo2C,EAAYtxD,UAAU+8C,aAAe,WACjC,IAIIsC,EACAkW,EACAn/B,EANCt2B,KAAK0T,UAGN4gD,EAAOxmD,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAK8T,GAAgBpgB,KAAKqO,OAAOnB,OAAO,EAChFqyC,EAAMzxC,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAK6L,GAAsBnY,KAAKqO,OAAOnB,OAAO,EACrFuoD,EAAa3nD,SAAO,IAAMyK,GAAiBvY,KAAKqO,OAAOnB,OAAO,EAC9DopB,EAAUg+B,EAAKl8C,aAAemnC,EAAInnC,aAAeq9C,EAAWr9C,aAChEpY,KAAK0T,QAAQ4iB,OAASA,EACtBt2B,KAAK0T,QAAQ2e,aAEjBm/B,EAAYtxD,UAAUw1D,eAAiB,WACnC11D,KAAK0T,QAAQ0H,QAAUpb,KAAKkyD,aAC5BlyD,KAAK21D,gBAAkB,CAAA,EACvB31D,KAAK0T,QAAQkiD,kBAEjBpE,EAAYtxD,UAAUwzD,eAAiB,SAAUzhD,GAC7C,IAAI4jD,EAAK/nD,SAAO,kBAAmBmE,EAAK6jD,GAAG,EAC3C,GAAI,CAACD,EAED,IADA,IAAIz6C,EAAUpb,KAAKqO,OAAO8M,oBAAoBC,QACrCpa,EAAI,EAAGA,EAAIoa,EAAQza,OAAQK,CAAC,GACjC,GAAyB,SAArBoa,EAAQpa,GAAGW,MAAkB,CAC7Bk0D,EAAK5jD,EAAK6jD,IAAI7kD,SAASjR,KAAKqO,OAAO0zB,oBAAuB/gC,EAAI,EAAMA,EAAI,GACxE,MAwBZ,GApBI60D,GACAA,EAAGh+B,aAAa,QAASxrB,WAAS,OAAQ4F,EAAK5P,IAAI,CAAC,EAEpDrC,KAAKqO,OAAOwD,gBAAkB7R,KAAKqO,OAAOM,OAAoC,SAA3B3O,KAAKqO,OAAO2G,YAC/DhV,KAAKqO,OAAOQ,eAAsD,IAArC7O,KAAKqO,OAAOQ,cAAclO,QACgB,CAAC,IAApEX,KAAKqO,OAAOQ,cAAcwG,QAAQhJ,WAAS,OAAQ4F,EAAK5P,IAAI,CAAC,GAC7DuN,GAAQqC,EAAK6jD,GAAG,EAGpB,CAAC91D,KAAKqO,OAAO+W,mBAAqB/Y,WAAS,SAAU4F,EAAK5P,IAAI,IAC1D+J,EAAOC,WAAS,OAAQ4F,EAAK5P,IAAI,EACjCw6B,EAAU5qB,EAAK6jD,IAAIt9C,cAAc,YAAcpM,EAAO,IAAI,KAEtD6Q,EAAS5Q,WAAS,OAAQ4F,EAAK5P,IAAI,EACnCJ,EAAOoK,WAAS,OAAQ4F,EAAK5P,IAAI,EACR,CAAC,IAA1B4a,EAAO5H,QAAQpT,CAAI,KACnB46B,EAAQzjB,UAAY6D,EAAO2T,OAAO,EAAG3T,EAAOtc,OAASsB,EAAKtB,MAAM,GAIxC2jB,KAAAA,IAAhCjY,WAAS,OAAQ4F,EAAK5P,IAAI,GAAmB4P,EAAK6jD,IAAIt9C,cAAc,YAAY,EAAG,CACnF,IAAIu9C,EAAU9jD,EAAK6jD,IAAIt9C,cAAc,YAAY,EAC7Cw9C,EAAe,KAAA,EACnB,GAAK3pD,WAAS,SAAU4F,EAAK5P,IAAI,EAG5B,CAKD,IAJA,IAAI4zD,EAAY5pD,WAAS,OAAQ4F,EAAK5P,IAAI,EACtC8oB,EAAO,IAAIE,uBAAqBrrB,KAAKqO,OAAO+L,MAAM,EAClD87C,EAAa,KAAA,EACb96C,EAAUpb,KAAKqO,OAAO8M,oBAAoBC,QACrCpa,EAAI,EAAGA,EAAIoa,EAAQza,OAAQK,CAAC,GACjC,GAAyB,SAArBoa,EAAQpa,GAAGW,MAAkB,CAC7Bu0D,EAAc5+C,oBAAkB8D,EAAQpa,GAAGkB,MAAM,EAAmC,IAA/BkZ,EAAQpa,GAAGkB,OAAOsM,WACvE,MAIRwnD,EADY7qC,EAAKgrC,aAAcF,EAAY,KAAO,CAAE/zD,OAAQg0D,EAAY,EACjD,IAAM78C,EAAcrZ,KAAKqO,OAAQ,IAAI,OAd5D2nD,EAAe,GAgBnBD,EAAQ38C,UAAY48C,EAExB,GAAIh2D,KAAKqO,OAAOuM,UACgC0J,KAAAA,IAAxCjY,WAAS,eAAgB4F,EAAK5P,IAAI,GAAmB4P,EAAK6jD,IAAIt9C,cAAc,YAAY,EAAG,CAK3F,IAJA,IAAI49C,EAAUnkD,EAAK6jD,IAAIt9C,cAAc,YAAY,EAC7C2S,EAAO,IAAIE,uBAAqBrrB,KAAKqO,OAAO+L,MAAM,EAClDgB,EAAUpb,KAAKqO,OAAO8M,oBAAoBC,QAC1ClZ,EAAS,KAAA,EACJlB,EAAI,EAAGA,EAAIoa,EAAQza,OAAQK,CAAC,GACjC,GAAyB,iBAArBoa,EAAQpa,GAAGW,MAA0B,CACrCO,EAASkZ,EAAQpa,GAAGkB,OACpB,MAGJsuB,EAAkBrF,EAAKhR,WAAW,IAAIvD,KAAKvK,WAAS,eAAgB4F,EAAK5P,IAAI,CAAC,EAAGH,CAAM,EAC3Fk0D,EAAQh9C,UAAYoX,EAGxB6lC,EAAYpkD,EAAK6jD,IAAIt9C,cAAc,IAAM+uB,EAAW,EACpD8uB,GACAA,EAAUpoD,UAAUqC,IAAI,SAAS,EAEhCmS,EAAcxQ,EAAK5P,IAAI,IACxB4P,EAAK6jD,IAAIl9C,WAAa,IAAMuK,GAAelR,EAAK5P,IAAI,GAEpDoU,EAAY,CACZvJ,QAAS+E,EAAK6jD,IACd1/C,YAAanE,EAAK5P,KAClByY,OAAQ,eAEZ9a,KAAKqO,OAAO6H,QAAQ,WAAYO,CAAS,GAE7C+6C,EAAYtxD,UAAU0zD,cAAgB,SAAU3hD,GAC5C,GAAyB,YAArBA,EAAKqkD,YAA2B,CAGhC,GAFAt2D,KAAKqO,OAAO3B,cAAc,CAAE2K,UAAWpF,EAAKkgD,WAAa,CAAA,CAAI,EAC7DnyD,KAAKqO,OAAO3B,cAAc,CAAE6K,OAAQtF,EAAKskD,YAAc,CAAA,CAAI,EAClB,IAArCv2D,KAAKqO,OAAO+B,cAAczP,OAAc,CACxCX,KAAKw2D,SAAW,CAAA,EAChB,IAAIC,EAAOz2D,KAAK0T,QAAQgjD,wBACpB98C,EAAM68C,EAAK91D,OAEf,IADAX,KAAK22D,kBAAoB,GACZ,EAAN/8C,GAAS,CACZ,IAAIvX,EAAOrC,KAAK0T,QAAQkjD,gBAAgBH,EAAK78C,EAAM,IAAIvX,KACvDrC,KAAK22D,kBAAkBrpD,KAAKjB,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQxK,CAAI,CAAC,EAC7EuX,CAAG,IAGX5Z,KAAKqO,OAAOW,OAAO+L,GAAqB,EAAE,IAGlDy2C,EAAYtxD,UAAU4zD,iBAAmB,SAAU7hD,GAC3CokD,EAAYpkD,EAAK/F,KAAKsM,cAAc,IAAM+uB,EAAW,EACrD8uB,GACAA,EAAUpoD,UAAUqC,IAAI,SAAS,GAGzCkhD,EAAYtxD,UAAUqzD,kBAAoB,SAAUthD,GAChD,IAAIkpB,EAAQn7B,KAER62D,GADJl/B,cAAY33B,KAAKqO,OAAOnB,OAAO,EACdlN,KAAKqO,OAAO8M,oBAAoBC,QAAQ07C,KAAK,SAAU97C,GAAU,OAAOA,EAAOrZ,QAAUw5B,EAAM9sB,OAAOkJ,OAAS,GAC5Hs/C,CAAAA,GAAgB,iBAAkBA,IAC9B1/C,EAAQD,GAAclX,KAAKqO,OAASrO,KAAKqO,OAA2B,qBAClE4D,EAAK0F,OACL3X,KAAK0T,QAAQC,UAAU,EAC7B1B,EAAK0F,OAASR,IAItBq6C,EAAYtxD,UAAUszD,YAAc,WAgDhC,IAWQuD,EAOAC,EAjERh3D,KAAKg6B,iBACqC,IAArCh6B,KAAKqO,OAAO+B,cAAczP,QAAgB,CAACX,KAAKqO,OAAOmrB,sBACjB,IAArCx5B,KAAKqO,OAAO+B,cAAczP,QAAgBX,KAAKqO,OAAOmrB,sBACG,IAAvDx5B,KAAKkN,QAAQsL,cAAc,YAAY,EAAE2sB,YAC7CnlC,KAAKi3D,cAAcj3D,KAAKqO,OAAO+B,aAAa,EAElB,CAAA,IAA1BpQ,KAAKm6B,kBAA8B,CAAC7iB,oBAAkBtX,KAAK0T,QAAQwjD,aAAa,GAAyC,EAApCl3D,KAAK0T,QAAQwjD,cAAcv2D,SAC3GX,KAAK21D,gBAKN31D,KAAK21D,gBAAkB,CAAA,GAJvB31D,KAAKi3D,cAAcj3D,KAAKqO,OAAO2P,UAAU,EACzChe,KAAKm6B,iBAAmB,CAAA,IAM5Bn6B,KAAKqO,OAAO4d,cACZjsB,KAAKi3D,cAAc,CAAC5qD,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQ7M,KAAKqO,OAAO4d,WAAW,EAAE,EACzFjsB,KAAKqO,OAAO4d,YAAc,MAE1BjsB,KAAKqO,OAAO2F,oBAAoBrT,QAChCX,KAAKi3D,cAAcj3D,KAAKqO,OAAO2F,mBAAmB,EAElDhU,KAAKqO,OAAO0b,cACZ/pB,KAAK2+B,aAAa3+B,KAAKqO,OAAO0b,WAAW,EACzC/pB,KAAKqO,OAAO0b,YAAc,MAER,CAAA,IAAlB/pB,KAAKw2D,WACLx2D,KAAKi3D,cAAcj3D,KAAK22D,iBAAiB,EACzC32D,KAAKw2D,SAAW,CAAA,GAEhBx2D,KAAKm3D,oBACAn3D,KAAK21D,gBAKN31D,KAAK21D,gBAAkB,CAAA,GAJvB31D,KAAKi3D,cAAcj3D,KAAKo3D,mBAAmB,EAC3Cp3D,KAAKm3D,kBAAoB,CAAA,IAMJ,CAAA,IAAzBn3D,KAAKq6B,kBACLr6B,KAAKie,KAAK,GACVje,KAAKi3D,cAAcj3D,KAAKqO,OAAOqV,UAAU,EACrC1jB,KAAKie,QAAUje,KAAKqO,OAAOqV,WAAW/iB,UACtCX,KAAKq6B,gBAAkB,CAAA,EACvBr6B,KAAKqO,OAAOqV,WAAa,IAG7B1jB,KAAK0T,QAAQ2jD,gBAAgB12D,OAASX,KAAK0T,QAAQ4jD,eAAiBt3D,KAAK0T,QAAQ4iB,SAEjFygC,EADc/2D,KAAK0T,QAAQ6jD,oBACnBj+C,MAAM6d,aAAe,GAC7B4/B,EAAQz9C,MAAMk+C,YAAc,GACZ1pD,SAAO,mBAAoBipD,CAAO,EACxCz9C,MAAMm+C,iBAAmB,KAEnCT,EADch3D,KAAK0T,QAAQgkD,aAAal/C,cAAc,YAAY,GAC1Dc,MAAMq+C,UAAY,GAC1BX,EAAQ/oD,UAAUqC,IAAI,cAAc,IAGhCymD,EAAU/2D,KAAK0T,QAAQ6jD,mBACtBv3D,KAAKqO,OAAO2jB,UAIb+kC,EAAQz9C,MAAMk+C,YAAc,OAH5BT,EAAQz9C,MAAM6d,aAAe,QAMjC6/B,EADch3D,KAAK0T,QAAQgkD,aAAal/C,cAAc,YAAY,GAC1DvK,UAAU0C,OAAO,cAAc,GAE3C3Q,KAAK66B,WAAa,CAAA,EAClB76B,KAAKqO,OAAOwD,eAAiB,CAAA,EAC7BipB,cAAY96B,KAAKqO,OAAOnB,OAAO,EAC/BlN,KAAK43D,cAAc53D,KAAKq0D,SAAS,EACjCr0D,KAAKo0B,aAAep0B,CAAAA,CAAAA,KAAK63D,UAAkB73D,KAAKo0B,aAChDp0B,KAAK63D,SAAW,CAAA,GAEpBrG,EAAYtxD,UAAU+2D,cAAgB,SAAU5mD,GAG5C,IAFA,IAAIynD,EAAc93D,KAAK0T,QAAQqkD,wBAC3BC,EAAW,GACNh3D,EAAI,EAAG4Y,EAAMk+C,EAAYn3D,OAAQK,EAAI4Y,EAAK5Y,CAAC,GAAI,CACpD,IAAIkL,EAAOlM,KAAKqO,OAAOxB,MAAQR,WAAS,KAAMyrD,EAAY92D,EAAE,EAAIgW,GAAQhX,KAAKqO,OAAQypD,EAAY92D,EAAE,EACvE,CAAC,IAAzBqP,EAAMgF,QAAQnJ,CAAI,EAClB8rD,EAAS1qD,KAAKtM,CAAC,EAEThB,KAAKqO,OAAO+W,mBAAsBplB,KAAKqO,OAAOxB,OAASX,CAAAA,EAAKoQ,SAAS,GAAG,IAC1E27C,EAAO/rD,EAAKoJ,MAAM,GAAG,EAAE/D,MAAM,EAAG,CAAC,CAAC,EAAEgE,KAAK,GAAG,EACpB,CAAC,IAAzBlF,EAAMgF,QAAQ4iD,CAAI,GAClBD,EAAS1qD,KAAKtM,CAAC,GAIH,IAApBg3D,EAASr3D,SACTX,KAAK0T,QAAQy+B,WAAW6lB,CAAQ,EAChCh4D,KAAKukC,SAASvkC,KAAK0T,QAAQwkD,gBAAgB,IAGnD1G,EAAYtxD,UAAUy+B,aAAe,SAAUt8B,GAC3C,IAAI8U,EAAQnX,KAAK0T,QAAQqkD,wBACrBI,EAAQ,GACRn4D,KAAKqO,OAAOxB,MACZsrD,EAAQ,IAAIzlD,cAAYyE,CAAK,EACzBxE,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAAS7S,KAAKqO,OAAOsnB,UAAW,CAAA,CAAK,CAAC,EAK5D,GAFf46B,EAAQ,IAAI79C,cAAYyE,CAAK,EAC7BxE,cAAa,IAAIC,SAAQC,MAAM,OAAQ,QAASxG,WAAS,OAAQhK,CAAI,EAAG,CAAA,CAAK,CAAC,GACxE1B,SACNw3D,EAAQ,IAAIzlD,cAAY69C,CAAK,EACzB59C,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAAS7S,KAAKqO,OAAOkU,WAAY,CAAA,CAAK,CAAC,GAG7E,EAAf41C,EAAMx3D,SACFinB,EAAQzQ,EAAM9B,QAAQ8iD,EAAM,EAAE,EAClCn4D,KAAK0T,QAAQy+B,WAAW,CAACvqB,EAAM,IAGvC4pC,EAAYtxD,UAAUk4D,aAAe,WACH,SAA1Bp4D,KAAKqO,OAAOgJ,UACZrX,KAAK0T,QAAQ2kD,WAAWntD,WAAWlL,KAAKqO,OAAOkJ,OAAQvX,KAAKqO,OAAOgJ,SAAS,EAG5ErX,KAAK0T,QAAQC,WAAauD,GAAclX,KAAKqO,OAAQrO,KAAK0T,QAAQC,UAAU,EAErB,IAAvD3T,KAAKkN,QAAQsL,cAAc,YAAY,EAAE2sB,WACzCnlC,KAAK0T,QAAQ4kD,iBAGrB9G,EAAYtxD,UAAUkgC,kBAAoB,SAAUhS,GAChD,GAAIA,EAAEtT,SAAW9a,KAAKw8B,iBAAgC,WAAbpO,EAAEtT,OAI3C,IAAK,IAuBmB4hC,EAvBf9a,EAAK,EAAGC,EAAKtiC,OAAO4iB,KAAKiM,EAAE0T,OAAO,EAAGF,EAAKC,EAAGlhC,OAAQihC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,mBACD5hC,KAAKg6B,gBACL,MACJ,IAAK,SACDh6B,KAAKi9C,eACL,MACJ,IAAK,sBACI3lC,oBAAkBtX,KAAK0T,OAAO,IAC/B1T,KAAKiyD,iBACD72C,EAAUpb,KAAKkyD,aACnBlyD,KAAK0T,QAAQ0H,QAAUA,EACvBpb,KAAK0T,QAAQk/C,cAAgB5yD,KAAKqO,OAAO8M,oBAAoB03C,eAC7D7yD,KAAK0T,QAAQ2e,WACbryB,KAAK0T,QAAQkiD,kBAEjB,MACJ,IAAK,gBACD51D,KAAKu4D,YAAc,CAAA,EACsB,IAArCv4D,KAAKqO,OAAO+B,cAAczP,QACrBX,KAAKqO,OAAO0zB,sBACT2a,EAAU18C,KAAKqO,OAAO+B,cAAcmB,MAAMvR,KAAKqO,OAAO+B,cAAczP,OAAS,CAAC,EAClFX,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAessC,GAAW,CAAA,CAAI,GAE9D18C,KAAKi3D,cAAcj3D,KAAKqO,OAAO+B,aAAa,EAC5CpQ,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,GAEtE3D,oBAAMzM,KAAK0T,OAAO,IACxB1T,KAAK0T,QAAQ8rB,iBACbx/B,KAAKu4D,YAAc,CAAA,GAEvB,MACJ,IAAK,oBAGL,IAAK,kBACDnmD,EAAKpS,KAAKqO,OAAQse,EAAoB3sB,KAAKqO,OAAO1B,IAAI,EACtD,MACJ,IAAK,qBACL,IAAK,sBACI2K,oBAAkBtX,KAAK0T,OAAO,IAC/B1T,KAAKo3D,oBAAsBp3D,KAAKqO,OAAO+B,cACvCpQ,KAAK0T,QAAQo/C,kBAAkB7wD,KAAOmsB,EAAE0T,QAAQC,oBAAsB,WAAa,SACnF/hC,KAAKm3D,kBAAoB,CAAA,EACzBn3D,KAAK01D,kBAET,MACJ,IAAK,OACD5hD,GAAa9T,KAAKqO,OAAQ,SAAS,EACnC,MACJ,IAAK,QACDrO,KAAKw4D,oBAIrBhH,EAAYtxD,UAAUu+B,cAAgB,SAAUxsB,GAC5CjS,KAAKqO,OAAOM,MAAQ,CAAA,EACpB,IAAI8pD,EAAYz4D,KAAKqO,OAAO8M,oBAAoBC,QAAQ07C,KAAK,SAAU97C,GAAU,MAAwB,eAAjBA,EAAOrZ,MAAyB,GAChD,KAAnE3B,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,MAAM2jC,QAAiB5zC,KAAK0T,SAC9E,CAAC4D,oBAAkBmhD,CAAS,GAAK,CAACnhD,oBAAkBmhD,EAAUC,WAAW,GAA+B,KAA1BD,EAAUC,eACzF14D,KAAKqO,OAAOqwB,cAAgB,GACvB1+B,KAAKqO,OAAO6B,WAIblQ,KAAK24D,mBAHL34D,KAAK44D,iBAAiB,CAAA,CAAK,GAMnChqD,EAAW5O,KAAKqO,MAAM,EACG,YAArBrO,KAAKqO,OAAO0F,OAEZ/T,KAAKo0B,aAAe,CAAA,EACpBuD,cAAY33B,KAAKqO,OAAOnB,OAAO,EAC/BlN,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAK0T,QAAQC,WAAauD,GAAclX,KAAKqO,OAAQ4D,EAAKsB,KAAK,EAC/DvT,KAAK0T,QAAQ4kD,gBACTt4D,KAAKqO,OAAO8lD,UACZn0D,KAAK0T,QAAQguB,GAAG,sBAAuB1hC,KAAKo0D,oBAAqBp0D,IAAI,EAG7EA,KAAKq0D,UAAYpiD,GAErBu/C,EAAYtxD,UAAUy4D,iBAAmB,WACrC,IAAI/+C,EAAM5Z,KAAK0T,QAAQ0H,QAAQza,OAC3Bk4D,EAAazvC,KAAK0B,MAAM1B,KAAKC,UAAUrpB,KAAK0T,QAAQ0H,OAAO,CAAC,EAC5Dy9C,EAAWj/C,EAAM,GAAGjY,OAAuC,eAA9Bk3D,EAAWj/C,EAAM,GAAGjY,OAA0B,CAAC3B,KAAKqO,OAAOuM,WACpFzP,EAAa,CACbxJ,MAAO,aAAcC,WAAYyX,EAAcrZ,KAAKqO,OAAQ,MAAM,EAAGxM,SAAU,IAAKM,MAAO,QAE/FnC,KAAK0T,QAAQ0H,QAAQ9N,KAAKnC,CAAU,EACpCnL,KAAKy0D,YAAYz0D,KAAK0T,QAAQ0H,QAAS,YAAY,EACnDpb,KAAKy0D,YAAYz0D,KAAK0T,QAAQ0H,QAAS,MAAM,EAC7Cpb,KAAK21D,gBAAkB,CAAA,EACvB31D,KAAK0T,QAAQkiD,mBAGrBpE,EAAYtxD,UAAU03D,cAAgB,SAAU3lD,GAC5C,IAAIkF,EAAQD,GAAclX,KAAKqO,OAAQ4D,EAAKsB,KAAK,EAC5B,IAAjB4D,EAAMxW,QAAiB8L,oBAAMzM,KAAKkN,QAAQsL,cAAc,IAAMS,EAAa,CAAC,EAGtD,IAAjB9B,EAAMxW,QAAgBX,KAAKkN,QAAQsL,cAAc,IAAMC,CAAS,IACjEzY,KAAKkN,QAAQsL,cAAc,IAAMS,EAAa,EAAET,cAAc,IAAMC,CAAS,GACzEC,EAAW1Y,KAAKkN,QAAQsL,cAAc,IAAMS,EAAa,EAAET,cAAc,IAAMC,CAAS,EAC5FzY,KAAKkN,QAAQsL,cAAc,IAAMS,EAAa,EAAE8U,YAAYrV,CAAQ,GAGpE1Y,KAAKkN,QAAQ6gB,YAAY/tB,KAAKkN,QAAQsL,cAAc,IAAMC,CAAS,CAAC,GARxEZ,GAAmB7X,KAAKqO,OAAQrO,KAAKkN,QAAS+E,CAAI,GAY1Du/C,EAAYtxD,UAAU0+B,WAAa,WAC/B,IACQv8B,EADyB,gBAA7BrC,KAAKqO,OAAOmB,eACRnN,EAAOrC,KAAK0T,QAAQolD,qBAAqB,GAC7C94D,KAAK+4D,YAAY12D,CAAI,IAG7BmvD,EAAYtxD,UAAUmzD,eAAiB,SAAUphD,GAC7CjS,KAAK0T,QAAQy+B,WAAW,CAAClgC,EAAK+mD,SAAS,EAEnC/mD,EAAKgnD,UACL52D,EAAO+mB,KAAK0B,MAAM1B,KAAKC,UAAUpX,EAAKgnD,OAAO,CAAC,EAC9Cj5D,KAAK+4D,YAAY12D,CAAI,IAG7BmvD,EAAYtxD,UAAU64D,YAAc,SAAU12D,GAC1C,IAAI84B,EAAQn7B,KACPyU,GAAcpS,CAAI,EAKvBrC,KAAKqO,OAAO6H,QAAQ,WADJ,CAAE2J,OAAQ,CAAA,EAAOzJ,YAAa/T,EAAMyY,OAAQ,eACjB,SAAU6pB,GACjD,IAcgBr2B,EAdXq2B,EAAa9kB,SACVwoB,EAASh8B,WAAS,OAAQhK,CAAI,EAC9BgK,WAAS,SAAUhK,CAAI,EACZ6S,GAAS7S,CAAI,IACXmT,KACLS,EAASL,GAAYulB,EAAM9sB,OAAQhM,CAAI,EAC3C4zB,GAAkBkF,EAAM9sB,OAAQg6B,EAAQpyB,CAAM,IAKtC,KADFklB,EAAM9sB,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAC1CkrB,EAAM9sB,OAAO6B,WAW5B2L,GAAiBsf,EAAM9sB,OAAQhM,CAAI,GAV/BiK,EAAKD,WAAS,KAAMhK,CAAI,EAC5B84B,EAAM9sB,OAAOmP,QAAU2d,EAAM9sB,OAAO1B,KAChC2B,EAAU6sB,EAAM9sB,OAAO1B,MAAQF,oBAAMH,CAAE,EAAI+7B,EAAS/7B,GAAM,IAC9D6uB,EAAM9sB,OAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EAClD6sB,EAAM9sB,OAAOrB,UAAUM,KAAK+6B,CAAM,EAClClN,EAAM9sB,OAAOvB,OAAOQ,KAAKjB,WAAS,SAAUhK,CAAI,CAAC,EACjD84B,EAAM9sB,OAAO8D,SAAW,CAAC9P,GACzBwS,GAAWsmB,EAAM9sB,MAAM,GAK3B8sB,EAAM9sB,OAAO6B,WAAa,CAAA,GAE9BirB,EAAMjuB,QAAQ+iB,QACVkL,EAAM9sB,OAAOmrB,sBACb2B,EAAM9sB,OAAOnB,QAAQsL,cAAc,IAAM2iB,EAAM9sB,OAAOnB,QAAQZ,GAAKuqB,EAAiB,EAAE5G,SAGjG,EApCGtb,EAAmB3U,KAAKqO,OAAQhM,EAAMuS,EAAqB,GAuCnE48C,EAAYtxD,UAAUk9B,eAAiB,SAAUnrB,GACpB,YAArBjS,KAAKqO,OAAO0F,OACR/T,KAAKqO,OAAOmrB,sBACZx5B,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAEpDpQ,KAAK0T,QAIN1T,KAAK63D,SAAW,CAAA,EAHhB73D,KAAKw3B,OAAOvlB,CAAI,EAKhBjS,KAAKqO,OAAO6B,aACZlQ,KAAK24D,mBACL34D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,GAEzDpQ,KAAK0T,QAAQC,WAAauD,GAAclX,KAAKqO,OAAQ4D,EAAKsB,KAAK,EAC/DvT,KAAKqO,OAAOW,OAAOipB,GAAmB,EAAE,EACxCj4B,KAAK0T,QAAQxG,QAAQe,UAAU0C,OAAO4oB,EAAgB,EACtDv5B,KAAKo0B,aAAe,CAAA,EACpBp0B,KAAK0T,QAAQ8rB,iBAC0D,KAAnEx/B,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,MAAM2jC,QACxD5zC,KAAKk5D,cAAcjnD,CAAI,EAE3BjS,KAAKi9C,eAC0C,EAA3Cj9C,KAAK0T,QAAQ+9C,aAAar2C,QAAQza,SAAcX,KAAK0T,QAAQ+9C,aAAar2C,QAAQ,GAAGzZ,QAAU3B,KAAKqO,OAAOkJ,QAC7E,SAA1BvX,KAAKqO,OAAOgJ,WACZrX,KAAK0T,QAAQxI,WAAWlL,KAAKqO,OAAOkJ,OAAQvX,KAAKqO,OAAOgJ,SAAS,GAMjFm6C,EAAYtxD,UAAUg5D,cAAgB,SAAUjnD,GACnB,YAArBjS,KAAKqO,OAAO0F,OACZ/T,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKqO,OAAOW,OAAO4c,EAAyB,EAAE,EACzC5rB,KAAKqO,OAAOwD,iBACb7R,KAAKqO,OAAO2F,oBAAsB,IAEtChU,KAAK24D,mBACL34D,KAAKqO,OAAOqwB,cAAgBzsB,EAAKsB,MACjCvT,KAAKy+B,cAAcxsB,CAAI,IAG/Bu/C,EAAYtxD,UAAU04D,iBAAmB,SAAUO,GAC/C,IAAIv/C,EAAM5Z,KAAK0T,QAAQ0H,QAAQza,OAC3Bk4D,EAAazvC,KAAK0B,MAAM1B,KAAKC,UAAUrpB,KAAK0T,QAAQ0H,OAAO,CAAC,EAC5Dy9C,EAAWj/C,EAAM,GAAGjY,OAAwC,eAA9Bk3D,EAAWj/C,EAAM,GAAGjY,QAE7C2V,oBAAkBtX,KAAK0T,QAAQ+9C,aAAar2C,QAAQ,EAAE,GAAoD,eAA/Cpb,KAAK0T,QAAQ+9C,aAAar2C,QAAQ,GAAGzZ,QACnE,SAA1B3B,KAAKqO,OAAOgJ,UACZrX,KAAK0T,QAAQxI,WAAW,OAAQlL,KAAKqO,OAAOgJ,SAAS,EAGrDrX,KAAK0T,QAAQC,WAAauD,GAAclX,KAAKqO,OAAQrO,KAAK0T,QAAQC,UAAU,EAEhF3T,KAAKqO,OAAOW,OAAO+L,GAAqB,EAAE,GAE9C/a,KAAK0T,QAAQ0H,QAAQyQ,MAChBstC,IACDn5D,KAAK21D,gBAAkB,CAAA,EACvB31D,KAAK0T,QAAQkiD,oBAIzBpE,EAAYtxD,UAAU69B,cAAgB,SAAU9rB,GACnB,YAArBjS,KAAKqO,OAAO0F,OAGX/T,KAAK0T,QAIN1T,KAAKy+B,cAAcxsB,CAAI,EAHvBjS,KAAKw3B,OAAOvlB,CAAI,IAMxBu/C,EAAYtxD,UAAU89B,YAAc,SAAU/rB,GACjB,YAArBjS,KAAKqO,OAAO0F,MAGhB/T,KAAKy+B,cAAcxsB,CAAI,GAE3Bu/C,EAAYtxD,UAAUq+B,aAAe,WACA,gBAA7Bv+B,KAAKqO,OAAOmB,cAAuE,IAArCxP,KAAKqO,OAAO+B,cAAczP,QACxEX,KAAKw+B,oBAGbgzB,EAAYtxD,UAAUg+B,eAAiB,WACF,gBAA7Bl+B,KAAKqO,OAAOmB,eACZxP,KAAKqO,OAAO8D,SAAWnS,KAAK0T,QAAQolD,uBAG5CtH,EAAYtxD,UAAUk+B,aAAe,WACA,gBAA7Bp+B,KAAKqO,OAAOmB,cACZyT,GAAOjjB,KAAKqO,OAAQrO,KAAKqO,OAAO+B,cAAepQ,KAAKqO,OAAO1B,KAAM,QAAQ,GAIjF6kD,EAAYtxD,UAAUm+B,YAAc,SAAUpsB,GACjB,YAArBjS,KAAKqO,OAAO0F,OAGhB/T,KAAKy+B,cAAcxsB,CAAI,EACvBjS,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,IAEzDohD,EAAYtxD,UAAUo+B,aAAe,SAAUrsB,GAClB,YAArBjS,KAAKqO,OAAO0F,OAGhB/T,KAAKo0B,aAAe,CAAA,EACpBp0B,KAAK44D,iBAAiB,CAAA,CAAK,EAC3B54D,KAAK0T,QAAQC,WAAauD,GAAclX,KAAKqO,OAAQ4D,EAAKsB,KAAK,EAC/DvT,KAAKq0D,UAAYpiD,IAErBu/C,EAAYtxD,UAAU4+B,aAAe,WACR,YAArB9+B,KAAKqO,OAAO0F,MAAsB/T,KAAK0T,SACvC1T,KAAK0T,QAAQxG,QAAQe,UAAUqC,IAAIipB,EAAgB,GAG3Di4B,EAAYtxD,UAAU6+B,gBAAkB,WACX,YAArB/+B,KAAKqO,OAAO0F,OACZ/T,KAAKo0B,aAAe,CAAA,EAChBp0B,KAAKqO,OAAO0zB,oBACZ/hC,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkB,EAAGr5D,KAAK0T,QAAQ4lD,UAAU34D,MAAM,EAG/EX,KAAK0T,QAAQ6lD,UAAUv5D,KAAK0T,QAAQ4lD,UAAU34D,OAAS,CAAC,EAE5DX,KAAKo0B,aAAe,CAAA,EACpBp0B,KAAKu4D,YAAc,CAAA,IAG3B/G,EAAYtxD,UAAUq/B,eAAiB,WACV,YAArBv/B,KAAKqO,OAAO0F,OACZ/T,KAAKw5D,kBACLx5D,KAAKu4D,YAAc,CAAA,IAI3B/G,EAAYtxD,UAAUupD,mBAAqB,WACvChlB,cAAY,CAACzkC,KAAKkN,SAAUusD,EAAgB,EACL,EAAnCz5D,KAAKqO,OAAO+B,cAAczP,QAC1B8iC,WAAS,CAACzjC,KAAKkN,SAAUusD,EAAgB,GAGjDjI,EAAYtxD,UAAU0/B,gBAAkB,WACX,YAArB5/B,KAAKqO,OAAO0F,MAGhB/T,KAAKi9C,gBAETuU,EAAYtxD,UAAUu/B,gBAAkB,WACpCz/B,KAAK66B,WAAa,CAAA,GAEtB22B,EAAYtxD,UAAUw/B,eAAiB,WACnC1/B,KAAK66B,WAAa,CAAA,GAEtB22B,EAAYtxD,UAAU2/B,sBAAwB,WACjB,YAArB7/B,KAAKqO,OAAO0F,OAGhB/T,KAAKqO,OAAO8D,SAAWnS,KAAK0T,QAAQolD,uBAExCtH,EAAYtxD,UAAUu6B,iBAAmB,WACrCz6B,KAAKqO,OAAOqzB,GAAG/lB,EAAoB3b,KAAK+9B,cAAe/9B,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAG4N,GAAgBtvC,KAAKoJ,QAASpJ,IAAI,EACjDA,KAAKqO,OAAOqzB,GAAGrvB,EAAqBrS,KAAKo9B,eAAgBp9B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAG/U,EAAoB3sB,KAAKy+B,cAAez+B,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGxV,GAAkBlsB,KAAKg+B,YAAah+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGphB,GAAiBtgB,KAAKs8B,WAAYt8B,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGN,EAAoBphC,KAAKqhC,cAAerhC,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGhtB,GAAmB1U,KAAKs+B,aAAct+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGxuB,GAAelT,KAAKk5D,cAAel5D,IAAI,EACtDA,KAAKqO,OAAOqzB,GAAGrB,GAAmBrgC,KAAKsgC,aAActgC,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG1Q,GAAsBhxB,KAAKugC,gBAAiBvgC,IAAI,EAC/DA,KAAKqO,OAAOqzB,GAAGvB,EAAqBngC,KAAKogC,kBAAmBpgC,IAAI,EAChEA,KAAKqO,OAAOqzB,GAAGtR,GAAmBpwB,KAAKo+B,aAAcp+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG1U,GAAkBhtB,KAAKq+B,YAAar+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGzB,GAAqBjgC,KAAKk+B,eAAgBl+B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAGlB,GAAmBxgC,KAAKu+B,aAAcv+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG9U,EAAkB5sB,KAAKy+B,cAAez+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGxB,GAAiBlgC,KAAK4+B,WAAY5+B,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAG7mB,GAAmB7a,KAAKo4D,aAAcp4D,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG5sB,GAAgB9U,KAAKy+B,cAAez+B,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGD,GAAkBzhC,KAAKy+B,cAAez+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGjlB,GAAkBzc,KAAK05D,YAAa15D,IAAI,EACvDA,KAAKqO,OAAOqzB,GAAGzJ,GAAmBj4B,KAAK8+B,aAAc9+B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAGjB,GAAsBzgC,KAAK++B,gBAAiB/+B,IAAI,EAC/DA,KAAKqO,OAAOqzB,GAAGhB,GAAqB1gC,KAAKu/B,eAAgBv/B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAG1vB,GAAmBhS,KAAK8/B,aAAc9/B,IAAI,EACzDA,KAAKqO,OAAOqzB,GAAG9V,EAAyB5rB,KAAKypD,mBAAoBzpD,IAAI,EACrEA,KAAKqO,OAAOqzB,GAAG7X,GAAsB7pB,KAAKy/B,gBAAiBz/B,IAAI,EAC/DA,KAAKqO,OAAOqzB,GAAGxW,GAAqBlrB,KAAK0/B,eAAgB1/B,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAGljB,GAAiBxe,KAAKkhC,WAAYlhC,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGpyB,GAAoBtP,KAAKmhC,cAAenhC,IAAI,EAC3DA,KAAKqO,OAAOqzB,GAAGf,GAAqB3gC,KAAK4gC,eAAgB5gC,IAAI,EAC7DA,KAAKqO,OAAOqzB,GAAGX,GAAkB/gC,KAAK25D,uBAAwB35D,IAAI,EAClEA,KAAKqO,OAAOqzB,GAAGb,GAAuB7gC,KAAKw4D,gBAAiBx4D,IAAI,EAChEA,KAAKqO,OAAOqzB,GAAGJ,GAAsBthC,KAAK4/B,gBAAiB5/B,IAAI,EAC/DA,KAAKqO,OAAOqzB,GAAG3iB,GAAiB/e,KAAKuhC,WAAYvhC,IAAI,EACrDA,KAAKqO,OAAOqzB,GAAGF,GAA4BxhC,KAAK6/B,sBAAuB7/B,IAAI,GAE/EwxD,EAAYtxD,UAAU83B,oBAAsB,WACxCh4B,KAAKqO,OAAO2xB,IAAIrkB,EAAoB3b,KAAK+9B,aAAa,EACtD/9B,KAAKqO,OAAO2xB,IAAIsP,GAAgBtvC,KAAKoJ,OAAO,EAC5CpJ,KAAKqO,OAAO2xB,IAAI3tB,EAAqBrS,KAAKo9B,cAAc,EACxDp9B,KAAKqO,OAAO2xB,IAAIrT,EAAoB3sB,KAAKy+B,aAAa,EACtDz+B,KAAKqO,OAAO2xB,IAAIvjB,GAAkBzc,KAAK05D,WAAW,EAClD15D,KAAKqO,OAAO2xB,IAAI9T,GAAkBlsB,KAAKg+B,WAAW,EAClDh+B,KAAKqO,OAAO2xB,IAAItrB,GAAmB1U,KAAKs+B,YAAY,EACpDt+B,KAAKqO,OAAO2xB,IAAI9sB,GAAelT,KAAKk5D,aAAa,EACjDl5D,KAAKqO,OAAO2xB,IAAIK,GAAmBrgC,KAAKsgC,YAAY,EACpDtgC,KAAKqO,OAAO2xB,IAAIhP,GAAsBhxB,KAAKugC,eAAe,EAC1DvgC,KAAKqO,OAAO2xB,IAAIG,EAAqBngC,KAAKogC,iBAAiB,EAC3DpgC,KAAKqO,OAAO2xB,IAAIQ,GAAmBxgC,KAAKu+B,YAAY,EACpDv+B,KAAKqO,OAAO2xB,IAAIpT,EAAkB5sB,KAAKy+B,aAAa,EACpDz+B,KAAKqO,OAAO2xB,IAAIyB,GAAkBzhC,KAAKy+B,aAAa,EACpDz+B,KAAKqO,OAAO2xB,IAAIE,GAAiBlgC,KAAK4+B,UAAU,EAChD5+B,KAAKqO,OAAO2xB,IAAInlB,GAAmB7a,KAAKo4D,YAAY,EACpDp4D,KAAKqO,OAAO2xB,IAAIlrB,GAAgB9U,KAAKy+B,aAAa,EAClDz+B,KAAKqO,OAAO2xB,IAAI/H,GAAmBj4B,KAAK8+B,YAAY,EACpD9+B,KAAKqO,OAAO2xB,IAAIS,GAAsBzgC,KAAK++B,eAAe,EAC1D/+B,KAAKqO,OAAO2xB,IAAIU,GAAqB1gC,KAAKu/B,cAAc,EACxDv/B,KAAKqO,OAAO2xB,IAAI5P,GAAmBpwB,KAAKo+B,YAAY,EACpDp+B,KAAKqO,OAAO2xB,IAAIhT,GAAkBhtB,KAAKq+B,WAAW,EAClDr+B,KAAKqO,OAAO2xB,IAAIhuB,GAAmBhS,KAAK8/B,YAAY,EACpD9/B,KAAKqO,OAAO2xB,IAAIpU,EAAyB5rB,KAAKypD,kBAAkB,EAChEzpD,KAAKqO,OAAO2xB,IAAInW,GAAsB7pB,KAAKy/B,eAAe,EAC1Dz/B,KAAKqO,OAAO2xB,IAAI9U,GAAqBlrB,KAAK0/B,cAAc,EACxD1/B,KAAKqO,OAAO2xB,IAAIxhB,GAAiBxe,KAAKkhC,UAAU,EAChDlhC,KAAKqO,OAAO2xB,IAAI1wB,GAAoBtP,KAAKmhC,aAAa,EACtDnhC,KAAKqO,OAAO2xB,IAAI1f,GAAiBtgB,KAAKs8B,UAAU,EAChDt8B,KAAKqO,OAAO2xB,IAAIC,GAAqBjgC,KAAKk+B,cAAc,EACxDl+B,KAAKqO,OAAO2xB,IAAIoB,EAAoBphC,KAAKqhC,aAAa,EACtDrhC,KAAKqO,OAAO2xB,IAAIW,GAAqB3gC,KAAK4gC,cAAc,EACxD5gC,KAAKqO,OAAO2xB,IAAIe,GAAkB/gC,KAAK25D,sBAAsB,EAC7D35D,KAAKqO,OAAO2xB,IAAIa,GAAuB7gC,KAAKw4D,eAAe,EAC3Dx4D,KAAKqO,OAAO2xB,IAAIsB,GAAsBthC,KAAK4/B,eAAe,EAC1D5/B,KAAKqO,OAAO2xB,IAAIjhB,GAAiB/e,KAAKuhC,UAAU,EAChDvhC,KAAKqO,OAAO2xB,IAAIwB,GAA4BxhC,KAAK6/B,qBAAqB,GAE1E2xB,EAAYtxD,UAAUqgC,gBAAkB,WAAcvgC,KAAKu4D,YAAc,CAAA,GACzE/G,EAAYtxD,UAAU0gC,eAAiB,SAAU3uB,GACzCjS,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBAClCx8B,KAAKqO,OAAO8D,SAAW,CAACnS,KAAK0T,QAAQkmD,WAAW3nD,EAAK3R,MAAM,EAAE24D,WAGrEzH,EAAYtxD,UAAUw5D,YAAc,WAC5B15D,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBAClCx8B,KAAKqO,OAAO8D,SAAuC,KAA3BnS,KAAKqO,OAAOgO,WAAqBrc,KAAK0T,QAAQolD,qBAClE,CAAC1lD,EAAcpT,KAAKqO,MAAM,KAGtCmjD,EAAYtxD,UAAUmhC,cAAgB,WAC9BrhC,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBACO,IAArCx8B,KAAKqO,OAAO+B,cAAczP,OAC1BX,KAAKqO,OAAO8D,SAAWnS,KAAK0T,QAAQolD,qBAGpC94D,KAAKqO,OAAO8D,SAAW,CAAC9F,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,KAIpH+iD,EAAYtxD,UAAUw7B,WAAa,SAAUzpB,GACzC,IAKIgF,EAcA4iD,EAlBA19B,EADalqB,EAAKiqB,OAAO57B,OACLuQ,QAAQ,UAAU,EAC1C,OAAKsrB,GAIDA,EAAOoV,uBAAuB,WAAW,EAAE,GAC3Ct6B,EAAOjX,KAAKqO,OAAOxB,MAAQ7M,KAAK0T,QAAQkmD,WAAWz9B,CAAM,EAAE88B,QAAQ3sD,GAAK6vB,EAAOoV,uBAAuB,WAAW,EAAE,GAAG7F,UAEjHvP,EAAOoV,uBAAuB,0BAA0B,EAAE,GAAGvlB,qBAClE/U,EAAOjX,KAAKqO,OAAOxB,MAAQ7M,KAAK0T,QAAQkmD,WAAWz9B,CAAM,EAAE88B,QAAQ3sD,GAAK6vB,EAAOoV,uBAAuB,0BAA0B,EAAE,GAAGvlB,mBAAmB0f,WAExJvP,GAAU,CAACA,EAAO3jB,cAAc,WAAW,GAC3CxY,KAAKi3D,cAAc,CAAChgD,EAAK,EAE7BtH,GAAU3P,KAAKqO,OAAQ8tB,CAAM,EAC7Bn8B,KAAKqO,OAAOgB,eAAiB,GAC7BrP,KAAKqO,OAAO6O,SAAW,GACvBld,KAAKqO,OAAO6O,SAAWld,KAAK0T,QAAQolD,sBAGhCe,EADgC,IAAhC75D,KAAKqO,OAAO6O,SAASvc,QAAgBw7B,EAC3Bn8B,KAAK0T,QAAQkmD,WAAWz9B,CAAM,EAExC09B,IACA75D,KAAKqO,OAAO6O,SAAS5P,KAAKusD,EAAQZ,OAAO,EAE7Cj5D,KAAKqO,OAAO0O,SAAW/c,KAAKqO,OAAO1B,KACnC3M,KAAKqO,OAAOgB,eAAiBrP,KAAK0T,QAAQomD,kBAC1C56C,GAAyBlf,KAAKqO,MAAM,EAC7BrO,KAAKqO,OAAOqR,oBA1BR,MA6Bf8xC,EAAYtxD,UAAUs4D,gBAAkB,WACpC,GAAyB,YAArBx4D,KAAKqO,OAAO0F,MAAsB,CAAC/T,KAAKqO,OAAOuM,UAAY,CAACnO,oBAAMzM,KAAK0T,OAAO,EAK9E,IAJA,IACIqmD,EADa/5D,KAAK0T,QAAQ6jD,mBAAmB/+C,cAAc,kBAAkB,EAC7C2vC,WAAWhrB,WAAW,GACtD68B,EAAsBh6D,KAAK0T,QAAQgkD,aAAal/C,cAAc,qBAAqB,EAAEvH,SAAS,GAC9FgpD,EAAqBj6D,KAAK0T,QAAQw+C,aAC7BlxD,EAAI,EAAGA,EAAIi5D,EAAmBt5D,OAAQK,CAAC,IACtChB,KAAKw0D,aAA+C,SAAhCyF,EAAmBj5D,GAAGW,QAAqD,eAAhCs4D,EAAmBj5D,GAAGW,QACvB,KAA5D3B,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,WAW3ElQ,KAAKkN,QAAQq/B,aAAe,IACQ,SAAhC0tB,EAAmBj5D,GAAGW,OACtBo4D,EAAmB9oD,SAASjQ,GAAG62B,aAAa,QAAS,cAAc,EACnEmiC,EAAoB/oD,SAASjQ,GAAG62B,aAAa,QAAS,cAAc,IAGpEkiC,EAAmB9oD,SAASjQ,GAAG62B,aAAa,QAAS,cAAc,EACnEmiC,EAAoB/oD,SAASjQ,GAAG62B,aAAa,QAAS,cAAc,GAGxC,IAA3B73B,KAAKkN,QAAQq/B,cAClBwtB,EAAmB9oD,SAASjQ,GAAG62B,aAAa,QAAS,aAAa,EAClEmiC,EAAoB/oD,SAASjQ,GAAG62B,aAAa,QAAS,aAAa,GAtBnE73B,KAAKkN,QAAQq/B,aAAe,KAC5BwtB,EAAmB9oD,SAASjQ,GAAG62B,aAAa,QAAS,cAAc,EACnEmiC,EAAoB/oD,SAASjQ,GAAG62B,aAAa,QAAS,cAAc,GAEpC,IAA3B73B,KAAKkN,QAAQq/B,cAClBwtB,EAAmB9oD,SAASjQ,GAAG62B,aAAa,QAAS,aAAa,EAClEmiC,EAAoB/oD,SAASjQ,GAAG62B,aAAa,QAAS,aAAa,KAuB3F25B,EAAYtxD,UAAUy5D,uBAAyB,WAC3C35D,KAAKw4D,kBACoB,YAArBx4D,KAAKqO,OAAO0F,MAAuB/T,KAAKqO,OAAOuM,UAAanO,oBAAMzM,KAAK0T,OAAO,GAC9E1T,KAAKi9C,gBAGbuU,EAAYtxD,UAAU85B,cAAgB,WAClC,IAAImB,EAAQn7B,KACRA,KAAK0T,UACD1T,KAAKqO,OAAOqS,kBAAoBpJ,oBAAkBtX,KAAKygB,OAAO,EAC9DzgB,KAAKygB,QAAU,IAAI2a,YAAUp7B,KAAK0T,QAAQxG,QAAS,CAC/CyuB,SAAU37B,KAAKqO,OAAOutB,mBACtBN,SAAU,EACVD,eAAgB,CAAA,EAChBQ,SAAU77B,KAAKqO,OAAOnB,QACtBsuB,WAAY,IAAM5qB,GAClBmrB,KAAMra,GAAgByO,KAAKnwB,KAAMA,KAAKqO,MAAM,EAC5C4tB,UAAW,SAAUhqB,GACjBuO,GAAiB2a,EAAM9sB,OAAQ4D,EAAMkpB,EAAM1a,OAAO,GAEtDqb,SAAUnc,GAAgBwQ,KAAKnwB,KAAMA,KAAKqO,MAAM,EAChDktB,iBAAkB,CAAA,EAClBE,OAAQz7B,KAAK07B,WAAWvL,KAAKnwB,IAAI,EACpC,EAEI,CAACA,KAAKqO,OAAOqS,kBAAoB1gB,KAAKygB,UAC3CzgB,KAAKygB,QAAQrX,UACbpJ,KAAKygB,QAAU,QAI3B+wC,EAAYtxD,UAAUo8B,WAAa,SAAUrqB,GACzC,IAEQsqB,EAOAG,EATJ18B,KAAKqO,OAAOkG,eAAiBvU,KAAKw8B,kBAE9BD,EAAUlwB,WAASrM,KAAKqO,OAAOvB,OAAO9M,KAAKqO,OAAOvB,OAAOnM,OAAS,GAAIX,KAAKqO,OAAOI,QAAQ,EACzFwD,EAAK3R,OAAOuQ,QAAQ,IAAI,GAKrB6rB,EAAO,KACXA,EAAO18B,KAAK0T,QAAQkmD,WAAW3nD,EAAK3R,MAAM,EAAE24D,QAC5Cj5D,KAAKqO,OAAO7C,SAAWkxB,EAAKpa,OAAStiB,KAAKqO,OAAO1B,KAAOmK,GAAY9W,KAAKqO,OAAQquB,EAAM18B,KAAKqO,OAAO1B,IAAI,EACvG3M,KAAKqO,OAAOkP,SAAWmf,EAAKpa,OAASia,EAAUG,IAP/C18B,KAAKqO,OAAO7C,SAAWxL,KAAKqO,OAAO1B,KACnC3M,KAAKqO,OAAOkP,SAAWgf,KAUnCi1B,EAAYtxD,UAAUihC,cAAgB,WAC9BnhC,KAAKqO,OAAOmB,eAAiBxP,KAAKw8B,kBAClCx8B,KAAKqO,OAAOyB,cAAgB9P,KAAK0T,QAAQolD,qBACzC94D,KAAKqO,OAAOgB,eAAiBrP,KAAK0T,QAAQomD,oBAGlDtI,EAAYtxD,UAAUghC,WAAa,SAAUjvB,GAChB,YAArBjS,KAAKqO,OAAO0F,OACZ/T,KAAKm6B,iBAAmB,CAAA,EACpBn6B,KAAKqO,OAAO1B,OAAS3M,KAAKqO,OAAOqX,iBACjC1lB,KAAKqO,OAAO1B,OAAS8Q,GAAiBzd,KAAKqO,OAAQ4D,CAAI,GAAKjS,CAAAA,KAAKqO,OAAOxB,OACxE7M,KAAKy+B,cAAcxsB,CAAI,IAInCu/C,EAAYtxD,UAAUqhC,WAAa,SAAUtvB,GAChB,YAArBjS,KAAKqO,OAAO0F,OACZ/T,KAAKm6B,iBAAmB,CAAA,EACxBn6B,KAAKy+B,cAAcxsB,CAAI,IAS/Bu/C,EAAYtxD,UAAUs8B,cAAgB,WAClC,MAAO,eAEXg1B,EAAYtxD,UAAUkJ,QAAU,WACxBpJ,KAAKqO,OAAO0xB,cAGhB//B,KAAKg4B,sBACDh4B,KAAK0T,UACD1T,KAAKqO,OAAO8lD,SACZn0D,KAAK0T,QAAQssB,IAAI,sBAAuBhgC,KAAKo0D,mBAAmB,EAEpEp0D,KAAK+3B,eACL/3B,KAAK0T,QAAQtK,aAGrBooD,EAAYtxD,UAAUyjC,WAAa,SAAUvyB,GACrCwzB,EAAS92B,SAAO,IAAM6H,GAAYvE,CAAI,EAC1CpR,KAAKqO,OAAOiU,OAAS7V,CAAAA,CAAAA,oBAAMm4B,CAAM,GAGrC4sB,EAAYtxD,UAAUqyD,YAAc,SAAUpjD,EAAQ8C,GAClD,IAAIwE,EAAY,CACZtH,OAAQA,EAAQiH,YAAanE,EAAK5P,KAAM+xB,aAAcp0B,KAAKu4D,YAAa14C,OAAQ,CAAA,EAAOvf,OAAQ2R,EAAK3R,QAExGN,KAAKqO,OAAO6H,QAAQ,gBAAiBO,CAAS,EAC9CxE,EAAK4N,OAASpJ,EAAUoJ,OACnB7f,KAAKk6D,gBACNl6D,KAAKk6D,cAAgB,CAAA,GAChBjoD,EAAKkoD,gBAAkBloD,EAAKmoD,gBAAkB,CAACp6D,KAAKqO,OAAO0zB,qBAAwB9vB,EAAK3R,QAAU2R,EAAK3R,OAAOwhB,eAAiB,CAAC7P,EAAK3R,OAAOwhB,cAAc7T,UAAUC,SAAS,oBAAoB,IAClM+D,EAAK4N,OAAS,CAAA,EACVm5C,EAAY/mD,GAAQA,EAAKooD,WACvBpoD,EAAKooD,WAAWpoD,EAAKooD,WAAW15D,OAAS,GACzCsR,EAAK+mD,SACXh5D,KAAK0T,QAAQ6lD,UAAUP,CAAQ,GAEnCh5D,KAAKk6D,cAAgB,CAAA,IAI7B1I,EAAYtxD,UAAUkhD,WAAa,SAAUnvC,GACzCjS,KAAKqO,OAAOmB,aAAe,cACtBxP,KAAKqO,OAAOwD,gBAAkB7R,CAAAA,KAAKqO,OAAO6B,YAC3ClQ,KAAKs6D,kBAETt6D,KAAKqO,OAAOW,OAAO4c,EAAyB,EAAE,EACM,IAAhD5rB,KAAK0T,QAAQgjD,wBAAwB/1D,SACrCX,KAAKu6D,eAAiBv6D,KAAK0T,QAAQwkD,kBAEvCl4D,KAAK0T,QAAQxG,QAAQ2qB,aAAa,WAAY,IAAI,EAClD73B,KAAKwkC,cAAc,SAAUvyB,CAAI,EACjC,IAAIb,EAAOpR,KAAK0T,QAAQ8mD,cAAcx6D,KAAK0T,QAAQwkD,gBAAgB,EAa/DzB,GAZJz2D,KAAK2jC,WAAWvyB,CAAI,EACf3E,oBAAM2E,CAAI,GAAM3E,oBAAM2E,EAAKoH,cAAc,gBAAgB,CAAC,IACP,IAAhDxY,KAAK0T,QAAQgjD,wBAAwB/1D,SACjCmrD,EAAgB9rD,KAAK0T,QAAQgjD,wBAAwB12D,KAAK0T,QAAQgjD,wBAAwB/1D,OAAS,GACxFX,KAAK0T,QAAQ8mD,cAAc1O,CAAa,EAC9CtzC,cAAc,gBAAgB,EAAEqf,aAAa,WAAY,IAAI,GAE1EzmB,EAAKoH,cAAc,0BAA0B,EAAEmkB,gBAAgB,UAAU,GAExElwB,oBAAMzM,KAAK0T,OAAO,GAAMjH,oBAAMzM,KAAK0T,QAAQxG,QAAQsL,cAAc,mBAAmB,CAAC,GACtFxY,KAAK0T,QAAQxG,QAAQsL,cAAc,mBAAmB,EAAEqf,aAAa,WAAY,IAAI,EAE9E73B,KAAK0T,QAAQgjD,yBACxB,GAAI,CAAC12D,KAAKqO,OAAO0zB,oBACb,IAAK,IAAI/gC,EAAI,EAAGA,EAAIy1D,EAAK91D,OAAQK,CAAC,GAC1By1D,EAAKz1D,KAAOhB,KAAK0T,QAAQwkD,iBACzBl4D,KAAK0T,QAAQ8mD,cAAc/D,EAAKz1D,EAAE,EAAE62B,aAAa,WAAY,GAAG,EAGhE73B,KAAK0T,QAAQ8mD,cAAc/D,EAAKz1D,EAAE,EAAE27B,gBAAgB,UAAU,EAI1E,IAAI/iB,EAAM68C,EAAK91D,OAQX08B,GAPAr9B,KAAKqO,OAAOmrB,qBACZx5B,KAAKqO,OAAOgU,gBAAkBhW,WAAS,OAAQ4F,EAAK5P,IAAI,EAE7C,EAANuX,IACDvX,EAAOrC,KAAK0T,QAAQkjD,gBAAgBH,EAAK78C,EAAM,IAAIvX,KACvDrC,KAAKqO,OAAOgU,gBAAkBhW,WAAS,OAAQhK,CAAI,GAEzCgK,WAAS,aAAc4F,CAAI,GACrCuxB,EAAcn3B,WAAS,yBAA0BrM,KAAK0T,QAAQ0lD,eAAe,EAC7Ep5D,KAAKqO,OAAO20B,UAAYv2B,oBAAM4wB,CAAO,GAAKprB,EAAK3R,QAAU,CAACkjC,GAAe,CAACvxB,EAAK3R,OAAOuQ,QAAQ,eAAe,IAC7G7Q,KAAKqO,OAAOiU,OAASjW,WAAS,SAAU4F,EAAK5P,IAAI,EAC5CrC,KAAKqO,OAAOiU,QACbtiB,KAAK+4D,YAAY9mD,EAAK5P,IAAI,GAGlCrC,KAAKqO,OAAOopB,YAAcxlB,EAAK6jD,IACzB91D,KAAKqO,OAAOmrB,sBAA2BvnB,EAAKwoD,yBAC9Cz6D,KAAKukC,SAASvkC,KAAK0T,QAAQwkD,gBAAgB,EAE1Cl4D,KAAKqO,OAAOwD,iBACb7R,KAAKo0B,aAAe,CAAA,IAI5Bo9B,EAAYtxD,UAAU4/B,aAAe,WACR,YAArB9/B,KAAKqO,OAAO0F,MAAuBtH,oBAAMzM,KAAK0T,OAAO,GACW,KAA5D1T,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBjQ,KAAKqO,OAAO6B,YAC/ElQ,KAAK44D,iBAAiB,CAAA,CAAK,GAIvCpH,EAAYtxD,UAAUo6D,gBAAkB,WACpCt6D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAGrD,IAFA,IAAIkqD,EAAkBt6D,KAAK06D,kBACvBC,EAAa,EACVA,EAAaL,EAAgB35D,QAAQ,CACxC,IAAIi6D,EAASN,EAAgBK,GACzBE,EAAS17C,GAAYnf,KAAKqO,OAAQusD,CAAM,EAC5C56D,KAAKqO,OAAO+B,cAAc9C,KAAKutD,CAAM,EACrCF,CAAU,GAEd36D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAepQ,KAAKqO,OAAO+B,eAAiB,CAAA,CAAI,GAEhFohD,EAAYtxD,UAAUyyD,cAAgB,SAAU1gD,GAE5C,IAIQ65C,EAJJ,CAAC9rD,KAAKqO,OAAO0zB,qBAAuBt1B,oBAAMwF,EAAK5P,IAAI,EACnDrC,KAAK0T,QAAQ8mD,cAAcvoD,EAAK+mD,QAAQ,EAAEr8B,gBAAgB,UAAU,EAEjB,EAA9C38B,KAAK0T,QAAQgjD,wBAAwB/1D,SACtCmrD,EAAgB9rD,KAAK0T,QAAQgjD,wBAAwB12D,KAAK0T,QAAQgjD,wBAAwB/1D,OAAS,GACvGX,KAAK0T,QAAQ8mD,cAAc1O,CAAa,EAAEtzC,cAAc,gBAAgB,EAAEmkB,gBAAgB,UAAU,GAElE,CAAC,IAAnC38B,KAAK0T,QAAQwkD,kBACbl4D,KAAK0T,QAAQxG,QAAQ2qB,aAAa,WAAY,GAAG,EAEhD73B,KAAKo0B,cAIVp0B,KAAKs6D,kBACoC,IAArCt6D,KAAKqO,OAAO+B,cAAczP,SAC1BkZ,WAAS,yBAA0B,CAAA,EAAO7Z,KAAK0T,QAAQ0lD,eAAe,EACtE30B,cAAY,CAACzkC,KAAKqO,OAAOnB,SAAUw2B,EAAgB,GAEvD1jC,KAAKqO,OAAOW,OAAO4c,EAAyB,EAAE,EAC9C5rB,KAAKwkC,cAAc,WAAYvyB,CAAI,EACnCjS,KAAKqO,OAAOopB,YAAc,MAVtBz3B,KAAKo0B,aAAe,CAAA,GAY5Bo9B,EAAYtxD,UAAUskC,cAAgB,SAAUr1B,EAAQ8C,GAChDwE,EAAY,CAAEtH,OAAQA,EAAQiH,YAAanE,EAAK5P,KAAM+xB,aAAcp0B,KAAKu4D,aAC7Ev4D,KAAKqO,OAAO6H,QAAQ,aAAcO,CAAS,EAC3CzW,KAAKu4D,YAAc,CAAA,GAEvB/G,EAAYtxD,UAAUw6B,WAAa,WAC/B16B,KAAKgiC,eAAe,CAAA,CAAI,EACxBhiC,KAAKiiC,eAAiB,IAAIC,iBAAeliC,KAAK0T,QAAQxG,QAAS,CAC3Di1B,UAAWniC,KAAK86D,aAAa3qC,KAAKnwB,IAAI,EACtCqiC,WAAYriC,KAAKqiC,WACjB3mB,UAAW,QACd,EACD1b,KAAKsiC,mBAAqB,IAAIJ,iBAAeliC,KAAKkN,QAAS,CACvDi1B,UAAWniC,KAAK+6D,eAAe5qC,KAAKnwB,IAAI,EACxCqiC,WAAYriC,KAAKqiC,WACjB3mB,UAAW,UACd,EACD8mB,eAAalyB,IAAItQ,KAAK0T,QAAQxG,QAAS,OAAQlN,KAAKg7D,YAAah7D,IAAI,EACrEwiC,eAAalyB,IAAItQ,KAAKqO,OAAOnB,QAAS,WAAYlN,KAAKotC,OAAQptC,IAAI,GAEvEwxD,EAAYtxD,UAAU63B,aAAe,WACjC/3B,KAAKgiC,eAAe,CAAA,CAAK,EACzBhiC,KAAKiiC,eAAe74B,UACpBpJ,KAAKsiC,mBAAmBl5B,UACxBo5B,eAAa7xB,OAAO3Q,KAAK0T,QAAQxG,QAAS,OAAQlN,KAAKg7D,WAAW,EAClEx4B,eAAa7xB,OAAO3Q,KAAKqO,OAAOnB,QAAS,WAAYlN,KAAKotC,MAAM,GAEpEokB,EAAYtxD,UAAU8hC,eAAiB,SAAUW,GAC7C,IAAIxH,EAAQn7B,KACR2iC,GACIpjB,EAAMvf,KAAK0T,QAAQgkD,aACvB13D,KAAK4iC,SAAW,IAAIC,QAAMtjB,EAAK,CAC3BujB,IAAK,SAAUC,GACU,IAAjBA,EAAIE,UAAkBF,EAAIK,cAAc9iC,OAAO2N,UAAUC,SAAS,WAAW,GAC7EitB,EAAMoE,kBAGdgE,QAAS,SAAUnV,GACX+M,EAAM9sB,OAAO20B,WACb5U,EAAEgV,cAAc9N,iBACZ6F,EAAM9sB,OAAO0zB,sBACbloB,WAAS,yBAA0BshB,EAAM9sB,OAAO0zB,oBAAqB5G,EAAMznB,QAAQ0lD,eAAe,EAClG31B,WAAS,CAACtI,EAAM9sB,OAAOnB,SAAUw2B,EAAgB,GAEjDpjC,EAAS8tB,EAAEgV,cAAc9iC,UAErBw1D,EAAMjlD,UAAQvQ,EAAQ,IAAMsQ,EAAO,EACnCgX,EAAQuT,EAAMznB,QAAQ4lD,UAAUjkD,QAAQygD,CAAG,EAC/C36B,EAAMznB,QAAQ6lD,UAAU3xC,CAAK,IAI5C,GAGG5nB,KAAK4iC,UACL5iC,KAAK4iC,SAASx5B,WAK1BooD,EAAYtxD,UAAUs5D,gBAAkB,WACpC/0B,cAAY,CAACzkC,KAAKqO,OAAOnB,SAAUw2B,EAAgB,EACnD1jC,KAAK0T,QAAQ8rB,iBACbx/B,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDpQ,KAAKqO,OAAOW,OAAO4c,EAAyB,EAAE,EACR,CAAC,IAAnC5rB,KAAK0T,QAAQwkD,mBACbl4D,KAAKokC,WAAa,MAEtBpkC,KAAKo0B,aAAe,CAAA,GAExBo9B,EAAYtxD,UAAU86D,YAAc,WAChCh7D,KAAKukC,SAAS,IAAI,GAEtBitB,EAAYtxD,UAAUktC,OAAS,SAAUhf,GACrC,IAAyB,OAApBA,EAAE6sC,eAA0BpqD,UAAQud,EAAE6sC,cAAe,SAAS,IAAM7sC,EAAE6sC,gBAGvE,CAACxuD,oBAAMzM,KAAK0T,QAAQxG,OAAO,EAE3B,IADA,IAAIguD,EAAal7D,KAAK0T,QAAQxG,QAAQuD,iBAAiB,IAAI,EAClDzP,EAAI,EAAGA,EAAIk6D,EAAWv6D,OAAQK,CAAC,GAChCk6D,EAAWl6D,GAAGiN,UAAUC,SAAS,SAAS,GAC1ClO,KAAKukC,SAAS,IAAI,GAKlCitB,EAAYtxD,UAAUi7D,oBAAsB,WACxC,OAAS1uD,oBAAMzM,KAAK8kC,gBAAgB,EACoC,KAApEv2B,SAASvO,KAAK8kC,iBAAiBv4B,aAAa,eAAe,EAAG,EAAE,GAGxEilD,EAAYtxD,UAAU66D,eAAiB,SAAU3sC,GAC7C,GAAKpuB,KAAK66B,WAGV,OAAQzM,EAAEjf,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,QACDif,EAAEkH,mBAOdk8B,EAAYtxD,UAAU46D,aAAe,SAAU1sC,GAC3C,GAAKpuB,KAAK66B,WAAV,CAGAzM,EAAEkH,iBACF,IAyDgB0hC,EACAoE,EACAC,EA3DZlsD,EAASif,EAAEjf,OACXmsD,EAAYpkD,GAAclX,KAAKqO,OAAQrO,KAAK0T,QAAQC,UAAU,EAC9D4nD,EAAaD,EAAU36D,OACvB66D,EAAWx7D,KAAKm7D,sBAChBM,EAAWz7D,KAAK0T,QAAQwkD,iBACxBwD,EAAgB17D,KAAK0T,QAAQgjD,wBAIjC,OAAQvnD,GACJ,IAAK,WACDnP,KAAKqO,OAAOW,OAAOoyB,EAAoB,EAAE,EACzCvb,GAAW7lB,KAAKqO,OAAQrO,KAAKqO,OAAO+B,cAAepQ,KAAKqO,OAAO1B,KAAM,SAAS,EAC9E,MACJ,IAAK,MACD+B,GAAa1O,KAAKqO,MAAM,EACxB,MACJ,IAAK,MACL,IAAK,WACDrO,KAAK+lC,gBACL,MACJ,IAAK,QACqC,CAAC,IAAnC/lC,KAAK0T,QAAQwkD,kBAAyD,CAAA,IAA9Bl4D,KAAK0T,QAAQ2+C,aAChDjkC,EAAE9tB,OAAO2N,UAAUC,SAAS,gBAAgB,IACzCikD,EAAa/jC,EAAE9tB,OAAOixC,uBAAuB,aAAa,EAAE5wC,OAAuB,aAAd,YACrEg7D,EAAe37D,KAAK0T,QAAQkoD,eAAextC,EAAE9tB,OAAOkY,cAAc,kBAAkB,EAAEjM,aAAa,cAAc,CAAC,EAAE5K,MACxH3B,KAAK0T,QAAQxI,WAAWywD,EAAcxJ,CAAS,EAC1C1lD,oBAAMzM,KAAK8kC,iBAAiB+2B,WAAW,IACxC77D,KAAK8kC,iBAAiB+2B,YAAYhkC,aAAa,WAAY,GAAG,GAMtEohC,EADMj5D,KAAK0T,QAAQkjD,gBAAgB52D,KAAK0T,QAAQwkD,kBAAkB71D,QAE9DA,EAAO+mB,KAAK0B,MAAM1B,KAAKC,UAAU4vC,CAAO,CAAC,EAC7Cj5D,KAAK+4D,YAAY12D,CAAI,GAEzB,MACJ,IAAK,QACD0S,GAAU/U,KAAKqO,MAAM,EACrB,MACJ,IAAK,QACDrO,KAAKqO,OAAOgO,WAAa,GACzBF,GAAanc,KAAKqO,MAAM,EACxB,MACJ,IAAK,QACD4G,GAASjV,KAAKqO,MAAM,EACpB,MACJ,IAAK,QACDrO,KAAK2iB,aACL,MACJ,IAAK,KACD3iB,KAAKgmC,gBACL,MACJ,IAAK,QACG,CAACv5B,oBAAM6uD,EAAU,EAAE,GAAKt7D,KAAKqO,OAAO0zB,sBAEhCq5B,GADApE,EAAUh3D,KAAK0T,QAAQgkD,aAAal/C,cAAc,YAAY,GAC1C2sB,UACpBk2B,EAAgBr7D,KAAK0T,QAAQwkD,iBACjCl4D,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkB,EAAGiC,EAAU36D,OAAS,CAAC,EACtEq2D,EAAQ7xB,UAAYi2B,EACE,CAAC,IAAnBC,IACAr7D,KAAKukC,SAAS82B,CAAa,EAGnC,MACJ,IAAK,WACL,IAAK,MACD,GAAI,CAAC5uD,oBAAM6uD,EAAU,EAAE,EACnB,GAAKt7D,KAAKqO,OAAO0zB,qBAAoC,aAAb3T,EAAEjf,OAGrC,CAAA,GAAsC,CAAC,IAAnCnP,KAAK0T,QAAQwkD,kBAAwC,QAAb9pC,EAAEjf,OAC/C,OAGAnP,KAAK87D,eAAe1tC,CAAC,OANrBpuB,KAAK0T,QAAQ6lD,UAAU,CAAC,EAShC,MACJ,IAAK,UACI9sD,oBAAM6uD,EAAU,EAAE,IACdt7D,KAAKqO,OAAO0zB,oBAIb/hC,KAAKukC,SAASg3B,EAAa,CAAC,EAH5Bv7D,KAAK0T,QAAQ6lD,UAAUgC,EAAa,CAAC,GAM7C,MACJ,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,QACIv7D,KAAKqO,OAAO0zB,oBAIRt1B,oBAAM6uD,EAAU,EAAE,IACd7uD,oBAAMgvD,CAAQ,GAAkB,CAAC,IAAdA,EAIH,WAAbrtC,EAAEjf,QAAoC,cAAbif,EAAEjf,OAC3BnP,KAAK0T,QAAQ6lD,UAAU,CAAC,EAGxBv5D,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkB,EAAGiC,EAAU36D,OAAS,CAAC,EAP1EX,KAAK+7D,aAAaT,EAAWG,EAAU,KAAMrtC,CAAC,GALtDpuB,KAAK0T,QAAQ6lD,UAAwB,cAAbnrC,EAAEjf,QAAuC,WAAbif,EAAEjf,OAAuB,EAAImsD,EAAU36D,OAAS,CAAC,EAiBzG,MACJ,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,YACDX,KAAKg8D,eAAeN,EAAeF,EAAUC,EAAUrtC,CAAC,EACxD,MACJ,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,YACDpuB,KAAKi8D,gBAAgBX,EAAWG,EAAUD,EAAUE,EAAettC,CAAC,EACpE,MACJ,IAAK,SACL,IAAK,WACIpuB,KAAKqO,OAAO0zB,oBAIb/hC,KAAKk8D,iBAAiBZ,EAAWltC,EAAGqtC,CAAQ,EAH5Cz7D,KAAKm8D,aAAab,EAAWltC,EAAGqtC,CAAQ,EAK5C,MACJ,IAAK,OACD12B,EAAY,CAAC14B,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQyuD,EAAU,EAAE,GACrEt7D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe20B,GAAa,CAAA,CAAI,EAC5D/kC,KAAKi3D,cAAclyB,CAAS,EAC5B,MACJ,IAAK,SACL,IAAK,WACD/kC,KAAKm8D,aAAab,EAAWltC,EAAGqtC,CAAQ,EACxC,MACJ,IAAK,MACDz8B,EAAW,CAAC3yB,WAASrM,KAAKqO,OAAOxB,MAAQ,KAAO,OAAQyuD,EAAUC,EAAa,EAAE,GACjFv7D,KAAKqO,OAAO3B,cAAc,CAAE0D,cAAe4uB,GAAY,CAAA,CAAI,EAC3Dh/B,KAAKi3D,cAAcj4B,CAAQ,EAC3B,MACJ,IAAK,OACDh/B,KAAKqO,OAAO43B,sBAIxBurB,EAAYtxD,UAAUw6D,gBAAkB,WACpC,OAAO16D,KAAK0T,QAAQolD,sBAExBtH,EAAYtxD,UAAUyiB,WAAa,WAC/B,GAAyC,IAArC3iB,KAAKqO,OAAO+B,cAAczP,OAAc,CACxCX,KAAKqO,OAAO8D,SAAWnS,KAAK0T,QAAQolD,qBAEpC,IADA,IAAI3hD,EAAQnX,KAAKqO,OAAO8D,SACfnR,EAAI,EAAGA,EAAImW,EAAMxW,OAAQK,CAAC,GAC/B,GAAI,CAAC4hB,GAAkBzL,EAAMnW,EAAE,EAE3B,OADA2T,KAAAA,EAAmB3U,KAAKqO,OAAQ8I,EAAMnW,GAAI6hB,EAAyB,EAI3EC,GAAS9iB,KAAKqO,OAAQrO,KAAKqO,OAAO1B,KAAM3M,KAAKqO,OAAO+B,aAAa,IAGzEohD,EAAYtxD,UAAU6lC,cAAgB,WAClC,GAAI/lC,KAAKqO,OAAO+B,eAAoD,EAAnCpQ,KAAKqO,OAAO+B,cAAczP,OAAY,CACnEX,KAAKqO,OAAO8D,SAAWnS,KAAK0T,QAAQolD,qBAEpC,IADA,IAAI3hD,EAAQnX,KAAKqO,OAAO8D,SACfnR,EAAI,EAAGA,EAAImW,EAAMxW,OAAQK,CAAC,GAC/B,GAAI,CAACyhB,EAActL,EAAMnW,EAAE,EAEvB,OADA2T,KAAAA,EAAmB3U,KAAKqO,OAAQ8I,EAAMnW,GAAI0hB,CAAqB,EAIvE/F,EAAa3c,KAAKqO,OAAQ,QAAQ,IAG1CmjD,EAAYtxD,UAAU8lC,cAAgB,WACO,IAArChmC,KAAKqO,OAAO+B,cAAczP,SAC1BX,KAAKw+B,mBACLhc,GAASxiB,KAAKqO,MAAM,IAG5BmjD,EAAYtxD,UAAUs+B,iBAAmB,WACrC,IAAIn8B,EAAOrC,KAAK06D,kBAAkB,GAClCt4C,GAAmBpiB,KAAKqO,OAAQhM,CAAI,GAExCmvD,EAAYtxD,UAAU+7D,gBAAkB,SAAUX,EAAWG,EAAUD,EAAUE,EAAettC,GACvFpuB,KAAKqO,OAAO0zB,oBAII,CAAC,IAAd05B,GAAiC,SAAbrtC,EAAEjf,QAAkC,WAAbif,EAAEjf,OAG3B,CAAC,IAAdssD,GAAmBD,IAAaC,IACrB,SAAbrtC,EAAEjf,QAAkC,WAAbif,EAAEjf,SAAwBnP,KAAKo8D,WAAWV,EAAeF,CAAQ,EAI3Fx7D,KAAKq8D,kBAAkBZ,EAAUC,EAAeJ,EAAWltC,CAAC,EAH5DpuB,KAAKs8D,qBAAqBb,EAAUD,EAAUE,EAAettC,CAAC,EAJ9DpuB,KAAKk8D,iBAAiBZ,EAAWltC,EAAGqtC,CAAQ,EAJhDz7D,KAAKm8D,aAAab,EAAWltC,EAAGqtC,CAAQ,GAehDjK,EAAYtxD,UAAUi8D,aAAe,SAAU/rD,EAAege,EAAG4qC,GACzD,CAACvsD,oBAAMzM,KAAK8kC,gBAAgB,GAAK9kC,KAAKqO,OAAO0zB,oBAC5B,aAAb3T,EAAEjf,OACFnP,KAAK0T,QAAQ6lD,UAAUv5D,KAAKm7D,sBAAwB,CAAC,EAGrDn7D,KAAK0T,QAAQ6lD,UAAUv5D,KAAKm7D,sBAAwB,CAAC,EAGnD1uD,oBAAMusD,CAAQ,GAAkB,CAAC,IAAdA,EASpBvsD,oBAAM2D,EAAc,EAAE,GACvBpQ,KAAK0T,QAAQ6lD,UAAU,CAAC,EATX,aAAbnrC,EAAEjf,QAAsC,aAAbif,EAAEjf,QAAsC,cAAbif,EAAEjf,QAAuC,WAAbif,EAAEjf,OACpFnP,KAAK0T,QAAQ6lD,UAAUP,GAAaA,IAAa5oD,EAAczP,OAAS,EAAK,EAAI,EAAE,EAGnFX,KAAK0T,QAAQ6lD,UAAUP,GAA0B,IAAbA,EAAkB,EAAI,EAAE,GASxExH,EAAYtxD,UAAU87D,eAAiB,SAAUN,EAAeF,EAAUC,EAAUrtC,GAChF,IAaQ6Y,EAbHjnC,KAAKo8D,WAAWV,EAAeF,CAAQ,GAAkB,CAAC,IAAdC,GAAiC,eAAbrtC,EAAEjf,QAAwC,YAAbif,EAAEjf,OAQ1F1C,oBAAMzM,KAAK8kC,gBAAgB,GAAK02B,IAAaC,EAIjC,CAAC,IAAdA,GAAgC,cAAbrtC,EAAEjf,QAA0BnP,KAAKqO,OAAO0zB,qBAC5DkF,EAAQw0B,EACZC,EAAc7vC,MACd7rB,KAAK0T,QAAQy+B,WAAWupB,CAAa,EACrC17D,KAAKukC,SAAS0C,CAAK,GAED,eAAb7Y,EAAEjf,QACPnP,KAAK0T,QAAQ6lD,UAAUkC,CAAQ,GAV/BC,EAAcpuD,KAAKtN,KAAKm7D,qBAAqB,EAC7Cn7D,KAAK0T,QAAQy+B,WAAWupB,CAAa,GATjCF,EAAWC,EACXz7D,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkBmC,EAAUC,CAAQ,EAGjEz7D,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkBoC,EAAUD,CAAQ,GAiB7EhK,EAAYtxD,UAAUg8D,iBAAmB,SAAU/kD,EAAOiX,EAAG4qC,GACzD,IAGIvyB,EAFCh6B,oBAAMzM,KAAK8kC,gBAAgB,EAKtBr4B,oBAAMusD,CAAQ,GAAkB,CAAC,IAAdA,EAKpBvsD,oBAAM0K,EAAM,EAAE,IACfsvB,EAAW,GALfA,EAAyB,aAAbrY,EAAEjf,QAAsC,WAAbif,EAAEjf,OACrC6pD,GAAaA,EAAW7hD,EAAMxW,OAAU,EAAI,GAAKq4D,GAAaA,EAAW,EAAK,EAAI,IANlFuD,EAAYv8D,KAAKm7D,sBACrB10B,EAAyB,aAAbrY,EAAEjf,QAAsC,WAAbif,EAAEjf,OACrCotD,GAAcA,EAAYplD,EAAMxW,OAAS,EAAK,EAAI,GAAK47D,GAAcA,EAAY,EAAK,EAAI,IAWlGv8D,KAAKukC,SAASkC,CAAQ,GAE1B+qB,EAAYtxD,UAAU67D,aAAe,SAAU5kD,EAAOqlD,EAAYhB,EAAUptC,GACtC,YAA9BpuB,KAAK0T,QAAQ+oD,cAA4D,iBAA9Bz8D,KAAK0T,QAAQ+oD,aACvC,WAAbruC,EAAEjf,QAAoC,UAAbif,EAAEjf,QACvB1C,oBAAMzM,KAAKokC,UAAU,GAAKpkC,KAAKu6D,iBAAmBiC,IAClDx8D,KAAKu6D,eAAiBiC,GAET,aAAbpuC,EAAEjf,OACFnP,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkBr5D,KAAKu6D,eAAgBpjD,EAAMxW,OAAS,CAAC,EAGpFX,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkB,EAAGr5D,KAAKu6D,cAAc,EAEzEv6D,KAAKokC,WAAao4B,GAGD,UAAbpuC,EAAEjf,OACFnP,KAAK0T,QACDy+B,WAAWnyC,KAAK08D,WAAWjwD,oBAAM+vD,CAAU,EAAI,EAAIA,EAAY/vD,oBAAM+uD,CAAQ,EAAIrkD,EAAMxW,OAAS,EAAI66D,EAAUptC,CAAC,CAAC,EAGhH3hB,oBAAM+vD,CAAU,EAChBx8D,KAAK0T,QAAQ6lD,UAAU,CAAC,EAGxBv5D,KAAK0T,QAAQy+B,WAAWnyC,KAAK08D,WAAWjwD,oBAAM+uD,CAAQ,EAAI,EAAIA,EAAUgB,EAAYpuC,CAAC,CAAC,EAMlGpuB,KAAK0T,QAAQ0lD,gBAAgBG,UAAyB,cAAbnrC,EAAEjf,QAAuC,WAAbif,EAAEjf,OAAuB,EAAIgI,EAAMxW,OAAS,IAGzH6wD,EAAYtxD,UAAUw8D,WAAa,SAAU73B,EAAOoC,EAAO7Y,GACvD,IAAIuuC,EAAU38D,KAAK0T,QAAQgjD,wBAC3B,GAAiB,UAAbtoC,EAAEjf,OACF,IAAK,IAAInO,EAAI6jC,EAAQ,EAAG7jC,GAAKimC,EAAOjmC,CAAC,GACjC27D,EAAQrvD,KAAKtM,CAAC,OAIlB,IAASA,EAAIimC,EAAQ,EAAGpC,GAAS7jC,EAAGA,CAAC,GACjC27D,EAAQrvD,KAAKtM,CAAC,EAGtB,OAAO27D,GAEXnL,EAAYtxD,UAAUo8D,qBAAuB,SAAUb,EAAUmB,EAAQC,EAAezuC,GAChF6Y,GAAgC,cAAb7Y,EAAEjf,QAAuC,WAAbif,EAAEjf,OAAuB,EAAI,CAAC,EAC7E01B,EAAQp4B,oBAAMzM,KAAKokC,UAAU,EAAIq3B,EAAWoB,EAAc,GAC1Dh4B,IAAUoC,EACVjnC,KAAK0T,QAAQ6lD,UAAU10B,CAAK,EAGxBA,EAAQoC,EACS,cAAb7Y,EAAEjf,QAAuC,WAAbif,EAAEjf,OAC9BnP,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkBx0B,EAAOoC,CAAK,EAG3DjnC,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkBpyB,EAAOpC,CAAK,EAG7C,cAAbzW,EAAEjf,QAAuC,WAAbif,EAAEjf,OACnCnP,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkBpyB,EAAOpC,CAAK,EAG3D7kC,KAAK0T,QAAQ0lD,gBAAgBC,kBAAkBx0B,EAAOoC,CAAK,EAGnEjnC,KAAKokC,WAAapkC,KAAK0T,QAAQwkD,kBAEnC1G,EAAYtxD,UAAUqkC,SAAW,SAAUnzB,GACvC,IAAIyzB,EAAQ7kC,KAAK8kC,iBACbg4B,EAAc98D,KAAK0T,QAAQ8mD,cAAcppD,CAAI,EAC7CyzB,IACAA,EAAMlI,gBAAgB,UAAU,EAChC8H,cAAY,CAACI,GAAQ,CAACqB,GAAW62B,GAAY,GAE5CtwD,oBAAMqwD,CAAW,IAClB98D,KAAK0T,QAAQxG,QAAQ2qB,aAAa,WAAY,IAAI,EAClDilC,EAAYjlC,aAAa,WAAY,GAAG,EACxCilC,EAAY7sC,QACZwT,WAAS,CAACq5B,GAAc,CAAC52B,GAAW62B,GAAY,IAGxDvL,EAAYtxD,UAAU47D,eAAiB,SAAU1tC,GAC7C,IAEI4uC,EAFAC,EAAYnvD,SAAO,SAAU9N,KAAKkN,OAAO,EAC7ClN,KAAK0T,QAAQxG,QAAQ2qB,aAAa,WAAY,IAAI,EAE9C,CAACprB,oBAAM2hB,EAAE9tB,MAAM,GAAK8tB,EAAE9tB,OAAO2N,UAAUC,SAAS,iBAAiB,GACjElO,KAAKukC,SAAS,CAAC,EACfy4B,EAAY5uC,EAAE9tB,OAAO0rB,oBAEfvf,oBAAMzM,KAAK0T,QAAQxG,QAAQsL,cAAc,UAAU,CAAC,GAAiE,OAA3DxY,KAAK0T,QAAQxG,QAAQsL,cAAc,UAAU,EAAE0kD,QAK/GF,EAAYlvD,SAAO,oBAAqB9N,KAAKkN,OAAO,GAJpD8vD,EAAYh9D,KAAK0T,QAAQxG,QAAQsL,cAAc,UAAU,EAAEwT,mBAC3DhsB,KAAKukC,SAAS,CAAC,GAKd93B,oBAAMuwD,CAAS,IAChBA,EAAUnlC,aAAa,WAAY,GAAG,EACtCmlC,EAAU/sC,QACVwT,WAAS,CAACu5B,GAAY,CAAC92B,GAAW62B,GAAY,EAC9CE,EAAUplC,aAAa,WAAY,GAAG,EACX,IAAvBolC,EAAUzT,UAAyC,IAAvBwT,EAAUxT,UACtC/kB,cAAY,CAACw4B,GAAY,CAAC/2B,GAAW62B,GAAY,IAI7DvL,EAAYtxD,UAAU4kC,eAAiB,WACnC,OAAOh3B,SAAO,IAAMivD,GAAa/8D,KAAKkN,OAAO,GAEjDskD,EAAYtxD,UAAUk8D,WAAa,SAAUS,EAAerB,GAExD,IADA,IAAI2B,EAAQ,CAAA,EACHn8D,EAAI,EAAGA,GAAK67D,EAAcl8D,OAAS,EAAGK,CAAC,GAC5C,GAAI67D,EAAc77D,KAAOw6D,EAAU,CAC/B2B,EAAQ,CAAA,EACR,MAGR,OAAOA,GAEX3L,EAAYtxD,UAAUm8D,kBAAoB,SAAUZ,EAAUoB,EAAevB,EAAWltC,GACnE,CAAC,IAAdqtC,EACAz7D,KAAK0T,QAAQ6lD,UAAU,CAAC,EAGpB9sD,oBAAMzM,KAAKokC,UAAU,GAAKhW,EAAEiR,UAC5Br/B,KAAKokC,WAAapkC,KAAK0T,QAAQwkD,iBAC/Bl4D,KAAK0T,QAAQy+B,WAAW,CAACspB,EAAwB,cAAbrtC,EAAEjf,QAAuC,WAAbif,EAAEjf,OACzDssD,GAAaA,IAAaH,EAAU36D,OAAS,EAAK,EAAI,GAAO86D,GAA0B,IAAbA,EAAkB,EAAI,GAAI,GAG5F,cAAbrtC,EAAEjf,QAAuC,YAAbif,EAAEjf,QACb,cAAbif,EAAEjf,QAAkE,CAAC,IAAzC0tD,EAAcxnD,QAAQomD,EAAW,CAAC,EAC1DA,IAAaH,EAAU36D,OAAS,GAChCk8D,EAAcvvD,KAAKmuD,EAAW,CAAC,EAGjB,YAAbrtC,EAAEjf,QAAgE,CAAC,IAAzC0tD,EAAcxnD,QAAQomD,EAAW,CAAC,EAChD,IAAbA,GACAoB,EAAcvvD,KAAKmuD,EAAW,CAAC,EAInCoB,EAAchxC,MAElB7rB,KAAK0T,QAAQy+B,WAAW0qB,CAAa,GAGpB,WAAbzuC,EAAEjf,OACGnP,KAAKo8D,WAAWS,EAAe78D,KAAKm7D,sBAAwB,CAAC,EAK9Dn7D,KAAKukC,SAASvkC,KAAKm7D,sBAAwB,CAAC,GAJ5C0B,EAAcvvD,KAAMtN,KAAKm7D,sBAAwB,GACjDn7D,KAAK0T,QAAQy+B,WAAW0qB,CAAa,GAMnC78D,KAAKo8D,WAAWS,EAAe78D,KAAKm7D,sBAAwB,CAAC,EAKnEn7D,KAAKukC,SAASvkC,KAAKm7D,sBAAwB,CAAC,GAJ5C0B,EAAcvvD,KAAMtN,KAAKm7D,sBAAwB,GACjDn7D,KAAK0T,QAAQy+B,WAAW0qB,CAAa,IASzDrL,EAAYtxD,UAAUogC,aAAe,SAAUlS,GAC3C,GAAyB,YAArBpuB,KAAKqO,OAAO0F,KAIhB,OADa1H,WAAS,SAAU+hB,CAAC,GAE7B,IAAK,cACDpuB,KAAK8nC,YAAYz7B,WAAS,MAAO+hB,CAAC,CAAC,EACnC,MACJ,IAAK,gBACDpuB,KAAK+nC,cAAc17B,WAAS,MAAO+hB,CAAC,CAAC,EACrC,MACJ,IAAK,WACDpuB,KAAKgoC,SAAS37B,WAAS,KAAM+hB,CAAC,CAAC,EAC/B,MACJ,IAAK,eACDpuB,KAAKu4D,YAAc,CAAA,EACnB,MACJ,IAAK,aACDv4D,KAAKu4D,YAAc,CAAA,EACnBv4D,KAAKioC,WAAW57B,WAAS,KAAM+hB,CAAC,EAAG/hB,WAAS,UAAW+hB,CAAC,CAAC,EACzD,MACJ,IAAK,YACDpuB,KAAKu4D,YAAc,CAAA,EACnBv4D,KAAK++B,kBACL,MACJ,IAAK,iBACD/+B,KAAKu4D,YAAc,CAAA,EACnBv4D,KAAKu/B,mBAIjBiyB,EAAYtxD,UAAUk9D,WAAa,SAAU/sD,GACzC,IAAIynD,EAAc93D,KAAK0T,QAAQqkD,wBAC3B94C,EAAU,GACVo+C,EAAY,EAA6D,KAA5Dr9D,KAAKqO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgBjQ,CAAAA,KAAKqO,OAAO6B,YAC3FiB,EAASnR,KAAKqO,OAAOxB,MAAQ,KAAO,OACxC,GAAI7M,KAAKqO,OAAOxB,OAAS,CAACwwD,EACtB,IAAK,IAAIr8D,EAAI,EAAG4Y,EAAMk+C,EAAYn3D,OAAQK,EAAI4Y,EAAK5Y,CAAC,GACQ,CAAC,IAArDqP,EAAMgF,QAAQhJ,WAAS8E,EAAQ2mD,EAAY92D,EAAE,CAAC,GAC9Cie,EAAQ3R,KAAKwqD,EAAY92D,EAAE,OAKnC,IAASA,EAAI,EAAG4Y,EAAMk+C,EAAYn3D,OAAQK,EAAI4Y,EAAK5Y,CAAC,GAAI,CACpD,IAAIs8D,EAASjxD,WAAS,aAAcyrD,EAAY92D,EAAE,EAAIqL,WAAS,OAAQyrD,EAAY92D,EAAE,EACvD,CAAC,IAA3BqP,EAAMgF,QAAQioD,CAAM,GACpBr+C,EAAQ3R,KAAKwqD,EAAY92D,EAAE,EAIvC,OAAOie,GAEXuyC,EAAYtxD,UAAU4nC,YAAc,SAAUz6B,GAE1C,GADArN,KAAKqO,OAAOmB,aAAe,cACvB/C,oBAAMY,CAAG,EACTrN,KAAK+lC,oBADT,CAIA,IAAI9mB,EAAUjf,KAAKo9D,WAAW/vD,CAAG,EACjC,GAAuB,IAAnB4R,EAAQte,OAAZ,CAKA,IAFA,IAAI0B,EAAO,GACP2gB,EAAS,GACJhiB,EAAI,EAAGA,EAAIie,EAAQte,OAAQK,CAAC,GACjCqB,EAAKrB,GAAKie,EAAQje,GAClBgiB,EAAOhiB,GAAKme,GAAYnf,KAAKqO,OAAQhM,EAAKrB,EAAE,EAEhD+hB,GAAc/iB,KAAKqO,OAAQhM,EAAM2gB,CAAM,KAE3CwuC,EAAYtxD,UAAU6nC,cAAgB,SAAU16B,GAC5C,GAAIZ,oBAAMY,CAAG,EACTrN,KAAK2iB,iBADT,CAIA,IAAI46C,EAAWv9D,KAAKo9D,WAAW/vD,CAAG,EAClC,GAAwB,IAApBkwD,EAAS58D,OAAb,CAKA,IAFA,IAAI0B,EAAO,GACP2gB,EAAS,GACJhiB,EAAI,EAAGA,EAAIu8D,EAAS58D,OAAQK,CAAC,GAClCqB,EAAKrB,GAAKu8D,EAASv8D,GACnBgiB,EAAOhiB,GAAKme,GAAYnf,KAAKqO,OAAQhM,EAAKrB,EAAE,EAEhDkiB,GAAgBljB,KAAKqO,OAAQhM,EAAM2gB,CAAM,KAE7CwuC,EAAYtxD,UAAU8nC,SAAW,SAAU17B,GACnCG,oBAAMH,CAAE,GAIS,GADjB2S,EAAUjf,KAAKo9D,WAAW,CAAC9wD,EAAG,GACtB3L,QACRX,KAAK+4D,YAAY95C,EAAQ,EAAE,GAGnCuyC,EAAYtxD,UAAU+nC,WAAa,SAAU37B,EAAI2K,GAC7CjX,KAAKqO,OAAOmB,aAAe,cACvB/C,oBAAMH,CAAE,EACRtM,KAAKgmC,gBAIY,GADjB/mB,EAAUjf,KAAKo9D,WAAW,CAAC9wD,EAAG,GACtB3L,SACRyhB,GAAmBpiB,KAAKqO,OAAQ4Q,EAAQ,EAAE,EACrCxS,oBAAMwK,CAAI,EASXuL,GAASxiB,KAAKqO,MAAM,EARhBoU,EAAcziB,KAAKqO,OAAO8D,SAAS,EAAE,EACrC8S,GAAOjlB,KAAKqO,OAAQrO,KAAKqO,OAAO1B,KAAMsK,CAAI,EAG1CtC,EAAmB3U,KAAKqO,OAAQrO,KAAKqO,OAAO8D,SAAS,GAAIuQ,CAAqB,QAv5D9F8uC,GA+5DOA,EAx5DP,SAASA,EAAYnjD,GACjBrO,KAAKo0B,aAAe,CAAA,EACpBp0B,KAAKu4D,YAAc,CAAA,EACnBv4D,KAAKm6B,iBAAmB,CAAA,EACxBn6B,KAAK21D,gBAAkB,CAAA,EACvB31D,KAAKygB,QAAU,KACfzgB,KAAKokC,WAAa,KAClBpkC,KAAKu6D,eAAiB,KACtBv6D,KAAKm3D,kBAAoB,CAAA,EACzBn3D,KAAKo3D,oBAAsB,GAC3Bp3D,KAAKie,MAAQ,EACbje,KAAK66B,WAAa,CAAA,EAClB76B,KAAK63D,SAAW,CAAA,EAChB73D,KAAKw0D,YAAc,CAAA,EACnBx0D,KAAKk6D,cAAgB,CAAA,EACrBl6D,KAAKslB,eAAiB,CAAA,EACtBtlB,KAAKq6B,gBAAkB,CAAA,EACvB+3B,OAAKvL,OAAO2W,SAAQ9tB,cAAa+tB,OAAMC,eAAa,EACpD19D,KAAKqO,OAASA,EACdrO,KAAKkN,QAAUY,SAAO,IAAM9N,KAAKqO,OAAOnB,QAAQZ,GAAK0mC,GAAahzC,KAAKqO,OAAOnB,OAAO,EACrFlN,KAAKy6B,mBACLz6B,KAAKqiC,WAAa,CACdgI,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,MAAOxqC,KAAKqO,OAAOu1B,MAAQ,QAAU,SACrC6G,MAAOzqC,KAAKqO,OAAOu1B,MAAQ,QAAU,SACrC8G,MAAO1qC,KAAKqO,OAAOu1B,MAAQ,QAAU,SACrC0tB,WAAY,eACZ1mB,SAAU,eACVE,MAAO,SACPH,GAAI,KACJR,MAAO,SACPC,MAAO,QACPS,KAAM,wCblES,oKAiMJ,2IAZI,0fAgBG,uHAxBJ,uCAEC,0HAED,qDAdA,sPApDU,gFAEL,4TAzGF,2BAgBP,sDA6DD,qDA8BO,sBAvGL,wBAIE,oCAyKL,+HAhEO,gCAJD,2LAvGL,gHCbK,iCAwFE,6hBA9DN,uEAwEE,o0BAjHJ,oWA+HQ,mlBCpHrB,SAAsB8yB,EAAWrkC,GAEpC,IAAIskC,EAAkB,QAAQ/nC,KAAK8nC,CAAS,EACxCE,EAAiB,QAAQhoC,KAAKyD,CAAQ,EAE1C,GAAIskC,GAAmB,CAACC,EACpB,OAAO,EAEX,GAAI,CAACD,GAAmBC,EACpB,MAAO,CAAC,EAEZ,IAAIC,EAAiB,GACjBC,EAAgB,GAIpB,KAHCJ,EAAY,IAAIhnD,QAAQ,eAAgB,SAAUqnD,EAAGC,EAAIC,GAAuD,OAAjDJ,EAAexwD,KAAK,CAAC2wD,GAAME,EAAAA,EAAUD,GAAM,GAAG,EAAU,GAAK,GAC5H5kC,EAAW,IAAI3iB,QAAQ,eAAgB,SAAUqnD,EAAGC,EAAIC,GAAsD,OAAhDH,EAAczwD,KAAK,CAAC2wD,GAAME,EAAAA,EAAUD,GAAM,GAAG,EAAU,GAAK,EAEpHJ,EAAen9D,QAAUo9D,EAAcp9D,QAAQ,CAClD,IAAIy9D,EAAgBN,EAAeO,QAC/BC,EAAeP,EAAcM,QACjC,GAAID,GAAiBE,EAAc,CAC3BC,EAAmBH,EAAc,GAAKE,EAAa,IACnDF,EAAc,GAAGI,cAAcF,EAAa,EAAE,EAClD,GAAIC,EACA,OAAOA,GAInB,OAAOT,EAAen9D,OAASo9D,EAAcp9D,MACjD,2DDwDwB,mIA5DJ"}
|
1
|
+
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../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/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.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":["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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 __decorate([\n Property(0)\n ], UploadSettings.prototype, \"chunkSize\", 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 * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete, isFileSystemData } 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 }\n if (!referenceIsFile && comparerIsFile) {\n return -1;\n }\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 if (referencePart && comparerPart) {\n var comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult) {\n return comparisonResult;\n }\n }\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 */\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 var data = getValue(parent.pathId[parseInt(i.toString(), 10)], 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 * Get all child items\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent ID.\n * @returns {Object[]} An array of child items\n * @private\n */\nexport function getAllChildItems(parent, parentId) {\n var children = parent.fileSystemData.filter(function (item) {\n return String(item.parentId) === String(parentId);\n });\n var allChildren = children.slice();\n children.forEach(function (child) {\n var childId = child.id;\n allChildren = allChildren.concat(getAllChildItems(parent, childId));\n });\n return allChildren;\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 (isFileSystemData(parent)) {\n if (value === '') {\n parent.itemData = parent.fileSystemData;\n read(parent, events.layoutChange, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n var currData = getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n var parentId = getValue('id', currData);\n var filteredData = getAllChildItems(parent, parentId);\n var data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n var searchValue = parent.searchSettings.ignoreCase ? value.toLowerCase() : value;\n parent.itemData = data;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchValue, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n return;\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 */\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 */\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 */\nexport function getImageUrl(parent, item) {\n var imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n var eventArgs_1 = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs_1);\n return eventArgs_1.imageUrl;\n }\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\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 */\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 */\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 */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None' && !isNullOrUndefined(parent.sortOrder)) {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\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 */\nexport function getObject(parent, key, value) {\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var result = currFiles.filter(function (data) { return data[key].toString() === value; });\n return result.length > 0 ? result[0] : null;\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 */\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 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 * @param {Internationalization} localeString - The internationalization object for formatting dates.\n * @param {string} dateFormat - The date format string.\n * @returns {void}\n * @private\n */\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 * @param {IFileManager} [parent] - optional parameter representing the parent IFileManager.\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 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 var data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\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 */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var navData = parent.feParent[getValue('_fm_id', parent.itemData[0])];\n var isRoot = isNullOrUndefined(navData) || getValue('_fm_id', navData) === 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, isFileSystemData(parent) ? getValue('id', data) : 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 if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {\n parent.targetPath = getTargetPath(parent, parent.actionRecords[0]);\n }\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 */\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 name_1 = parent.dragData[i] ? parent.dragData[i].name : null;\n var srcData = isFileSystemData(parent) ? name_1 : 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 && !isNullOrUndefined(parent.ajaxSettings.url) ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return '/';\n }\n return fPath.replace(/\\\\/g, '/').replace(/^.*?(?=\\/)/, '') + filePath;\n }\n else {\n return isFileSystemData(parent) ? filePath : 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 parent.trigger('success', { action: operation, result: result });\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}\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 */\nexport function getDuplicateData(parent, name) {\n var data = null;\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} 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, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select('.' + nodeClass, scrollParent);\n if ((clientY >= (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.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.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.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\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 */\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 */\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 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 */\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 */\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 */\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 */\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 */\nexport function hasReadAccess(data) {\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 */\nexport function hasEditAccess(data) {\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 */\nexport function hasContentAccess(data) {\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 */\nexport function hasUploadAccess(data) {\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 */\nexport function hasDownloadAccess(data) {\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 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 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/**\n * Close dialog popup handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function closePopup(parent) {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n}\n/**\n * Get target path from item data.\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} itemData - specifies the item elements.\n * @returns {string} returns the path.\n * @private\n */\nexport function getTargetPath(parent, itemData) {\n if (parent.hasId && !isNOU(getValue('filterId', itemData))) {\n return getValue('filterId', itemData).replace(/\\\\/g, '/').replace(/^[^/]+\\//, '/');\n }\n else {\n return getValue('filterPath', itemData).replace(/\\\\/g, '/');\n }\n}\n/**\n * Access control handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} itemData - specifies the item elements.\n * @param {string} action - specifies the action.\n * @param {boolean} isPathPermision - specifies the path permission.\n * @returns {string} returns the path.\n * @private\n */\nexport function getAccessDetails(parent, itemData, action, isPathPermision) {\n var accessMessage = '';\n for (var i = 0; i < itemData.length; i++) {\n var permission = getValue('permission', itemData[i]);\n if (permission == null) {\n permission = undefined;\n }\n if (isPathPermision) {\n if (permission && (!getValue('read', permission) || !getValue('writeContents', permission))) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', 'writeContents');\n }\n }\n }\n else {\n var copyOrMovePermission = action === 'copy' ? getValue('copy', permission) : getValue('write', permission);\n if (permission && (!getValue('read', permission) || !copyOrMovePermission)) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', action);\n }\n }\n }\n if (accessMessage !== '') {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: '401',\n message: accessMessage,\n fileExists: null\n },\n files: null\n };\n break;\n }\n }\n return accessMessage;\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, getAccessDetails, getTargetPath } from '../common/utility';\nimport { getUid } from '@syncfusion/ej2-grids';\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 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 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 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 var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n var filterData;\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 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, renameItems, actionRecords) {\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 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 var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for getDateFormat in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction getDateFormat(parent) {\n var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n if (!columns) {\n return null;\n }\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}\n/**\n * Checks whether fileSystemData is enabled.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns the boolean value.\n */\nexport function isFileSystemData(parent) {\n var isFileSystemData = parent.fileSystemData.length >= 0 && isNOU(parent.ajaxSettings.url);\n return isFileSystemData;\n}\n/**\n * Function to check whether file already exist or not.\n *\n * @param {Record<string, any>} fileSystemData - specifies the file data.\n * @param {string} name - specifies the name.\n * @returns {boolean} - returns the boolean value.\n * @private\n */\nfunction isFileExists(fileSystemData, name) {\n var isExists = fileSystemData.some(function (item) { return item.name === name; });\n return isExists;\n}\n/**\n * Function to find the index value of a file or folder.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number} id - specifies the id.\n * @returns {number} - returns the index value.\n * @private\n */\nfunction findIndexById(parent, id) {\n var index = parent.fileSystemData.findIndex(function (item) {\n return !isNOU(item) && String(item.id) === String(id);\n });\n return index;\n}\n/**\n * Function to get the entire data of a file or folder using id value.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} id - specifies the id.\n * @returns {Object} - returns the data.\n * @private\n */\nfunction filterById(parent, id) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.id) === String(id); })[0];\n return data;\n}\n/**\n * Function to get the entire data of a file or folder for a parent.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} parentId - specifies the parent id.\n * @returns {Object[]} - returns the data.\n * @private\n */\nfunction filterByParent(parent, parentId) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.parentId) === String(parentId); });\n return data;\n}\n/**\n * Function to create a new copied file or folder.\n *\n * @param {Record<string, any>} data - specifies the file or folder data.\n * @param {Record<string, any>} target - specifies the target data.\n * @param {string} itemName - specifies the item name.\n * @param {boolean} isCopy - specifies the copy operation.\n * @returns {Record<string, Object>} - returns the data.\n * @private\n */\nfunction createNewItem(data, target, itemName, isCopy) {\n var newItem = {};\n //Construct the new folder details.\n for (var key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n var currentDate = new Date();\n var folderPath = String(target.id) !== String(0) && !isNOU(target.parentId) ? target.filterPath + target.name + '\\\\' : '\\\\';\n Object.assign(newItem, {\n dateCreated: currentDate,\n dateModified: currentDate,\n filterPath: folderPath,\n hasChild: isCopy ? data.hasChild : false,\n id: getUid(itemName === null ? data.name : itemName),\n isFile: isCopy ? data.isFile : false,\n name: itemName === null ? data.name : itemName,\n parentId: target.id,\n size: isCopy ? data.size : 0,\n type: isCopy ? data.type : ''\n });\n return newItem;\n}\n/**\n * Function to create an error response.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} message - specifies the error message.\n * @param {string} code - specifies the error code.\n * @param {Object[]} fileName - specifies the file name.\n * @returns {void}\n * @private\n */\nfunction createErrorObject(parent, message, code, fileName) {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: code,\n message: message,\n fileExists: fileName != null ? fileName : null\n },\n files: null\n };\n}\n/**\n * Function to trigger folder creation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerFolderCreation(parent, data, eventArgs) {\n var createEventArgs = {\n folderName: getValue('name', data),\n cancel: false,\n path: getValue('path', data),\n parentFolder: getValue('data', data)\n };\n parent.trigger('beforeFolderCreate', createEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.folderName)) {\n var data_1 = args.parentFolder[0];\n var newObject = createNewItem(data_1, data_1, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n var message = 'A file or folder with the name ' + args.folderName + ' already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger delete operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerDeleteOperation(parent, data, eventArgs) {\n var deleteEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeDelete', deleteEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n args.itemData.forEach(function (itemData) {\n var index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n var subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach(function (subItem) {\n var index = findIndexById(parent, subItem.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n });\n }\n });\n }\n });\n}\n/**\n * Function to trigger rename operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerRenameOperation(parent, data, eventArgs) {\n var renameEventArgs = {\n cancel: false,\n newName: getValue('newName', data),\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeRename', renameEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.newName)) {\n var fileData = filterById(parent, args.itemData[0].id);\n var oldName = fileData.name;\n fileData.name = args.newName;\n updateChildrenFilterPath(parent, fileData.id, oldName, args.newName);\n }\n else {\n var message = 'Cannot rename' + args.itemData[0].name + 'to' + args.newName + ': destination already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to update child item filter path.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent id.\n * @param {string} oldName - specifies the previous name.\n * @param {string} newName - specifies the new name.\n * @returns {void}\n * @private\n */\nfunction updateChildrenFilterPath(parent, parentId, oldName, newName) {\n parent.fileSystemData.forEach(function (item) {\n if (String(item.parentId) === String(parentId)) {\n var oldPath = item.filterPath;\n var newPath = oldPath.replace(oldName + '\\\\', newName + '\\\\');\n item.filterPath = newPath;\n updateChildrenFilterPath(parent, item.id, oldName, newName);\n }\n });\n}\n/**\n * Function to trigger move or copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerMoveOrCopyOperation(parent, data, eventArgs) {\n var moveEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n isCopy: getValue('action', data) === 'copy' ? true : false,\n path: getValue('path', data),\n targetData: getValue('targetData', data),\n targetPath: getValue('targetPath', data)\n };\n parent.trigger('beforeMove', moveEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n var message = 'File Already Exists';\n var action = getValue('action', data);\n var itemPermission = getAccessDetails(parent, args.itemData, action, false);\n var pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n var file_1 = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n var folderSubItems_1 = filterByParent(parent, args.targetData.id);\n var copiedFolders = args.itemData;\n copiedFolders.forEach(function (itemData) {\n if (!isFileExists(folderSubItems_1, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n var names = itemData.name.split('.');\n var name_1 = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name_1);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file_1.push(itemData.name);\n }\n });\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n return;\n }\n var target_1 = args.targetData;\n var getTargetFiles = filterByParent(parent, target_1.id);\n for (var i = 0; i < args.itemData.length; i++) {\n var currItem = args.itemData[i];\n if (!isFileExists(getTargetFiles, currItem.name) || getValue('renameFiles', data).length > 0) {\n if (!target_1.hasChild) {\n target_1.hasChild = !currItem.isFile;\n var targetItem = parent.fileSystemData\n .filter(function (item) { return String(item.id) === String(target_1.id); });\n if (targetItem.length > 0) {\n targetItem[0].hasChild = target_1.hasChild;\n }\n }\n if (!currItem.isFile) {\n //Check whether the source folder include other sub folders or not.\n var subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentId) : [];\n var itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n var fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n var names = currItem.name.split('.');\n currItem.name = currItem.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n fileData.name = currItem.name;\n parent.responseData.error = null;\n parent.existingFileCount++;\n parent.dropData = target_1;\n parent.dropPath = args.path;\n var pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target_1 = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target_1.id;\n fileData.filterPath = target_1.id === 0 ? '\\\\' : target_1.filterPath + target_1.name + '\\\\';\n }\n else {\n file_1.push(currItem.name);\n }\n }\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n }\n }\n });\n}\n/**\n * Function to trigger search operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerSearchOperation(parent, data, eventArgs) {\n var searchEventArgs = {\n searchResults: getValue('data', data),\n cancel: false,\n path: getValue('path', data),\n searchText: getValue('searchString', data),\n caseSensitive: getValue('caseSensitive', data),\n showHiddenItems: getValue('showHiddenItems', data)\n };\n parent.trigger('search', searchEventArgs, function (args) {\n setValue('data', args.searchResults, data);\n if (args.cancel) {\n eventArgs.cancel = true;\n }\n });\n}\n/**\n * Function to trigger client side events.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerClientEvents(parent, data, eventArgs) {\n switch (getValue('action', data)) {\n case 'create': {\n triggerFolderCreation(parent, data, eventArgs);\n break;\n }\n case 'delete': {\n triggerDeleteOperation(parent, data, eventArgs);\n break;\n }\n case 'rename': {\n triggerRenameOperation(parent, data, eventArgs);\n break;\n }\n case 'move':\n case 'copy': {\n triggerMoveOrCopyOperation(parent, data, eventArgs);\n break;\n }\n case 'search': {\n triggerSearchOperation(parent, data, eventArgs);\n break;\n }\n }\n}\n/**\n * Creates an AJAX request for the file manager.\n *\n * @param {IFileManager} parent - The parent file manager instance.\n * @param {Object} data - The data object for the AJAX request.\n * @param {Function} fn - The callback function to be executed after the AJAX request.\n * @param {string} [event] - The event type for the AJAX request.\n * @param {string} [operation] - The operation type for the AJAX request.\n * @param {string} [targetPath] - The target path for the AJAX request.\n * @returns {void}\n * @private\n */\nfunction createAjax(parent, data, fn, event, operation, targetPath) {\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 triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n var filePath = event === 'node-expand' || event === 'finalize-end' || event === 'rename-end-parent'\n ? getValue('path', data) : parent.path;\n var pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n var idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0 && isNOU(parent.renamedItem))\n ? getValue('data', data)[0].id : pathArray[pathArray.length - 1];\n var action = getValue('action', data);\n var isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n var rootId = parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })\n .length > 0\n ? parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })[0].id\n : 0;\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n var message = 'Cannot load empty data within the File Manager.';\n createErrorObject(parent, message, '400', null);\n }\n }\n else if (isFileOperation && parent.responseData.error === null) {\n var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n if (action === 'copy') {\n itemData = parent.pasteNodes.map(function (item) { return filterById(parent, item); });\n }\n else {\n itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });\n }\n }\n parent.responseData = {\n cwd: null,\n details: null,\n error: null,\n files: itemData\n };\n }\n else if (getValue('action', data) === 'details') {\n var itemData = getValue('data', data);\n var details = itemData[0];\n var isMultipleFiles = itemData.length > 1;\n var itemNames = itemData.map(function (item) { return item.name; });\n var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);\n var path = (parent.pathNames.includes(details.name) || isMultipleFiles ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: path,\n multipleFiles: isMultipleFiles,\n name: itemNames.join(', '),\n size: totalSize\n }, isMultipleFiles ? {} : {\n created: details.dateCreated,\n isFile: details.isFile,\n modified: details.dateModified,\n permission: details.permission\n });\n }\n performReadOperation(parent, parent.responseData, fn, data, event, operation, targetPath, beforeSendArgs);\n return;\n }\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 performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\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 to get file size.\n *\n * @param {number} size - specifies the size.\n * @returns {string} - returns the size.\n * @private\n */\nfunction getSize(size) {\n var hz;\n if (size < 1024) {\n hz = size + ' B';\n }\n else if (size < 1024 * 1024) {\n hz = (size / 1024).toFixed(2) + ' KB';\n }\n else if (size < 1024 * 1024 * 1024) {\n hz = (size / 1024 / 1024).toFixed(2) + ' MB';\n }\n else {\n hz = (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n }\n return hz;\n}\n/**\n * Function to perform read operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {Function} fn - specifies the function.\n * @param {Object} data - specifies the data.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs) {\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 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 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 }\n if (location_1.indexOf('\\\\') === -1) {\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/**\n * Function to copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} target - specifies the target.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction copyFolderItems(parent, data, target, itemName) {\n var newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n var copiedItems = filterByParent(parent, data.id);\n for (var i = 0; i < copiedItems.length; i++) {\n copyFolderItems(parent, copiedItems[i], newObject, null);\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(parent, 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 try {\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 (!isNOU(result.error) && 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 }\n catch (error) {\n handleCatchError(parent, error, '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 try {\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 catch (error) {\n handleCatchError(parent, error, 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 try {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\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 catch (error) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'create');\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 * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result) {\n try {\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 var renameEventArgs = {\n newName: parent.renamedItem.name,\n itemData: [parent.renamedItem],\n path: parent.path\n };\n parent.trigger('rename', renameEventArgs);\n if (parent.activeModule === 'navigationpane') {\n var pathObject = getPathObject(parent);\n var pathLevel = parent.pathId[parent.pathId.length - 1].split('_').length - 2;\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n var renamePath = getTargetPath(parent, parent.renamedItem);\n read(parent, events.renameEndParent, renamePath);\n if (!isNOU(pathObject) && parent.pathNames.length > 1 && pathLevel <= parent.pathNames.length - 1) {\n parent.pathNames[pathLevel] = parent.renameText;\n if (!parent.hasId) {\n parent.setProperties({ path: \"/\" + parent.pathNames.slice(1).join('/') + \"/\" }, true);\n }\n }\n parent.itemData = parent.navigationpaneModule.previousSelected.length > 0\n ? parent.navigationpaneModule.treeObj.getTreeData(parent.navigationpaneModule.previousSelected[0]) : parent.itemData;\n read(parent, events.pathChanged, parent.path);\n parent.itemData[0] = parent.renamedItem;\n parent.renamedItem = null;\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 catch (error) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'rename');\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 try {\n var moveorcopyEventArgs = {\n itemData: result.files,\n isCopy: operation === 'copy' ? true : false,\n path: path,\n targetData: parent.itemData[0],\n targetPath: parent.path\n };\n parent.trigger('move', moveorcopyEventArgs);\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 catch (error) {\n handleCatchError(parent, error, 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 try {\n var deleteEventArgs = {\n itemData: result.files,\n path: path\n };\n parent.trigger('delete', deleteEventArgs);\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 catch (error) {\n handleCatchError(parent, error, '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 try {\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 catch (error) {\n handleCatchError(parent, error, '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(parent, event, path, searchString, showHiddenItems, caseSensitive) {\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 try {\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 catch (error) {\n handleCatchError(parent, error, '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 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 try {\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 catch (error) {\n handleCatchError(parent, error, 'download');\n }\n }\n }\n });\n}\n/**\n * Function for on catch handler in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {any} error - specifies the catch error.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction handleCatchError(parent, error, action) {\n var errorResult = {\n files: null,\n error: {\n message: error.message,\n fileExists: null\n }\n };\n onFailure(parent, errorResult, action);\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, getTargetPath } 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 * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details) {\n var options = getOptions(parent, text, e, details);\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 * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\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 var index;\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 () {\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 () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index = val.name.indexOf('.') + 1;\n return (index === 0 && (!val.isFile)) ? 'Folder' : ((index !== 0) ? val.name.substr(index).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] === undefined) {\n strArr = details.name.split(',').map(function (val) {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).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 () {\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/**\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 = '';\n if (parent.activeModule === 'navigationpane') {\n newPath = getTargetPath(parent, parent.itemData[0]);\n }\n else {\n newPath = parent.path;\n }\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","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 this.parent.virtualizationModule.setUIVirtualization();\n }\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.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) {\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 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 this.parent.dragData.push(this.getItemObject(activeEle[parseInt(i.toString(), 10)]));\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 var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\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.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 if (txt.indexOf(type) !== -1) {\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\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 LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\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 && this.parent.activeModule === 'largeiconsview') {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\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 };\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 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 ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\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 '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 case 'showItemCheckBoxes':\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 var _this = this;\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n if (_this.parent.isDevice) {\n _this.tapCount = eve.tapCount;\n _this.tapEvent = eve;\n setTimeout(function () {\n if (_this.tapCount > 0) {\n _this.doTapAction(_this.tapEvent);\n }\n _this.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n _this.dblClickHandler(eve);\n }\n else {\n _this.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n _this.multiSelect = _this.parent.allowMultiSelection ? true : false;\n if (_this.parent.allowMultiSelection) {\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n _this.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 ctrlKey = this.parent.isMac ? e.metaKey : e.ctrlKey;\n var isMacRightClick = this.parent.isMac && e.ctrlKey && e.shiftKey;\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 || isMacRightClick) && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.addActive(item);\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (e.ctrlKey && e.shiftKey && !isMacRightClick) {\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 && !ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey && !isMacRightClick) {\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 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 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 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 case 'back':\n this.parent.traverseBackward();\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 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 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 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 };\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 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 = { action: action, fileDetails: data.length > 1\n ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null\n : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\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\n ? data\n : 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 LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n LargeIconsView.prototype.addSelection = function (data) {\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 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 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 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 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 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 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 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 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 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 (args) {\n var eventArgs = {\n cancel: false,\n element: args.element,\n event: args.event,\n isFocused: args.isFocused,\n fileDetails: [this.menuItemData],\n items: args.items,\n parentItem: args.parentItem,\n menuType: this.menuType\n };\n this.parent.trigger('menuClose', eventArgs, function (menuCloseArgs) {\n if (menuCloseArgs.cancel) {\n args.cancel = menuCloseArgs.cancel;\n return;\n }\n });\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.setProperties({ 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 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 }\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 }\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 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 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 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 if (!isNOU(uid)) {\n this.navUid = uid;\n }\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 else {\n var itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (var i = 0; i < this.disabledItems.length; i++) {\n var item = this.disabledItems[i];\n if (itemsToRemove.indexOf(item) !== -1) {\n this.disabledItems.splice(i, 1);\n i--;\n }\n }\n }\n /* istanbul ignore next */\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.navUid + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (!isNOU(selectedTreeNode) &&\n 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 else {\n var indexToRemove = this.disabledItems.indexOf('Open');\n if (indexToRemove !== -1) {\n this.disabledItems.splice(indexToRemove, 1);\n }\n }\n if (this.parent.selectedItems.length === 0) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\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 ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\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 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 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 === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n _this.parent.folderPath = _this.parent.path;\n }\n else {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\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 case 'name':\n case 'size':\n case 'date':\n case 'ascending':\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 case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\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 */\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, detach, selectAll, setStyleAttribute } 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, closePopup } 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 _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.existingFileCount = 0;\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 _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\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 _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 _this.dragSelectedItems = [];\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 if (this.fileView === 'Details') {\n this.largeiconsviewModule.element.classList.add(CLS.DISPLAY_NONE);\n }\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 chunkSize: this.uploadSettings.chunkSize,\n retryCount: 0\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n chunkUploading: this.onChunkUploading.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.onChunkUploading = 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 }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\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 if (this.uploadSettings.chunkSize === 0) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\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 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 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 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 FileManager.prototype.onChunkUploadComplete = function (files) {\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n var uploadFile = !isNullOrUndefined(files) ? getValue('file', files).name : '';\n if (uploadFile === this.retryArgs[i].file.name) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\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 FileManager.prototype.onUploadFailure = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\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.wireSelectOnDragEvent = function (isBind) {\n if (isNOU(this.view)) {\n return;\n }\n if (isBind) {\n this.viewElem = this.view === 'LargeIcons' ? this.largeiconsviewModule.element : this.element.querySelector('.e-gridcontent');\n }\n if (!this.viewElem) {\n return;\n }\n if (isBind) {\n if (this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n };\n FileManager.prototype.wireEvents = function () {\n if (this.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\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 this.wireSelectOnDragEvent(false);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.onDragStart = function (event) {\n if (this.viewElem) {\n if (this.allowDragAndDrop) {\n var targetElement = closest(event.target, this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-fe-text');\n if (targetElement) {\n return;\n }\n }\n event.preventDefault();\n this.dragX = event.pageX;\n this.dragY = event.pageY;\n if (!this.dragSelectElement) {\n this.dragSelectElement = createElement('div', {\n id: this.element.id + '_drag',\n className: 'e-filemanager e-drag-select',\n styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'\n });\n document.body.append(this.dragSelectElement);\n }\n EventHandler.add(document, 'mouseup', this.onDragStop, this);\n EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);\n EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);\n }\n };\n FileManager.prototype.onDrag = function (event) {\n event.stopPropagation();\n if (this.dragSelectElement) {\n var diffX = event.pageX - this.dragX;\n var diffY = event.pageY - this.dragY;\n setStyleAttribute(this.dragSelectElement, {\n 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',\n 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'\n });\n this.selectItems();\n }\n else {\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n };\n FileManager.prototype.onDragStop = function () {\n if (this.viewElem) {\n EventHandler.remove(document, 'mouseup', this.onDragStop);\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n if (this.dragSelectElement) {\n EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);\n if (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0) {\n this.setProperties({ selectedItems: this.dragSelectedItems });\n }\n this.dragSelectedItems = [];\n detach(this.dragSelectElement);\n this.dragSelectElement = null;\n }\n };\n FileManager.prototype.selectItems = function () {\n this.dragSelectedItems = [];\n var dragRect = this.dragSelectElement.getBoundingClientRect();\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n for (var _i = 0, allItems_1 = allItems; _i < allItems_1.length; _i++) {\n var item = allItems_1[_i];\n var itemRect = item.getBoundingClientRect();\n if (!(dragRect.right < itemRect.left || dragRect.left > itemRect.right\n || dragRect.bottom < itemRect.top || dragRect.top > itemRect.bottom)\n && (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0)) {\n if (this.viewElem.classList.contains('e-large-icons')) {\n item.classList.add('e-active');\n this.dragSelectedItems.push(item.getAttribute('title'));\n }\n else {\n addClass(selectAll('.e-rowcell', item), ['e-active']);\n this.dragSelectedItems.push(item.querySelector('.e-drag-text').textContent);\n }\n item.querySelector('.e-frame').classList.add('e-check');\n }\n }\n };\n FileManager.prototype.onLayoutChange = function () {\n if (this.enableRangeSelection) {\n this.unWireEvents();\n this.wireEvents();\n }\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 FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var height;\n var requiresRefresh = false;\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 'showItemCheckBoxes':\n this.showItemCheckBoxes = newProp.showItemCheckBoxes;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableVirtualization':\n this.enableVirtualization = newProp.enableVirtualization;\n requiresRefresh = true;\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 'enableRangeSelection':\n this.wireSelectOnDragEvent(false);\n if (newProp.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n requiresRefresh = true;\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n requiresRefresh = true;\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 if (this.view === 'Details') {\n var columns = this.detailsViewSettings.columns;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.sortBy; }) !== -1;\n if (!isValidSortField) {\n return;\n }\n refresh(this);\n this.notify(events.sortByChange, {});\n this.notify(events.sortColumn, {});\n }\n else {\n refresh(this);\n this.notify(events.sortByChange, {});\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 case 'fileSystemData':\n this.fileSystemData = newProp.fileSystemData;\n requiresRefresh = true;\n break;\n }\n }\n if (requiresRefresh) {\n this.refresh();\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 this.viewElem = null;\n this.dragSelectElement = null;\n this.dragSelectedItems = 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 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 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 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 * Specifies the method that must be invoked to traverse the path backwards in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.traverseBackward = function () {\n if (this.pathNames.length > 1 && this.breadcrumbbarModule.searchObj.element.value === '' && !this.isFiltered) {\n this.pathId.pop();\n this.pathNames.pop();\n var newPath = this.pathNames.slice(1).join('/');\n newPath = newPath === '' ? '/' : '/' + newPath + '/';\n this.setProperties({ path: newPath }, true);\n read(this, events.pathChanged, this.path);\n var treeNodeId = this.pathId[this.pathId.length - 1];\n this.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\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 var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the method which must be invoked to programmatically close the dialog popup in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.closeDialog = function () {\n closePopup(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([])\n ], FileManager.prototype, \"fileSystemData\", 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 Property(false)\n ], FileManager.prototype, \"enableRangeSelection\", 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, \"beforeFolderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"folderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDelete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"delete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeRename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"rename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeMove\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"move\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"search\", 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, \"menuClose\", 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","/* 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 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 = Object.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 * @returns {void}\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 * @returns {void}\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 *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} 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 =\n Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) /\n (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount *\n (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 || itemCount === 0) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n *\n * @param {boolean} destroy - Set `true` to unwire the scroll event.\n * @returns {void}\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 * @returns {void}\n * @private\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 ?\n 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 *\n * @param {number} startingHeight The starting height from which to calculate the scroll position.\n * @returns {number} The current scroll position.\n * @private\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 *\n * @param {number} listDiff The number of rows to update.\n * @param {boolean} isScrollingDown If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\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 *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\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 * @returns {void}\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, isFileSystemData } 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 // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = [];\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 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 var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\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 && isNOU(this.dragObj)) {\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 this.dragObj = null;\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 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 NavigationPane.prototype.addChild = function (files, target, prevent) {\n var directories = getDirectories(files);\n var targetDirectory = this.getTreeData(target);\n if (directories.length > 0 && targetDirectory.length > 0 &&\n (directories[0].filterPath == null ||\n isNOU(targetDirectory[0])\n && targetDirectory[0].filterPath == null\n || directories[0].filterPath !==\n targetDirectory[0].filterPath)) {\n var length_1 = 0;\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length_1.toString(), 10)]._fm_icon = 'e-fe-folder';\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 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 &&\n !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 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 || this.isPathDragged) {\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.isPathDragged = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.setProperties({ 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 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.setProperties({ 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 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 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 this.isNodeExpandCalled = true;\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 }\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.setProperties({ 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.setProperties({ 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 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.setProperties({ 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.setProperties({ 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 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 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 = this.previousSelected.length > 0 && this.treeObj.getTreeData(this.previousSelected[0]).length !== 0\n ? this.previousSelected[0] : getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n this.updateItemData();\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 var data = this.treeObj.getTreeData();\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 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, this.parent.path);\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.setProperties({ selectedNodes: [e.selectedNode] });\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n if (isFileSystemData(this.parent)) {\n this.moveNames = [];\n var obj = this.parent.dragData;\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 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 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 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 NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\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 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 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 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 (isFileSystemData(this.parent) && (this.parent.path === this.parent.dropPath || this.parent.targetModule === 'navigationpane')) {\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 var obj = this.parent.isDragDrop || isFileSystemData(this.parent) ? 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 var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\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 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 NavigationPane.prototype.getTreeData = function (args) {\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 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 node = select('[data-uid=\"' + this.parent.pathId[this.parent.pathId.length - 1] + '\"]', this.treeObj.element);\n updatePath(node, this.parent.itemData[0], this.parent);\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/* eslint-disable @typescript-eslint/no-explicit-any */\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.isMultiSelect = 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 back: 'backspace'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n var _this = this;\n if (this.parent.enablePersistence) {\n var gridPersistenceValue = window.localStorage.getItem('grid' + this.parent.element.id + '_grid');\n if (!isNOU(gridPersistenceValue)) {\n var model = JSON.parse(gridPersistenceValue);\n if (!isNOU(model) && Object.keys(model).length > 0 && 'sortSettings' in model) {\n delete model.sortSettings;\n window.localStorage.setItem('grid' + this.parent.element.id + '_grid', JSON.stringify(model));\n }\n }\n }\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;\n if (this.parent.isMobile || !isValidSortField) {\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 load: function () {\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 {number} - 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 if (this.parent.enableRangeSelection) {\n var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };\n columns.push(HiddenName);\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 text = getValue('name', args.data);\n var textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n if (name_1.indexOf(type) !== -1) {\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\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 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 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 var items = getSortedData(this.parent, (this.parent.enableVirtualization)\n ? args.result\n : 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 && (!isNullOrUndefined(this.gridObj.getDataRows()) && this.gridObj.getDataRows().length > 0)) {\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 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 && !this.parent.hasId && 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 DetailsView.prototype.addSelection = function (data) {\n var items = this.gridObj.getCurrentViewRecords();\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 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 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 'showItemCheckBoxes':\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 var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === 'filterPath'; });\n if ((this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) ||\n (!isNullOrUndefined(pathField) && !isNullOrUndefined(pathField.hideAtMedia) && pathField.hideAtMedia !== '')) {\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 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 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 var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\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 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 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 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 && isNullOrUndefined(this.dragObj)) {\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 this.dragObj = null;\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\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 var info = null;\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 ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\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 if (!this.isMultiSelect) {\n this.isMultiSelect = true;\n if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {\n args.cancel = true;\n var rowIndex = (args && args.rowIndexes)\n ? args.rowIndexes[args.rowIndexes.length - 1]\n : args.rowIndex;\n this.gridObj.selectRow(rowIndex);\n }\n this.isMultiSelect = false;\n }\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 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 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 var _this = this;\n if (toBind) {\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 _this.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (_this.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', _this.parent.allowMultiSelection, _this.gridObj.selectionModule);\n addClass([_this.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 = _this.gridObj.getRows().indexOf(row);\n _this.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 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 DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\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 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 case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\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 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 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 var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\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 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 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 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 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 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 DetailsView.prototype.getRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\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 var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\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 var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\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 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 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":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","AjaxSettings","ChildProperty","Property","apply","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","field","headerText","minWidth","template","customAttributes","class","type","format","width","initializeCSPTemplate","data","size","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","NAVIGATION_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","SEARCH_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT","NAVIGATION","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","FRAME","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","SUBMENU_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","BREADCRUMBS","RTL","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","OVERLAY","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","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","updatePath","node","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","ids","push","names","isId","parentText","el","parentNode","matches","CLS.LIST_ITEM","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","newPath","parseInt","toString","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","getAllChildItems","parentId","children","fileSystemData","filter","item","String","allChildren","slice","forEach","child","childId","concat","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","read","events.layoutChange","searchSettings","filterType","currData","filteredData","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","Search","events.search","showHiddenItems","getPathObject","hiddenItems","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","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","filetype","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.FOLDER","getImageUrl","baseUrl","pathUrl","fileName","fPath","imgUrl","trigger","eventArgs_1","fileDetails","imageUrl","ajaxSettings","url","encodeURIComponent","eventArgs","imgId","replace","Date","getTime","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","isNullOrUndefined","sortBy","group","lists","getObject","result","feFiles","createEmptyElement","emptyEle","dragFile","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","top","eDiv","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","style","marginTop","getDirectories","setNodeId","rootId","dirs","len","setValue","setDateObject","localeString","dateFormat","createdDate","modifiedDate","formatDate","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","navData","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","getTargetPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dragPath","subFolder","name_1","dragData","srcData","dragNodes","tempTarget","dropHandler","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","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","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","closePopup","dialogObj","hide","getAccessDetails","isPathPermision","accessMessage","copyOrMovePermission","undefined","responseData","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","isFileExists","some","findIndexById","findIndex","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","createErrorObject","triggerRenameOperation","renameEventArgs","fileData","oldName","updateChildrenFilterPath","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","index","splice","obj","subItem","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","target_1","getTargetFiles","subItems","pathArray","currItem","targetItem","searchEventArgs","searchResults","searchText","fn","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","renamedItem","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","intl","rootAliasName","Internationalization","rootName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","pathObject","pathLevel","renamePath","isArray","events.renameEndParent","renameText","previousSelected","getTreeData","events.pathChanged","events.renameEnd","moveorcopyEventArgs","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","responseType","useFormPost","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","extractedFilename","filenameMatch","blobUrl","URL","createObjectURL","link","href","body","status","options","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","bind","events.deleteInit","onReSubmit","inputEle","txt","formattedString","CLS.VALUE","strArr","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","replaceItems","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","events.skipUpload","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","onKeepBothAll","retryArgs","retry","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","btnCount","_loop_1","onkeydown","keyCode","preventDefault","onSubmitValidate","oldExtension","newExtension","oIndex","renamedId","nIndex","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","LargeIconsView","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","CLS.LARGEICON_ID","ul","activeEle","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","isPasteOperation","selectItems","uploadOperation","CLS.ACTIVE","maxHeight","getItemCount","addEventListener","wireEvents","setUlElementHeight","wireScrollEvent","isRendered","hideSpinner","checkItem","x","z","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","cwdData","getModuleName","dropLi","info","removeAttribute","curData","textEle","renderCheckbox","checkElement","showItemCheckBoxes","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","lastItem","getFirstItem","getLastItem","doSelection","ctrlKey","shiftKey","isInteraction","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","keyConfigs","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","clickObj","Touch","tap","eve","isDevice","tapCount","tapEvent","doTapAction","originalEvent","dblClickHandler","clickHandler","tapHold","multiSelect","addClass","CLS.MULTI_SELECT","updateType","isMac","metaKey","isMacRightClick","cList","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","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","traverseBackward","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","getPropertyValue","isVisible","liScrPos","getCurFocusedItem","liParent","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","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","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","BreadCrumbBar","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","searchWrap","subMenuObj","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","CLS.SEARCH_ID","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","searchWrapWidth","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","searchTimer","nodeName","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","addressBarLink","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","addressPath","ContextMenu","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","iconSpan","getMenuId","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","isFocused","parentItem","menuType","menuCloseArgs","menuTarget","isMenuItemClicked","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","currentElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","navUid","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","enable","isUniqueId","checkValidItem","isTree","renameIndex","getItemData","contextMenuSettings","trim","selectedTreeNode","indexToRemove","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","events.downloadInit","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","FileManager_1","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","Component","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","adjustHeight","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","CLS.LAYOUT","navigationWrap","CLS.NAVIGATION_ID","CLS.NAVIGATION","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","CLS.BREADCRUMBS","largeiconWrap","role","overlay","CLS.OVERLAY","dialogWrap","paneSettings","min","max","maxWidth","Splitter","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","bar","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","chunkSize","uploadSettings","retryCount","uploading","onUploading","chunkUploading","onChunkUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","autoClose","onChunkUploadComplete","response","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","dragX","pageX","dragY","pageY","dragSelectElement","styles","append","onDragStop","onDrag","diffX","stopPropagation","diffY","setStyleAttribute","left","Math","abs","dragSelectedItems","dragRect","allItems_1","itemRect","right","bottom","setPath","oldProp","requiresRefresh","ajaxSettingSetModel","localeSetModelOption","col","refreshing","CLS.RTL","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","closeDialog","rtl","Complex","Collection","Event","NotifyPropertyChanges","previousPath","nextPath","deleteRecords","isSameAction","persistData","Inject","Toolbar","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","firstChild","hideItems","default","hideStatus","portals","updateSortByButton","itemCount","mergedItems","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","single","selection","multiple","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","currentViewItems","largeIconInstance","lastRowCount","rowItemCount","topElement","filemanagerInstance","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","onInit","rootData","attr","BaseTreeView","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getDragPath","getDropPath","nodeData","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","currFiles","sNode","expandTree","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","removeNodes","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selectedNodeEle","selcetedEle","onRenameEndParent","id_1","nData","onDownLoadInit","onClearPathInit","onDragEnd","moveNames","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","ctrlShiftN","shiftF10","DetailsView","sortSettings","isValidSortField","enablePersistence","gridPersistenceValue","localStorage","getItem","model","setItem","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","pane","initialColumn","isNameWidth","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cBox","cWidth","disableHtmlEncode","gridHeader","renderCheckBox","isColumnRefresh","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","hdTable","cnTable","selectRecords","getDataRows","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","isLoaded","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","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","isMultiSelect","isShiftPressed","isCtrlPressed","rowIndexes","selectedRecords","firstItemIndex","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","crtSrlPos","crtFocusIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","nameFocus","treeFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","Resize","Sort","VirtualScroll","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"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"}
|