@syncfusion/ej2-querybuilder 30.2.4 → 30.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-querybuilder.umd.min.js","sources":["../src/query-builder/query-builder.js","../src/query-builder/query-library.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 __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\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};\n/**\n * Query Builder Source\n */\n/* eslint-disable max-len */\nimport { Component, NotifyPropertyChanges, getComponent, Browser, compile, append, Draggable, remove } from '@syncfusion/ej2-base';\nimport { Property, ChildProperty, Complex, L10n, closest, extend, isNullOrUndefined, Collection, cldrData } from '@syncfusion/ej2-base';\nimport { getInstance, addClass, removeClass, rippleEffect, detach, classList } from '@syncfusion/ej2-base';\nimport { Internationalization, getUniqueID, select } from '@syncfusion/ej2-base';\nimport { Button, CheckBox, RadioButton } from '@syncfusion/ej2-buttons';\nimport { DropDownList, CheckBoxSelection, DropDownTree } from '@syncfusion/ej2-dropdowns';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { Event, EventHandler, getValue, Animation } from '@syncfusion/ej2-base';\nimport { Query, Predicate, DataManager, Deferred } from '@syncfusion/ej2-data';\nimport { TextBox, NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { compile as templateCompiler, getNumericObject } from '@syncfusion/ej2-base';\n/**\n * Defines the Columns of Query Builder\n */\nvar Columns = /** @class */ (function (_super) {\n __extends(Columns, _super);\n function Columns() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Columns.prototype, \"field\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"values\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"operators\", void 0);\n __decorate([\n Property()\n ], Columns.prototype, \"ruleTemplate\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"template\", void 0);\n __decorate([\n Property({ isRequired: true, min: 0, max: Number.MAX_VALUE })\n ], Columns.prototype, \"validation\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"category\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"columns\", void 0);\n return Columns;\n}(ChildProperty));\nexport { Columns };\n/**\n * Defines the rule of Query Builder\n */\nvar Rule = /** @class */ (function (_super) {\n __extends(Rule, _super);\n function Rule() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Rule.prototype, \"condition\", void 0);\n __decorate([\n Collection([], Rule)\n ], Rule.prototype, \"rules\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"field\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"operator\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], Rule.prototype, \"not\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"isLocked\", void 0);\n return Rule;\n}(ChildProperty));\nexport { Rule };\n/**\n * Defines the property for value.\n */\nvar Value = /** @class */ (function (_super) {\n __extends(Value, _super);\n function Value() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Value.prototype, \"numericTextBoxModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"multiSelectModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"datePickerModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"textBoxModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"radioButtonModel\", void 0);\n return Value;\n}(ChildProperty));\nexport { Value };\n/**\n * Defines the ruleDelete, groupInsert, and groupDelete options of Query Builder.\n */\nvar ShowButtons = /** @class */ (function (_super) {\n __extends(ShowButtons, _super);\n function ShowButtons() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"cloneRule\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"cloneGroup\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"lockRule\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"lockGroup\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"ruleDelete\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"groupInsert\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"groupDelete\", void 0);\n return ShowButtons;\n}(ChildProperty));\nexport { ShowButtons };\nvar QueryBuilder = /** @class */ (function (_super) {\n __extends(QueryBuilder, _super);\n function QueryBuilder(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isReadonly = true;\n _this.fields = { text: 'label', value: 'field' };\n _this.updatedRule = { not: false, condition: 'and', isLocked: false };\n _this.isLocale = false;\n _this.isRefreshed = false;\n _this.isNotified = false;\n _this.isAddSuccess = false;\n _this.isNotValueChange = false;\n _this.isFieldChange = false;\n _this.isFieldClose = false;\n _this.isDestroy = false;\n _this.isGetNestedData = false;\n _this.isCustomOprCols = [];\n _this.groupCounter = 0;\n _this.lockItems = [];\n _this.groupIndex = -1;\n _this.ruleIndex = -1;\n _this.isLastGroup = false;\n _this.cloneGrpBtnClick = false;\n _this.isMiddleGroup = false;\n _this.cloneRuleBtnClick = false;\n _this.isValueEmpty = false;\n _this.isPropChange = false;\n MultiSelect.Inject(CheckBoxSelection);\n return _this;\n }\n QueryBuilder.prototype.getPersistData = function () {\n return this.addOnPersist(['rule']);\n };\n /**\n * Clears the rules without root rule.\n *\n * @returns {void}.\n */\n QueryBuilder.prototype.reset = function () {\n this.isImportRules = false;\n var bodyElem = this.element.querySelector('.e-group-body');\n var inputElements = this.element.querySelectorAll('input.e-control');\n var batchSize = 20;\n var currentIndex = 0;\n var processBatch = function () {\n var endIndex = Math.min(currentIndex + batchSize, inputElements.length);\n for (var i = currentIndex; i < endIndex; i++) {\n var element = inputElements[i];\n try {\n if (element.className.indexOf('e-tooltip') > -1) {\n var tooltip = getComponent(element, 'tooltip');\n if (tooltip) {\n tooltip.destroy();\n }\n }\n else if (element.parentElement && element.parentElement.className.indexOf('e-tooltip') > -1) {\n var tooltip = getComponent(element.parentElement, 'tooltip');\n if (tooltip) {\n tooltip.destroy();\n }\n }\n }\n catch (e) {\n console.warn('Error destroying tooltip:', e);\n }\n }\n currentIndex = endIndex;\n if (currentIndex < inputElements.length) {\n requestAnimationFrame(processBatch);\n }\n };\n if (inputElements.length > 0) {\n processBatch();\n }\n if (bodyElem) {\n bodyElem.textContent = '';\n }\n else {\n var fragment = document.createDocumentFragment();\n var grpContainer = this.createElement('div', { attrs: { class: 'e-group-container' } });\n var grpHeader = this.createElement('div', { attrs: { class: 'e-group-header' } });\n var grpBody = this.createElement('div', { attrs: { class: 'e-group-body' } });\n grpContainer.appendChild(grpHeader);\n grpContainer.appendChild(grpBody);\n fragment.appendChild(grpContainer);\n this.element.appendChild(fragment);\n bodyElem = this.element.querySelector('.e-group-body');\n }\n if (this.headerTemplate && this.isRoot) {\n this.element.textContent = '';\n this.isRoot = false;\n }\n if (this.enableNotCondition) {\n var toggleElements = this.element.querySelectorAll('.e-qb-toggle');\n for (var i = 0; i < toggleElements.length; i++) {\n removeClass([toggleElements[i]], 'e-active-toggle');\n }\n }\n if (bodyElem) {\n bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));\n }\n this.levelColl[this.element.id + '_group0'] = [0];\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n if (bodyElem && bodyElem.parentElement) {\n this.disableRuleCondition(bodyElem.parentElement);\n }\n };\n QueryBuilder.prototype.getWrapper = function () {\n return this.element;\n };\n QueryBuilder.prototype.getModuleName = function () {\n return 'query-builder';\n };\n QueryBuilder.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'query-library',\n args: [this]\n });\n return modules;\n };\n QueryBuilder.prototype.GetRootColumnName = function (field) {\n if (!isNullOrUndefined(field)) {\n return this.separator ? field.split(this.separator)[0] : field;\n }\n return '';\n };\n QueryBuilder.prototype.initialize = function () {\n var _this = this;\n if (this.dataColl.length) {\n var columnKeys_1 = Object.keys(this.dataColl[0]);\n var cols = [];\n var categories_1 = [];\n var type_1;\n var groupBy_1 = false;\n var isDate_1 = false;\n var value_1;\n var validateObj_1 = { isRequired: true, min: 0, max: Number.MAX_VALUE };\n if (this.columns.length) {\n this.columnSort();\n var columns = this.columns;\n columns.forEach(function (column) {\n _this.updateCustomOperator(column, 'initial');\n if (!column.type) {\n if (columnKeys_1.indexOf(column.field) > -1) {\n value_1 = _this.dataColl[0][column.field];\n type_1 = typeof value_1;\n if (type_1 === 'string') {\n isDate_1 = !isNaN(Date.parse(value_1));\n }\n else if (type_1 === 'object') {\n isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());\n type_1 = 'string';\n }\n column.type = type_1;\n isDate_1 = false;\n }\n type_1 = 'string';\n }\n if (!column.validation) {\n column.validation = validateObj_1;\n }\n if (column.category) {\n groupBy_1 = true;\n }\n else {\n column.category = _this.l10n.getConstant('OtherFields');\n }\n if (categories_1.indexOf(column.category) < 0) {\n categories_1.push(column.category);\n }\n if (!column.operators ||\n (_this.isLocale && _this.isCustomOprCols.indexOf(column.field) === -1)) {\n column.operators = _this.customOperators[column.type + 'Operator'];\n }\n });\n if (groupBy_1 && (categories_1.length > 1 || categories_1[0] !== this.l10n.getConstant('OtherFields'))) {\n this.fields = { text: 'label', value: 'field', groupBy: 'category' };\n }\n this.updateSubFieldsFromColumns(this.columns);\n }\n else {\n for (var i = 0, len = columnKeys_1.length; i < len; i++) {\n value_1 = this.dataColl[0][columnKeys_1[i]];\n type_1 = typeof value_1;\n if (type_1 === 'string') {\n isDate_1 = !isNaN(Date.parse(value_1));\n }\n else if (type_1 === 'object' && !Object.keys(value_1).length) {\n isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());\n type_1 = 'string';\n }\n cols[i] = {\n 'field': columnKeys_1[i], 'label': columnKeys_1[i], 'type': isDate_1 ? 'date' : type_1,\n 'validation': validateObj_1\n };\n isDate_1 = false;\n cols[i].operators = this.customOperators[cols[i].type + 'Operator'];\n if (type_1 === 'object') {\n this.updateSubFields(value_1, cols[i]);\n }\n }\n this.columns = cols;\n }\n }\n else if (this.columns && this.columns.length) {\n if (this.sortDirection !== 'Default') {\n this.columnSort();\n }\n this.processColumnsInBatches();\n if (this.columns.length > 50) {\n setTimeout(function () {\n _this.updateSubFieldsFromColumns(_this.columns);\n }, 0);\n }\n else {\n this.updateSubFieldsFromColumns(this.columns);\n }\n }\n this.trigger('dataBound', { type: 'dataBound' });\n };\n QueryBuilder.prototype.processColumnsInBatches = function () {\n var _this = this;\n var columns = this.columns;\n var batchSize = 10;\n var processedCount = 0;\n var processBatch = function () {\n var endIdx = Math.min(processedCount + batchSize, columns.length);\n for (var i = processedCount; i < endIdx; i++) {\n if (columns[i].category && columns[i].category !== _this.l10n.getConstant('OtherFields')) {\n _this.fields = { text: 'label', value: 'field', groupBy: 'category' };\n }\n else {\n columns[i].category = _this.l10n.getConstant('OtherFields');\n }\n _this.updateCustomOperator(columns[i], 'initial');\n if (!columns[i].operators ||\n (_this.isLocale && _this.isCustomOprCols.indexOf(columns[i].field) === -1)) {\n columns[i].operators = _this.customOperators[columns[i].type + 'Operator'];\n }\n }\n processedCount = endIdx;\n if (processedCount < columns.length) {\n requestAnimationFrame(processBatch);\n }\n };\n processBatch();\n };\n QueryBuilder.prototype.updateSubFieldsFromColumns = function (col, field) {\n if (col.length > 50) {\n this.updateSubFieldsLarge(col, field);\n return;\n }\n for (var i = 0; i < col.length; i++) {\n if (this.separator !== '' && col[i].field.indexOf(this.separator) < 0) {\n col[i].field = field ? field + this.separator + col[i].field : col[i].field;\n }\n if (col[i].operators) {\n this.updateCustomOperator(col[i]);\n }\n else if (col[i].type && col[i].type !== 'object') {\n col[i].operators = this.customOperators[col[i].type + 'Operator'];\n }\n if (col[i].columns) {\n col[i].type = 'object';\n this.updateSubFieldsFromColumns(col[i].columns, col[i].field);\n }\n }\n };\n QueryBuilder.prototype.updateSubFieldsLarge = function (col, field) {\n var _this = this;\n var i = 0;\n var colLength = col.length;\n var processNextBatch = function () {\n var endIdx = Math.min(i + 10, colLength);\n for (; i < endIdx; i++) {\n if (_this.separator !== '' && col[i].field.indexOf(_this.separator) < 0) {\n col[i].field = field ? field + _this.separator + col[i].field : col[i].field;\n }\n if (col[i].operators) {\n _this.updateCustomOperator(col[i]);\n }\n else if (col[i].type && col[i].type !== 'object') {\n col[i].operators = _this.customOperators[col[i].type + 'Operator'];\n }\n }\n if (i < colLength) {\n requestAnimationFrame(processNextBatch);\n }\n else {\n setTimeout(function () {\n for (var j = 0; j < colLength; j++) {\n if (col[j].columns) {\n col[j].type = 'object';\n _this.updateSubFieldsFromColumns(col[j].columns, col[j].field);\n }\n }\n }, 0);\n }\n };\n processNextBatch();\n };\n QueryBuilder.prototype.updateSubFields = function (value, col, data) {\n var sampCol;\n col.columns = [];\n var columnKeys = Object.keys(value);\n var field;\n var label;\n var type;\n var result;\n data = data ? data : this.dataColl[0];\n for (var i = 0, len = columnKeys.length; i < len; i++) {\n var compField = col.field.split('.');\n if (data) {\n result = data[compField[compField.length - 1]][columnKeys[i]];\n }\n else {\n result = this.dataColl[0][col.field][columnKeys[i]];\n }\n var resData = data[col.field.split(this.separator)[col.field.split(this.separator).length - 1]];\n type = typeof result;\n field = col.field + this.separator + columnKeys[i];\n label = columnKeys[i];\n type = (type === 'object' && !isNaN(Date.parse(result))) ? 'date' : type;\n sampCol = { field: field, label: label, type: type };\n if (type !== 'object') {\n sampCol.operators = this.customOperators[type + 'Operator'];\n }\n col.columns.push(sampCol);\n if (type === 'object') {\n this.updateSubFields(result, sampCol, resData);\n }\n }\n };\n QueryBuilder.prototype.updateCustomOperator = function (column, from) {\n if (column.operators) {\n if (!this.isLocale && from === 'initial' && !isNullOrUndefined(this.isCustomOprCols)) {\n this.isCustomOprCols.push(column.field);\n }\n var _loop_1 = function (j) {\n var sqlIdx = Object.keys(column.operators[j]).indexOf('sqlOperator');\n if (sqlIdx > -1) {\n var operator_1 = column.operators[j];\n var operColl = Object.keys(operator_1);\n var values = operColl.map(function (key) { return operator_1[\"\" + key]; }).join(',').split(',');\n var valueIdx = operColl.indexOf('value');\n this_1.operators[values[valueIdx]] = values[sqlIdx];\n }\n };\n var this_1 = this;\n for (var j = 0; j < column.operators.length; j++) {\n _loop_1(j);\n }\n }\n };\n QueryBuilder.prototype.focusEventHandler = function (event) {\n this.target = event.target;\n };\n QueryBuilder.prototype.clickEventHandler = function (event) {\n var _this = this;\n var target = event.target;\n var args;\n this.isImportRules = false;\n var groupID;\n if (target.tagName === 'SPAN') {\n target = target.parentElement;\n }\n if (typeof target.className === 'string' && target.className.indexOf('e-collapse-rule') > -1) {\n var animation = new Animation({ duration: 1000, delay: 0 });\n if (this.element.querySelectorAll('.e-summary-content').length < 1) {\n this.renderSummary();\n }\n var summaryElem = document.getElementById(this.element.id + '_summary_content');\n var txtareaElem = summaryElem.querySelector('.e-summary-text');\n animation.animate('.e-query-builder', { name: 'SlideLeftIn' });\n var groupElem = this.element.querySelector('.e-group-container');\n groupElem.style.display = 'none';\n txtareaElem.textContent = this.getSqlFromRules(this.rule);\n summaryElem.style.display = 'block';\n txtareaElem.style.height = txtareaElem.scrollHeight + 'px';\n }\n if (target.tagName === 'BUTTON' && typeof target.className === 'string' && target.className.indexOf('e-qb-toggle') < 0) {\n var animation = new Animation({ duration: 1000, delay: 0 });\n switch (true) {\n case target.className.indexOf('e-removerule') > -1:\n this.actionButton = target;\n this.deleteRule(target);\n break;\n case target.className.indexOf('e-clone-rule-btn') > -1:\n this.actionButton = target;\n this.cloneRuleBtnClick = true;\n this.ruleClone(target);\n break;\n case target.className.indexOf('e-lock-rule-btn') > -1:\n this.actionButton = target;\n this.ruleLock(target);\n break;\n case target.className.indexOf('e-lock-grp-btn') > -1:\n this.actionButton = target;\n this.groupLock(target);\n break;\n case target.className.indexOf('e-clone-grp-btn') > -1:\n this.actionButton = target;\n this.cloneGrpBtnClick = true;\n this.groupClone(closest(target, '.e-group-container'));\n break;\n case target.className.indexOf('e-deletegroup') > -1:\n this.actionButton = target;\n this.deleteGroup(closest(target, '.e-group-container'));\n break;\n case target.className.indexOf('e-edit-rule') > -1:\n animation.animate('.e-query-builder', { name: 'SlideLeftIn' });\n document.getElementById(this.element.id + '_summary_content').style.display = 'none';\n if (this.element.querySelectorAll('.e-group-container').length < 1) {\n this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not);\n var mRules = extend({}, this.rule, {}, true);\n this.setGroupRules(mRules);\n this.renderSummaryCollapse();\n }\n else {\n var groupElem = this.element.querySelector('.e-group-container');\n if (groupElem.querySelectorAll('.e-collapse-rule').length < 1) {\n this.renderSummaryCollapse();\n }\n groupElem.style.display = 'block';\n }\n break;\n }\n }\n else if ((target.tagName === 'LABEL' && target.parentElement.className.indexOf('e-btn-group') > -1) ||\n (typeof target.className === 'string' && target.className.indexOf('e-qb-toggle') > -1)) {\n var element = closest(target, '.e-group-container');\n if (!this.headerTemplate) {\n var forIdValue = target.getAttribute('for');\n var targetValue = void 0;\n if (forIdValue) {\n targetValue = document.getElementById(forIdValue).getAttribute('value');\n }\n else if (this.enableSeparateConnector) {\n if (target.classList.contains('e-btngroup-or-lbl')) {\n targetValue = 'or';\n }\n else if (target.classList.contains('e-btngroup-and-lbl')) {\n targetValue = 'and';\n }\n else {\n targetValue = target.textContent;\n }\n }\n groupID = element.id.replace(this.element.id + '_', '');\n var group = this.getGroup(groupID);\n var ariaChecked = void 0;\n if (this.enableNotCondition) {\n if (target.className.indexOf('e-qb-toggle') > -1) {\n var toggleElem = element.getElementsByClassName('e-qb-toggle')[0];\n if (toggleElem.className.indexOf('e-active-toggle') > -1) {\n removeClass([toggleElem], 'e-active-toggle');\n ariaChecked = false;\n }\n else {\n addClass([toggleElem], 'e-active-toggle');\n ariaChecked = true;\n }\n targetValue = group.condition;\n }\n else {\n ariaChecked = group.not;\n }\n }\n args = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase() };\n if (this.enableNotCondition) {\n args = {\n groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),\n 'not': ariaChecked\n };\n }\n }\n if (!this.isImportRules) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.beforeSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.beforeSuccessCallBack(args, target);\n }\n this.target = target;\n }\n };\n QueryBuilder.prototype.beforeSuccessCallBack = function (args, target) {\n if (args && !args.cancel) {\n var element = closest(target, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n var beforeRules = this.getValidRules(this.rule);\n var rule = this.getParentGroup(element);\n if (this.enableSeparateConnector) {\n if (isNullOrUndefined(closest(target, '.e-rule-container')) &&\n element.classList.contains('e-group-container')) {\n element = target.parentElement.previousElementSibling !== null ?\n target.parentElement.previousElementSibling : element;\n }\n else {\n element = closest(target, '.e-rule-container');\n }\n var id = element.id.replace(this.element.id + '_', '');\n if (element.classList.contains('e-rule-container')) {\n rule = this.getRule(element);\n rule.condition = args.value;\n }\n else if (element.classList.contains('e-group-container')) {\n rule = this.getGroup(element);\n rule.condition = args.value;\n }\n if (this.enableNotCondition) {\n rule.not = args.not;\n }\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: id, type: 'condition', value: rule.condition });\n }\n }\n else {\n rule.condition = args.value;\n if (this.enableNotCondition) {\n rule.not = args.not;\n }\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, type: 'condition', value: rule.condition });\n }\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'condition');\n if (this.enableSeparateConnector) {\n var andElem = target.parentElement.querySelector('.e-btngroup-and');\n var orElem = target.parentElement.querySelector('.e-btngroup-or');\n if (andElem && orElem) {\n if (args.value === 'and') {\n andElem.checked = true;\n orElem.checked = false;\n }\n else if (args.value === 'or') {\n orElem.checked = true;\n andElem.checked = false;\n }\n }\n }\n }\n };\n QueryBuilder.prototype.selectBtn = function (target, event) {\n if (event.name === 'beforeOpen') {\n if (this.showButtons.groupInsert || isNullOrUndefined(this.showButtons.groupInsert)) {\n if (this.element.querySelectorAll('.e-group-container').length >= this.maxGroupCount + 1) {\n addClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n else {\n removeClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n if (this.enableRtl) {\n addClass([event.element.querySelector('li').parentElement], 'e-rtl');\n }\n }\n else {\n addClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n }\n else if (event.element.children[0].className.indexOf('e-addrule') > -1) {\n this.addRuleElement(closest(target, '.e-group-container'), {});\n }\n else if (event.element.children[0].className.indexOf('e-addgroup') > -1) {\n this.addGroupElement(true, closest(target, '.e-group-container'), '', true);\n }\n };\n QueryBuilder.prototype.appendRuleElem = function (target, column, type, parentId, action, rule) {\n var ruleElem;\n var elem;\n var ruleListElem = target && target.querySelector('.e-rule-list');\n var args;\n if (type === 'change') {\n ruleElem = select('#' + parentId, target);\n }\n else {\n ruleElem = this.createElement('div', { attrs: { class: 'e-rule-container' } });\n ruleElem.setAttribute('id', target.id + '_rule' + this.ruleIdCounter);\n if (this.showButtons.cloneRule && this.cloneRuleBtnClick) {\n if (this.ruleIndex < 0) {\n ruleListElem.appendChild(ruleElem);\n }\n else {\n if (this.enableSeparateConnector) {\n var index = -1;\n var tempRuleIndex = this.ruleIndex + 1;\n for (var i = 0; i < tempRuleIndex; i++) {\n if (i === ruleListElem.children.length) {\n break;\n }\n if (ruleListElem.children[i].classList.contains('e-rule-container')) {\n tempRuleIndex++;\n index++;\n }\n }\n ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + index + 1]); // added clone rule to next position\n }\n else {\n ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + 1]); // added clone rule to next position\n }\n }\n this.cloneRuleBtnClick = false;\n }\n else {\n ruleListElem.appendChild(ruleElem);\n }\n this.ruleIdCounter++;\n }\n if (column && column.ruleTemplate && rule) {\n args = { requestType: 'template-initialize', ruleID: ruleElem.id, action: action, fields: this.fields, rule: rule };\n this.trigger('actionBegin', args);\n this.ruleTemplateFn = this.templateParser(column.ruleTemplate);\n var templateID = this.element.id + column.field;\n var template = void 0;\n args.fields = this.fields;\n args.columns = this.columns;\n if (rule.field === '') {\n rule.field = column.field;\n }\n args.operators = this.getOperators(rule.field);\n args.operatorFields = { text: 'key', value: 'value' };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n template = this.ruleTemplateFn(args, this, ruleElem.id, templateID)[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular) {\n var templateColl = this.ruleTemplateFn(args, this, ruleElem.id, templateID);\n template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isVue3) {\n template = this.ruleTemplateFn(args, this, 'Template', templateID);\n elem = template;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(elem, ruleElem);\n if (ruleElem.children.length) {\n ruleElem.children[ruleElem.children.length - 1].className += ' e-rule-field';\n }\n }\n else {\n template = this.ruleTemplateFn(args, this, 'Template', templateID)[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n }\n }\n else {\n elem = this.ruleElem.querySelector('.e-rule-field').cloneNode(true);\n ruleElem.appendChild(elem);\n }\n if (this.showButtons.lockGroup) {\n removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n if (this.showButtons.lockRule) {\n removeClass(ruleElem.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n if (this.showButtons.cloneGroup) {\n removeClass(ruleElem.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n if (this.showButtons.cloneRule) {\n removeClass(ruleElem.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n if (this.showButtons.ruleDelete) {\n removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n if (this.allowDragAndDrop) {\n removeClass(ruleElem.querySelectorAll('.e-drag-qb-rule'), 'e-hidden');\n }\n if (column && column.ruleTemplate && rule) {\n this.renderReactTemplates();\n }\n return ruleElem;\n };\n QueryBuilder.prototype.addRuleElement = function (target, rule, column, action, parentId, isRuleTemplate) {\n var _this = this;\n if (!target) {\n return;\n }\n var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertRule' };\n if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.addRuleSuccessCallBack(observedChangeArgs, target, rule, column, action, parentId, isRuleTemplate);\n });\n }\n else {\n this.isInitialLoad = false;\n this.addRuleSuccessCallBack(args, target, rule, column, action, parentId, isRuleTemplate);\n }\n };\n QueryBuilder.prototype.addRuleSuccessCallBack = function (args, trgt, rule, col, act, pId, isRlTmp) {\n var _this = this;\n var isVertical = this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical';\n var height = isVertical ? '250px' : '200px';\n var ruleID;\n var column = (rule && rule.field) ? this.getColumn(rule.field) : col ? col : this.columns[0];\n var operators;\n var dropDownList;\n var ruleElem;\n var newRule = { 'label': '', 'field': '', 'type': '', 'operator': '' };\n if (!args.cancel) {\n var fragment = document.createDocumentFragment();\n if (column && column.ruleTemplate && rule.field) {\n this.selectedColumn = column;\n operators = this.selectedColumn.operators;\n newRule = {\n 'label': column.label,\n 'field': column.field,\n 'type': column.type,\n 'operator': operators[0].value\n };\n var passedRule = Object.keys(rule).length ? rule : newRule;\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field', passedRule);\n var actionArgs = {\n requestType: 'template-initialize',\n ruleID: ruleElem.id,\n action: 'insert-rule',\n fields: this.fields,\n rule: passedRule\n };\n this.trigger('actionBegin', actionArgs);\n }\n else {\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field');\n ruleElem.querySelector('.e-filter-input').setAttribute('id', ruleElem.id + '_filterkey');\n var element = ruleElem.querySelector('.e-rule-delete');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n element.textContent = this.l10n.getConstant('Remove');\n addClass([element], 'e-flat');\n addClass([element], 'e-primary');\n }\n else {\n addClass([element], 'e-round');\n addClass([element], 'e-icon-btn');\n element.setAttribute('title', this.l10n.getConstant('DeleteRule'));\n var spanElement = this.createElement('span', {\n attrs: { class: 'e-btn-icon e-icons e-delete-icon' }\n });\n element.appendChild(spanElement);\n }\n if (!this.showButtons.ruleDelete) {\n element.classList.add('e-button-hide');\n }\n }\n ruleElem.className = 'e-rule-container ' + (isVertical ? 'e-vertical-mode' : 'e-horizontal-mode');\n var previousRuleElem = ruleElem.previousElementSibling;\n this.processAdjacentElements(ruleElem, previousRuleElem, rule);\n if (!this.isImportRules) {\n this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);\n }\n var ruleCount = this.rule.rules.length;\n if (!column || (column && !column.ruleTemplate) || !rule.field) {\n if (ruleCount > 20) {\n setTimeout(function () {\n _this.applyFieldComponent(ruleElem, rule, height);\n }, 0);\n }\n else {\n this.applyFieldComponent(ruleElem, rule, height);\n }\n }\n ruleID = ruleElem.id.replace(this.element.id + '_', '');\n if (rule && rule.isLocked) {\n var lockRuleTarget = ruleElem.querySelector('.e-lock-rule-btn');\n this.ruleLock(lockRuleTarget);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', {\n groupID: trgt.id.replace(this.element.id + '_', ''),\n ruleID: ruleID,\n type: 'insertRule'\n });\n }\n }\n if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {\n rule = this.getRule(ruleID);\n }\n if (this.enableSeparateConnector) {\n this.processConnectorElements(ruleElem);\n }\n };\n QueryBuilder.prototype.processAdjacentElements = function (ruleElem, previousRuleElem, rule) {\n if (this.enableSeparateConnector) {\n if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {\n var ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');\n previousRuleElem = ruleContainer[ruleContainer.length - 1];\n }\n if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(previousRuleElem);\n if (this.headerTemplate) {\n this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);\n }\n }\n else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n this.handleOrphanedRuleElement(ruleElem, rule);\n }\n }\n else {\n if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {\n ruleElem.classList.add('e-joined-rule');\n previousRuleElem.classList.add('e-prev-joined-rule');\n }\n }\n if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&\n ruleElem.className.indexOf('e-separate-rule') < 0) {\n ruleElem.className += ' e-separate-rule';\n }\n };\n QueryBuilder.prototype.handleOrphanedRuleElement = function (ruleElem, rule) {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling) {\n var prevElem = group.previousElementSibling;\n var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');\n if (prevElem.classList.contains('e-group-container')) {\n prevElem = prevRuleContainer[prevRuleContainer.length - 1];\n }\n if (prevElem.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(prevElem);\n this.headerTemplateFn(prevElem, false, prevRule.condition, prevRule, prevElem.id, true);\n }\n }\n else {\n this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);\n }\n };\n QueryBuilder.prototype.processConnectorElements = function (ruleElem) {\n var prevElem = ruleElem.previousElementSibling;\n var ruleContainer;\n while (prevElem && !prevElem.classList.contains('e-rule-container')) {\n if (prevElem.classList.contains('e-group-container')) {\n ruleContainer = prevElem.querySelectorAll('.e-rule-container');\n prevElem = ruleContainer[ruleContainer.length - 1];\n break;\n }\n prevElem = prevElem.previousElementSibling;\n }\n if (this.headerTemplate && prevElem) {\n var prevRule = this.getRule(prevElem);\n var args = {\n requestType: 'rule-template-create',\n ruleID: prevElem.id,\n condition: prevRule.condition,\n notCondition: this.enableNotCondition ? true : undefined\n };\n this.trigger('actionBegin', args);\n }\n else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n this.handleOrphanedConnectorElement(ruleElem);\n }\n this.setMultiConnector(ruleElem);\n };\n QueryBuilder.prototype.handleOrphanedConnectorElement = function (ruleElem) {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {\n var prevElem = group.previousElementSibling.previousElementSibling;\n if (prevElem.classList.contains('e-group-container')) {\n var ruleContainer = prevElem.querySelectorAll('.e-rule-container');\n prevElem = ruleContainer[ruleContainer.length - 1];\n }\n if (prevElem.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(prevElem);\n var args = {\n requestType: 'rule-template-create',\n ruleID: prevElem.id,\n condition: prevRule.condition,\n notCondition: this.enableNotCondition ? true : undefined\n };\n this.trigger('actionBegin', args);\n }\n }\n };\n QueryBuilder.prototype.applyFieldComponent = function (ruleElem, rule, height) {\n if (this.fieldMode === 'Default') {\n this.applyDropdownListComponent(ruleElem, rule, height);\n }\n else {\n this.applyDropdownTreeComponent(ruleElem, rule, height);\n }\n };\n QueryBuilder.prototype.applyDropdownListComponent = function (ruleElem, rule, height) {\n var ddlField;\n var ddlValue;\n if (this.separator && rule.field) {\n ddlValue = this.GetRootColumnName(rule.field);\n }\n else if (this.autoSelectField) {\n ddlValue = this.GetRootColumnName(rule.field);\n }\n else {\n ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;\n }\n ddlField = {\n dataSource: this.columns,\n fields: this.fields,\n placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.columns.length > 5) ? height : 'auto'),\n close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),\n change: this.changeField.bind(this),\n value: rule ? ddlValue : null,\n open: this.popupOpen.bind(this, true),\n cssClass: 'qb-dropdownlist'\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleElem.id + '_filterkey');\n var ddlVal;\n if (this.separator && rule.field) {\n ddlVal = this.GetRootColumnName(rule.field);\n }\n else {\n ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) : dropDownList.value;\n }\n this.selectedColumn = dropDownList.getDataByValue(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropDownList.element,\n itemData: this.selectedColumn\n });\n }\n };\n QueryBuilder.prototype.applyDropdownTreeComponent = function (ruleElem, rule, height) {\n var ddlField;\n var ddlValue = this.isImportRules ? rule.field : rule.field;\n this.dummyDropdownTreeDs = extend([], this.columns, [], true);\n this.updateDropdowntreeDS(this.dummyDropdownTreeDs);\n ddlField = {\n fields: {\n dataSource: this.dummyDropdownTreeDs,\n value: 'field',\n text: 'label',\n child: 'columns',\n expanded: 'expanded',\n selectable: 'selectable'\n },\n placeholder: this.l10n.getConstant('SelectField'),\n showClearButton: false,\n popupHeight: ((this.columns.length > 5) ? height : 'auto'),\n changeOnBlur: false,\n change: this.changeField.bind(this),\n value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,\n open: this.popupOpen.bind(this, false),\n treeSettings: { expandOn: 'Click' },\n cssClass: 'e-qb-ddt',\n filtering: this.dropdownTreeFiltering.bind(this),\n close: this.dropdownTreeClose.bind(this)\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropdowntree = new DropDownTree(ddlField);\n dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');\n if (!isNullOrUndefined(dropdowntree.value)) {\n var value = this.getLabelFromColumn(dropdowntree.value[0]);\n dropdowntree.element.value = value;\n }\n var ddlVal = !isNullOrUndefined(rule.field) ?\n this.GetRootColumnName(rule.field) : dropdowntree.value;\n this.selectedColumn = this.getColumn(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropdowntree.element,\n itemData: this.selectedColumn\n });\n }\n };\n QueryBuilder.prototype.dropdownTreeFiltering = function (args) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var ruleElemID = '';\n var srcElement = args.event.srcElement;\n var isClearIcon = srcElement.classList.contains('e-clear-icon');\n var inputElem = isClearIcon ? srcElement.parentElement.querySelector('.e-textbox') : srcElement;\n ruleElemID = inputElem.id.split('_filterkey')[0];\n var ruleElem = document.getElementById(ruleElemID);\n this.ddTree = getComponent(ruleElem.querySelector('input.e-dropdowntree'), 'dropdowntree');\n var hierarchicalData = extend([], this.columns, [], true);\n args.cancel = true;\n if (args.text === '') {\n this.changeDataSource(hierarchicalData);\n }\n else {\n var matchedDataSource = hierarchicalData\n .map(function (data) { return _this.nestedChildFilter(args.text, data); })\n .filter(function (filteredChild) { return filteredChild !== null; });\n this.changeDataSource(matchedDataSource);\n setTimeout(function () {\n if (!isNullOrUndefined(proxy.ddTree) && !isNullOrUndefined(proxy.ddTree.treeObj)) {\n proxy.ddTree.treeObj.expandAll();\n }\n }, 100);\n }\n };\n QueryBuilder.prototype.changeDataSource = function (data) {\n this.updateDropdowntreeDS(data);\n this.ddTree.treeObj.fields = {\n dataSource: data,\n value: 'field',\n text: 'label',\n child: 'columns',\n expanded: 'expanded'\n };\n this.ddTree.treeObj.refresh();\n };\n QueryBuilder.prototype.nestedChildFilter = function (value, node) {\n var _this = this;\n var children = node[this.ddTree.fields.child];\n if (!children) {\n return this.isMatchedNode(value, node) ? node : null;\n }\n var matchedChildren = children\n .map(function (child) { return _this.nestedChildFilter(value, child); })\n .filter(function (filteredChild) { return filteredChild !== null; });\n if (matchedChildren.length) {\n node[this.ddTree.fields.child] = matchedChildren;\n return node;\n }\n else {\n node[this.ddTree.fields.child] = children;\n return this.isMatchedNode(value, node) ? node : null;\n }\n };\n QueryBuilder.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.ddTree.fields.text].toLowerCase();\n value = value ? value.toLowerCase() : '';\n return checkValue.indexOf(value) !== -1;\n };\n QueryBuilder.prototype.dropdownTreeClose = function () {\n if (this.ddTree) {\n this.changeDataSource(extend([], this.columns, [], true));\n }\n this.ddTree = null;\n };\n QueryBuilder.prototype.updateDropdowntreeDS = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].type === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {\n delete columns[parseInt(i.toString(), 10)].template;\n }\n columns[parseInt(i.toString(), 10)].selectable = false;\n this.updateDropdowntreeDS(columns[parseInt(i.toString(), 10)].columns);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {\n delete columns[parseInt(i.toString(), 10)].template;\n }\n }\n };\n QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId, isNewRuleAdded) {\n var ruleElem;\n var index = 0;\n var groupElem;\n var rules;\n if (isRuleTemplate) {\n ruleElem = select('#' + pId, target);\n groupElem = closest(target, '.e-group-container');\n rules = this.getParentGroup(groupElem);\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n var enableSeparateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))));\n if (!this.enableSeparateConnector || enableSeparateCondition) {\n index++;\n }\n }\n rules.rules[index] = rule;\n }\n else {\n groupElem = closest(target, '.e-group-container');\n rules = this.getParentGroup(groupElem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var custom = rule.custom;\n if (Object.keys(rule).length) {\n if (this.ruleIndex < 0) {\n rules.rules.push({\n 'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value\n });\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.rules[rules.rules.length - 1].custom = custom;\n }\n if (this.enableSeparateConnector) {\n rules.rules[rules.rules.length - 1].condition = rule.condition ? rule.condition : newRule.condition;\n }\n }\n else {\n rules.rules.splice(this.ruleIndex + 1, 0, {\n 'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value\n });\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.rules[this.ruleIndex + 1].custom = custom;\n }\n if (this.enableSeparateConnector) {\n rules.rules[this.ruleIndex + 1].condition = rule.condition ? rule.condition : newRule.condition;\n }\n }\n }\n else {\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newRule.custom = custom;\n }\n if (this.autoSelectField) {\n rule.field = newRule.field = this.rule.rules[0].field;\n }\n rules.rules.push(newRule);\n }\n }\n this.disableRuleCondition(target, rules, isNewRuleAdded);\n };\n QueryBuilder.prototype.changeRuleTemplate = function (column, element) {\n if (column && column.ruleTemplate) {\n return;\n }\n else {\n var parentGroup = closest(element, '.e-group-container');\n var parentId = closest(element, '.e-rule-container').id;\n if (this.previousColumn && this.previousColumn.ruleTemplate) {\n detach(element.closest('[id=\"' + parentId + '\"]').querySelector('.e-rule-field'));\n this.clearQBTemplate([parentId]);\n }\n if (column) {\n var operVal = this.selectedColumn.operators;\n var rule = { field: column.field, label: column.label, operator: operVal[0].value, value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n else {\n var rule = { field: '', label: '', operator: '', value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n }\n };\n QueryBuilder.prototype.renderToolTip = function (element) {\n var tooltip = new Tooltip({\n content: this.l10n.getConstant('ValidationMessage'), isSticky: true,\n position: 'BottomCenter', cssClass: 'e-querybuilder-error', afterClose: function () {\n tooltip.destroy();\n }, beforeOpen: function (args) {\n var tooltipCloseElement = args.element.querySelector('.e-tooltip-close');\n if (tooltipCloseElement) {\n tooltipCloseElement.style.display = 'none';\n }\n }\n });\n tooltip.appendTo(element);\n tooltip.open(element);\n };\n /**\n * Validate the conditions and it display errors for invalid fields.\n *\n * @returns {boolean} - Validation\n */\n QueryBuilder.prototype.validateFields = function () {\n var isValid = true;\n var dropDownTreeObj;\n if (this.allowValidation) {\n var excludeOprs = ['isnull', 'isnotnull', 'isempty', 'isnotempty'];\n var i = void 0;\n var len = void 0;\n var fieldElem = void 0;\n var indexElem = void 0;\n var valArray = [];\n var groupElem = void 0;\n var index = void 0;\n var dropDownObj = void 0;\n var tempElem = void 0;\n var rule = void 0;\n var ruleElemCln = this.element.querySelectorAll('.e-rule-container');\n for (i = 0, len = ruleElemCln.length; i < len; i++) {\n var validateRule = void 0;\n groupElem = closest(ruleElemCln[i], '.e-group-container');\n rule = this.getParentGroup(groupElem);\n index = 0;\n indexElem = tempElem = ruleElemCln[i];\n if (this.fieldMode === 'DropdownTree') {\n dropDownTreeObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdowntree'), 'dropdowntree');\n if (dropDownTreeObj && dropDownTreeObj.value && dropDownTreeObj.value.length) {\n this.selectedColumn = this.getColumn(dropDownTreeObj.value[0]);\n validateRule = this.selectedColumn.validation;\n }\n }\n else {\n dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdownlist'), 'dropdownlist');\n if (dropDownObj && dropDownObj.value) {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n validateRule = !isNullOrUndefined(dropDownObj.value) && this.selectedColumn.validation;\n }\n }\n fieldElem = tempElem.querySelector('.e-rule-field input.e-control');\n if (validateRule && validateRule.isRequired) {\n while (indexElem && indexElem.previousElementSibling !== null) {\n indexElem = indexElem.previousElementSibling;\n var separateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !indexElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && (indexElem.classList.contains('e-rule-container') || indexElem.classList.contains('e-group-container'))));\n if (!this.enableSeparateConnector || separateCondition) {\n index++;\n }\n }\n fieldElem = tempElem.querySelector('.e-rule-operator .e-control');\n if (!rule.rules[index].operator) {\n if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0 && fieldElem.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(fieldElem.parentElement);\n }\n isValid = false;\n }\n if (rule.rules[index].value instanceof Array) {\n valArray = rule.rules[index].value;\n }\n if (excludeOprs.indexOf(rule.rules[index].operator) < -1 &&\n (isNullOrUndefined(rule.rules[index].value) &&\n rule.rules[index].type !== 'date') || rule.rules[index].value === '' || rule.rules[index].value === null ||\n (rule.rules[index].value instanceof Array && valArray.length < 1)) {\n var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {\n isValid = false;\n }\n for (var j = 0, jLen = valElem.length; j < jLen; j++) {\n var element = valElem[j];\n var elem = void 0;\n if (element.parentElement.className.indexOf('e-searcher') > -1) {\n elem = closest(element, '.e-multi-select-wrapper');\n if (elem.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(elem);\n }\n }\n else if (valElem[j].parentElement.className.indexOf('e-tooltip') < 0 && valElem[j].className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(valElem[j].parentElement);\n }\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (rule.rules[index].type === 'date' && (rule.rules[index].value === null || rule.rules[index].value.indexOf(null) > -1)) {\n var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {\n isValid = false;\n }\n for (var j = 0, jLen = valElem.length; j < jLen; j++) {\n if (valElem[j].parentElement.className.indexOf('e-tooltip') < 0 && valElem[j].className.indexOf('e-tooltip') < 0 && (isNullOrUndefined(rule.rules[index].value) || rule.rules[index].value[j] == null)) {\n this.renderToolTip(valElem[j].parentElement);\n }\n }\n }\n }\n else if ((dropDownObj && dropDownObj.element && isNullOrUndefined(dropDownObj.value)) ||\n (dropDownTreeObj && dropDownTreeObj.element && (isNullOrUndefined(dropDownTreeObj.value) ||\n dropDownTreeObj.value.length < 1))) {\n if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(fieldElem.parentElement);\n }\n isValid = false;\n }\n }\n }\n return isValid;\n };\n QueryBuilder.prototype.refreshLevelColl = function () {\n this.levelColl = {};\n var groupElem = this.element.querySelector('.e-group-container');\n if (groupElem) {\n this.levelColl[groupElem.id] = [0];\n var obj = { groupElement: groupElem, level: [0] };\n this.refreshLevel(obj);\n }\n };\n QueryBuilder.prototype.refreshLevel = function (obj) {\n var ruleList = obj.groupElement.querySelector('.e-rule-list').children;\n var childElem;\n var groupElem = obj.groupElement;\n var i;\n var iLen = ruleList.length;\n var groupCount = 0;\n for (i = 0; i < iLen; i++) {\n childElem = ruleList[i];\n if (childElem.className.indexOf('e-group-container') > -1) {\n obj.level.push(groupCount);\n this.levelColl[childElem.id] = obj.level.slice();\n groupCount++;\n obj.groupElement = childElem;\n obj = this.refreshLevel(obj);\n }\n }\n var ruleListElem = closest(groupElem, '.e-rule-list');\n obj.groupElement = ruleListElem ? closest(ruleListElem, '.e-group-container') : groupElem;\n obj.level = this.levelColl[obj.groupElement.id].slice();\n return obj;\n };\n QueryBuilder.prototype.groupTemplate = function (isConnector) {\n var glueElem;\n var inputElem;\n var dragClsName;\n var labelElem;\n var grpActElem;\n var groupBtn;\n var groupElem = this.createElement('div', { attrs: { class: 'e-group-container' } });\n var groupHdrElem = this.createElement('div', { attrs: { class: 'e-group-header' } });\n var grpBodyElem = this.createElement('div', { attrs: { class: 'e-group-body' } });\n var rulesElem = this.createElement('div', { attrs: { class: 'e-rule-list' } });\n groupElem.appendChild(groupHdrElem);\n grpBodyElem.appendChild(rulesElem);\n groupElem.appendChild(grpBodyElem);\n if (!this.headerTemplate) {\n if (this.allowDragAndDrop) {\n dragClsName = 'e-icons e-drag-qb-rule';\n }\n else {\n dragClsName = 'e-icons e-drag-qb-rule e-hidden';\n }\n var spanDragElement = this.createElement('span', {\n attrs: {\n class: dragClsName, 'aria-label': 'drag handle',\n title: 'drag handle'\n }\n });\n groupHdrElem.appendChild(spanDragElement);\n var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';\n glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });\n if (this.enableSeparateConnector) {\n glueElem.classList.add('e-multi-connector');\n }\n if (this.enableNotCondition) {\n if (this.enableSeparateConnector) {\n inputElem = this.createElement('input', { attrs: { type: 'checkbox', class: 'e-qb-toggle' } });\n }\n else {\n inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });\n }\n glueElem.appendChild(inputElem);\n }\n inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });\n glueElem.appendChild(inputElem);\n labelElem = this.createElement('label', {\n attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },\n innerHTML: this.l10n.getConstant('AND')\n });\n glueElem.appendChild(labelElem);\n inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-or', value: 'OR' } });\n glueElem.appendChild(inputElem);\n labelElem = this.createElement('label', {\n attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },\n innerHTML: this.l10n.getConstant('OR')\n });\n glueElem.appendChild(labelElem);\n groupHdrElem.appendChild(glueElem);\n grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });\n if (this.enableSeparateConnector) {\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-condition-btn' } });\n grpActElem.appendChild(groupBtn);\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-group-btn' } });\n grpActElem.appendChild(groupBtn);\n }\n else {\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-btn' } });\n grpActElem.appendChild(groupBtn);\n }\n groupHdrElem.appendChild(grpActElem);\n }\n return groupElem;\n };\n QueryBuilder.prototype.ruleTemplate = function () {\n var tempElem;\n var clsName;\n var cloneClsName;\n var lockClsName;\n var dragClsName;\n var ruleElem = this.createElement('div');\n var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });\n if (this.allowDragAndDrop) {\n dragClsName = 'e-icons e-drag-qb-rule';\n }\n else {\n dragClsName = 'e-icons e-drag-qb-rule e-hidden';\n }\n var spanDragElement = this.createElement('span', {\n attrs: {\n class: dragClsName, 'aria-label': 'drag handle',\n title: 'drag handle'\n }\n });\n fieldElem.appendChild(spanDragElement);\n var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });\n tempElem.appendChild(filterElem);\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-operator' } });\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-value' } });\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-value-delete' } });\n if (this.showButtons.cloneRule) {\n cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn';\n }\n else {\n cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn e-button-hide';\n }\n if (this.showButtons.lockRule) {\n lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var cloneRuleBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneRule'), type: 'button', class: cloneClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });\n cloneRuleBtnElem.appendChild(spanElement);\n var cloneLockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockRule'), type: 'button', class: lockClsName } });\n spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n cloneLockBtnElem.appendChild(spanElement);\n if (this.showButtons.ruleDelete || isNullOrUndefined(this.showButtons.ruleDelete)) {\n clsName = 'e-removerule e-rule-delete e-css e-btn e-small';\n }\n else {\n clsName = 'e-removerule e-rule-delete e-css e-btn e-small e-button-hide';\n }\n var delBtnElem = this.createElement('button', { attrs: { type: 'button', class: clsName } });\n tempElem.appendChild(cloneRuleBtnElem);\n tempElem.appendChild(cloneLockBtnElem);\n tempElem.appendChild(delBtnElem);\n fieldElem.appendChild(tempElem);\n ruleElem.appendChild(fieldElem);\n return ruleElem;\n };\n QueryBuilder.prototype.addGroupElement = function (isGroup, target, condition, isBtnClick, not, isRoot, rule) {\n var _this = this;\n var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertGroup' };\n if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.addGroupSuccess(observedChangeArgs, isGroup, target, condition, isBtnClick, not, isRoot, rule);\n });\n }\n else {\n this.isInitialLoad = false;\n this.addGroupSuccess(args, isGroup, target, condition, isBtnClick, not, isRoot, rule);\n }\n };\n QueryBuilder.prototype.addGroupSuccess = function (args, isGroup, eventTarget, condition, isBtnClick, not, isRoot, rule) {\n var _this = this;\n if (!args.cancel && (this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount)) {\n var target = eventTarget;\n var dltGroupBtn = void 0;\n var groupID = '';\n if (target.className.indexOf('e-group-container') < 0) {\n groupID = target.querySelector('.e-group-container') && target.querySelector('.e-group-container').id;\n }\n else {\n groupID = target.id;\n }\n if (this.enableSeparateConnector) {\n this.groupElem = this.groupTemplate();\n }\n var groupElem = this.groupElem.cloneNode(true);\n groupElem.setAttribute('id', this.element.id + '_group' + this.groupIdCounter);\n if (this.groupIdCounter === 0 && this.allowDragAndDrop && groupElem.querySelector('.e-drag-qb-rule')) {\n if (groupElem && groupElem.children[0]) {\n groupElem.children[0].classList.add('e-parent-header');\n }\n addClass([groupElem.querySelector('.e-drag-qb-rule')], 'e-hidden');\n }\n if (this.headerTemplate) {\n if (isRoot) {\n isGroup = false;\n groupElem.setAttribute('id', this.element.id + '_group0');\n this.headerTemplateFn(groupElem, not, condition, rule, groupID);\n this.groupIdCounter = 0;\n }\n else {\n this.headerTemplateFn(groupElem, not, condition, rule, groupID);\n }\n }\n this.groupIdCounter++;\n if (!this.headerTemplate) {\n var andInpElem = groupElem.querySelector('.e-btngroup-and');\n var orInpElem = groupElem.querySelector('.e-btngroup-or');\n var andLblElem = groupElem.querySelector('.e-btngroup-and-lbl');\n var orLblElem = groupElem.querySelector('.e-btngroup-or-lbl');\n andInpElem.setAttribute('id', this.element.id + '_and' + this.btnGroupId);\n orInpElem.setAttribute('id', this.element.id + '_or' + this.btnGroupId);\n andInpElem.setAttribute('name', this.element.id + '_and' + this.btnGroupId);\n orInpElem.setAttribute('name', this.element.id + '_and' + this.btnGroupId);\n andLblElem.setAttribute('for', this.element.id + '_and' + this.btnGroupId);\n orLblElem.setAttribute('for', this.element.id + '_or' + this.btnGroupId);\n this.btnGroupId++;\n }\n if (isGroup) {\n var clsName = void 0;\n if (this.showButtons.groupDelete || isNullOrUndefined(this.showButtons.groupDelete)) {\n clsName = 'e-deletegroup';\n }\n else {\n clsName = 'e-deletegroup e-button-hide';\n }\n dltGroupBtn = this.createElement('button', { attrs: { type: 'button', class: clsName } });\n var button = new Button({ iconCss: 'e-icons e-delete-icon', cssClass: 'e-small e-round' });\n button.appendTo(dltGroupBtn);\n dltGroupBtn.setAttribute('title', this.l10n.getConstant('DeleteGroup'));\n rippleEffect(dltGroupBtn, { selector: '.deletegroup' });\n var ruleList = target.querySelector('.e-rule-list');\n var childElems = ruleList.children;\n var grpLen = 0;\n for (var j = 0, jLen = childElems.length; j < jLen; j++) {\n if (childElems[j].className.indexOf('e-group-container') > -1) {\n grpLen += 1;\n }\n }\n if (this.showButtons.cloneGroup && this.cloneGrpBtnClick) {\n if (this.groupIndex === (childElems.length - 1)) {\n ruleList.appendChild(groupElem);\n this.isLastGroup = true;\n }\n else {\n if (this.enableSeparateConnector) {\n var index = 0;\n var tempGroupIndex = this.groupIndex + 1;\n for (var i = 0; i < tempGroupIndex; i++) {\n if (childElems[i].classList.contains('e-rule-container')) {\n tempGroupIndex++;\n index++;\n }\n }\n if (index > 0) {\n index--;\n }\n var idx = this.groupIndex + index + 1;\n childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);\n }\n else {\n var idx = this.groupIndex + 1;\n childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);\n }\n this.isMiddleGroup = true;\n }\n }\n else {\n ruleList.appendChild(groupElem);\n }\n var level = this.levelColl[target.id].slice(0);\n level.push(grpLen);\n this.levelColl[groupElem.id] = level;\n if (this.groupIndex > -1) {\n this.refreshLevelColl();\n }\n if (!this.isImportRules) {\n this.isAddSuccess = true;\n this.addGroups([], target.id.replace(this.element.id + '_', ''));\n this.isAddSuccess = false;\n if (isBtnClick && this.addRuleToNewGroups) {\n this.addRuleElement(groupElem, {});\n }\n }\n if (!this.headerTemplate) {\n var lockClsName = '';\n if (this.showButtons.cloneGroup) {\n lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var cloneBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneGroup'), type: 'button', class: lockClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });\n cloneBtnElem.appendChild(spanElement);\n groupElem.querySelector('.e-group-action').appendChild(cloneBtnElem);\n if (this.showButtons.lockGroup) {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });\n var lockSpanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n lockBtnElem.appendChild(lockSpanElement);\n groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);\n groupElem.querySelector('.e-group-action').appendChild(dltGroupBtn);\n }\n }\n else {\n if (!this.headerTemplate) {\n var lockClsName = '';\n if (this.showButtons.lockGroup) {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n lockBtnElem.appendChild(spanElement);\n groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);\n }\n target.appendChild(groupElem);\n this.levelColl[groupElem.id] = [0];\n }\n if (this.enableNotCondition) {\n if (!this.headerTemplate) {\n var notElem = groupElem.querySelector('.e-qb-toggle');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var tglBtn = void 0;\n if (this.enableSeparateConnector) {\n tglBtn = new CheckBox({ label: this.l10n.getConstant('NOT'), cssClass: 'e-qb-toggle' });\n }\n else {\n tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });\n }\n tglBtn.appendTo(notElem);\n groupElem.querySelector('.e-btngroup-and-lbl').classList.add('e-not');\n if (this.updatedRule && this.updatedRule.not) {\n addClass([notElem], 'e-active-toggle');\n }\n }\n }\n if (this.enableSeparateConnector && !this.headerTemplate) {\n var andElem = groupElem.querySelector('.e-btngroup-and');\n var orElem = groupElem.querySelector('.e-btngroup-or');\n var btnGroup = groupElem.querySelector('.e-btn-group');\n for (var i = 0; i < btnGroup.childNodes.length; i++) {\n if (groupElem.querySelector('.e-btn-group').childNodes[i].textContent.toLowerCase() === 'not') {\n if (!this.enableNotCondition) {\n btnGroup.childNodes[i].style.display = 'none';\n }\n else {\n btnGroup.childNodes[i].classList.add('e-multiconnector');\n }\n }\n else {\n btnGroup.childNodes[i].style.display = 'none';\n }\n }\n var prevSibling = groupElem.previousElementSibling;\n if (prevSibling) {\n if (isNullOrUndefined(this.headerTemplate)) {\n groupElem.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), groupElem);\n var notElem = groupElem.previousElementSibling.childNodes[0];\n if (notElem.classList.contains('e-qb-toggle')) {\n notElem.style.display = 'none';\n }\n }\n if (!this.isImportRules) {\n var groupElement = groupElem.previousElementSibling;\n var newAndElem = groupElement.querySelector('.e-btngroup-and');\n var newOrElem = groupElement.querySelector('.e-btngroup-or');\n if (!andElem.checked && !orElem.checked) {\n var nextSibling = groupElem.nextElementSibling;\n if (nextSibling && nextSibling.classList.contains('e-btn-group')) {\n andElem = nextSibling.querySelector('.e-btngroup-and');\n orElem = nextSibling.querySelector('.e-btngroup-or');\n newAndElem.checked = andElem.checked;\n newOrElem.checked = orElem.checked;\n }\n }\n else if (this.enableSeparateConnector) {\n if (andElem.checked) {\n newAndElem.checked = true;\n }\n if (orElem.checked) {\n newOrElem.checked = true;\n }\n }\n }\n }\n }\n this.updatedRule = null;\n if (this.headerTemplate) {\n var args_1 = {\n requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,\n notCondition: this.enableNotCondition ? not : undefined\n };\n this.trigger('actionBegin', args_1);\n }\n else {\n if (this.enableSeparateConnector) {\n var conditionBtn_1 = groupElem.querySelector('.e-add-condition-btn');\n var btnObj = new Button({ cssClass: this.element.id + '_addConditionbtn', content: this.l10n.getConstant('AddCondition') });\n btnObj.appendTo(conditionBtn_1);\n btnObj.element.onclick = function () {\n _this.addRuleElement(closest(conditionBtn_1, '.e-group-container'), {});\n };\n var groupBtn_1 = groupElem.querySelector('.e-add-group-btn');\n btnObj = new Button({ cssClass: this.element.id + '_addGroupbtn', content: this.l10n.getConstant('AddGroup') });\n btnObj.appendTo(groupBtn_1);\n btnObj.element.onclick = function () {\n _this.addGroupElement(true, closest(groupBtn_1, '.e-group-container'), '', true);\n };\n }\n else {\n var groupBtn = groupElem.querySelector('.e-add-btn');\n var btnObj = new DropDownButton({\n items: this.items,\n cssClass: 'e-round e-small e-caret-hide e-addrulegroup',\n iconCss: 'e-icons e-add-icon',\n beforeOpen: this.selectBtn.bind(this, groupBtn),\n select: this.selectBtn.bind(this, groupBtn)\n });\n btnObj.appendTo(groupBtn);\n groupBtn.setAttribute('title', this.l10n.getConstant('AddButton'));\n }\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n var grpId = target.id.replace(this.element.id + '_', '');\n var chgrpId = groupElem.id.replace(this.element.id + '_', '');\n this.trigger('change', { groupID: grpId, type: 'insertGroup', childGroupID: chgrpId });\n }\n }\n };\n QueryBuilder.prototype.setMultiConnector = function (trgt) {\n if (this.enableSeparateConnector && !this.headerTemplate && trgt.previousElementSibling) {\n var btnGroupElem = this.groupTemplate(true).querySelector('.e-btn-group');\n if (btnGroupElem) {\n trgt.parentElement.insertBefore(btnGroupElem, trgt);\n var notElem = trgt.previousElementSibling.childNodes[0];\n if (notElem.classList.contains('e-qb-toggle')) {\n notElem.style.display = 'none';\n }\n this.addHeaderDiv(trgt);\n }\n }\n };\n QueryBuilder.prototype.addHeaderDiv = function (elem) {\n var prevRule;\n var prevElem = elem.previousElementSibling.previousElementSibling;\n if (prevElem) {\n if (prevElem.id.indexOf('rule') > -1) {\n prevRule = this.getRule(prevElem);\n }\n else {\n prevRule = this.getGroup(prevElem);\n }\n if (!isNullOrUndefined(prevRule) && isNullOrUndefined(prevRule.condition)) {\n prevRule.condition = 'and';\n }\n var orElem = elem.previousElementSibling.querySelector('.e-btngroup-or');\n var andElem = elem.previousElementSibling.querySelector('.e-btngroup-and');\n orElem.disabled = false;\n andElem.disabled = false;\n if (!isNullOrUndefined(prevRule) && prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n };\n QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID, isInitialRule) {\n var template;\n var templateID = this.element.id + '_header';\n var args;\n var groupHdr = groupElem.querySelector('.e-group-header');\n if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr = groupElem;\n }\n if (this.headerTemplate) {\n args = {\n requestType: 'header-template-initialize', ruleID: groupElem.id,\n notCondition: this.enableNotCondition ? not : undefined,\n condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID\n };\n this.trigger('actionBegin', args);\n if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n args.requestType = 'rule-template-create';\n }\n this.headerFn = this.templateParser(this.headerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n template = this.headerFn(args, this, groupElem.id, templateID)[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular) {\n var templateColl = this.headerFn(args, this, groupElem.id, templateID);\n template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isVue3) {\n template = this.headerFn(args, this, groupElem.id, templateID);\n if (this.enableSeparateConnector && (isInitialRule || groupElem.id.indexOf('rule') !== -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < template.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (template[i].nodeName === 'DIV') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template[i];\n break;\n }\n }\n }\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(template, groupHdr);\n }\n }\n else {\n template = this.headerFn(args, this, 'Template', templateID)[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n }\n this.renderReactTemplates();\n }\n return groupElem;\n };\n QueryBuilder.prototype.enableSeparateConnectorInitialRule = function (groupElem, template) {\n var elem = groupElem.nextElementSibling ? groupElem.nextElementSibling : groupElem;\n var group = elem.closest('.e-group-container');\n if (!groupElem.nextElementSibling && group) {\n group = group.nextElementSibling ? group.nextElementSibling : group;\n }\n if (group) {\n group.parentElement.insertBefore(template, group);\n }\n };\n /**\n * Notify the changes to component.\n *\n * @param {string | number | boolean | Date | string[] | number[] | Date[]} value - 'value' to be passed to update the rule value.\n * @param {Element} element - 'element' to be passed to update the rule.\n * @param {string} type - 'type' to be passed to update the rule .\n * @returns {void}.\n */\n QueryBuilder.prototype.notifyChange = function (value, element, type) {\n var grpElement = closest(element, '.e-group-container');\n var rules = this.getParentGroup(grpElement);\n var ruleElement = closest(element, '.e-rule-container');\n var index = 0;\n if (type === 'not') {\n rules.not = value;\n return;\n }\n if (type === 'condition') {\n if (this.enableSeparateConnector) {\n ruleElement = element.parentElement.previousElementSibling;\n if (ruleElement && ruleElement.classList.contains('e-group-container')) {\n ruleElement = ruleElement.querySelectorAll('.e-rule-container')[ruleElement.querySelectorAll('.e-rule-container').length - 1];\n }\n if (ruleElement && ruleElement.classList.contains('e-rule-container')) {\n rules = this.getRule(ruleElement);\n }\n rules.condition = value;\n }\n else {\n rules.condition = value;\n }\n return;\n }\n while (ruleElement && ruleElement.previousElementSibling !== null) {\n ruleElement = ruleElement.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElement.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElement.classList.contains('e-rule-container') ||\n ruleElement.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var rule = rules.rules[index];\n var column = this.getColumn(rule.field);\n var format = this.getFormat(column.format);\n if (column.type === 'date') {\n if (value instanceof Date) {\n value = this.intl.formatDate(value, format);\n }\n else if (value instanceof Array) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] && value[i] instanceof Date) {\n value[i] = this.intl.formatDate(value[i], format);\n }\n }\n }\n }\n if (column.ruleTemplate) {\n this.templateChange(element, value, type);\n }\n else {\n this.isNotified = true;\n this.updateRules(element, value);\n this.isNotified = false;\n }\n };\n QueryBuilder.prototype.templateChange = function (element, value, type) {\n var grpElem = closest(element, '.e-group-container');\n var eventsArgs;\n var rules = grpElem && this.getParentGroup(grpElem);\n var ruleElem = closest(element, '.e-rule-container');\n var index = 0;\n if (this.allowValidation) {\n this.validateValue(rules, ruleElem);\n }\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var rule = rules && rules.rules[index];\n if (type === 'field') {\n this.selectedColumn = this.getColumn(value);\n }\n else if (rule) {\n this.selectedColumn = this.getColumn(rule.field);\n }\n var operVal;\n this.previousColumn = rule && this.getColumn(rule.field);\n var beforeRules = this.getValidRules(this.rule);\n if (this.selectedColumn) {\n if (this.selectedColumn.operators) {\n operVal = this.selectedColumn.operators;\n }\n else {\n operVal = this.customOperators[this.selectedColumn.type + 'Operator'];\n }\n }\n var arrOper = ['in', 'notin', 'between', 'notbetween'];\n var prevOper;\n switch (type) {\n case 'field':\n if (isNullOrUndefined(value)) {\n if (!isNullOrUndefined(rule)) {\n rule.field = '';\n rule.label = '';\n rule.type = '';\n rule.value = '';\n rule.operator = '';\n }\n else {\n return;\n }\n }\n else {\n rule.field = value;\n rule.label = this.selectedColumn.label;\n rule.type = this.selectedColumn.type;\n rule.value = '';\n rule.operator = operVal[0].value;\n }\n break;\n case 'operator':\n prevOper = rule.operator;\n rule.operator = value;\n if (arrOper.indexOf(rule.operator) > -1) {\n rule.value = [];\n }\n else if (arrOper.indexOf(prevOper) > -1) {\n rule.value = '';\n }\n break;\n case 'value':\n rule.value = value;\n }\n this.changeRuleTemplate(this.selectedColumn, element);\n this.filterRules(beforeRules, this.getValidRules(this.rule), type);\n if (this.selectedColumn && this.selectedColumn.ruleTemplate) {\n if (type === 'field' || type === 'operator') {\n var grpEle = closest(element, '.e-rule-container');\n this.destroyControls(grpEle, true);\n detach(grpEle.querySelector('.e-rule-field'));\n var ruleElement = this.appendRuleElem(closest(grpEle, '.e-group-container'), this.selectedColumn, 'change', grpEle.id, type, rule);\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleElement.className = 'e-rule-container e-vertical-mode';\n }\n else {\n ruleElement.className = 'e-rule-container e-horizontal-mode';\n }\n if (!this.enableSeparateConnector) {\n if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-rule-container') > -1) {\n if (ruleElement.className.indexOf('e-joined-rule') < 0) {\n ruleElement.className += ' e-joined-rule';\n }\n if (ruleElement.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {\n ruleElement.previousElementSibling.className += ' e-prev-joined-rule';\n }\n }\n }\n if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-group-container') > -1 &&\n ruleElement.className.indexOf('e-separate-rule') < 0) {\n ruleElement.className += ' e-separate-rule';\n }\n var args = {\n requestType: 'template-create', action: type, ruleID: grpEle.id,\n fields: this.fields, rule: rule\n };\n eventsArgs = {\n groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),\n value: rule.field, type: 'field'\n };\n this.trigger('actionBegin', args);\n this.trigger('change', eventsArgs);\n }\n }\n };\n QueryBuilder.prototype.changeValue = function (i, args) {\n var _this = this;\n var element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.isNumInput && typeof args.value === 'number') || (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox'))\n && (this.selectedColumn.validation && (this.selectedColumn.validation.max !== Number.MAX_VALUE || this.selectedColumn.validation.min > 0))) {\n this.isNumInput = false;\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (args.element && args.element.classList.contains('e-multiselect')) {\n var multiSelectArgs = args;\n element = multiSelectArgs.element;\n }\n else if (args.event) {\n element = args.event.target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element = args.currentTarget;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element = args.element;\n }\n if (!element) {\n return;\n }\n if (element.className.indexOf('e-day') > -1 || element.className.indexOf('e-today') > -1 || element.className.indexOf('e-cell') > -1) {\n var calenderArgs = args;\n element = calenderArgs.element;\n }\n var groupElem = closest(element, '.e-group-container');\n var ruleElem = closest(element, '.e-rule-container');\n var groupID = groupElem && groupElem.id.replace(this.element.id + '_', '');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n var dateElement = args;\n var dropDownObj;\n if (dateElement.element && dateElement.element.className.indexOf('e-datepicker') > -1) {\n element = dateElement.element;\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');\n if (dropDownObj) {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n }\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');\n if (dropDownObj) {\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n }\n var value;\n var rbValue;\n if (element.className.indexOf('e-radio') > -1) {\n rbValue = parseInt(element.id.split('valuekey')[1], 10);\n if (this.fieldMode === 'Default') {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n if (this.selectedColumn.columns) {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-rule-sub-filter .e-dropdownlist'), 'dropdownlist');\n this.selectedColumn = this.getColumn(dropDownObj.value);\n }\n }\n else {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n if (this.selectedColumn.values) {\n value = this.selectedColumn.values[rbValue];\n }\n else {\n var valColl = [true, false];\n value = valColl[rbValue];\n }\n }\n else if (element.className.indexOf('e-multiselect') > -1) {\n value = getComponent(element, 'multiselect').value;\n }\n else {\n value = args.value;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value = Number(args.currentTarget.value);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var elem = args.currentTarget;\n var numericTextBoxObj = getInstance(elem, NumericTextBox);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n if (isNaN(value) && elem.value.indexOf(decimalSeparator) !== -1) {\n value = this.intl.getNumberParser({ format: 'n' })(elem.value);\n }\n if (!isNaN(value)) {\n numericTextBoxObj.value = value;\n }\n this.isNumInput = true;\n }\n }\n if (args.name === 'input' && this.immediateModeDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setInterval(function () { _this.filterValue(groupID, ruleID, value, i, element); }, this.immediateModeDelay);\n }\n else {\n this.filterValue(groupID, ruleID, value, i, element);\n }\n };\n QueryBuilder.prototype.filterValue = function (grID, rlID, value, i, ele) {\n var _this = this;\n var eventsArgs = { groupID: grID, ruleID: rlID, value: value, cancel: false, type: 'value' };\n window.clearInterval(this.timer);\n if (!this.isImportRules) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.changeValueSuccessCallBack(observedChangeArgs, ele, i, grID, rlID);\n });\n }\n else {\n this.changeValueSuccessCallBack(eventsArgs, ele, i, grID, rlID);\n }\n };\n QueryBuilder.prototype.changeValueSuccessCallBack = function (args, element, i, groupID, ruleID) {\n if (!args.cancel) {\n this.updateRules(element, args.value, i);\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: ruleID, value: args.value, cancel: false, type: 'value' });\n }\n }\n };\n QueryBuilder.prototype.fieldClose = function (id) {\n if (this.isFieldChange || this.isDestroy) {\n return;\n }\n this.isFieldClose = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ddl = getComponent(id, 'dropdownlist');\n var item = ddl.popupObj && ddl.popupObj.element.querySelector('.e-active');\n var itemData = ddl.getItemData();\n ddl.value = itemData.value;\n var customArgs = {\n element: ddl.element, value: itemData.value, isInteracted: true,\n previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null\n };\n if (ddl.previousValue !== ddl.value) {\n this.changeField(customArgs);\n }\n this.isFieldChange = false;\n };\n QueryBuilder.prototype.changeField = function (args) {\n if (args.isInteracted) {\n if (isNullOrUndefined(args.value)) {\n return;\n }\n this.isFieldChange = true;\n this.prevItemData = args.itemData;\n var fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);\n if (this.fieldMode === 'DropdownTree' && fieldElem !== null) {\n var ddtElem = fieldElem.querySelector('.e-dropdowntree.e-control');\n var ddt = getComponent(ddtElem, 'dropdowntree');\n if (column) {\n if (column.type === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ddt.value = args.oldValue;\n ddt.dataBind();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNullOrUndefined(args.oldValue)) {\n ddtElem.value = '';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getLabelFromColumn(args.oldValue[0]);\n ddtElem.value = result;\n }\n return;\n }\n else {\n if (!isNullOrUndefined(args.value[0])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ddt.value = args.value[0];\n ddt.dataBind();\n var result = this.getLabelFromColumn(args.value[0]);\n ddtElem.value = result;\n }\n }\n }\n else {\n return;\n }\n }\n this.destroySubFields(fieldElem);\n this.subFieldElem = null;\n this.isNotValueChange = true;\n if (column && column.ruleTemplate) {\n this.templateChange(args.element, column.field, 'field');\n }\n else if (column && column.columns && column.columns[0].ruleTemplate) {\n this.templateChange(args.element, column.columns[0].field, 'field');\n }\n else {\n var groupElem = closest(args.element, '.e-group-container');\n var rules = this.getParentGroup(groupElem);\n var ruleElem = closest(args.element, '.e-rule-container');\n var index = 0;\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n rules.rules[index].value = '';\n this.changeRule(rules.rules[index], args);\n }\n }\n };\n QueryBuilder.prototype.changeRule = function (rule, ddlArgs) {\n if (!ddlArgs.itemData) {\n if (this.fieldMode === 'DropdownTree') {\n var ddt = getComponent(ddlArgs.element, 'dropdowntree');\n if (ddt.value == null) {\n return;\n }\n }\n else {\n return;\n }\n }\n var tempRule = {};\n var filterElem = closest(ddlArgs.element, '.e-rule-filter');\n filterElem = filterElem ? filterElem : closest(ddlArgs.element, '.e-rule-sub-filter');\n var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');\n if (this.fieldMode === 'DropdownTree' && filterElem !== null) {\n ddlObj = getComponent(ddlArgs.element, 'dropdowntree');\n }\n var element = closest(ddlArgs.element, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n this.changeFilter(filterElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n };\n QueryBuilder.prototype.changeFilter = function (flt, dl, grID, rl, tmpRl, dArg) {\n var _this = this;\n if (flt) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ddlValue = void 0;\n if (this.fieldMode === 'DropdownTree') {\n ddlValue = (dl.value[0]);\n }\n else {\n ddlValue = this.isImportRules ? this.GetRootColumnName(dl.value) : dl.value;\n }\n this.selectedColumn = this.getColumn(ddlValue);\n var ruleElem = closest(flt, '.e-rule-container');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n var eventsArgs = {\n groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?\n dl.value[0] : dl.value, cancel: false, type: 'field'\n };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);\n });\n }\n else {\n this.fieldChangeSuccess(eventsArgs, tmpRl, flt, rl, dArg);\n }\n }\n else {\n var operatorElem = closest(dArg.element, '.e-rule-operator');\n this.changeOperator(flt, operatorElem, dl, grID, rl, tmpRl, dArg);\n }\n };\n QueryBuilder.prototype.changeOperator = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n flt, opr, dl, grID, rl, tmpRl, dArg) {\n var _this = this;\n var ruleElem;\n var ruleID;\n var eventsArgs;\n if (opr) {\n ruleElem = closest(opr, '.e-rule-container');\n ruleID = ruleElem.id.replace(this.element.id + '_', '');\n eventsArgs = { groupID: grID, ruleID: ruleID, selectedIndex: dl.index, cancel: false, type: 'operator' };\n if (!this.isImportRules) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.operatorChangeSuccess(observedChangeArgs, flt, tmpRl, rl, dArg);\n });\n }\n else {\n this.operatorChangeSuccess(eventsArgs, flt, tmpRl, rl, dArg);\n }\n }\n else {\n this.changeRuleValues(flt, rl, tmpRl, dArg);\n }\n };\n QueryBuilder.prototype.fieldChangeSuccess = function (args, tempRule, filterElem, rule, ddlArgs) {\n var ruleElem = closest(filterElem, '.e-rule-container');\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var element = closest(ddlArgs.element, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');\n var tooltipElem = ruleElem.querySelectorAll('.e-tooltip.e-input-group');\n for (var i = 0; i < tooltipElem.length; i++) {\n getComponent(tooltipElem[i], 'tooltip').destroy();\n }\n if (!args.cancel) {\n if (isNullOrUndefined(this.selectedColumn)) {\n return;\n }\n tempRule.type = this.selectedColumn.type;\n if (ruleElem.querySelector('.e-template')) {\n rule.value = '';\n }\n if (this.selectedColumn.type === 'object' && this.fieldMode === 'Default') {\n tempRule.type = this.selectedColumn.columns[0].type;\n while (this.selectedColumn.columns) {\n this.createSubFields(filterElem, rule, tempRule, ddlArgs);\n }\n }\n else {\n this.destroySubFields(filterElem);\n this.changeOperator(filterElem, operatorElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n }\n }\n else {\n this.changeOperator(filterElem, operatorElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.destroySubFields = function (filterElem) {\n while (filterElem && filterElem.nextElementSibling.classList.contains('e-rule-sub-filter')) {\n this.destroyControls(filterElem);\n filterElem.nextElementSibling.remove();\n }\n };\n QueryBuilder.prototype.createSubFields = function (filterElem, rule, tempRule, ddlArgs) {\n var subFieldValue = false;\n var fieldElem = closest(filterElem, '.e-rule-field');\n var tempElem = this.createElement('div', { attrs: { class: 'e-rule-sub-filter', id: 'subfilter' + this.subFilterCounter } });\n fieldElem.insertBefore(tempElem, fieldElem.querySelector('.e-rule-operator'));\n var ruleId = closest(tempElem, '.e-rule-container').id;\n var subFieldElem = this.createElement('input', { attrs: { type: 'text', id: ruleId + '_subfilterkey' + this.subFilterCounter } });\n tempElem.appendChild(subFieldElem);\n var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';\n var ddlField;\n ddlField = {\n dataSource: this.selectedColumn.columns,\n fields: this.fields,\n placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.selectedColumn.columns.length > 5) ? height : 'auto'),\n change: this.changeField.bind(this),\n index: 0,\n open: this.popupOpen.bind(this, false)\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleId + '_subfilterkey' + this.subFilterCounter);\n if (this.isImportRules || (this.previousColumn && this.previousColumn.ruleTemplate &&\n this.GetRootColumnName(rule.field) === this.GetRootColumnName(this.previousColumn.field))) {\n var subField = this.selectedColumn.columns;\n for (var i = 0; i < subField.length; i++) {\n if (rule.field === subField[i].field || rule.field.indexOf(subField[i].field + this.separator) > -1) {\n dropDownList.value = subField[i].field;\n this.selectedColumn = subField[i];\n subFieldValue = true;\n break;\n }\n }\n }\n this.subFilterCounter++;\n this.subFieldElem = subFieldElem;\n // eslint-disable-next-line\n ddlArgs.itemData = ddlArgs.itemData;\n if (!subFieldValue && this.selectedColumn.columns) {\n if (!subFieldValue && this.isImportRules) {\n dropDownList.value = null;\n }\n this.selectedColumn = this.selectedColumn.columns[0];\n }\n this.previousColumn = this.selectedColumn;\n if (!this.selectedColumn.columns) {\n this.changeRuleValues(tempElem, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.operatorChangeSuccess = function (eventsArgs, filterElem, tempRule, rule, ddlArgs) {\n if (!eventsArgs.cancel) {\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var valElem = operatorElem.nextElementSibling;\n var dropDownObj = getComponent(ddlArgs.element, 'dropdownlist');\n var prevOper = rule.operator ? rule.operator.toString().toLowerCase() : '';\n tempRule.operator = dropDownObj.value.toString();\n var currOper = tempRule.operator.toLowerCase();\n if (tempRule.operator.toLowerCase().indexOf('between') > -1 || (tempRule.operator.toLowerCase().indexOf('in') > -1\n && tempRule.operator.toLowerCase().indexOf('contains') < 0)) {\n filterElem = operatorElem.previousElementSibling;\n tempRule.type = rule.type;\n if (tempRule.operator.toLowerCase().indexOf('in') < 0 || prevOper.indexOf('in') < 0) {\n rule.value = [];\n }\n }\n else if (typeof rule.value === 'object' && rule.value !== null) {\n rule.value = rule.value.length > 0 ? rule.value[0] : rule.type === 'number' ? 0 : '';\n }\n if (ddlArgs.previousItemData) {\n var prevValue = ddlArgs.previousItemData.value.toString().toLowerCase();\n if ((prevValue.indexOf('between') > -1 || (prevValue.indexOf('in') > -1 || (prevValue.indexOf('null') > -1)\n || (prevValue.indexOf('empty') > -1)) && prevValue.indexOf('contains') < 0)) {\n filterElem = operatorElem.previousElementSibling;\n tempRule.type = rule.type;\n }\n }\n if ((prevOper.indexOf('in') > -1 && prevOper.indexOf('in') < 5) && (currOper.indexOf('in') > -1\n && currOper.indexOf('in') < 5)) {\n filterElem = null;\n }\n if (tempRule.operator.indexOf('null') > -1 || (tempRule.operator.indexOf('empty') > -1)) {\n var parentElem = operatorElem.parentElement.querySelector('.e-rule-value');\n var tooltipElem = parentElem.querySelector('.e-tooltip.e-input-group');\n if (tooltipElem) {\n getComponent(tooltipElem, 'tooltip').destroy();\n }\n else if (prevOper.indexOf('in') > -1) {\n tooltipElem = parentElem.querySelector('.e-tooltip');\n if (tooltipElem) {\n getComponent(tooltipElem, 'tooltip').destroy();\n }\n }\n removeClass([parentElem], 'e-show');\n addClass([parentElem], 'e-hide');\n }\n if (valElem && this.getColumn(rule.field).template) {\n filterElem = operatorElem.previousElementSibling;\n }\n if (valElem.children.length === 0) {\n filterElem = operatorElem.previousElementSibling;\n }\n this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.changeRuleValues = function (filterElem, rule, tempRule, ddlArgs) {\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var isSub;\n var ddlObj;\n var operatorList;\n var oprElem;\n if (filterElem) {\n operatorElem = filterElem.nextElementSibling;\n if (filterElem.classList.contains('e-rule-sub-filter')) {\n tempRule.type = this.selectedColumn.type;\n isSub = operatorElem.classList.contains('e-rule-sub-filter');\n operatorElem = isSub ? operatorElem.nextElementSibling : operatorElem;\n }\n addClass([operatorElem], 'e-operator');\n if (operatorElem.childElementCount) {\n ddlObj = getComponent(operatorElem.querySelector('.e-dropdownlist'), 'dropdownlist');\n tempRule.operator = ddlObj.value;\n var fieldObj = void 0;\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(filterElem.querySelector('.e-dropdowntree'), 'dropdowntree');\n }\n else {\n fieldObj = getComponent(filterElem.querySelector('.e-dropdownlist'), 'dropdownlist');\n }\n tempRule.type = this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]).type :\n this.getColumn(fieldObj.value).type;\n var itemData = ddlArgs.itemData;\n if (ddlObj.value !== '') {\n this.renderValues(operatorElem, itemData, ddlArgs.previousItemData, true, rule, tempRule, ddlArgs.element);\n }\n }\n else {\n var ruleId = closest(operatorElem, '.e-rule-container').id;\n oprElem = this.createElement('input', { attrs: { type: 'text', id: ruleId + '_operatorkey' } });\n operatorElem.appendChild(oprElem);\n if (this.selectedColumn.operators) {\n operatorList = this.selectedColumn.operators;\n }\n else if (ddlArgs.itemData) {\n operatorList = this.customOperators[this.selectedColumn.type + 'Operator'];\n }\n var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';\n var operator_2;\n if (rule.operator) {\n operatorList.forEach(function (obj) {\n if ('value' in obj && typeof obj.value === 'string' && obj.value.toLowerCase() === rule.operator.toLowerCase()) {\n operator_2 = obj.value;\n }\n });\n }\n var value = operator_2 ? operator_2 : operatorList[0].value;\n var ddlIdx = 0;\n if (!this.autoSelectOperator) {\n value = '';\n ddlIdx = -1;\n }\n if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1 || this.prvtEvtTgrDaD)) {\n value = rule ? (rule.operator ? rule.operator : value) : value;\n }\n var ddlOperator = void 0;\n ddlOperator = {\n dataSource: operatorList,\n fields: { text: 'key', value: 'value' },\n placeholder: this.l10n.getConstant('SelectOperator'),\n popupHeight: ((operatorList.length > 5) ? height : 'auto'),\n change: this.changeField.bind(this),\n index: ddlIdx,\n value: value,\n open: this.popupOpen.bind(this, false)\n };\n if (this.operatorModel) {\n ddlOperator = __assign({}, ddlOperator, this.operatorModel);\n }\n var dropDownList = new DropDownList(ddlOperator);\n dropDownList.appendTo('#' + ruleId + '_operatorkey');\n tempRule.operator = (rule && rule.operator !== '' && !isNullOrUndefined(rule.operator)) ? rule.operator : operatorList[0].value;\n if (this.isImportRules) {\n tempRule.type = this.selectedColumn.type;\n tempRule.operator = rule.operator;\n }\n if (!isNullOrUndefined(value) && value !== '') {\n this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);\n }\n else if (this.autoSelectField && this.autoSelectOperator) {\n this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);\n }\n }\n }\n if (!this.isImportRules) {\n this.updateRules(ddlArgs.element, ddlArgs.item);\n }\n };\n QueryBuilder.prototype.popupOpen = function (isField, args) {\n if (this.enableRtl) {\n addClass([args.popup.element], 'e-rtl');\n }\n if (isField) {\n this.isFieldClose = false;\n }\n };\n QueryBuilder.prototype.destroyControls = function (target, isRuleTemplate) {\n var element = isRuleTemplate ? target : target.nextElementSibling;\n var inputElement = element.querySelectorAll('input.e-control');\n var divElement = element.querySelectorAll('div.e-control:not(.e-handle)');\n var columns = this.columns;\n for (var i = 0, len = inputElement.length; i < len; i++) {\n if (inputElement[i].classList.contains('e-textbox')) {\n getComponent(inputElement[i], 'textbox').destroy();\n detach(select('input#' + inputElement[i].id, element));\n }\n else if (inputElement[i].classList.contains('e-dropdownlist')) {\n if (this.allowValidation && inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(inputElement[i].parentElement, 'tooltip').destroy();\n }\n getComponent(inputElement[i], 'dropdownlist').destroy();\n }\n else if (inputElement[i].classList.contains('e-radio')) {\n getComponent(inputElement[i], 'radio').destroy();\n }\n else if (inputElement[i].classList.contains('e-numerictextbox')) {\n getComponent(inputElement[i], 'numerictextbox').destroy();\n detach(select('input#' + inputElement[i].id, element));\n }\n else if (inputElement[i].classList.contains('e-datepicker')) {\n getComponent(inputElement[i], 'datepicker').destroy();\n }\n else if (inputElement[i].classList.contains('e-multiselect')) {\n getComponent(inputElement[i], 'multiselect').destroy();\n }\n else if (inputElement[i].className.indexOf('e-template') > -1) {\n var clsName = inputElement[i].className;\n for (var j = 0, jLen = columns.length; j < jLen; j++) {\n if (columns[j].template && clsName.indexOf(columns[j].field) > -1) {\n this.templateDestroy(columns[j], inputElement[i].id);\n break;\n }\n }\n }\n if (document.getElementById(inputElement[i].id)) {\n detach(inputElement[i]);\n }\n }\n for (var i = 0, len = divElement.length; i < len; i++) {\n if (divElement[i].className.indexOf('e-template') > -1) {\n var clsName = divElement[i].className;\n for (var j = 0, jLen = columns.length; j < jLen; j++) {\n if (columns[j].template && clsName.indexOf(columns[j].field) > -1) {\n this.templateDestroy(columns[j], divElement[i].id);\n break;\n }\n }\n }\n detach(divElement[i]);\n }\n var templateElement = element.querySelectorAll('.e-template:not(.e-control)');\n for (var i = 0, len = templateElement.length; i < len; i++) {\n detach(templateElement[i]);\n }\n };\n QueryBuilder.prototype.templateDestroy = function (column, elemId) {\n var template;\n if (typeof column.template !== 'string' || column.template.destroy === undefined) {\n template = column.template;\n }\n else {\n return;\n }\n var temp = template.destroy;\n if (template.destroy) {\n var templateElements = void 0;\n if (document.getElementById(elemId)) {\n templateElements = closest(document.getElementById(elemId), '.e-rule-field').querySelectorAll('.e-template');\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp({ field: column.field, elementId: elemId, elements: templateElements });\n }\n else {\n template.destroy({ field: column.field, elementId: elemId, elements: templateElements });\n }\n }\n };\n /**\n * Return values bound to the column.\n *\n * @param {string} field - 'field' to be passed to get the field values.\n * @returns {object[]} - Values bound to the column\n */\n QueryBuilder.prototype.getValues = function (field) {\n var original = {};\n var result = [];\n var value;\n var fieldColl = [];\n if (this.separator.length > 0) {\n fieldColl = field.split(this.separator);\n }\n var dataSource = this.dataColl;\n if (this.dataColl[1]) {\n for (var i = 0, iLen = dataSource.length; i < iLen; i++) {\n var data = {};\n if (fieldColl.length > 1) {\n var dataObj = dataSource[i];\n var fieldStr = void 0;\n for (var j = 0, jLen = fieldColl.length; j < jLen; j++) {\n fieldStr = fieldColl[j];\n if (fieldColl.length === (j + 1)) {\n value = dataObj[\"\" + fieldStr];\n if (Number(dataObj[\"\" + fieldStr]) === dataObj[\"\" + fieldStr] && dataObj[\"\" + fieldStr] % 1 !== 0) {\n value = dataObj[\"\" + fieldStr].toString();\n }\n }\n else {\n dataObj = dataObj[\"\" + fieldStr];\n }\n }\n }\n else {\n value = dataSource[i][\"\" + field];\n if (Number(dataSource[i][\"\" + field]) === dataSource[i][\"\" + field] && dataSource[i][\"\" + field] % 1 !== 0) {\n value = dataSource[i][\"\" + field].toString();\n }\n }\n if (!(value in original)) {\n original[\"\" + value] = 1;\n if (fieldColl.length > 1) {\n this.createNestedObject(data, fieldColl, value);\n }\n else {\n data[\"\" + field] = value;\n }\n result.push(data);\n }\n }\n }\n return result;\n };\n QueryBuilder.prototype.createNestedObject = function (obj, fieldColl, value) {\n var key;\n var lastIndex = fieldColl.length - 1;\n for (var k = 0; k < lastIndex; ++k) {\n key = fieldColl[k];\n if (!(key in obj)) {\n obj[\"\" + key] = {};\n }\n obj = obj[\"\" + key];\n }\n obj[fieldColl[lastIndex]] = value;\n };\n QueryBuilder.prototype.getDistinctValues = function (dataSource, field) {\n var original = {};\n var result = [];\n var nest = [];\n var value = '';\n var isNested = field.indexOf(this.separator);\n var _loop_2 = function (i, iLen) {\n value = '';\n if (isNested === 0) {\n value = dataSource[i][\"\" + field];\n }\n else {\n nest = field.split(this_2.separator);\n // eslint-disable-next-line @typescript-eslint/tslint/config\n nest.forEach(function (element) {\n if (value) {\n value = value[\"\" + element];\n }\n else {\n value = dataSource[i][\"\" + element];\n }\n });\n }\n if (Number(dataSource[i][\"\" + field]) === dataSource[i][\"\" + field] && dataSource[i][\"\" + field] % 1 !== 0) {\n value = dataSource[i][\"\" + field].toString();\n }\n var data = {};\n if (!(value in original)) {\n original[\"\" + value] = 1;\n if (isNested === 0) {\n data[\"\" + field] = value;\n }\n else {\n data[nest[nest.length - 1]] = value;\n }\n result.push(data);\n }\n };\n var this_2 = this;\n for (var i = 0, iLen = dataSource.length; i < iLen; i++) {\n _loop_2(i, iLen);\n }\n return result;\n };\n QueryBuilder.prototype.renderMultiSelect = function (rule, parentId, i, selectedValue, values) {\n var isFetched = false;\n var ds;\n var isValues = false;\n this.isGetNestedData = false;\n if (this.dataColl[1]) {\n if (Object.keys(this.dataColl[1]).indexOf(rule.field) > -1) {\n isFetched = true;\n ds = this.getDistinctValues(this.dataColl, rule.field);\n }\n }\n isFetched = rule.columns ? false : isFetched;\n if (!this.dataColl.length && values.length) {\n isValues = true;\n }\n var multiSelectValue;\n multiSelectValue = {\n dataSource: isValues ? values : (isFetched ? ds : this.dataManager),\n query: new Query([rule.field]),\n fields: { text: this.selectedRule.field, value: this.selectedRule.field },\n placeholder: this.l10n.getConstant('SelectValue'),\n value: selectedValue,\n mode: 'CheckBox',\n width: '100%',\n change: this.changeValue.bind(this, i),\n close: this.closePopup.bind(this, i),\n actionBegin: this.multiSelectOpen.bind(this, parentId + '_valuekey' + i),\n open: this.popupOpen.bind(this, false)\n };\n if (this.valueModel && this.valueModel.multiSelectModel) {\n multiSelectValue = __assign({}, multiSelectValue, this.valueModel.multiSelectModel);\n }\n var multiSelectObj = new MultiSelect(multiSelectValue);\n multiSelectObj.appendTo('#' + parentId + '_valuekey' + i);\n this.updateRules(multiSelectObj.element, selectedValue, 0);\n };\n QueryBuilder.prototype.multiSelectOpen = function (parentId, args) {\n if (this.dataSource instanceof DataManager) {\n var element = document.getElementById(parentId);\n var dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), this.fieldMode === 'DropdownTree' ? 'dropdowntree' : 'dropdownlist');\n if (this.fieldMode === 'DropdownTree') {\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n else {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n }\n var value = this.selectedColumn.field;\n var isFetched = false;\n if (this.dataColl[1]) {\n if (Object.keys(this.dataColl[1]).indexOf(value) > -1) {\n isFetched = true;\n }\n var isNest = value.indexOf(this.separator);\n if (isNest !== 0 && this.isGetNestedData) {\n isFetched = true;\n }\n }\n if (!isFetched) {\n args.cancel = true;\n this.bindMultiSelectData(element, value);\n }\n }\n };\n QueryBuilder.prototype.bindMultiSelectData = function (element, value) {\n this.getMultiSelectData(element, value);\n };\n QueryBuilder.prototype.getMultiSelectData = function (element, value) {\n var _this = this;\n var dummyData;\n var deferred = new Deferred();\n var data = this.dataManager.executeQuery(new Query().select(value));\n var multiselectObj = getComponent(element, 'multiselect');\n multiselectObj.hideSpinner();\n this.createSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n showSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n data.then(function (e) {\n if (e.actual && e.actual.result) {\n dummyData = e.actual.result;\n }\n else {\n dummyData = e.result;\n }\n _this.dataColl = extend(_this.dataColl, dummyData, [], true);\n multiselectObj.dataSource = _this.getDistinctValues(_this.dataColl, value);\n _this.isGetNestedData = true;\n hideSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n }).catch(function (e) {\n deferred.reject(e);\n });\n };\n QueryBuilder.prototype.createSpinner = function (element) {\n var spinnerElem = this.createElement('span', { attrs: { class: 'e-qb-spinner' } });\n element.appendChild(spinnerElem);\n createSpinner({ target: spinnerElem, width: Browser.isDevice ? '16px' : '14px' });\n };\n QueryBuilder.prototype.closePopup = function (i, args) {\n var element = document.getElementById(args.popup.element.id.replace('_popup', ''));\n if (element) {\n var ms = getComponent(element, 'multiselect');\n if (ms) {\n var value = ms.value;\n this.updateRules(element, value, i);\n }\n }\n };\n QueryBuilder.prototype.processTemplate = function (target, itemData, rule, tempRule) {\n var container = closest(target, '.e-rule-container');\n var tempElements = container.querySelectorAll('.e-template');\n var filterElem = container.querySelector('.e-rule-filter .e-filter-input');\n var ddlObj = this.fieldMode === 'DropdownTree' ? getComponent(filterElem, 'dropdowntree')\n : getComponent(container.querySelector('.e-rule-filter .e-filter-input'), 'dropdownlist');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(ddlObj.value[0]) : this.getColumn(ddlObj.value);\n if (typeof itemData.template === 'string' || itemData.template.write === undefined) {\n var args = {\n rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,\n requestType: 'value-template-create'\n };\n this.trigger('actionBegin', args);\n }\n else {\n var template = itemData.template;\n if (typeof template.write === 'string') {\n getValue(template.write, window)({\n elements: tempElements.length > 1 ? tempElements : tempElements[0], values: rule.value,\n operator: tempRule.operator, field: column.field, dataSource: column.values\n });\n }\n else if (typeof itemData.template !== 'function') {\n itemData.template.write({\n elements: tempElements.length > 1 ? tempElements : tempElements[0],\n values: rule.value, operator: tempRule.operator, field: column.field, dataSource: column.values\n });\n }\n }\n };\n QueryBuilder.prototype.getItemData = function (parentId) {\n var fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');\n var parentFieldObj = this.element.querySelector(\"#\" + parentId);\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');\n }\n else if (parentFieldObj) {\n var subFieldObjList = parentFieldObj.querySelectorAll('.e-rule-sub-filter');\n if (subFieldObjList.length > 0) {\n var lastSubFieldObj = subFieldObjList[subFieldObjList.length - 1].querySelector('.e-dropdownlist');\n fieldObj = getComponent(lastSubFieldObj, 'dropdownlist');\n }\n }\n return this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]) : this.getColumn(fieldObj.value);\n };\n QueryBuilder.prototype.setDefaultValue = function (parentId, isArryValue, isNumber) {\n var itemData = this.getItemData(parentId);\n if (isNullOrUndefined(itemData.value)) {\n return isNumber ? isArryValue ? [0, 0] : 0 : isArryValue ? [] : '';\n }\n if (isArryValue) {\n if (!(itemData.value instanceof Array)) {\n return [itemData.value];\n }\n }\n else {\n if (itemData.value instanceof Array) {\n return itemData.value[0];\n }\n }\n return itemData.value;\n };\n QueryBuilder.prototype.renderStringValue = function (parentId, rule, operator, idx, ruleValElem) {\n var selectedVal;\n var columnData = this.getItemData(parentId);\n var selectedValue;\n var isTemplate = (typeof columnData.template === 'string');\n if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value !== '') {\n selectedValue = rule.value;\n }\n else {\n selectedValue = this.setDefaultValue(parentId, false, false);\n }\n if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleValElem.style.width = '100%';\n }\n else {\n ruleValElem.style.width = null;\n ruleValElem.style.minWidth = '200px';\n }\n }\n else {\n if (operator === 'in' || operator === 'notin') {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n selectedValue = selectedVal.join(',');\n }\n if (operator === 'between' || operator === 'notbetween') {\n if (selectedValue.length > 1) {\n selectedValue = selectedValue[idx];\n }\n }\n var txtBox = void 0;\n txtBox = {\n placeholder: this.l10n.getConstant('SelectValue'),\n input: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.textBoxModel) {\n txtBox = __assign({}, txtBox, this.valueModel.textBoxModel);\n }\n var inputobj = new TextBox(txtBox);\n inputobj.appendTo('#' + parentId + '_valuekey' + idx);\n inputobj.value = selectedValue;\n inputobj.dataBind();\n }\n };\n QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {\n var columnData = this.getItemData(parentId);\n var isTemplate = (typeof columnData.template === 'string');\n var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||\n typeof rule.value === 'number') ? rule.value : this.setDefaultValue(parentId, false, true);\n if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n ruleValElem.style.width = '100%';\n }\n else {\n ruleValElem.style.minWidth = '200px';\n ruleValElem.style.width = null;\n }\n }\n else if (operator === 'in' || operator === 'notin') {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n var selVal = selectedVal.join(',');\n var txtInp = void 0;\n txtInp = {\n placeholder: this.l10n.getConstant('SelectValue'),\n input: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.textBoxModel) {\n txtInp = __assign({}, txtInp, this.valueModel.textBoxModel);\n }\n var input = new TextBox(txtInp);\n input.appendTo('#' + parentId + '_valuekey' + idx);\n input.value = selVal;\n input.dataBind();\n }\n else {\n itemData = columnData;\n var min = (itemData.validation && itemData.validation.min) ? itemData.validation.min : 0;\n var max = (itemData.validation && itemData.validation.max) ? itemData.validation.max : Number.MAX_VALUE;\n var format = itemData.format ? itemData.format : 'n';\n if (length > 1 && rule) {\n selectedVal = rule.value[idx] ? rule.value[idx] : this.setDefaultValue(parentId, true, true);\n }\n var numericTxt = void 0;\n numericTxt = {\n value: (selectedVal instanceof Array) ? selectedVal[idx] : selectedVal,\n format: format, min: min, max: max, width: '100%',\n step: itemData.step ? itemData.step : 1,\n change: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.numericTextBoxModel) {\n numericTxt = __assign({}, numericTxt, this.valueModel.numericTextBoxModel);\n }\n var numeric = new NumericTextBox(numericTxt);\n numeric.appendTo('#' + parentId + '_valuekey' + idx);\n numeric.element.setAttribute('aria-label', itemData.label + ' ' + 'Value');\n numeric.element.oninput = this.changeValue.bind(this, idx);\n }\n };\n QueryBuilder.prototype.processValueString = function (value, type) {\n var numArr = [];\n var strArr = value.split(',');\n if (type === 'string') {\n return strArr;\n }\n else {\n for (var k = 0, kLen = strArr.length; k < kLen; k++) {\n numArr.push(Number(strArr[k]));\n }\n return numArr;\n }\n };\n QueryBuilder.prototype.parseDate = function (value, format) {\n var formatOpt;\n var selectedValue;\n if (format) {\n var dParser = this.intl.getDateParser({ skeleton: 'full', type: 'dateTime' });\n formatOpt = this.getFormat(format);\n selectedValue = dParser(value);\n if (isNullOrUndefined(selectedValue)) {\n selectedValue = this.intl.parseDate(value, formatOpt);\n }\n }\n else {\n selectedValue = new Date(value);\n }\n return selectedValue;\n };\n QueryBuilder.prototype.renderControls = function (target, itemData, rule, tempRule, isRendered) {\n addClass([target.parentElement.querySelector('.e-rule-value')], 'e-value');\n removeClass([target.parentElement.querySelector('.e-rule-value')], 'e-hide');\n addClass([target.parentElement.querySelector('.e-rule-value')], 'e-show');\n if (itemData.template && (itemData.template.create || isRendered)) {\n this.processTemplate(target, itemData, rule, tempRule);\n }\n else {\n var length_1;\n if (tempRule.type === 'boolean') {\n length_1 = this.selectedColumn.values ? this.selectedColumn.values.length : 2;\n }\n else {\n length_1 = tempRule.operator && tempRule.operator.toString().toLowerCase().indexOf('between') > -1 ? 2 : 1;\n }\n var parentId = closest(target, '.e-rule-container').id;\n var ruleValElem = void 0;\n var operator = tempRule.operator.toString();\n if (target.className.indexOf('e-rule-operator') > -1 || target.className.indexOf('e-rule-filter') > -1) {\n ruleValElem = target.parentElement.querySelector('.e-rule-value');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n ruleValElem.style.width = '100%';\n }\n else {\n if (operator !== 'in' && operator !== 'notin') {\n addClass([ruleValElem], 'e-custom-value');\n }\n else {\n removeClass([ruleValElem], 'e-custom-value');\n }\n }\n for (var i = 0; i < length_1; i++) {\n switch (tempRule.type) {\n case 'string':\n {\n this.renderStringValue(parentId, rule, operator, i, ruleValElem);\n }\n break;\n case 'number':\n {\n this.renderNumberValue(parentId, rule, operator, i, ruleValElem, itemData, length_1);\n }\n break;\n case 'boolean':\n this.processBoolValues(itemData, rule, parentId, i);\n break;\n case 'date':\n {\n var selectedValue = new Date();\n var selVal = void 0;\n var column = void 0;\n var format = itemData.format;\n var datepick = void 0;\n var datePicker = void 0;\n var place = this.l10n.getConstant('SelectValue');\n var isTemplate = (typeof itemData.template === 'string');\n if (rule.value && !isNullOrUndefined(format)) {\n selVal = (length_1 > 1) ? rule.value[i] : rule.value;\n selectedValue = this.parseDate(selVal, format) || new Date();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!itemData.field && !itemData.key && itemData.value) {\n if (itemData.value instanceof Date) {\n selectedValue = itemData.value;\n }\n else {\n selectedValue = this.parseDate(itemData.value, itemData.format);\n }\n }\n if (!itemData.format && rule && rule.field !== '') {\n column = this.getColumn(rule.field);\n format = column.format;\n }\n if ((this.isImportRules || this.isPublic || isTemplate) && rule) {\n column = this.getColumn(rule.field);\n format = column.format;\n if (rule.value) {\n selVal = (length_1 > 1) ? rule.value[i] : rule.value;\n selectedValue = this.parseDate(selVal, column.format);\n }\n else {\n selectedValue = rule.value;\n }\n }\n if (format) {\n var formatObj = this.getFormat(format);\n if (formatObj.skeleton) {\n datePicker = {\n locale: this.getLocale(), value: selectedValue,\n placeholder: place, format: formatObj, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n else {\n datePicker = {\n value: selectedValue, locale: this.getLocale(), placeholder: place,\n format: formatObj.format, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n }\n else {\n datePicker = {\n locale: this.getLocale(), value: selectedValue,\n placeholder: place, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n datepick.appendTo('#' + parentId + '_valuekey' + i);\n if (!rule.value) {\n var elem = document.getElementById(parentId + '_valuekey' + i);\n this.updateRules(elem, selectedValue, null, this.isNotValueChange);\n this.isNotValueChange = false;\n }\n }\n break;\n }\n }\n }\n }\n };\n QueryBuilder.prototype.processBoolValues = function (itemData, rule, parentId, i) {\n var isCheck = false;\n var value;\n var orgValue;\n if (isNullOrUndefined(rule.type) && itemData) {\n rule.type = itemData.type;\n }\n var label;\n if (itemData.values) {\n var values = itemData.values;\n if (rule.type === 'boolean' && !isNullOrUndefined(rule.value)) {\n isCheck = values[i].toLowerCase() === rule.value.toString().toLowerCase();\n }\n else if (itemData.value) {\n isCheck = values[i].toLowerCase() === itemData.value.toString().toLowerCase();\n }\n else if (i === 0) {\n isCheck = true;\n }\n orgValue = value = label = values[i];\n }\n else {\n var values = [true, false];\n if (rule.type === 'boolean' && !isNullOrUndefined(rule.value)) {\n isCheck = values[i].toString().toLowerCase() === rule.value.toString().toLowerCase();\n }\n else if (itemData.value) {\n isCheck = values[i].toString().toLowerCase() === itemData.value.toString().toLowerCase();\n }\n else if (i === 0) {\n if (typeof rule.value === 'boolean') {\n isCheck = rule.value ? true : false;\n }\n else {\n isCheck = true;\n }\n }\n if (typeof rule.value === 'boolean' && i === 1) {\n isCheck = !rule.value ? true : false;\n }\n value = values[i].toString();\n orgValue = values[i];\n label = this.l10n.getConstant(['True', 'False'][i]);\n }\n var radioBtn;\n radioBtn = {\n label: label, name: parentId + 'default', checked: isCheck, value: value,\n change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.radioButtonModel) {\n radioBtn = __assign({}, radioBtn, this.valueModel.radioButtonModel);\n }\n var radiobutton = new RadioButton(radioBtn);\n radiobutton.appendTo('#' + parentId + '_valuekey' + i);\n if (isCheck) {\n this.updateRules(radiobutton.element, orgValue, 0, true);\n }\n };\n QueryBuilder.prototype.getOperatorIndex = function (ddlObj, rule) {\n var i;\n var dataSource = ddlObj.dataSource;\n var len = dataSource.length;\n for (i = 0; i < len; i++) {\n if (rule.operator === ddlObj.dataSource[i].value) {\n return i;\n }\n }\n return 0;\n };\n QueryBuilder.prototype.getPreviousItemData = function (prevItemData, column) {\n if (this.isFieldClose && prevItemData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n prevItemData = this.getColumn(prevItemData.value ? prevItemData.value : prevItemData.field);\n }\n if (column && column.template && prevItemData && Object.keys(prevItemData).length < 4) {\n prevItemData.template = column.template;\n }\n return prevItemData;\n };\n QueryBuilder.prototype.renderValues = function (target, itemData, prevItemData, isRender, rule, tempRule, element) {\n var subFldElem = target.previousElementSibling;\n var filtElem = subFldElem.getElementsByTagName('input')[0];\n var filtObj = this.fieldMode === 'DropdownTree' ? getComponent(filtElem, 'dropdowntree')\n : getComponent(filtElem, 'dropdownlist');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(filtObj.value[0])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n : this.getColumn(filtObj.value);\n this.selectedRule = column;\n var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');\n if (isRender) {\n itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;\n if (itemData.operators) {\n ddlObj.value = null;\n ddlObj.dataBind();\n ddlObj.dataSource = itemData.operators;\n ddlObj.index = this.getOperatorIndex(ddlObj, rule);\n ddlObj.value = tempRule.operator = ddlObj.dataSource[ddlObj.index].value;\n if (!this.autoSelectOperator) {\n ddlObj.index = -1;\n tempRule.operator = ddlObj.value = '';\n }\n else {\n ddlObj.dataBind();\n }\n }\n }\n var operator = tempRule.operator.toString();\n var isTempRendered = false;\n if (!(operator.indexOf('null') > -1 || operator.indexOf('isempty') > -1 || operator.indexOf('isnotempty') > -1)) {\n var parentId = closest(target, '.e-rule-container').id;\n prevItemData = this.getPreviousItemData(prevItemData, column);\n if (prevItemData && prevItemData.template === undefined) {\n if (prevItemData.columns) {\n prevItemData = this.getColumn(rule.field);\n }\n }\n else if (this.fieldMode === 'DropdownTree' && prevItemData === undefined) {\n prevItemData = this.getColumn(rule.field);\n }\n if (prevItemData && prevItemData.template) {\n this.templateDestroy(prevItemData, parentId + '_valuekey0');\n var elem = select('#' + parentId + '_valuekey0', target.nextElementSibling);\n if (elem && !elem.classList.contains('e-control')) {\n detach(select('#' + parentId + '_valuekey0', target.nextElementSibling));\n }\n if (typeof prevItemData.template === 'string' || prevItemData.template.create === undefined) {\n if (target.nextElementSibling.classList.contains('e-template-value')) {\n this.clearQBTemplate([parentId]);\n }\n target.nextElementSibling.innerHTML = '';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && !isNullOrUndefined(prevItemData.key) && this.fieldMode === 'DropdownTree') {\n delete prevItemData.template;\n }\n }\n if (isRender) {\n this.validateValue(rule, closest(target, '.e-rule-container'));\n this.destroyControls(target);\n }\n if (this.isImportRules || (ddlObj && ddlObj.value !== '')) {\n if (column) {\n itemData.template = column.template;\n }\n if (itemData.template) {\n addClass([target.nextElementSibling], 'e-template-value');\n itemData.template = column.template;\n isTempRendered = this.setColumnTemplate(itemData, parentId, column.field, itemData.value ||\n operator, target, rule);\n }\n if (isTempRendered) {\n var parentElem = target.parentElement.querySelector('.e-rule-value');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n parentElem.style.width = '100%';\n }\n else {\n parentElem.style.width = '200px';\n }\n }\n else {\n removeClass([target.nextElementSibling], 'e-template-value');\n var inputLen = 1;\n if (tempRule.type === 'boolean') {\n inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;\n }\n else {\n inputLen = (operator && operator.toLowerCase().indexOf('between') > -1) ? 2 : 1;\n }\n for (var i = 0; i < inputLen; i++) {\n var valElem = this.createElement('input', { attrs: { type: 'text', id: parentId + '_valuekey' + i } });\n target.nextElementSibling.appendChild(valElem);\n }\n }\n this.renderControls(target, itemData, rule, tempRule, isTempRendered);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && !isNullOrUndefined(itemData.key) && itemData.template && this.fieldMode === 'DropdownTree') {\n delete itemData.template;\n }\n }\n }\n else {\n var parentElem = target.parentElement.querySelector('.e-rule-value');\n if (parentElem) {\n removeClass([parentElem], 'e-show');\n addClass([parentElem], 'e-hide');\n }\n }\n };\n QueryBuilder.prototype.setColumnTemplate = function (itemData, ruleID, field, operator, target, rule) {\n var _this = this;\n var args;\n var isRendered = true;\n if (!itemData.template) {\n return true;\n }\n else {\n if (typeof itemData.template === 'string' || itemData.template.create === undefined) {\n args = {\n requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,\n renderTemplate: true\n };\n this.trigger('actionBegin', args, function (observedActionArgs) {\n isRendered = _this.actionBeginSuccessCallBack(observedActionArgs, itemData, ruleID, field, target);\n });\n return isRendered;\n }\n else {\n var valElem = void 0;\n var template = itemData.template;\n if (typeof template.create === 'string') {\n valElem = getValue(template.create, window)({ field: field, operator: operator });\n }\n else {\n valElem = template.create({ field: field, operator: operator });\n }\n if (valElem instanceof Element) {\n valElem.id = ruleID + '_valuekey0';\n addClass([valElem], 'e-template');\n target.nextElementSibling.appendChild(valElem);\n if (field.indexOf(' ') < 0) {\n addClass([valElem], 'e-' + field);\n }\n }\n else if (valElem instanceof Array) {\n addClass(valElem, 'e-template');\n for (var i = 0, iLen = valElem.length; i < iLen; i++) {\n valElem[i].id = ruleID + '_valuekey' + i;\n target.nextElementSibling.appendChild(valElem[i]);\n }\n }\n addClass([target.nextElementSibling], 'e-template-value');\n return true;\n }\n }\n };\n QueryBuilder.prototype.actionBeginSuccessCallBack = function (args, itemData, ruleID, field, target) {\n if (args.renderTemplate) {\n var valElem = void 0;\n this.columnTemplateFn = this.templateParser(typeof itemData.template === 'function' ? itemData.template : itemData.template);\n var templateID = this.element.id + field;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n valElem = this.columnTemplateFn(args, this, ruleID, templateID)[0];\n target.nextElementSibling.appendChild(valElem);\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if (this.isAngular) {\n var valElemColl = this.columnTemplateFn(args, this, ruleID, templateID);\n valElem = (valElemColl[0].nodeType === 3) ? valElemColl[1] : valElemColl[0];\n target.nextElementSibling.appendChild(valElem);\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if (this.isVue3) {\n valElem = this.columnTemplateFn(args, this, 'Template', templateID);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(valElem, target.nextElementSibling);\n }\n else {\n valElem = this.columnTemplateFn(args, this, 'Template', templateID)[0];\n target.nextElementSibling.appendChild(valElem);\n }\n addClass([target.nextElementSibling], 'e-template-value');\n this.renderReactTemplates();\n return true;\n }\n else {\n return false;\n }\n };\n QueryBuilder.prototype.updateValues = function (element, rule) {\n var idx = 1;\n if (element.className.indexOf('e-template') > -1) {\n idx = 3;\n }\n var controlName = element.className.split(' e-')[idx];\n var i = parseInt(element.id.slice(-1), 2);\n var column;\n var format;\n var selectedDate;\n var value;\n var radioBtnObj;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textboxValue;\n switch (controlName) {\n case 'checkbox':\n value = getComponent(element, controlName).value;\n rule.value = (value !== '') ? value : undefined;\n break;\n case 'textbox':\n textboxValue = getComponent(element, controlName).value;\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = textboxValue;\n }\n else if (['in', 'notin'].some(function (op) { return rule.operator.indexOf(op) !== -1; })\n && rule.operator.indexOf('contains') === -1) {\n rule.value = textboxValue ?\n (rule.type === 'string' ? textboxValue.split(',').map(function (val) { return val.trim(); }) :\n textboxValue.split(',').map(Number)) : [];\n }\n else {\n rule.value = textboxValue;\n }\n break;\n case 'dropdownlist':\n rule.value = getComponent(element, controlName).value;\n break;\n case 'radio':\n radioBtnObj = getComponent(element, controlName);\n if (radioBtnObj.checked) {\n if (typeof rule.value === 'boolean') {\n rule.value = radioBtnObj.value === 'true';\n }\n else {\n if (this.getColumn(rule.field).values) {\n rule.value = radioBtnObj.value;\n }\n else {\n rule.value = radioBtnObj.value === 'true';\n }\n }\n }\n radioBtnObj.refresh();\n break;\n case 'numerictextbox':\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = getComponent(element, controlName).value;\n }\n else {\n rule.value = getComponent(element, controlName).value;\n }\n break;\n case 'datepicker':\n column = this.getColumn(rule.field);\n format = this.getFormat(column.format);\n selectedDate = getComponent(element, controlName).value;\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = this.intl.formatDate(selectedDate, format);\n }\n else if (isNullOrUndefined(format.format) && selectedDate) {\n rule.value = this.intl.formatDate(selectedDate);\n }\n else if (selectedDate) {\n rule.value = this.intl.formatDate(selectedDate, format);\n }\n else {\n rule.value = selectedDate;\n }\n break;\n case 'multiselect':\n rule.value = getComponent(element, controlName).value;\n break;\n }\n };\n QueryBuilder.prototype.updateRules = function (target, selectedValue, i, isNotTrigger) {\n var groupElem = closest(target, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n var ruleElem = closest(target, '.e-rule-container');\n var index = 0;\n var dropDownObj;\n var eventsArgs;\n var groupID = groupElem.id.replace(this.element.id + '_', '');\n var beforeRules = this.getValidRules(this.rule);\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var operator = rule.rules[index].operator ? rule.rules[index].operator.toString() : '';\n ruleElem = closest(target, '.e-rule-container');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n if (closest(target, '.e-rule-filter') || closest(target, '.e-rule-sub-filter')) {\n if (this.subFieldElem) {\n target = this.subFieldElem;\n }\n dropDownObj = this.fieldMode === 'DropdownTree' ? getComponent(target, 'dropdowntree') :\n getComponent(target, 'dropdownlist');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n : this.getColumn(dropDownObj.value);\n if (!this.isImportRules && rule.rules[index].field &&\n rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {\n if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)\n || (operator.indexOf('empty') > -1)) {\n rule.rules[index].value = '';\n }\n }\n this.selectedColumn = this.getColumn(this.selectedColumn.field);\n rule.rules[index].field = this.selectedColumn.field;\n rule.rules[index].type = this.selectedColumn.type;\n rule.rules[index].label = this.selectedColumn.label;\n var ruleElement = closest(target, '.e-rule-filter');\n ruleElement = ruleElement ? ruleElement : closest(target, '.e-rule-sub-filter');\n var element = ruleElement.nextElementSibling.querySelector('input.e-control');\n element = element ? element : ruleElement.nextElementSibling.nextElementSibling.querySelector('input.e-control');\n operator = getComponent(element, 'dropdownlist').value.toString();\n rule.rules[index].operator = operator;\n var valueContainer = ruleElement.nextElementSibling.nextElementSibling;\n var elementCln = valueContainer.querySelectorAll('input.e-control');\n if (elementCln.length < 1) {\n elementCln = valueContainer.querySelectorAll('div.e-control');\n }\n if (elementCln.length < 1) {\n elementCln = valueContainer.querySelectorAll('.e-template');\n }\n eventsArgs = { groupID: groupID, ruleID: ruleID, value: rule.rules[index].field, type: 'field' };\n for (var i_1 = 0; i_1 < elementCln.length; i_1++) {\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n rule.rules[index].value = null;\n continue;\n }\n this.updateValues(elementCln[i_1], rule.rules[index]);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', eventsArgs);\n }\n if (this.allowValidation && rule.rules[index].field && target.parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(target.parentElement, 'tooltip').destroy();\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'field');\n }\n else if (closest(target, '.e-rule-operator')) {\n dropDownObj = getComponent(target, 'dropdownlist');\n rule.rules[index].operator = dropDownObj.value.toString();\n var inputElem = ruleElem.querySelectorAll('.e-rule-value input.e-control');\n eventsArgs = { groupID: groupID, ruleID: ruleID, value: dropDownObj.value, type: 'operator' };\n if (this.allowValidation && rule.rules[index].operator && target.parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(target.parentElement, 'tooltip').destroy();\n }\n if (inputElem.length > 1 && !(inputElem[0].className.indexOf('e-template') > -1)) {\n rule.rules[index].value = [];\n }\n for (var i_2 = 0; i_2 < inputElem.length; i_2++) {\n if (rule.rules[index].operator.indexOf('null') > -1 || rule.rules[index].operator.indexOf('empty') > -1) {\n rule.rules[index].value = null;\n continue;\n }\n else if (inputElem[i_2].classList.contains('e-template')) {\n continue;\n }\n this.updateValues(inputElem[i_2], rule.rules[index]);\n }\n if (!this.isImportRules) {\n this.trigger('change', eventsArgs);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'operator');\n }\n else if (closest(target, '.e-rule-value')) {\n this.ruleValueUpdate(target, selectedValue, rule, index, groupElem, ruleElem, i);\n if (!isNotTrigger) {\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'value');\n }\n }\n };\n QueryBuilder.prototype.filterRules = function (beforeRule, afterRule, type) {\n var beforeRuleStr = JSON.stringify({ condition: beforeRule.condition, not: beforeRule.not, rule: beforeRule.rules });\n var afetrRuleStr = JSON.stringify({ condition: afterRule.condition, not: afterRule.not, rule: afterRule.rules });\n if (beforeRuleStr !== afetrRuleStr) {\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('ruleChange', { previousRule: beforeRule, rule: afterRule, type: type });\n }\n }\n };\n QueryBuilder.prototype.ruleValueUpdate = function (target, selectedValue, rule, index, groupElem, ruleElem, i) {\n var eventsArgs;\n var oper;\n var arrOperator = ['in', 'between', 'notin', 'notbetween'];\n if (rule.rules[index].operator) {\n oper = rule.rules[index].operator.toString().toLowerCase();\n }\n if (selectedValue !== null) {\n if (target.className.indexOf('e-multiselect') > -1 && rule.rules[index].type === 'number' &&\n !this.isNotified) {\n var selVal = [];\n var dupSelectedValue = selectedValue;\n for (var k = 0, kLen = dupSelectedValue.length; k < kLen; k++) {\n if (typeof dupSelectedValue[k] === 'string') {\n selVal.push(parseFloat(dupSelectedValue[k]));\n }\n }\n if (selVal.length) {\n selectedValue = selVal;\n }\n }\n if (this.isNotified) {\n rule.rules[index].value = selectedValue;\n eventsArgs = { groupID: groupElem.id, ruleID: ruleElem.id, value: rule.rules[index].value, type: 'value' };\n if (!this.isImportRules) {\n this.trigger('change', eventsArgs);\n }\n }\n else if (target.className.indexOf('e-spin') > -1 || target.className.indexOf('e-numeric') > -1) {\n if (arrOperator.indexOf(oper) > -1) {\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else if (target.className.indexOf('e-radio') > -1) {\n rule.rules[index].value = selectedValue;\n }\n else if (target.className.indexOf('e-multiselect') > -1) {\n rule.rules[index].value = selectedValue;\n }\n else if (target.className.indexOf('e-textbox') > -1) {\n if (oper === 'in' || oper === 'notin') {\n if (rule.rules[index].type === 'string') {\n rule.rules[index].value = this.processValueString(selectedValue, rule.rules[index].type);\n }\n else {\n rule.rules[index].value = this.processValueString(selectedValue, rule.rules[index].type);\n }\n }\n else if (oper === 'between' || oper === 'notbetween') {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else if (target.className.indexOf('e-datepicker') > -1) {\n var format = this.getFormat(this.getColumn(this.selectedColumn.field).format);\n if (format.type) {\n if (arrOperator.indexOf(oper) > -1) {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = this.intl.formatDate(selectedValue, format);\n }\n else {\n rule.rules[index].value = this.intl.formatDate(selectedValue, format);\n }\n }\n }\n this.validateValue(rule, ruleElem, index);\n }\n else {\n if (target.className.indexOf('e-datepicker') > -1) {\n if (arrOperator.indexOf(oper) > -1) {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n };\n QueryBuilder.prototype.validateValue = function (rule, ruleElem, index) {\n if (isNullOrUndefined(rule) && isNullOrUndefined(ruleElem)) {\n return;\n }\n if (!isNullOrUndefined(index)) {\n rule = rule.rules[index];\n }\n var isObject = typeof (rule.value) === 'object';\n if (this.allowValidation && (isNullOrUndefined(index) || (isObject ? rule.value.length > 0 : rule.value))) {\n var valElem = ruleElem.querySelectorAll('.e-rule-value .e-control');\n if (valElem.length > 0) {\n if (valElem[0].className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[0], 'tooltip').destroy();\n }\n else if (valElem[0].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[0].parentElement, 'tooltip').destroy();\n }\n if (valElem[1] && valElem[1].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[1].parentElement, 'tooltip').destroy();\n }\n if (valElem[2] && valElem[2].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[2].parentElement, 'tooltip').destroy();\n }\n }\n }\n };\n QueryBuilder.prototype.getFormat = function (format) {\n var formatOptions;\n if (format) {\n if (typeof (format) === 'string') {\n formatOptions = { type: 'dateTime' };\n if (format === 'short' || format === 'yMd') {\n formatOptions.type = 'date';\n formatOptions.skeleton = format;\n }\n else {\n formatOptions.format = format;\n }\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: format.skeleton };\n }\n }\n else {\n formatOptions = { type: 'date', skeleton: 'yMd' };\n }\n return formatOptions;\n };\n QueryBuilder.prototype.findGroupByIdx = function (groupIdx, rule, isRoot) {\n var ruleColl = rule.rules;\n var dupRuleColl = [];\n if (!isRoot) {\n for (var j = 0, jLen = ruleColl.length; j < jLen; j++) {\n rule = ruleColl[j];\n if (rule.rules) {\n dupRuleColl.push(rule);\n }\n }\n return dupRuleColl[groupIdx];\n }\n return rule;\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n QueryBuilder.prototype.destroy = function () {\n this.isDestroy = true;\n var queryElement = this.element;\n if (!queryElement) {\n return;\n }\n var element;\n var i;\n var len;\n var tooltip;\n _super.prototype.destroy.call(this);\n element = this.element.querySelectorAll('.e-addrulegroup');\n len = element.length;\n for (i = 0; i < len; i++) {\n getComponent(element[i], 'dropdown-btn').destroy();\n detach(element[i]);\n }\n tooltip = this.element.querySelectorAll('.e-rule-filter .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n element = this.element.querySelectorAll('.e-rule-filter .e-control:not(.e-tooltip)');\n len = element.length;\n for (i = 0; i < len; i++) {\n if (getComponent(element[i], 'dropdownlist')) {\n getComponent(element[i], 'dropdownlist').destroy();\n }\n else {\n getComponent(element[i], 'dropdowntree').destroy();\n }\n detach(element[i]);\n }\n tooltip = this.element.querySelectorAll('.e-rule-operator .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n element = this.element.querySelectorAll('.e-rule-operator .e-control:not(.e-tooltip)');\n len = element.length;\n for (i = 0; i < len; i++) {\n if (getComponent(element[i], 'dropdownlist')) {\n getComponent(element[i], 'dropdownlist').destroy();\n detach(element[i]);\n }\n }\n tooltip = this.element.querySelectorAll('.e-rule-value .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n this.isImportRules = false;\n this.unWireEvents();\n this.levelColl[this.element.id + '_group0'] = [0];\n this.element.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.portals && this.portals.length) {\n this.clearQBTemplate();\n }\n var popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');\n if (popupElement) {\n for (i = 0; i < popupElement.length; i++) {\n popupElement[i].remove();\n }\n }\n classList(this.element, [], ['e-rtl', 'e-responsive', 'e-device']);\n this.isDestroy = false;\n };\n /**\n * Adds single or multiple rules.\n *\n * @param {RuleModel[]} rule - 'rule collection' to be passed to add the rules.\n * @param {string} groupID - 'group id' to be passed to add the rule in groups.\n * @returns {void}.\n */\n QueryBuilder.prototype.addRules = function (rule, groupID) {\n groupID = this.element.id + '_' + groupID;\n this.isPublic = true;\n for (var i = 0, len = rule.length; i < len; i++) {\n this.addRuleElement(document.getElementById(groupID), rule[i]);\n }\n this.isPublic = false;\n };\n /**\n * Adds single or multiple groups, which contains the collection of rules.\n *\n * @param {RuleModel[]} groups - 'group collection' to be passed to add the groups.\n * @param {string} groupID - 'group id' to be passed to add the groups.\n * @returns {void}.\n */\n QueryBuilder.prototype.addGroups = function (groups, groupID) {\n if (this.isAddSuccess || this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount) {\n groupID = this.element.id + '_' + groupID;\n var groupElem = document.getElementById(groupID);\n var rule = this.getParentGroup(groupElem);\n var grouplen = groups.length;\n if (grouplen) {\n this.isPublic = true;\n for (var i = 0, len = groups.length; i < len; i++) {\n this.updatedRule = {\n isLocked: groups[i].isLocked, condition: groups[i].condition,\n not: groups[i].not\n };\n this.importRules(groups[i], groupElem, false, groups[i].not);\n }\n this.isPublic = false;\n }\n else {\n var condition = 'and';\n var not = false;\n var isLocked = false;\n if (this.updatedRule) {\n condition = this.updatedRule.condition;\n not = this.updatedRule.not;\n isLocked = this.updatedRule.isLocked;\n }\n if (this.groupIndex < 0) {\n if (this.enableNotCondition) {\n rule.rules.push({ 'condition': condition, 'not': not, rules: [] });\n }\n else {\n rule.rules.push({ 'condition': condition, rules: [] });\n }\n }\n else {\n if (this.enableNotCondition) {\n rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, not: not, rules: [], isLocked: isLocked });\n }\n else {\n rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, rules: [], isLocked: isLocked });\n }\n }\n }\n if (!this.headerTemplate) {\n this.disableRuleCondition(groupElem, rule, null, this.enableSeparateConnector ? true : null);\n }\n }\n };\n QueryBuilder.prototype.initWrapper = function () {\n this.isInitialLoad = true;\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableSeparateConnector) {\n addClass([this.element], 'e-multi-connector');\n }\n if (this.enableRtl) {\n addClass([this.element], 'e-rtl');\n }\n if (this.width) {\n this.element.style.width = this.width;\n }\n if (this.height) {\n this.element.style.height = this.height;\n }\n if (this.rule.rules.length) {\n this.isImportRules = true;\n }\n else {\n this.addGroupElement(false, this.element);\n }\n if (Browser.isDevice || (window.innerWidth < 768 && !this.isPropChange) || this.displayMode === 'Vertical') {\n if (Browser.isDevice || window.innerWidth < 768) {\n this.element.style.width = '100%';\n this.element.classList.add('e-device');\n }\n removeClass(this.element.querySelectorAll('.e-rule-container'), 'e-horizontal-mode');\n addClass(this.element.querySelectorAll('.e-rule-container'), 'e-vertical-mode');\n this.displayMode = 'Vertical';\n }\n else {\n this.displayMode = 'Horizontal';\n }\n if (this.summaryView) {\n if (this.isImportRules) {\n this.renderSummary();\n }\n else {\n this.renderSummaryCollapse();\n }\n }\n else {\n if (this.columns && this.columns.length && this.isImportRules) {\n this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not, false, this.rule);\n var mRules = extend({}, this.rule, {}, true);\n this.isRefreshed = true;\n this.setGroupRules(mRules);\n this.isRefreshed = false;\n }\n else if (this.columns && this.columns.length) {\n this.addRuleElement(this.element.querySelector('.e-group-container'), {});\n }\n this.notGroupRtl();\n if (this.readonly) {\n this.enableReadonly();\n }\n var buttons = this.element.querySelectorAll('label.e-btn');\n var button = void 0;\n for (var i = 0; i < buttons.length; i++) {\n button = buttons.item(i);\n rippleEffect(button, { selector: '.e-btn' });\n }\n }\n };\n QueryBuilder.prototype.renderSummary = function () {\n var contentElem = this.createElement('div', {\n attrs: {\n class: 'e-summary-content',\n id: this.element.id + '_summary_content'\n }\n });\n var textElem = this.createElement('textarea', { attrs: { class: 'e-summary-text', readonly: 'true' }, styles: 'max-height:500px' });\n var editElem = this.createElement('button', { attrs: { type: 'button', class: 'e-edit-rule e-css e-btn e-small e-flat e-primary' } });\n var divElem = this.createElement('div', { attrs: { class: 'e-summary-btndiv' } });\n contentElem.appendChild(textElem);\n textElem.textContent = this.getSqlFromRules(this.rule);\n editElem.textContent = this.l10n.getConstant('Edit');\n divElem.appendChild(editElem);\n contentElem.appendChild(divElem);\n this.element.appendChild(contentElem);\n };\n QueryBuilder.prototype.renderSummaryCollapse = function () {\n var collapseElem = this.createElement('div', {\n attrs: {\n class: 'e-collapse-rule e-icons',\n title: this.l10n.getConstant('SummaryViewTitle')\n }\n });\n this.element.querySelector('.e-group-header').appendChild(collapseElem);\n };\n QueryBuilder.prototype.columnSort = function () {\n if (this.sortDirection && this.sortDirection.toLowerCase() === 'descending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortByDesc('field'));\n }\n else if (this.sortDirection && this.sortDirection.toLowerCase() === 'ascending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortBy('field'));\n }\n };\n QueryBuilder.prototype.onChangeNotGroup = function () {\n this.element.innerHTML = '';\n this.groupIdCounter = 0;\n if (!this.headerTemplate) {\n if (this.enableNotCondition) {\n var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });\n if (this.groupElem.querySelector('.e-btn-group')) {\n this.groupElem.querySelector('.e-btn-group').insertBefore(inputElem, this.groupElem.querySelector('.e-btngroup-and'));\n }\n }\n else {\n this.groupElem.querySelector('.e-qb-toggle').remove();\n }\n }\n this.setProperties({ rule: this.checkNotGroup(this.rule) }, true);\n this.initWrapper();\n };\n QueryBuilder.prototype.notGroupRtl = function () {\n if (this.enableRtl) {\n addClass(this.element.querySelectorAll('.e-btn-group'), 'e-rtl');\n }\n else {\n removeClass(this.element.querySelectorAll('.e-btn-group'), 'e-rtl');\n }\n };\n QueryBuilder.prototype.checkNotGroup = function (rule) {\n var orgRule;\n if (rule.rules) {\n for (var i = 0; i < rule.rules.length; i++) {\n orgRule = rule.rules[i];\n orgRule = this.checkNotGroup(orgRule);\n rule.rules[i] = orgRule;\n }\n }\n if (!isNullOrUndefined(rule.not)) {\n if (this.enableNotCondition) {\n rule.not = false;\n }\n delete rule.not;\n }\n else if (this.enableNotCondition && !isNullOrUndefined(rule.condition)) {\n rule.not = false;\n }\n return rule;\n };\n QueryBuilder.prototype.onPropertyChanged = function (newProp, oldProp) {\n var properties = Object.keys(newProp);\n this.isPropChange = true;\n var groupElem = this.element.querySelector('.e-group-container');\n var summaryElem = this.element.querySelector('.e-summary-content');\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'summaryView':\n if (newProp.summaryView) {\n groupElem.style.display = 'none';\n if (this.element.querySelectorAll('.e-summary-content').length < 1) {\n this.renderSummary();\n summaryElem = this.element.querySelector('.e-summary-content');\n }\n else {\n this.element.querySelector('.e-summary-text').textContent = this.getSqlFromRules(this.rule);\n }\n summaryElem.style.display = 'block';\n }\n else {\n if (groupElem.querySelectorAll('.e-collapse-rule').length > -1) {\n this.renderSummaryCollapse();\n }\n groupElem.style.display = 'block';\n summaryElem.style.display = 'none';\n }\n break;\n case 'displayMode':\n this.refresh();\n break;\n case 'showButtons':\n if (!isNullOrUndefined(newProp.showButtons.lockGroup)) {\n if (newProp.showButtons.lockGroup) {\n removeClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.lockRule)) {\n if (newProp.showButtons.lockRule) {\n removeClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.cloneGroup)) {\n if (newProp.showButtons.cloneGroup) {\n removeClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.cloneRule)) {\n if (newProp.showButtons.cloneRule) {\n removeClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.ruleDelete)) {\n if (newProp.showButtons.ruleDelete) {\n removeClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.groupDelete)) {\n if (newProp.showButtons.groupDelete) {\n removeClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');\n }\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.element], 'e-rtl');\n this.notGroupRtl();\n }\n else {\n removeClass([this.element], 'e-rtl');\n this.notGroupRtl();\n }\n break;\n case 'enablePersistence':\n this.enablePersistence = newProp.enablePersistence;\n break;\n case 'dataSource':\n this.dataSource = newProp.dataSource;\n this.refresh();\n break;\n case 'columns':\n this.columns = newProp.columns;\n this.columnSort();\n this.updateSubFieldsFromColumns(this.columns);\n break;\n case 'sortDirection':\n this.sortDirection = newProp.sortDirection;\n this.columnSort();\n break;\n case 'maxGroupCount':\n this.maxGroupCount = newProp.maxGroupCount;\n break;\n case 'height':\n this.height = newProp.height;\n this.element.style.height = this.height;\n break;\n case 'rule':\n if (this.rule.rules.length === 0 && !isNullOrUndefined(this.rule)) {\n this.reset();\n }\n this.setProperties({ rule: newProp.rule }, true);\n newProp.rule = this.getRuleCollection(this.rule, false);\n this.setRules(this.rule);\n break;\n case 'width':\n this.width = newProp.width;\n this.element.style.width = this.width;\n break;\n case 'locale':\n this.locale = newProp.locale;\n this.intl = new Internationalization(this.locale);\n this.isLocale = true;\n this.refresh();\n this.isLocale = false;\n break;\n case 'enableNotCondition':\n this.onChangeNotGroup();\n break;\n case 'readonly':\n this.isReadonly = newProp.readonly;\n this.enableReadonly();\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.refresh();\n break;\n case 'enableSeparateConnector':\n this.enableSeparateConnector = newProp.enableSeparateConnector;\n this.refresh();\n break;\n }\n }\n this.isPropChange = false;\n };\n QueryBuilder.prototype.preRender = function () {\n this.element.id = this.element.id || getUniqueID('ej2-querybuilder');\n this.defaultLocale = {\n StartsWith: 'Starts With',\n DoesNotStartWith: 'Does Not Start With',\n EndsWith: 'Ends With',\n DoesNotEndWith: 'Does Not End With',\n Contains: 'Contains',\n DoesNotContain: 'Does Not Contain',\n NotLike: 'Not Like',\n Like: 'Like',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n Between: 'Between',\n NotBetween: 'Not Between',\n In: 'In',\n NotIn: 'Not In',\n Remove: 'REMOVE',\n SelectField: 'Select a field',\n SelectOperator: 'Select operator',\n DeleteRule: 'Remove this condition',\n DeleteGroup: 'Delete group',\n AddGroup: 'Add Group',\n AddCondition: 'Add Condition',\n Edit: 'EDIT',\n ValidationMessage: 'This field is required',\n SummaryViewTitle: 'Summary View',\n OtherFields: 'Other Fields',\n AND: 'AND',\n OR: 'OR',\n NOT: 'NOT',\n SelectValue: 'Enter Value',\n IsEmpty: 'Is Empty',\n IsNotEmpty: 'Is Not Empty',\n IsNull: 'Is Null',\n IsNotNull: 'Is Not Null',\n True: 'true',\n False: 'false',\n AddButton: 'Add Group/Condition',\n CloneGroup: 'Clone Group',\n LockGroup: 'Lock Group',\n CloneRule: 'Clone Rule',\n LockRule: 'Lock Rule',\n UnlockRule: 'Unlock Rule',\n UnlockGroup: 'Unlock Group'\n };\n this.l10n = new L10n('querybuilder', this.defaultLocale, this.locale);\n this.intl = new Internationalization(this.locale);\n this.groupIdCounter = 0;\n this.subFilterCounter = 0;\n this.ruleIdCounter = 0;\n this.btnGroupId = 0;\n this.isImportRules = false;\n this.parser = [];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', key: this.l10n.getConstant('StartsWith') },\n { value: 'notstartswith', key: this.l10n.getConstant('DoesNotStartWith') },\n { value: 'endswith', key: this.l10n.getConstant('EndsWith') },\n { value: 'notendswith', key: this.l10n.getConstant('DoesNotEndWith') },\n { value: 'contains', key: this.l10n.getConstant('Contains') },\n { value: 'notcontains', key: this.l10n.getConstant('DoesNotContain') },\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'in', key: this.l10n.getConstant('In') },\n { value: 'notin', key: this.l10n.getConstant('NotIn') },\n { value: 'isempty', key: this.l10n.getConstant('IsEmpty') },\n { value: 'isnotempty', key: this.l10n.getConstant('IsNotEmpty') }\n ],\n dateOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', key: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', key: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'between', key: this.l10n.getConstant('Between') },\n { value: 'notbetween', key: this.l10n.getConstant('NotBetween') }\n ],\n booleanOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') }\n ],\n numberOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'greaterthan', key: this.l10n.getConstant('GreaterThan') },\n { value: 'between', key: this.l10n.getConstant('Between') },\n { value: 'lessthan', key: this.l10n.getConstant('LessThan') },\n { value: 'notbetween', key: this.l10n.getConstant('NotBetween') },\n { value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'in', key: this.l10n.getConstant('In') },\n { value: 'notin', key: this.l10n.getConstant('NotIn') }\n ]\n };\n this.operators = {\n equal: '=', notequal: '!=', greaterthan: '>', greaterthanorequal: '>=', lessthan: '<', in: 'IN', notin: 'NOT IN',\n lessthanorequal: '<=', startswith: 'LIKE', endswith: 'LIKE', between: 'BETWEEN', notbetween: 'NOT BETWEEN', contains: 'LIKE',\n isnull: 'IS NULL', isnotnull: 'IS NOT NULL', isempty: 'IS EMPTY', isnotempty: 'IS NOT EMPTY', notstartswith: 'NOT LIKE',\n notendswith: 'NOT LIKE', notcontains: 'NOT LIKE'\n };\n this.sqlOperators = {\n equal: '=', notequal: '!=', greaterthan: '>', greaterthanorequal: '>=', lessthan: '<', in: this.l10n.getConstant('In').toUpperCase(),\n notin: this.l10n.getConstant('NotIn').toUpperCase(), lessthanorequal: '<=', startswith: this.l10n.getConstant('Like').toUpperCase(),\n endswith: this.l10n.getConstant('Like').toUpperCase(), between: this.l10n.getConstant('Between').toUpperCase(),\n notbetween: this.l10n.getConstant('NotBetween').toUpperCase(), contains: this.l10n.getConstant('Like').toUpperCase(),\n isnull: this.l10n.getConstant('IsNull').toUpperCase(), isnotnull: this.l10n.getConstant('IsNotNull').toUpperCase(),\n isempty: this.l10n.getConstant('IsEmpty').toUpperCase(), isnotempty: this.l10n.getConstant('IsNotEmpty').toUpperCase(),\n notstartswith: this.l10n.getConstant('NotLike').toUpperCase(), notendswith: this.l10n.getConstant('NotLike').toUpperCase(),\n notcontains: this.l10n.getConstant('NotLike').toUpperCase()\n };\n if (!this.fields) {\n this.fields = { text: 'label', value: 'field' };\n }\n };\n QueryBuilder.prototype.render = function () {\n this.levelColl = {};\n this.items = [\n {\n text: this.l10n.getConstant('AddGroup'),\n iconCss: 'e-icons e-add-icon e-addgroup'\n },\n {\n text: this.l10n.getConstant('AddCondition'),\n iconCss: 'e-icons e-add-icon e-addrule'\n }\n ];\n this.ruleElem = this.ruleTemplate();\n this.groupElem = this.groupTemplate();\n var stringOper = [\n { value: 'isnull', key: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', key: this.l10n.getConstant('IsNotNull') }\n ];\n var numberOper = [\n { value: 'isnull', key: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', key: this.l10n.getConstant('IsNotNull') }\n ];\n this.customOperators['stringOperator'] = this.customOperators['stringOperator'].concat(stringOper); // tslint:disable-line\n this.customOperators['numberOperator'] = this.customOperators['numberOperator'].concat(numberOper); // tslint:disable-line\n if (this.dataSource instanceof DataManager) {\n this.dataManager = this.dataSource;\n this.executeDataManager(new Query().take(1));\n }\n else {\n this.dataManager = new DataManager(this.dataSource);\n this.dataColl = this.dataManager.executeLocal(new Query());\n this.initControl();\n }\n this.renderComplete();\n if (this.allowDragAndDrop) {\n this.initializeDrag();\n }\n };\n QueryBuilder.prototype.initializeDrag = function () {\n this.draggable = new Draggable(this.element, {\n dragTarget: '.e-drag-qb-rule',\n distance: 5,\n helper: this.helper.bind(this),\n dragStart: this.dragStartHandler.bind(this),\n drag: this.dragHandler.bind(this),\n dragStop: this.dragStopHandler.bind(this),\n isReplaceDragEle: true,\n isPreventSelect: false,\n abort: '.e-parent-header',\n isDragScroll: true\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n QueryBuilder.prototype.helper = function (e) {\n var target = this.draggable.currentStateTarget;\n if (!target.classList.contains('e-drag-qb-rule') || (target.classList.contains('e-drag-qb-rule') && closest(target, '.e-disable'))) {\n return false;\n }\n var visualElement = this.createElement('div', {\n className: 'e-cloneproperties e-draganddrop e-dragclone',\n styles: 'height:\"auto\", z-index:2, width:' + this.element.offsetWidth\n });\n var cloneElement;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n cloneElement = closest(target, '.e-group-container').cloneNode(true);\n closest(target, '.e-group-container').classList.add('e-qb-dragging-rule');\n }\n else {\n visualElement.classList.add('e-group-body');\n cloneElement = this.createElement('div', { className: 'e-rule-container' });\n var ruleElement = closest(target, '.e-rule-field').cloneNode(true);\n cloneElement.appendChild(ruleElement);\n closest(target, '.e-rule-field').classList.add('e-qb-dragging-rule');\n }\n visualElement.appendChild(cloneElement);\n var childElements = visualElement.querySelectorAll('*');\n childElements.forEach(function (child) {\n child.removeAttribute('id');\n });\n this.element.appendChild(visualElement);\n return visualElement;\n };\n QueryBuilder.prototype.dragStartHandler = function (e) {\n this.draggedRule = e.target;\n this.isDragEventPrevent = false;\n document.body.classList.add('e-prevent-select');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dragElement = e.dragElement;\n var rule = closest(e.target, '.e-rule-container');\n var group = closest(e.target, '.e-group-container');\n var dragEventArgs = { dragRuleID: rule !== null ? rule.id : group.id, dragGroupID: group.id, cancel: false };\n this.trigger('dragStart', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\n };\n QueryBuilder.prototype.dragHandler = function (e) {\n if (this.isDragEventPrevent) {\n return;\n }\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n if (isNullOrUndefined(e.target)) {\n return;\n }\n if (e.target.nodeName === 'HTML' || closest(e.target, '.e-qb-dragging-rule') || closest(e.target, '.e-group-header') ||\n !closest(e.target, '#' + this.element.id) || closest(e.target, '.e-disable') || (e.target.parentElement && e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector)) {\n this.dragElement.classList.add('e-notallowedcur');\n return;\n }\n else {\n this.dragElement.classList.remove('e-notallowedcur');\n }\n var targetElem = closest(e.target, '.e-rule-container');\n var grpElem = closest(e.target, '.e-group-container');\n if (targetElem) {\n var rect = targetElem.getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToTop = mouseY - rect.top;\n var distanceToBottom = rect.bottom - mouseY;\n var threshold = 20; // Adjust as needed\n if (distanceToTop < threshold) {\n targetElem.classList.add('e-drag-rule-top-line');\n }\n else if (distanceToBottom < threshold) {\n targetElem.classList.add('e-drag-rule-bottom-line');\n }\n }\n else if (e.target.classList.contains('e-rule-list') && e.target.children.length === 0) {\n e.target.classList.add('e-drag-rule-bottom-line');\n }\n else if (e.target.classList.contains('e-rule-list') && e.target.children[0].classList.contains('e-group-container')) {\n var rect = e.target.children[0].getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToTop = mouseY - rect.top;\n var threshold = 20; // Adjust as needed\n if (distanceToTop < threshold) {\n e.target.classList.add('e-drag-rule-top-line');\n }\n }\n else if (closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) {\n if (!grpElem) {\n grpElem = e.target;\n }\n if (grpElem.id.indexOf('group0') > -1) {\n var rect = e.target.getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToBottom = rect.bottom - mouseY;\n var threshold = 20; // Adjust as needed\n if (distanceToBottom < threshold) {\n e.target.classList.add('e-drag-rule-bottom-line');\n }\n }\n }\n var dragEventArgs = {\n dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,\n dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false\n };\n this.trigger('drag', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\n };\n QueryBuilder.prototype.dragStopHandler = function (e) {\n var _this = this;\n if (this.isDragEventPrevent) {\n return;\n }\n var targetGroup = closest(e.target, '.e-rule-container');\n if (isNullOrUndefined(targetGroup) && e.target.parentElement &&\n e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector) {\n targetGroup = closest(e.target.parentElement.previousElementSibling, '.e-rule-container');\n }\n var isPreventelem;\n if (!isNullOrUndefined(e.helper)) {\n isPreventelem = closest(e.helper, '.e-notallowedcur');\n }\n var prevRule;\n if (!isPreventelem) {\n var targetGrp = closest(e.target, '.e-group-container');\n var dropEventArgs = {\n cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id\n : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null\n };\n this.trigger('drop', dropEventArgs);\n if (dropEventArgs.cancel) {\n isPreventelem = true;\n }\n prevRule = this.getValidRules();\n }\n this.prvtEvtTgrDaD = true;\n var tgrt = this.enableSeparateConnector && e.target.parentElement &&\n e.target.parentElement.classList.contains('e-btn-group') ? e.target.parentElement.previousElementSibling : e.target;\n if (targetGroup && !isPreventelem) {\n var groupId_1 = targetGroup.id.split(this.element.id + '_')[1].split('_')[0];\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-rule-field') ||\n this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n var groupRule = extend([], this.getGroup(targetGroup), [], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (groupRule.properties) {\n groupRule = groupRule.properties;\n }\n var groupElem = closest(targetGroup, '.e-group-container');\n var nestGrpElem = groupElem.querySelectorAll('.e-group-container');\n nestGrpElem.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteGroup(ele);\n }\n });\n var ruleElems = groupElem.querySelectorAll('.e-rule-container');\n var ruleIds = [];\n var dropInd = void 0;\n for (var i = 0; i < ruleElems.length; i++) {\n if (ruleElems[i].classList.contains('e-drag-rule-top-line') ||\n ruleElems[i].classList.contains('e-drag-rule-bottom-line')) {\n dropInd = i;\n }\n ruleIds.push(ruleElems[i].id.split(this.element.id + '_')[1]);\n }\n this.deleteRules(ruleIds);\n if (targetGroup.classList.contains('e-drag-rule-top-line')) {\n groupRule.rules.splice(dropInd, 0, rule);\n }\n else {\n groupRule.rules.splice(dropInd + 1, 0, rule);\n }\n groupRule.rules.forEach(function (rule) {\n if (_this.enableSeparateConnector) {\n if (!rule.rules) {\n _this.addRules([rule], groupId_1);\n }\n else {\n _this.addGroups([rule], groupId_1);\n }\n }\n else {\n if (rule.condition) {\n _this.addGroups([rule], groupId_1);\n }\n else {\n _this.addRules([rule], groupId_1);\n }\n }\n });\n }\n }\n else if (tgrt.classList.contains('e-rule-list') && tgrt.children.length === 0 && !isPreventelem) {\n var groupElem = closest(tgrt, '.e-group-container');\n var groupId = groupElem.id.split(this.element.id + '_')[1].split('_')[0];\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n if (this.enableSeparateConnector) {\n if (!rule.rules) {\n this.addRules([rule], groupId);\n }\n else {\n this.addGroups([rule], groupId);\n }\n }\n else {\n if (rule.condition) {\n this.addGroups([rule], groupId);\n }\n else {\n this.addRules([rule], groupId);\n }\n }\n }\n else if (tgrt.classList.contains('e-rule-list') && tgrt.children[0].classList.contains('e-group-container') && !isPreventelem) {\n var groupElem = closest(tgrt, '.e-group-container');\n var groupId_2 = groupElem.id.split(this.element.id + '_')[1].split('_')[0];\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n var groupRule = extend([], this.getGroup(tgrt), [], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (groupRule.properties) {\n groupRule = groupRule.properties;\n }\n var groupElems = tgrt.querySelectorAll('.e-group-container');\n groupElems.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteGroup(ele);\n }\n });\n var ruleElems = groupElem.querySelectorAll('.e-rule-container');\n ruleElems.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteRule(ele);\n }\n });\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n this.addGroups([rule], groupId_2);\n }\n else {\n this.addRules([rule], groupId_2);\n }\n groupRule.rules.forEach(function (rule) {\n if (_this.enableSeparateConnector) {\n if (!rule.rules) {\n _this.addRules([rule], groupId_2);\n }\n else {\n _this.addGroups([rule], groupId_2);\n }\n }\n else {\n if (rule.condition) {\n _this.addGroups([rule], groupId_2);\n }\n else {\n _this.addRules([rule], groupId_2);\n }\n }\n });\n }\n else if ((closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) && !isPreventelem) {\n var rule = void 0;\n targetGroup = closest(e.target, '.e-group-container');\n if (!targetGroup && e.target.classList.contains('e-group-container')) {\n targetGroup = e.target;\n }\n var groupId = targetGroup.id.split(this.element.id + '_')[1].split('_')[0];\n if (groupId === 'group0') {\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n if (this.enableSeparateConnector) {\n if (!rule.rules) {\n this.addRules([rule], groupId);\n }\n else {\n this.addGroups([rule], groupId);\n }\n }\n else {\n if (rule.condition) {\n this.addGroups([rule], groupId);\n }\n else {\n this.addRules([rule], groupId);\n }\n }\n }\n }\n if (!isPreventelem) {\n this.trigger('ruleChange', { previousRule: prevRule, rule: this.getValidRules(), type: 'drag-and-drop' });\n }\n this.prvtEvtTgrDaD = false;\n document.body.classList.remove('e-prevent-select');\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-qb-dragging-rule');\n });\n if (e.helper && e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {\n remove(e.helper);\n }\n if (this.enableSeparateConnector) {\n this.refresh();\n }\n };\n QueryBuilder.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n QueryBuilder.prototype.executeDataManager = function (query) {\n var _this = this;\n var data = this.dataManager.executeQuery(query);\n var deferred = new Deferred();\n data.then(function (e) {\n if (e.actual && e.actual.result) {\n _this.dataColl = e.actual.result;\n }\n else {\n _this.dataColl = e.result;\n }\n _this.initControl();\n }).catch(function (e) {\n deferred.reject(e);\n });\n };\n QueryBuilder.prototype.initControl = function () {\n this.initialize();\n this.initWrapper();\n this.wireEvents();\n };\n QueryBuilder.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickEventHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);\n EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n if (this.allowDragAndDrop) {\n EventHandler.add(document, 'keydown', this.keyBoardHandler, this);\n }\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n QueryBuilder.prototype.unWireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.remove(wrapper, 'click', this.clickEventHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);\n EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n EventHandler.remove(document, 'keydown', this.keyBoardHandler);\n window.removeEventListener('resize', this.windowResizeHandler);\n };\n QueryBuilder.prototype.getParentGroup = function (target, isParent) {\n var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl[\"\" + target];\n var len = isParent ? groupLevel.length - 1 : groupLevel.length;\n var rule = this.rule;\n for (var i = 0; i < len; i++) {\n rule = this.findGroupByIdx(groupLevel[i], rule, i === 0);\n }\n return rule;\n };\n /**\n * Delete the Group\n *\n * @param {Element | string} target - 'target' to be passed to delete the group.\n * @returns {void}\n */\n QueryBuilder.prototype.deleteGroup = function (target) {\n var _this = this;\n var groupElem = target;\n var groupId;\n if (typeof target === 'string') {\n groupId = this.element.id + '_' + target;\n target = document.getElementById(groupId);\n groupId = groupId.replace(this.element.id + '_', '');\n }\n else {\n groupId = groupElem.id.replace(this.element.id + '_', '');\n }\n if (groupId === 'group0' || !target) {\n return;\n }\n var args = { groupID: groupId, cancel: false, type: 'deleteGroup' };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.deleteGroupSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.deleteGroupSuccessCallBack(args, target);\n }\n };\n QueryBuilder.prototype.deleteGroupSuccessCallBack = function (args, target) {\n if (!args.cancel) {\n var groupElem = target;\n var rule = this.getParentGroup(groupElem, true);\n var index = 0;\n var i = void 0;\n var len = void 0;\n var beforeRules = this.getValidRules(this.rule);\n var nextElem = groupElem.nextElementSibling;\n var prevElem = groupElem.previousElementSibling;\n var element = groupElem.querySelectorAll('.e-group-container');\n var valElem = groupElem.querySelectorAll('.e-tooltip');\n len = valElem.length;\n for (i = 0; i < len; i++) {\n getComponent(valElem[i], 'tooltip').destroy();\n }\n for (i = 0, len = element.length; i < len; i++) {\n delete this.levelColl[element[i].id];\n }\n while (groupElem.previousElementSibling !== null) {\n groupElem = groupElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !groupElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (groupElem.classList.contains('e-rule-container') ||\n groupElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n if (!this.enableSeparateConnector) {\n if (nextElem && nextElem.className.indexOf('e-separate-rule') > -1) {\n removeClass([nextElem], 'e-separate-rule');\n addClass([nextElem], 'e-joined-rule');\n if (prevElem && prevElem.className.indexOf('e-rule-container') > -1) {\n addClass([prevElem], 'e-prev-joined-rule');\n }\n }\n }\n var elem = groupElem.parentElement.parentElement.parentElement;\n var removeString = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact || this.isAngular) {\n var remRule = rule.rules[index];\n var ruleElemColl = target.querySelectorAll('.e-rule-container');\n if (remRule && remRule.rules) {\n for (var r = 0; r < remRule.rules.length; r++) {\n var column = this.getColumn(remRule.rules[r].field);\n if (ruleElemColl[r]) {\n var isTemplateRendered = ruleElemColl[r].querySelector('.e-template-value');\n if (column && (column.ruleTemplate || (this.isPlatformTemplate(column) && isTemplateRendered))) {\n removeString.push(ruleElemColl[r].id);\n }\n }\n }\n }\n }\n detach(target);\n if (this.headerTemplate) {\n this.clearQBTemplate([target.id]);\n }\n if (removeString.length) {\n this.clearQBTemplate(removeString);\n }\n rule.rules.splice(index, 1);\n delete this.levelColl[args.groupID];\n this.refreshLevelColl();\n this.disableRuleCondition(elem, rule);\n if (this.enableSeparateConnector && prevElem && ((!this.headerTemplate && prevElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && prevElem.classList.contains('e-custom-group-btn')))) {\n detach(prevElem);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', args);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteGroup');\n }\n };\n QueryBuilder.prototype.isPlatformTemplate = function (column) {\n var isTemp = false;\n isTemp = column.template && (typeof column.template === 'string' || column.template.create === undefined);\n return isTemp;\n };\n QueryBuilder.prototype.deleteRule = function (target) {\n var _this = this;\n var groupElem = closest(target, '.e-group-container');\n var groupID = groupElem.id.replace(this.element.id + '_', '');\n var ruleID = closest(target, '.e-rule-container').id.replace(this.element.id + '_', '');\n var args = { groupID: groupID, ruleID: ruleID, cancel: false, type: 'deleteRule' };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.deleteRuleSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.deleteRuleSuccessCallBack(args, target);\n }\n };\n QueryBuilder.prototype.deleteRuleSuccessCallBack = function (args, target) {\n if (!args.cancel) {\n var groupElem = closest(target, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n var ruleElem = closest(target, '.e-rule-container');\n var beforeRules = this.getValidRules(this.rule);\n var prevElem = ruleElem.previousElementSibling;\n var index = 0;\n var clnruleElem = ruleElem;\n var nextElem = ruleElem.nextElementSibling;\n var valElem = ruleElem.querySelectorAll('.e-tooltip');\n var i = void 0;\n var len = valElem.length;\n for (i = 0; i < len; i++) {\n getComponent(valElem[i], 'tooltip').destroy();\n }\n while (ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var column = this.getColumn(rule.rules[index].field);\n if (column && column.template && clnruleElem.querySelector('.e-template')) {\n this.templateDestroy(column, clnruleElem.querySelector('.e-template').id);\n }\n if (!prevElem || prevElem.className.indexOf('e-rule-container') < 0) {\n if (nextElem) {\n removeClass([nextElem], 'e-joined-rule');\n }\n }\n if (!nextElem || nextElem.className.indexOf('e-rule-container') < 0) {\n if (prevElem) {\n removeClass([prevElem], 'e-prev-joined-rule');\n }\n }\n var isTemplateRendered = clnruleElem.querySelector('.e-template-value');\n // eslint-disable\n try {\n if (this.enableSeparateConnector && (clnruleElem.previousElementSibling || clnruleElem.nextElementSibling)) {\n var previousElem = clnruleElem.previousElementSibling;\n var nextElem_1 = clnruleElem.nextElementSibling;\n if (isNullOrUndefined(nextElem_1) && ((!this.headerTemplate && previousElem.classList.contains('e-btn-group'))\n || (this.headerTemplate && previousElem.classList.contains('e-custom-group-btn')))) {\n if (previousElem && previousElem.previousElementSibling && previousElem.previousElementSibling.classList.contains('e-rule-container')) {\n var rule_1 = this.getRule(previousElem.previousElementSibling);\n rule_1.condition = null;\n }\n detach(previousElem);\n }\n else if ((!this.headerTemplate && nextElem_1.classList.contains('e-btn-group'))\n || (this.headerTemplate && nextElem_1.classList.contains('e-custom-group-btn'))) {\n detach(nextElem_1);\n }\n }\n detach(clnruleElem);\n }\n catch (err) {\n return;\n }\n if (column && column.ruleTemplate) {\n this.clearQBTemplate([clnruleElem.id]);\n }\n if (column && this.isPlatformTemplate(column) && isTemplateRendered) {\n this.clearQBTemplate([clnruleElem.id]);\n }\n rule.rules.splice(index, 1);\n if (!(rule.rules[0] && rule.rules[0].rules)) {\n this.disableRuleCondition(groupElem, rule, this.enableSeparateConnector ? true : false);\n }\n var tooltipElem = this.element.querySelectorAll('.e-tooltip');\n for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {\n getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', args);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteRule');\n }\n };\n QueryBuilder.prototype.setGroupRules = function (rule, isRoot) {\n if (this.headerTemplate && isRoot) {\n this.isRoot = true;\n }\n this.reset();\n this.groupIdCounter = 1;\n this.ruleIdCounter = 0;\n this.isImportRules = true;\n this.setProperties({ rule: rule }, true);\n rule = this.getRuleCollection(this.rule, false);\n this.importRules(this.rule, this.element.querySelector('.e-group-container'), true, this.rule.not, isRoot);\n if (rule.isLocked) {\n var lockGrpTarget = this.element.querySelector('.e-group-container').querySelector('.e-lock-grp-btn');\n this.groupLock(lockGrpTarget);\n }\n this.isImportRules = false;\n };\n QueryBuilder.prototype.keyBoardHandler = function (e) {\n if (e.currentTarget === this.element && this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {\n e.preventDefault();\n }\n else if (e.code === 'Escape' && this.allowDragAndDrop) {\n this.isDragEventPrevent = true;\n document.body.classList.remove('e-prevent-select');\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-qb-dragging-rule');\n });\n var dragElemnet = this.element.querySelector('.e-cloneproperties');\n if (dragElemnet) {\n remove(dragElemnet);\n }\n if (this.enableSeparateConnector) {\n this.refresh();\n }\n }\n };\n QueryBuilder.prototype.windowResizeHandler = function () {\n if (Browser.isDevice || window.innerWidth < 768) {\n this.displayMode = 'Vertical';\n }\n else {\n this.displayMode = 'Horizontal';\n }\n };\n QueryBuilder.prototype.clearQBTemplate = function (ruleElemColl) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact || this.isAngular) {\n this.clearTemplate(ruleElemColl);\n }\n };\n QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules, isNewRuleAdded, isNewGroup) {\n if (!this.headerTemplate) {\n if (this.readonly) {\n return;\n }\n var count = groupElem.querySelector('.e-rule-list').childElementCount;\n var andElem = groupElem.querySelector('.e-btngroup-and');\n var orElem = groupElem.querySelector('.e-btngroup-or');\n if (count > 1) {\n andElem.disabled = false;\n orElem.disabled = false;\n if (orElem.nextElementSibling.classList.contains('e-btn-disable') ||\n andElem.nextElementSibling.classList.contains('e-btn-disable')) {\n orElem.nextElementSibling.classList.remove('e-btn-disable');\n andElem.nextElementSibling.classList.remove('e-btn-disable');\n }\n if (this.enableSeparateConnector && !isNewRuleAdded) {\n var index = 0;\n var element = void 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');\n var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');\n andElem = andGroup[andGroup.length - (1 + index)];\n orElem = orGroup[orGroup.length - (1 + index)];\n element = andGroup[andGroup.length - (1 + index)];\n if (element && element.parentElement && element.parentElement.style.display === 'none') {\n index++;\n }\n else {\n break;\n }\n }\n var elem = groupElem.previousElementSibling;\n while (elem && !elem.classList.contains('e-rule-container')) {\n if (elem.classList.contains('e-group-container')) {\n elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];\n break;\n }\n elem = elem.previousElementSibling;\n }\n if (isNewGroup && groupElem.classList.contains('e-group-container')) {\n elem = groupElem;\n var prevRule = this.getGroup(elem);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n else if (elem && elem.classList.contains('e-rule-container')) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else if (!isNewRuleAdded) {\n if (rules && rules.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n if (this.enableSeparateConnector && !isNewRuleAdded) {\n var index = 0;\n var element = void 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');\n var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');\n andElem = andGroup[andGroup.length - (1 + index)];\n orElem = orGroup[orGroup.length - (1 + index)];\n if (this.isImportRules) {\n andElem = groupElem.parentElement.querySelector('.e-btn-group.e-multi-connector .e-btngroup-and');\n orElem = groupElem.parentElement.querySelector('.e-btn-group.e-multi-connector .e-btngroup-or');\n }\n element = andGroup[andGroup.length - (1 + index)];\n if (element && element.parentElement && element.parentElement.style.display === 'none') {\n index++;\n }\n else {\n break;\n }\n }\n var elem = void 0;\n var tempElem = groupElem.previousElementSibling;\n while (tempElem) {\n if (tempElem.classList.contains('e-group-container')) {\n tempElem = tempElem.querySelectorAll('.e-rule-container')[tempElem.querySelectorAll('.e-rule-container').length - 1];\n }\n if (tempElem.classList.contains('e-rule-container')) {\n elem = tempElem;\n break;\n }\n tempElem = tempElem.previousElementSibling;\n }\n if (isNullOrUndefined(elem) && groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1]) {\n elem = groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1];\n }\n if (isNewGroup && groupElem.classList.contains('e-group-container')) {\n elem = groupElem;\n var prevRule = this.getGroup(elem);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n else if (elem) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or' && orElem) {\n orElem.checked = true;\n }\n else if (andElem) {\n andElem.checked = true;\n }\n }\n }\n else if (!isNewRuleAdded && !isNullOrUndefined(andElem)) {\n andElem.checked = false;\n andElem.disabled = true;\n orElem.checked = false;\n orElem.disabled = true;\n if (rules) {\n orElem.nextElementSibling.classList.add('e-btn-disable');\n andElem.nextElementSibling.classList.add('e-btn-disable');\n }\n }\n }\n }\n };\n /**\n * Get the valid rule or rules collection.\n *\n * @param {RuleModel} currentRule - 'currentRule' to be passed to get the valid rules.\n * @returns {RuleModel} - Valid rule or rules collection\n */\n QueryBuilder.prototype.getValidRules = function (currentRule) {\n this.isValueEmpty = true;\n if (!currentRule) {\n currentRule = this.getRules();\n }\n var ruleCondtion = currentRule.condition;\n var notCondition = currentRule.not;\n var ruleColl = extend([], currentRule.rules, [], true);\n var rule = !isNullOrUndefined(currentRule.isLocked) ?\n this.getRuleCollection({ condition: ruleCondtion, rules: ruleColl, not: notCondition, isLocked: currentRule.isLocked }, true) :\n this.getRuleCollection({ condition: ruleCondtion, rules: ruleColl, not: notCondition }, true);\n this.isValueEmpty = false;\n return rule;\n };\n QueryBuilder.prototype.getRuleCollection = function (rule, isValidRule) {\n if (isNullOrUndefined(rule)) {\n return null;\n }\n var orgRule;\n if (rule.rules && rule.rules.length && (Object.keys(rule.rules[0]).length > 6 || isValidRule)) {\n var jLen = rule.rules.length;\n for (var j = 0; j < jLen; j++) {\n orgRule = rule.rules[j];\n orgRule = this.getRuleCollection(orgRule, isValidRule);\n rule.rules[j] = orgRule;\n if (Object.keys(orgRule).length < 1 && isValidRule) {\n rule.rules.splice(j, 1);\n j--;\n jLen--;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var customObj = rule.custom;\n if ((rule.field && rule.field !== '') && (isNullOrUndefined(customObj) || (customObj && (customObj.type !== 'question' &&\n customObj.type !== 'answer')))) {\n if (rule.operator) {\n if (rule.operator.toString().indexOf('null') > -1 || rule.operator.toString().indexOf('empty') > -1) {\n rule.value = null;\n }\n }\n if ((this.isRefreshed && this.enablePersistence) || (rule.field !== '' && rule.operator !== '' &&\n (this.isValueEmpty ? rule.value !== '' && rule.value !== undefined : rule.value !== undefined)) ||\n (customObj && customObj.isQuestion)) {\n var condition = rule.condition;\n var lockedRule = rule.isLocked;\n rule = { 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value };\n if (!isNullOrUndefined(lockedRule)) {\n rule.isLocked = lockedRule;\n }\n if (condition) {\n rule.condition = condition;\n }\n if (customObj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {\n rule = {};\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((rule.operator === 'between' || rule.operator === 'notbetween') && Array.isArray(rule.value) && (rule.value.length < 2 || rule.value.some(function (val) { return val === '' || val === null; }))) {\n rule = {};\n }\n }\n else {\n rule = {};\n }\n }\n else {\n if (customObj && (customObj.type === 'question' || customObj.type === 'answer')) {\n var notValue = rule.not;\n rule = {\n 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,\n 'condition': rule.condition, 'rules': rule.rules\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n if (this.enableNotCondition) {\n rule.not = notValue;\n }\n }\n else if ((isNullOrUndefined(rule.condition)) && isNullOrUndefined(rule.rules)) {\n rule = {};\n }\n else {\n var isLocked = rule.isLocked;\n if (this.enableNotCondition) {\n rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };\n }\n else {\n rule = { 'condition': rule.condition, 'rules': rule.rules };\n }\n if (!isNullOrUndefined(isLocked)) {\n rule.isLocked = isLocked;\n }\n if (customObj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n }\n if (rule.rules && rule.rules.length === 0) {\n rule = {};\n }\n }\n }\n return rule;\n };\n /**\n * Set the rule or rules collection.\n *\n * @param {RuleModel} rule - 'rule' to be passed to set rules.\n * @returns {void}.\n */\n QueryBuilder.prototype.setRules = function (rule) {\n var mRules = extend({}, rule, {}, true);\n if (this.headerTemplate) {\n this.setGroupRules(mRules, true);\n }\n else {\n this.setGroupRules(mRules);\n }\n };\n /**\n * Gets the rule or rule collection.\n *\n * @returns {object} - Rule or rule collection\n */\n QueryBuilder.prototype.getRules = function () {\n var rule;\n if (this.enableNotCondition) {\n rule = { condition: this.rule.condition, rules: this.rule.rules, not: this.rule.not };\n }\n else {\n rule = { condition: this.rule.condition, rules: this.rule.rules };\n }\n if (!isNullOrUndefined(this.rule.isLocked)) {\n rule.isLocked = this.rule.isLocked;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.rule.custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = this.rule.custom;\n }\n return rule;\n };\n /**\n * Gets the rule.\n *\n * @param {string | HTMLElement} elem - 'elem' to be passed to get rule.\n * @returns {object} - Rule\n */\n QueryBuilder.prototype.getRule = function (elem) {\n var ruleElem;\n var ruleId;\n var index = 0;\n if (elem instanceof HTMLElement) {\n ruleElem = closest(elem, '.e-rule-container');\n }\n else {\n ruleId = this.element.id + '_' + elem;\n ruleElem = document.getElementById(ruleId);\n }\n if (isNullOrUndefined(ruleElem)) {\n return null;\n }\n var groupElem = closest(ruleElem, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n while (ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n return rule.rules[index];\n };\n /**\n * Gets the group.\n *\n * @param {string | Element} target - 'target' to be passed to get group.\n * @returns {object} -Group\n */\n QueryBuilder.prototype.getGroup = function (target) {\n if (target instanceof Element && target.className.indexOf('e-group-container') < 1) {\n target = closest(target, '.e-group-container');\n }\n var groupId = (target instanceof Element) ? target.id : this.element.id + '_' + target;\n var rule = this.getParentGroup(groupId);\n return rule;\n };\n /**\n * Deletes the group or groups based on the group ID.\n *\n * @param {string[]} groupIdColl - 'groupIdColl' to be passed to delete groups.\n * @returns {void}\n */\n QueryBuilder.prototype.deleteGroups = function (groupIdColl) {\n var i;\n var len = groupIdColl.length;\n var groupID;\n for (i = 0; i < len; i++) {\n if (groupIdColl[i] === 'group0') {\n continue;\n }\n groupID = this.element.id + '_' + groupIdColl[i];\n this.deleteGroup(document.getElementById(groupID));\n }\n };\n /**\n * Return the Query from current rules collection.\n *\n * @returns {Promise} - Query from current rules collection\n * @blazorType object\n */\n QueryBuilder.prototype.getFilteredRecords = function () {\n var predicate = this.getPredicate(this.getValidRules(this.rule));\n var dataManagerQuery = isNullOrUndefined(predicate) ? new Query() : new Query().where(predicate);\n return this.dataManager.executeQuery(dataManagerQuery);\n };\n /**\n * Deletes the rule or rules based on the rule ID.\n *\n * @param {string[]} ruleIdColl - 'ruleIdColl' to be passed to delete rules.\n * @returns {void}.\n */\n QueryBuilder.prototype.deleteRules = function (ruleIdColl) {\n var i;\n var len = ruleIdColl.length;\n var ruleID;\n for (i = 0; i < len; i++) {\n ruleID = this.element.id + '_' + ruleIdColl[i];\n this.deleteRule(document.getElementById(ruleID));\n }\n };\n /**\n * Gets the query for Data Manager.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get query.\n * @returns {string} - Query for Data Manager\n */\n QueryBuilder.prototype.getDataManagerQuery = function (rule) {\n var predicate = this.getPredicate(rule);\n var query;\n var fields = [];\n for (var i = 0, len = Object.keys(this.columns); i < len.length; i++) {\n fields.push(this.columns[i].field);\n }\n if (rule.rules.length) {\n query = new Query().select(fields).where(predicate);\n }\n else {\n query = new Query().select(fields);\n }\n return query;\n };\n /**\n * Get the predicate from collection of rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get predicate.\n * @returns {Predicate} - Predicate from collection of rules\n */\n QueryBuilder.prototype.getPredicate = function (rule) {\n var ruleColl = rule.rules;\n var pred;\n var pred2;\n var ruleValue;\n var ignoreCase = false;\n var column;\n if (!ruleColl) {\n return pred;\n }\n for (var i = 0, len = ruleColl.length; i < len; i++) {\n var operator = ruleColl[i].operator;\n if (operator === 'notstartswith') {\n operator = 'doesnotstartwith';\n }\n else if (operator === 'notendswith') {\n operator = 'doesnotendwith';\n }\n else if (operator === 'notcontains') {\n operator = 'doesnotcontain';\n }\n var keys = Object.keys(ruleColl[i]);\n ignoreCase = false;\n if (keys.indexOf('rules') > -1 && ruleColl[i].rules) {\n pred2 = this.getPredicate(ruleColl[i]);\n if (pred2) {\n if (pred) {\n if (rule.condition === 'and') {\n pred = pred.and(pred2);\n }\n else {\n pred = pred.or(pred2);\n }\n }\n else {\n pred = pred2;\n }\n }\n }\n else if (!isNullOrUndefined(operator) && !isNullOrUndefined(operator.length)) {\n var oper = ruleColl[i].operator.toLowerCase();\n var isDateFilter = false;\n var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];\n if (ruleColl[i].type === 'string') {\n ignoreCase = this.matchCase ? false : true;\n }\n if (ruleColl[i].type === 'date' && dateOperColl.indexOf(oper) > -1) {\n ignoreCase = true;\n }\n column = this.getColumn(ruleColl[i].field);\n if (oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) {\n ruleColl[i].value = null;\n }\n else if (ruleColl[i].type === 'date' && !(ruleColl[i].value instanceof Array)) {\n var format = this.getFormat(column.format);\n if (!isNullOrUndefined(ruleColl[i].value)) {\n ruleValue = this.getDate(ruleColl[i].value, format);\n if (dateOperColl.indexOf(oper) > -1 && !this.isTime(ruleColl[i].value)) {\n isDateFilter = true;\n }\n }\n else {\n ruleValue = null;\n }\n }\n else {\n ruleValue = ruleColl[i].value;\n }\n if (i === 0) {\n if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||\n oper.indexOf('empty') > -1) && (oper.indexOf('contain') < 0)) {\n pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :\n this.arrayPredicate(ruleColl[i]);\n }\n else {\n var value = ruleValue;\n if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n }\n else {\n if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 ||\n oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('contain') < 0) {\n pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue, pred, rule.condition) :\n this.arrayPredicate(ruleColl[i], pred, rule.condition);\n }\n else {\n if (rule.condition === 'and') {\n var value = ruleValue;\n if (pred && value !== '') {\n pred\n = pred.and(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n else if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n else {\n var value = ruleValue;\n if (pred && value !== '') {\n pred = pred.or(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n else if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n }\n }\n }\n }\n if (this.dataSource instanceof DataManager) {\n if (!isNullOrUndefined(pred) && (pred.operator === 'isnull' || pred.operator === 'isnotnull')) {\n pred.operator = pred.operator === 'isnull' ? 'equal' : 'notequal';\n }\n }\n return pred;\n };\n QueryBuilder.prototype.getLocale = function () {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.short';\n var localeString = this.locale;\n var mainVal = 'main.';\n var cultureObj = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n if (!cultureObj) {\n localeString = 'en';\n }\n return localeString;\n };\n QueryBuilder.prototype.getColumn = function (field, col) {\n var columns = this.columns;\n var column;\n columns = col ? col : columns;\n var fieldParts = this.separator !== '' ? (field ? field.split(this.separator) : []) : [field];\n var rootField = fieldParts && fieldParts.length > 0 ? fieldParts[0] : null;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === field) {\n column = columns[i];\n break;\n }\n }\n if (!column && this.separator !== '') {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === rootField) {\n if (columns[i].columns) {\n var subField = field.substring(rootField.length + this.separator.length);\n if (subField) {\n column = this.getColumn(subField, columns[i].columns);\n }\n else {\n column = columns[i];\n }\n }\n else {\n column = columns[i];\n }\n break;\n }\n }\n }\n if (!column) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n column = this.getColumn(field, columns[i].columns);\n if (column) {\n break;\n }\n }\n }\n }\n return column;\n };\n /* eslint-disable */\n /**\n * Return the operator bound to the column.\n *\n * @returns {[key: string]: Object}[] - Operator bound to the column\n */\n /* eslint-enable */\n QueryBuilder.prototype.getOperators = function (field) {\n var column = this.getColumn(field);\n return column.operators;\n };\n QueryBuilder.prototype.setTime = function (date, isStart) {\n if (isStart) {\n date.setHours(0, 0, 0);\n }\n else {\n date.setHours(23, 59, 59);\n }\n return date;\n };\n QueryBuilder.prototype.datePredicate = function (ruleColl, value, predicate, condition) {\n var pred;\n var startDate = this.setTime(new Date(value.getTime()), true);\n var endDate = this.setTime(value);\n switch (ruleColl.operator) {\n case 'equal':\n pred = new Predicate(ruleColl.field, 'greaterthanorequal', startDate);\n pred = pred.and(ruleColl.field, 'lessthanorequal', endDate);\n break;\n case 'notequal':\n pred = new Predicate(ruleColl.field, 'lessthan', startDate);\n pred = pred.or(ruleColl.field, 'greaterthan', endDate);\n break;\n case 'greaterthan':\n pred = new Predicate(ruleColl.field, 'greaterthan', endDate);\n break;\n case 'greaterthanorequal':\n pred = new Predicate(ruleColl.field, 'greaterthanorequal', startDate);\n break;\n case 'lessthan':\n pred = new Predicate(ruleColl.field, 'lessthan', startDate);\n break;\n case 'lessthanorequal':\n pred = new Predicate(ruleColl.field, 'lessthanorequal', endDate);\n break;\n }\n if (pred) {\n if (predicate) {\n if (condition === 'and') {\n predicate = predicate.and(pred);\n }\n else if (condition === 'or') {\n predicate = predicate.or(pred);\n }\n }\n else {\n predicate = pred;\n }\n }\n return predicate;\n };\n QueryBuilder.prototype.arrayPredicate = function (ruleColl, predicate, condition) {\n var value = ruleColl.value;\n var operator = ruleColl.operator.toString();\n var nullValue = ruleColl.value;\n var pred;\n var column = this.getColumn(ruleColl.field);\n var format = this.getFormat(column.format);\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n switch (operator) {\n case 'isnull':\n pred = new Predicate(ruleColl.field, 'isnull', nullValue);\n break;\n case 'isnotnull':\n pred = new Predicate(ruleColl.field, 'isnotnull', nullValue);\n break;\n case 'isempty':\n pred = new Predicate(ruleColl.field, 'equal', '');\n break;\n case 'isnotempty':\n pred = new Predicate(ruleColl.field, 'notequal', '');\n break;\n }\n }\n if (!(operator.indexOf('null') > -1 || operator.indexOf('empty') > -1)) {\n for (var j = 0, jLen = value.length; j < jLen; j++) {\n if (value[j] !== '' || ((operator === 'in' || operator === 'notin') && column.type === 'string')) {\n if (j === 0) {\n var gte = 'greaterthanorequal';\n switch (operator) {\n case 'between':\n if (column.type !== 'date') {\n pred = new Predicate(ruleColl.field, gte, value[j]);\n }\n else {\n pred = new Predicate(ruleColl.field, gte, value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format), true)) : null);\n }\n break;\n case 'notbetween':\n if (column.type === 'date') {\n pred = new Predicate(ruleColl.field, 'lessthan', value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format), true)) : null);\n }\n else {\n pred = new Predicate(ruleColl.field, 'lessthan', value[j]);\n }\n break;\n case 'in':\n pred = new Predicate(ruleColl.field, 'equal', value[j]);\n break;\n case 'notin':\n pred = new Predicate(ruleColl.field, 'notequal', value[j]);\n break;\n }\n }\n else {\n var gt = 'greaterthan';\n switch (ruleColl.operator) {\n case 'between':\n if (column.type === 'date') {\n pred = pred.and(ruleColl.field, 'lessthanorequal', value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format))) : value[j]);\n }\n else {\n pred = pred.and(ruleColl.field, 'lessthanorequal', value[j]);\n }\n break;\n case 'notbetween':\n if (column.type === 'date') {\n pred = pred.or(ruleColl.field, gt, value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format))) : value[j]);\n }\n else {\n pred = pred.or(ruleColl.field, 'greaterthan', value[j]);\n }\n break;\n case 'in':\n pred = pred.or(ruleColl.field, 'equal', value[j]);\n break;\n case 'notin':\n pred = pred.and(ruleColl.field, 'notequal', value[j]);\n break;\n }\n }\n }\n }\n }\n if (pred) {\n if (predicate) {\n if (condition === 'and') {\n predicate = predicate.and(pred);\n }\n else if (condition === 'or') {\n predicate = predicate.or(pred);\n }\n }\n else {\n predicate = pred;\n }\n }\n return predicate;\n };\n QueryBuilder.prototype.getDate = function (value, format) {\n var currDate = this.intl.parseDate(value, format);\n if (value.indexOf(':') > -1 && (value.indexOf('/') < 0 && value.indexOf(',') < 0\n && value.indexOf('-') < 0)) {\n currDate = new Date();\n currDate.setHours(parseInt(value.split(':')[0], 10));\n currDate.setMinutes(parseInt(value.split(':')[1], 10));\n if (value.split(':')[2]) {\n currDate.setSeconds(parseInt(value.split(':')[2], 10));\n }\n }\n return currDate;\n };\n QueryBuilder.prototype.isTime = function (value) {\n if (value && value.indexOf(':') > -1) {\n return true;\n }\n return false;\n };\n QueryBuilder.prototype.importRules = function (rule, parentElem, isReset, not, isRoot) {\n if (!isReset) {\n parentElem = this.renderGroup(rule, rule.condition, parentElem, not);\n }\n else {\n if (rule.rules && rule.rules.length > 1 && !this.headerTemplate) {\n // enable/disable conditions when rule group is added\n var orElem = parentElem.querySelector('.e-btngroup-or');\n var andElem = parentElem.querySelector('.e-btngroup-and');\n if (this.enableSeparateConnector && parentElem.previousElementSibling) {\n orElem = parentElem.previousElementSibling.querySelector('.e-btngroup-or');\n andElem = parentElem.previousElementSibling.querySelector('.e-btngroup-and');\n }\n orElem.disabled = false;\n andElem.disabled = false;\n if (this.enableSeparateConnector) {\n var elem = parentElem.previousElementSibling;\n while (elem && !elem.classList.contains('e-rule-container')) {\n if (elem.classList.contains('e-group-container')) {\n elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];\n break;\n }\n elem = elem.previousElementSibling;\n }\n if (elem && elem.classList.contains('e-rule-container')) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n if (rule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n // enable/disable conditions when rule condition is added\n this.disableRuleCondition(parentElem);\n }\n if (this.headerTemplate && isRoot) {\n parentElem = this.renderGroup(rule, rule.condition, this.element, rule.not, isRoot);\n }\n if (this.enableNotCondition && !this.headerTemplate) {\n var tglBtnElem = parentElem.querySelector('.e-qb-toggle');\n if (rule.not) {\n addClass([tglBtnElem], 'e-active-toggle');\n if (this.enableSeparateConnector) {\n getComponent(tglBtnElem.querySelector('.e-checkbox'), 'checkbox').checked = rule.not;\n }\n }\n else {\n removeClass([tglBtnElem], 'e-active-toggle');\n }\n }\n }\n if (rule.rules && rule.rules.length === 0 && this.headerTemplate) {\n rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };\n }\n var ruleColl = rule.rules;\n if (!isNullOrUndefined(ruleColl)) {\n for (var i = 0, len = ruleColl.length; i < len; i++) {\n var keys = Object.keys(ruleColl[i]);\n if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1 && (ruleColl[i].rules.length !== 0)) {\n if (this.element.querySelectorAll('.e-group-container').length > this.maxGroupCount) {\n return null;\n }\n parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);\n parentElem = this.importRules(ruleColl[i], parentElem, true);\n }\n else if (!isNullOrUndefined(ruleColl[i].rules)) {\n parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);\n var andElem = parentElem.querySelector('.e-btngroup-and');\n var orElem = parentElem.querySelector('.e-btngroup-or');\n andElem.disabled = true;\n orElem.disabled = true;\n }\n else {\n this.renderRule(ruleColl[i], parentElem);\n }\n if (!isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {\n var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');\n this.groupLock(lockGrpTarget);\n }\n }\n }\n if (parentElem) {\n parentElem = closest(parentElem, '.e-rule-list');\n }\n if (parentElem) {\n parentElem = closest(parentElem, '.e-group-container');\n }\n return parentElem;\n };\n QueryBuilder.prototype.renderGroup = function (rule, condition, parentElem, not, isRoot) {\n this.addGroupElement(true, parentElem, condition, false, not, isRoot, rule); //Child group\n var element = parentElem.querySelectorAll('.e-group-container');\n var cloneElem = parentElem.querySelector('.e-rule-list').children;\n if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {\n this.isMiddleGroup = false;\n this.cloneGrpBtnClick = false;\n var index = 0;\n var tempGroupIndex = this.groupIndex + 1;\n if (this.enableSeparateConnector) {\n for (var i = 0; i < tempGroupIndex; i++) {\n if (cloneElem[i].classList.contains('e-rule-container')) {\n tempGroupIndex++;\n index++;\n }\n }\n }\n return cloneElem[this.groupIndex + index + 1]; // group added in the middle\n }\n else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {\n this.isLastGroup = false;\n this.cloneGrpBtnClick = false;\n return cloneElem[cloneElem.length - 1]; // group added in the end\n }\n else {\n return element[element.length - 1];\n }\n };\n QueryBuilder.prototype.renderRule = function (rule, parentElem) {\n if (parentElem.className.indexOf('e-group-container') > -1) {\n this.addRuleElement(parentElem, rule); //Create rule\n }\n else {\n this.addRuleElement(parentElem.querySelector('.e-group-container'), rule); //Create group\n }\n };\n QueryBuilder.prototype.enableReadonly = function () {\n var target = this.element;\n var elem = target.querySelectorAll('.e-dropdownlist, .e-dropdowntree, .e-numerictextbox, .e-textbox, .e-datepicker, .e-multiselect .e-lib, .e-radio');\n for (var i = 0; i < elem.length; i++) {\n if (elem[i].classList.contains('e-dropdownlist')) {\n var dropDownObj = getInstance(elem[i], DropDownList);\n dropDownObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-dropdowntree')) {\n var dropDownTreeObj = getComponent(elem[i], 'dropdowntree');\n dropDownTreeObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-numerictextbox')) {\n var numericTextBoxObj = getInstance(elem[i], NumericTextBox);\n numericTextBoxObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-textbox')) {\n var textBoxObj = getInstance(elem[i], TextBox);\n textBoxObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-datepicker')) {\n var datePickerObj = getInstance(elem[i], DatePicker);\n datePickerObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-multiselect')) {\n var multiSelectObj = getInstance(elem[i], MultiSelect);\n multiSelectObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-radio')) {\n var radioButtonObj = getInstance(elem[i], RadioButton);\n if (!radioButtonObj.checked) {\n if (this.isReadonly) {\n elem[i].parentElement.style.display = 'none';\n }\n else {\n elem[i].parentElement.style.display = 'inherit';\n }\n }\n }\n }\n var deleteGroupElems = this.element.querySelectorAll('.e-deletegroup');\n var addRuleGroupElems = this.element.querySelectorAll('.e-addrulegroup');\n var removeRuleElems = this.element.querySelectorAll('.e-removerule');\n if (!this.isReadonly && this.ruleElem.classList.contains('e-readonly')) {\n this.ruleElem.classList.remove('e-readonly');\n }\n var elems = [deleteGroupElems, addRuleGroupElems, removeRuleElems];\n for (var i = 0; i < elems.length; i++) {\n elems[i].forEach(function (elem) {\n if (elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n }\n else {\n elem.classList.add('e-readonly');\n }\n });\n }\n this.enableBtnGroup();\n };\n QueryBuilder.prototype.enableBtnGroup = function () {\n var _this = this;\n var elems = this.element.querySelectorAll('.e-btngroup-and-lbl, .e-btngroup-or-lbl, .e-qb-toggle');\n var not = false;\n elems.forEach(function (elem) {\n if (elem.classList.contains('e-qb-toggle') && !elem.classList.contains('e-active-toggle')\n && !elem.classList.contains('e-readonly')) {\n elem.classList.add('e-readonly');\n not = false;\n }\n else if (elem.classList.contains('e-qb-toggle') && elem.classList.contains('e-not-readonly')) {\n elem.classList.remove('e-not-readonly');\n }\n else if (elem.classList.contains('e-qb-toggle') && elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n }\n else if (elem.classList.contains('e-active-toggle')) {\n elem.classList.add('e-not-readonly');\n not = true;\n }\n else if (elem.previousElementSibling.checked || elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n if (not) {\n if (elem.textContent === 'AND') {\n elem.classList.add('e-readonly-and');\n }\n else {\n elem.classList.add('e-readonly-or');\n }\n }\n else {\n if (elem.textContent === 'AND' && _this.isReadonly) {\n elem.classList.remove('e-not');\n elem.classList.add('e-readonly-and');\n }\n else {\n if (_this.enableNotCondition) {\n elem.classList.add('e-not');\n }\n elem.classList.remove('e-readonly-and');\n }\n if (elem.textContent === 'OR' && _this.isReadonly) {\n elem.classList.add('e-readonly-or-not');\n }\n else {\n elem.classList.remove('e-readonly-or-not');\n }\n }\n }\n else if (elem.classList.contains('e-btn-disable')) {\n // do nothing\n }\n else {\n elem.classList.add('e-readonly');\n }\n });\n };\n QueryBuilder.prototype.isDateFunction = function (value) {\n var dateFunc = ['date', 'time', 'day', 'week', 'month', 'year', 'hour', 'minute', 'second', 'now', 'quarter', 'period', 'extract'];\n for (var i = 0, len = dateFunc.length; i < len; i++) {\n if (value.toLowerCase().indexOf(dateFunc[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n QueryBuilder.prototype.getSqlString = function (rules, enableEscape, queryStr, sqlLocale) {\n var _this = this;\n var isRoot = false;\n if (!queryStr && queryStr !== '') {\n queryStr = '';\n isRoot = true;\n }\n else {\n queryStr += '(';\n }\n if (rules.not) {\n var notPrefix = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' ' : 'NOT ';\n queryStr += isRoot ? notPrefix + '(' : ' ' + notPrefix + '(';\n }\n if (rules.rules && rules.rules.length) {\n queryStr += rules.rules.reduce(function (result, rule, j) {\n var ruleStr = '';\n if (rule.rules) {\n ruleStr = _this.getSqlString(rule, enableEscape, '', sqlLocale);\n if (_this.enableSeparateConnector) {\n rules.condition = rule.condition;\n }\n }\n else {\n var ruleOpertor = sqlLocale ? _this.sqlOperators[rule.operator] : _this.operators[rule.operator];\n var valueStr = '';\n if (rule.value instanceof Array) {\n if (rule.operator.toString().indexOf('between') > -1) {\n var ruleCondition = sqlLocale ? ' ' + _this.l10n.getConstant('AND').toUpperCase() + ' ' : ' AND ';\n if (rule.type === 'date' && !_this.isDateFunction(rule.value[0])) {\n valueStr = \"\\\"\" + rule.value[0] + \"\\\"\" + ruleCondition + \"\\\"\" + rule.value[1] + \"\\\"\";\n }\n else {\n valueStr = \"\" + rule.value[0] + ruleCondition + rule.value[1];\n }\n }\n else {\n if (typeof rule.value[0] === 'string' && rule.value !== null) {\n var valueArray = rule.value;\n valueStr = '(\"' + valueArray.join('\",\"') + '\")';\n }\n else {\n valueStr = \"(\" + rule.value + \")\";\n }\n }\n }\n else {\n if (rule.operator.toString().indexOf('startswith') > -1) {\n valueStr = rule.value ? \"(\\\"\" + rule.value + \"%\\\")\" : \"(\" + rule.value + \")\";\n }\n else if (rule.operator.toString().indexOf('endswith') > -1) {\n valueStr = rule.value ? \"(\\\"%\" + rule.value + \"\\\")\" : \"(\" + rule.value + \")\";\n }\n else if (rule.operator.toString().indexOf('contains') > -1) {\n valueStr = rule.value ? \"(\\\"%\" + rule.value + \"%\\\")\" : \"(\" + rule.value + \")\";\n }\n else {\n if (rule.type === 'number' || typeof rule.value === 'boolean' ||\n (rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {\n valueStr = \"\" + rule.value;\n }\n else if (rule.operator.toString().indexOf('empty') > -1) {\n valueStr = '\"\"';\n }\n else {\n valueStr = \"\\\"\" + rule.value + \"\\\"\";\n }\n }\n }\n var fieldName = rule.field;\n if (enableEscape) {\n fieldName = '`' + fieldName + '`';\n }\n else if (fieldName.indexOf(' ') > -1) {\n fieldName = '\"' + fieldName + '\"';\n }\n if (rule.operator.toString().indexOf('null') > -1) {\n ruleStr = fieldName + ' ' + ruleOpertor;\n }\n else {\n var custOper = ruleOpertor;\n if (rule.operator === 'isempty') {\n custOper = '=';\n }\n else if (rule.operator === 'isnotempty') {\n custOper = '!=';\n }\n ruleStr = fieldName + ' ' + custOper + ' ' + valueStr;\n }\n }\n if (j !== rules.rules.length - 1) {\n var condition = rules.condition;\n if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {\n condition = rule.condition;\n }\n if (condition) {\n condition = sqlLocale ? _this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();\n ruleStr += ' ' + condition + ' ';\n }\n }\n return result + ruleStr;\n }, '');\n }\n if (!isRoot) {\n queryStr += ')';\n }\n if (rules.not) {\n queryStr += ')';\n }\n return queryStr;\n };\n /**\n * Sets the rules from the sql query.\n *\n * @param {string} sqlString - 'sql String' to be passed to set the rule.\n * @param {boolean} sqlLocale - Optional. Set `true` if Localization for Sql query.\n * @returns {void}\n */\n QueryBuilder.prototype.setRulesFromSql = function (sqlString, sqlLocale) {\n sqlString = sqlString.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sqlString, sqlLocale);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n };\n /**\n * Get the rules from SQL query.\n *\n * @param {string} sqlString - 'sql String' to be passed to get the rule.\n * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.\n * @returns {object} - Rules from SQL query\n */\n QueryBuilder.prototype.getRulesFromSql = function (sqlString, sqlLocale) {\n this.parser = [];\n this.sqlParser(sqlString, sqlLocale);\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n var rule = this.processParser(this.parser, this.rule, [0], sqlLocale);\n if (this.enableNotCondition) {\n return { condition: rule.condition, not: rule.not, rules: rule.rules };\n }\n else {\n return { condition: rule.condition, rules: rule.rules };\n }\n };\n /**\n * Gets the sql query from rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get the sql.\n * @param {boolean} allowEscape - Set `true` if it exclude the escape character.\n * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.\n * @returns {string} - Sql query from rules.\n */\n QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {\n if (!rule) {\n rule = this.getValidRules();\n }\n rule = this.getRuleCollection(rule, false);\n var sqlString = this.getSqlString(this.getValidRules(rule), allowEscape, null, sqlLocale).replace(/\"/g, '\\'');\n return sqlString;\n };\n /**\n * Gets the parameter SQL query from rules.\n *\n * @param {RuleModel} rule – Specify the rule to be passed to get the parameter sql string.\n * @returns {ParameterizedSql} – Parameterized SQL query from rules.\n */\n QueryBuilder.prototype.getParameterizedSql = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { sql: null };\n this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });\n return obj['sql'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return null;\n };\n /**\n * Sets the rules from the parameter sql query.\n *\n * @param { ParameterizedSql} sqlQuery – Specifies the parameter SQL to be passed to set the rule and load it to the query builder.\n * @returns {void}\n */\n QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n var obj = { sql: null };\n this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });\n var sql = obj['sql'];\n if (sql) {\n sql = sql.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sql);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n }\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Gets the named parameter SQL query from rules.\n *\n * @param {RuleModel} rule – Specify the rule to be passed to get the named parameter SQL string.\n * @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.\n */\n QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { sql: null };\n this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });\n return obj['sql'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return null;\n };\n /**\n * Sets the rules from the named parameter SQL query.\n *\n * @param { ParameterizedNamedSql } sqlQuery – Specifies the named parameter SQL to be passed to set the rule and load it to the query builder.\n * @returns {void}\n */\n QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n var obj = { sql: null };\n this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });\n var sql = obj['sql'];\n if (sql) {\n sql = sql.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sql);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n }\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Set the rules from Mongo query.\n *\n * @param {string} mongoQuery - 'sql String' to be passed to get the rule.\n * @param {boolean} mongoLocale - Set `true` if Localization for Mongo query.\n * @returns {void}\n */\n QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n this.rule = { condition: 'and', not: false, rules: [] };\n this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Gets the Mongo query from rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get the sql.\n * @returns {object} - Sql query from rules.\n */\n QueryBuilder.prototype.getMongoQuery = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { mongoQuery: null };\n this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });\n return obj['mongoQuery'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return '';\n };\n /**\n * Clones the rule based on the rule ID to the specific group.\n *\n * @param {string} ruleID - Specifies the ruleID that needs to be cloned.\n * @param {string} groupID - Specifies the groupID in which the rule to be cloned.\n * @param {number} index - Specifies the index to insert the cloned rule inside the group.\n * @returns {void}\n */\n QueryBuilder.prototype.cloneRule = function (ruleID, groupID, index) {\n var getRule = this.getRule(ruleID.replace(this.element.id + '_', ''));\n var isCloneRule = this.showButtons.cloneRule;\n groupID = groupID.replace(this.element.id + '_', '');\n this.ruleIndex = index;\n this.cloneRuleBtnClick = true;\n this.showButtons.cloneRule = true;\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition\n }], groupID);\n this.ruleIndex = -1;\n this.cloneRuleBtnClick = false;\n this.showButtons.cloneRule = isCloneRule;\n isCloneRule = false;\n };\n /**\n * Clones the group based on the group ID to the specific group.\n *\n * @param {string} groupID - Specifies the groupID that needs to be cloned.\n * @param {string} parentGroupID - Specifies the parentGroupID in which the group to be cloned.\n * @param {number} index - Specifies the index to insert the cloned group inside the parent group.\n * @returns {void}\n */\n QueryBuilder.prototype.cloneGroup = function (groupID, parentGroupID, index) {\n parentGroupID = parentGroupID.replace(this.element.id + '_', '');\n var group = this.getGroup(parentGroupID);\n var isCloneGroup = this.showButtons.cloneGroup;\n groupID = groupID.replace(this.element.id + '_', '');\n this.groupIndex = index;\n this.cloneGrpBtnClick = true;\n this.showButtons.cloneGroup = true;\n this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupID);\n this.groupIndex = -1;\n this.cloneGrpBtnClick = false;\n this.showButtons.cloneGroup = isCloneGroup;\n isCloneGroup = false;\n };\n /**\n * Locks the rule based on the rule ID.\n *\n * @param {string} ruleID - Specifies the ruleID that needs to be locked.\n * @returns {void}\n */\n QueryBuilder.prototype.lockRule = function (ruleID) {\n if (ruleID.indexOf(this.element.id) < 0) {\n ruleID = this.element.id + '_' + ruleID;\n }\n var target = document.getElementById(ruleID).querySelectorAll('.e-lock-rule-btn')[0];\n this.ruleLock(target);\n };\n /**\n * Locks the group based on the group ID\n *\n * @param {string} groupID - Specifies the groupID that needs to be locked.\n * @returns {void}\n */\n QueryBuilder.prototype.lockGroup = function (groupID) {\n if (groupID.indexOf(this.element.id) < 0) {\n groupID = this.element.id + '_' + groupID;\n }\n var target = document.getElementById(groupID).querySelectorAll('.e-lock-grp-btn')[0];\n this.groupLock(target);\n };\n QueryBuilder.prototype.sqlParser = function (sqlString, sqlLocale) {\n var st = 0;\n var str;\n do {\n str = sqlString.slice(st);\n st += this.parseSqlStrings(str, sqlLocale);\n } while (str !== '');\n return this.parser;\n };\n QueryBuilder.prototype.parseSqlStrings = function (sqlString, sqlLocale) {\n var operators = ['=', '!=', '<=', '>=', '<', '>'];\n var conditions;\n if (sqlLocale) {\n conditions = [this.l10n.getConstant('AND').toUpperCase(), this.l10n.getConstant('OR').toUpperCase(), this.l10n.getConstant('NOT').toUpperCase()];\n }\n else {\n conditions = ['AND', 'OR', 'NOT'];\n }\n var subOp;\n if (sqlLocale) {\n subOp = [this.l10n.getConstant('In').toUpperCase(), this.l10n.getConstant('NotIn').toUpperCase(),\n this.l10n.getConstant('Like').toUpperCase(), this.l10n.getConstant('NotLike').toUpperCase(),\n this.l10n.getConstant('Between').toUpperCase(), this.l10n.getConstant('NotBetween').toUpperCase(),\n this.l10n.getConstant('IsNull').toUpperCase(), this.l10n.getConstant('IsNotNull').toUpperCase(),\n this.l10n.getConstant('IsEmpty').toUpperCase(), this.l10n.getConstant('IsNotEmpty').toUpperCase()];\n }\n else {\n subOp = ['IN', 'NOT IN', 'LIKE', 'NOT LIKE', 'BETWEEN', 'NOT BETWEEN', 'IS NULL', 'IS NOT NULL', 'IS EMPTY', 'IS NOT EMPTY'];\n }\n var regexStr;\n var regex;\n var matchValue;\n for (var i = 0, iLen = operators.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(operators[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + operators[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['Operators', operators[i].toLowerCase()]);\n return operators[i].length;\n }\n }\n var lastPasrser = this.parser[this.parser.length - 1];\n if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {\n for (var i = 0, iLen = conditions.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(conditions[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + conditions[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['Conditions', conditions[i].toLowerCase()]);\n return conditions[i].length;\n }\n }\n }\n for (var i = 0, iLen = subOp.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(subOp[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + subOp[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['SubOperators', subOp[i].toLowerCase()]);\n return subOp[i].length;\n }\n }\n if (/^\\(/.exec(sqlString)) {\n this.parser.push(['Left', '(']);\n return 1;\n }\n if (/^\\)/.exec(sqlString)) {\n this.parser.push(['Right', ')']);\n return 1;\n }\n if (/^(true|false)/.exec(sqlString)) {\n matchValue = /^(true|false)/.exec(sqlString)[0];\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n if (/^null/.exec(sqlString)) {\n matchValue = /^null/.exec(sqlString)[0];\n this.parser.push(['String', null]);\n return matchValue.length;\n }\n if (/^`?([a-z_][a-z0-9_.\\\\[\\]\\\\(\\\\)]{0,}(\\\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)) {\n matchValue = /^`?([a-z_][a-z0-9_.\\\\[\\]\\\\(\\\\)]{0,}(\\\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n if (this.checkLiteral() && /^'?([a-z_][a-z0-9 _.\\\\[\\]\\\\(\\\\)-]{0,}(\\\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)) {\n matchValue = /^'?([a-z_][a-z0-9 _.\\\\[\\]\\\\(\\\\)-]{0,}(\\\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length + 2;\n }\n if (this.checkNumberLiteral(sqlString, sqlLocale)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExValue = /^[0-9]+(\\.[0-9]+)$/.exec(sqlString);\n if (regExValue) {\n matchValue = regExValue[0];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n }\n var singleString = this.getSingleQuoteString(sqlString);\n if (singleString !== '') {\n matchValue = singleString;\n if (matchValue[matchValue.length - 2] === '(') {\n var isClosed = false;\n for (var j = matchValue.length; j < sqlString.length; j++) {\n matchValue += sqlString[j];\n if (sqlString[j] === ')') {\n isClosed = true;\n }\n if (isClosed && sqlString[j] === '\\'') {\n break;\n }\n }\n }\n else if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&\n !this.checkCondition(sqlString, matchValue)) {\n matchValue = this.combineSingleQuoteString(sqlString, matchValue);\n }\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n var doubleString = this.getDoubleQuoteString(sqlString);\n if (doubleString !== '') {\n matchValue = doubleString;\n this.parser.push(['DoubleString', matchValue]);\n return matchValue.length;\n }\n if (/^\\d*\\.?\\d+/.exec(sqlString)) {\n matchValue = /^\\d*\\.?\\d+/.exec(sqlString)[0];\n this.parser.push(['Number', matchValue]);\n return matchValue.length;\n }\n if (/^-?\\d*\\.?\\d+/.exec(sqlString)) {\n matchValue = /^-?\\d*\\.?\\d+/.exec(sqlString)[0];\n this.parser.push(['Number', matchValue]);\n return matchValue.length;\n }\n return 1;\n };\n QueryBuilder.prototype.getDoubleQuoteString = function (sqlString) {\n var start = sqlString.indexOf('\"');\n if (start === 0) {\n var end = sqlString.indexOf('\"', start + 1);\n if (end !== -1) {\n return sqlString.substring(start, end + 1);\n }\n }\n return '';\n };\n QueryBuilder.prototype.checkCondition = function (sqlString, matchValue) {\n if (sqlString.slice(matchValue.length + 1, matchValue.length + 4) === 'AND' ||\n sqlString.slice(matchValue.length + 1, matchValue.length + 3) === 'OR') {\n return true;\n }\n return false;\n };\n QueryBuilder.prototype.getSingleQuoteString = function (sqlString, isBetween) {\n var start = sqlString.indexOf('\\'');\n if ((start !== -1 && isBetween) || (start === 0 && !isBetween)) {\n var end = sqlString.indexOf('\\'', start + 1);\n if (end !== -1) {\n return sqlString.substring(start, end + 1);\n }\n }\n return '';\n };\n QueryBuilder.prototype.combineSingleQuoteString = function (sqlString, matchValue) {\n if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&\n !this.checkCondition(sqlString, matchValue) && sqlString[matchValue.length] !== ',') {\n var tempMatchValue = matchValue.substring(0, matchValue.length - 1);\n var tempStr = sqlString.replace(tempMatchValue, '');\n var singleString = this.getSingleQuoteString(tempStr, true);\n if (singleString !== '') {\n var parsedValue = singleString.substring(1, singleString.length);\n matchValue += parsedValue;\n matchValue = this.combineSingleQuoteString(sqlString, matchValue);\n }\n }\n return matchValue;\n };\n QueryBuilder.prototype.checkLiteral = function () {\n var lastParser = this.parser[this.parser.length - 1];\n if (!lastParser) {\n return true;\n }\n else {\n var secParser = this.parser[this.parser.length - 2];\n var betweenParser = this.parser[this.parser.length - 3];\n if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {\n return true;\n }\n var betweenOperator = 'between';\n if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf(betweenOperator) < 0)) {\n return true;\n }\n }\n return false;\n };\n QueryBuilder.prototype.checkNumberLiteral = function (sqlString, sqlLocale) {\n var lastParser = this.parser[this.parser.length - 1];\n if (!lastParser) {\n return true;\n }\n else {\n if (/^[0-9]+(?:\\.[0-9]+)$/.exec(sqlString)) {\n var secParser = this.parser[this.parser.length - 2];\n var betweenParser = this.parser[this.parser.length - 3];\n if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {\n return true;\n }\n var betweenOperator = sqlLocale ? this.l10n.getConstant('Between').toLowerCase() : 'between';\n if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf(betweenOperator) < 0)) {\n return true;\n }\n }\n }\n return false;\n };\n QueryBuilder.prototype.getOperator = function (value, operator, sqlLocale) {\n var operators = {\n '=': 'equal', '!=': 'notequal', '<': 'lessthan', '>': 'greaterthan', '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal', 'in': 'in', 'not in': 'notin', 'between': 'between', 'not between': 'notbetween',\n 'is empty': 'isempty', 'is null': 'isnull', 'is not null': 'isnotnull', 'is not empty': 'isnotempty'\n };\n if (sqlLocale) {\n var localeOperator = Object.keys(this.sqlOperators);\n for (var i = 0; i < localeOperator.length; i++) {\n if (this.sqlOperators[localeOperator[i]] === operator.toUpperCase()) {\n if (value && value.indexOf('%') === 0 && value[value.length - 1] === '%') {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notcontains' : 'contains';\n }\n else if (value && value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notstartswith' : 'startswith';\n }\n else if (value && value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notendswith' : 'endswith';\n }\n return localeOperator[i];\n }\n }\n return null;\n }\n if (value) {\n if (value.indexOf('%') === 0 && value[value.length - 1] === '%') {\n return (operator === 'not like') ? 'notcontains' : 'contains';\n }\n else if (value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {\n return (operator === 'not like') ? 'notstartswith' : 'startswith';\n }\n else if (value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {\n return (operator === 'not like') ? 'notendswith' : 'endswith';\n }\n }\n else {\n if (operator === 'not like') {\n return 'notequal';\n }\n else if (operator === 'like') {\n return 'equal';\n }\n }\n return operators[\"\" + operator];\n };\n QueryBuilder.prototype.getTypeFromColumn = function (rules) {\n var columnData = this.getColumn(rules.field);\n if (!isNullOrUndefined(columnData)) {\n return columnData.type;\n }\n return null;\n };\n QueryBuilder.prototype.getLabelFromColumn = function (field) {\n var label = '';\n var l = 0;\n if (this.separator !== '') {\n var fieldColl = field.split(this.separator);\n for (var i = 0; i < fieldColl.length; i++) {\n label += this.getLabelFromField(fieldColl, i + 1);\n l++;\n if (l < fieldColl.length) {\n label += this.separator;\n }\n }\n return label;\n }\n else {\n var labelItem = this.getColumn(field).label;\n return labelItem;\n }\n };\n QueryBuilder.prototype.getLabelFromField = function (field, startIdx) {\n var fieldName = '';\n var j = 0;\n for (var k = 0; k < startIdx; k++) {\n fieldName += field[k];\n j++;\n if (j < startIdx) {\n fieldName += this.separator;\n }\n }\n return this.getColumn(fieldName) ? this.getColumn(fieldName).label : '';\n };\n QueryBuilder.prototype.processParser = function (parser, rules, levelColl, sqlLocale) {\n var j;\n var jLen;\n var rule;\n var subRules;\n var numVal = [];\n var strVal = [];\n var k;\n var kLen;\n var l;\n var lLen;\n var grpCount;\n var operator;\n var isLeftOpened = false;\n var isNotOpened = false;\n for (var i = 0, iLen = parser.length; i < iLen; i++) {\n if (parser[i][0] === 'Literal') {\n var column = this.getColumn(parser[i][1]);\n rule = { label: (column && column.label) ? column.label : parser[i][1], field: parser[i][1] };\n if (parser[i + 1][0] === 'SubOperators') {\n if (parser[i + 1][1].indexOf('null') > -1 || parser[i + 1][1].indexOf('empty') > -1) {\n rule.operator = this.getOperator(' ', parser[i + 1][1], sqlLocale);\n rule.value = null;\n rule.type = this.getTypeFromColumn(rule);\n }\n else {\n if (parser.length === 3 && parser[2][0] === 'String' && (parser[2][1]).indexOf('%') !== -1) {\n var oper = parser[i + 2][1] ? parser[i + 2][1].replace(/'/g, '') : parser[i + 2][1];\n rule.operator = this.getOperator(oper, parser[i + 1][1], sqlLocale);\n }\n else {\n var oper = parser[i + 3][1] ? parser[i + 3][1].replace(/'/g, '') : parser[i + 3][1];\n rule.operator = this.getOperator(oper, parser[i + 1][1], sqlLocale);\n }\n }\n operator = parser[i + 1][1];\n i++;\n j = i + 1;\n jLen = iLen;\n if (sqlLocale && rule.operator === 'contains' || rule.operator === 'startswith' || rule.operator === 'endswith') {\n operator = 'like';\n }\n else if (sqlLocale && rule.operator === 'notcontains' || rule.operator === 'notstartswith' || rule.operator === 'notendswith') {\n operator = 'not like';\n }\n else if (sqlLocale) {\n operator = rule.operator;\n }\n for (j = i + 1; j < jLen; j++) {\n if (operator.indexOf('between') < 0 && parser[j][0] === 'Left') {\n isLeftOpened = true;\n }\n else if (parser[j][0] === 'Right' && isLeftOpened) {\n i = j;\n isLeftOpened = false;\n break;\n }\n else {\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n break;\n }\n if (operator.indexOf('like') > -1 && parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n val = val ? val.replace(/%/g, '') : parser[j][1];\n rule.value = val;\n rule.type = 'string';\n }\n else if (operator.indexOf('between') > -1) {\n if (parser[j][0] === 'Literal' || parser[j][0] === 'Left') {\n break;\n }\n if (parser[j][0] === 'Number') {\n numVal.push(Number(parser[j][1]));\n }\n else if (parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n strVal.push(val);\n }\n }\n else {\n if (parser[j][0] === 'Number') {\n numVal.push(Number(parser[j][1]));\n }\n else if (parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n strVal.push(val);\n }\n }\n rule.type = this.getTypeFromColumn(rule);\n }\n }\n if (operator.indexOf('like') < 0) {\n if (parser[j - 1][0] === 'Number') {\n rule.value = numVal;\n rule.type = 'number';\n }\n else if (parser[j - 1][0] === 'String') {\n rule.value = strVal;\n rule.type = 'string';\n }\n else if (operator.indexOf('between') > -1 && parser[j - 1][0] === 'Conditions') {\n if (strVal.length !== 0) {\n rule.value = strVal;\n rule.type = 'string';\n }\n else {\n rule.value = numVal;\n rule.type = 'number';\n }\n }\n numVal = [];\n strVal = [];\n rule.type = this.getTypeFromColumn(rule);\n }\n if (this.enableSeparateConnector && parser[i + 1][0] === 'Conditions') {\n rule.condition = parser[i + 1][1];\n }\n }\n else if (parser[i + 1][0] === 'Operators') {\n rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);\n if (rule.operator === 'equal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\\'\\'') {\n rule.operator = 'isempty';\n }\n else if (rule.operator === 'notequal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\\'\\'') {\n rule.operator = 'isnotempty';\n }\n if (parser[i + 2][0] === 'Number') {\n rule.type = 'number';\n rule.value = Number(parser[i + 2][1]);\n }\n else {\n rule.type = 'string';\n var val = parser[i + 2][1];\n if (val && val[0] === '\\'') {\n val = val.substring(1, val.length - 1);\n }\n rule.value = val;\n }\n if (this.enableSeparateConnector && parser[i + 3][0] === 'Conditions') {\n rule.condition = parser[i + 3][1];\n }\n rule.type = this.getTypeFromColumn(rule);\n }\n rules.rules.push(rule);\n }\n else if (parser[i][0] === 'Left') {\n if (!(parser[0][0] === 'Left') && (parser[i - 1][1] === 'not' || sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i - 1][1])) {\n isNotOpened = true;\n continue;\n }\n this.parser = parser.splice(i + 1, iLen - (i + 1));\n if (this.enableNotCondition) {\n subRules = { condition: 'and', rules: [], not: false };\n }\n else {\n subRules = { condition: 'and', rules: [] };\n }\n grpCount = 0;\n kLen = rules.rules.length;\n for (k = 0; k < kLen; k++) { //To get the group position\n if (rules.rules[k].rules) {\n grpCount++;\n }\n }\n levelColl.push(grpCount);\n rules.rules.push(subRules);\n subRules = this.processParser(this.parser, subRules, levelColl, sqlLocale);\n return rules;\n }\n else if (parser[i][0] === 'Conditions' && !this.enableSeparateConnector) {\n if (parser[i][1] === 'not' || (sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i][1])) {\n rules.not = true;\n }\n else {\n rules.condition = parser[i][1];\n }\n }\n else if (parser[i][0] === 'Right') {\n if (isNotOpened && parser[i + 1][0] === 'Right') {\n isNotOpened = false;\n continue;\n }\n this.parser = parser.splice(i + 1, iLen - (i + 1));\n levelColl.pop(); //To get the parent Group\n rules = this.rule;\n lLen = levelColl.length;\n for (l = 0; l < lLen; l++) {\n rules = this.findGroupByIdx(levelColl[l], rules, l === 0);\n }\n return this.processParser(this.parser, rules, levelColl, sqlLocale);\n }\n }\n return rules;\n };\n /**\n * Clone the Group\n *\n * @param {Element | string} target - 'target' to be passed to clone the group.\n * @returns {void}\n */\n QueryBuilder.prototype.groupClone = function (target) {\n var groupElem = target.closest('.e-rule-list').closest('.e-group-container');\n var targetGrpId = target.id.replace(this.element.id + '_', '');\n var groupId = groupElem.id.replace(this.element.id + '_', '');\n var group = this.getGroup(targetGrpId);\n this.groupIndex = Array.prototype.indexOf.call(target.closest('.e-rule-list').children, target.closest('.e-group-container'));\n this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupId);\n this.groupIndex = -1;\n };\n QueryBuilder.prototype.ruleClone = function (target) {\n var ruleElem = closest(target, '.e-rule-container');\n var groupElem = target.closest('.e-rule-list').closest('.e-group-container');\n var getRule = this.getRule(target);\n var groupId = groupElem.id.replace(this.element.id + '_', '');\n var ruleElemColl = groupElem.querySelectorAll('.e-rule-container');\n for (var i = 0, iLen = ruleElemColl.length; i < iLen; i++) {\n if (ruleElem.id === ruleElemColl[i].id) {\n this.ruleIndex = i;\n }\n }\n if (this.enableSeparateConnector) {\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition\n }], groupId);\n }\n else {\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value\n }], groupId);\n }\n this.ruleIndex = -1;\n };\n QueryBuilder.prototype.ruleLock = function (target) {\n var ruleElem = closest(target, '.e-rule-container');\n var rule = this.getRule(ruleElem.id.replace(this.element.id + '_', ''));\n if (ruleElem.classList.contains('e-disable')) {\n rule.isLocked = false;\n this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== ruleElem.id; });\n ruleElem.classList.remove('e-disable');\n this.disableRuleControls(target, ruleElem, false);\n target.children[0].classList.add('e-unlock');\n target.children[0].classList.remove('e-lock');\n target.setAttribute('title', this.l10n.getConstant('LockRule'));\n }\n else {\n rule.isLocked = true;\n if (this.lockItems.indexOf(ruleElem.id) < 0) {\n this.lockItems.splice(this.lockItems.length - 1, 0, ruleElem.id);\n }\n ruleElem.classList.add('e-disable');\n this.disableRuleControls(target, ruleElem, true);\n target.children[0].classList.add('e-lock');\n target.children[0].classList.remove('e-unlock');\n target.setAttribute('title', this.l10n.getConstant('UnlockRule'));\n }\n };\n QueryBuilder.prototype.groupLock = function (target) {\n var groupElem = closest(target, '.e-group-container');\n var group = this.getGroup(groupElem.id.replace(this.element.id + '_', ''));\n var isRoot = groupElem.id.indexOf('group0') > -1;\n if (groupElem.classList.contains('e-disable')) {\n if (isRoot) {\n var newGroup = {};\n newGroup.condition = group.condition;\n newGroup.not = group.not;\n newGroup.isLocked = false;\n this.setProperties({ rule: newGroup }, true);\n }\n else {\n group.isLocked = false;\n }\n this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== groupElem.id; });\n groupElem.classList.remove('e-disable');\n this.disableHeaderControls(target, groupElem, false);\n target.children[0].classList.add('e-unlock');\n target.children[0].classList.remove('e-lock');\n target.setAttribute('title', this.l10n.getConstant('LockGroup'));\n this.updateLockItems();\n }\n else {\n if (isRoot) {\n var newGroup = {};\n newGroup.condition = group.condition;\n newGroup.not = group.not;\n newGroup.isLocked = true;\n this.setProperties({ rule: newGroup }, true);\n }\n else {\n group.isLocked = true;\n }\n if (this.lockItems.indexOf(groupElem.id) < 0) {\n this.lockItems.splice(this.lockItems.length - 1, 0, groupElem.id);\n }\n groupElem.classList.add('e-disable');\n this.disableHeaderControls(target, groupElem, true);\n target.children[0].classList.add('e-lock');\n target.children[0].classList.remove('e-unlock');\n target.setAttribute('title', this.l10n.getConstant('UnlockGroup'));\n }\n };\n QueryBuilder.prototype.updateLockItems = function () {\n for (var i = 0; i < this.lockItems.length; i++) {\n var idColl = this.lockItems[i].split('_');\n if (idColl.length > 2) {\n var ruleElem = this.element.querySelector('#' + this.lockItems[i]);\n var target = ruleElem.querySelector('.e-lock-rule-btn');\n ruleElem = closest(target, '.e-rule-container');\n if (!ruleElem.classList.contains('e-disable')) {\n this.ruleLock(target);\n }\n }\n else {\n var groupElem = this.element.querySelector('#' + this.lockItems[i]);\n var target = groupElem.querySelector('.e-lock-grp-btn');\n groupElem = closest(target, '.e-group-container');\n if (!groupElem.classList.contains('e-disable')) {\n this.groupLock(target);\n }\n }\n }\n };\n QueryBuilder.prototype.disableHeaderControls = function (target, groupElem, isDisabled) {\n var andElem = groupElem.querySelectorAll('.e-btngroup-and');\n var orElem = groupElem.querySelectorAll('.e-btngroup-or');\n var notElem = groupElem.querySelectorAll('.e-qb-toggle');\n var addElem = groupElem.querySelectorAll('.e-add-btn');\n var deleteGrpElem = groupElem.querySelectorAll('.e-deletegroup');\n var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');\n var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');\n var groupContElem = groupElem.querySelectorAll('.e-group-container');\n var addCondition = groupElem.querySelectorAll('.e-add-condition-btn');\n var addGroup = groupElem.querySelectorAll('.e-add-group-btn');\n for (var i = 0; i < andElem.length; i++) {\n if (isDisabled) {\n if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {\n groupContElem[i].classList.add('e-disable');\n }\n andElem[i].disabled = true;\n orElem[i].disabled = true;\n if (addElem[i]) {\n addElem[i].disabled = true;\n }\n if (addCondition[i]) {\n addCondition[i].disabled = true;\n }\n if (addGroup[i]) {\n addGroup[i].disabled = true;\n }\n if (notElem[i]) {\n notElem[i].disabled = true;\n }\n if (deleteGrpElem[i]) {\n deleteGrpElem[i].disabled = true;\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = true;\n }\n andElem[i].parentElement.classList.add('e-disabled');\n if (lockElem[i] && lockElem[i] !== target) {\n lockElem[i].disabled = true;\n lockElem[i].children[0].classList.remove('e-unlock');\n lockElem[i].children[0].classList.add('e-lock');\n }\n }\n else {\n if (groupContElem[i]) {\n groupContElem[i].classList.remove('e-disable');\n }\n andElem[i].disabled = false;\n orElem[i].disabled = false;\n if (addElem[i]) {\n addElem[i].disabled = false;\n }\n if (addCondition[i]) {\n addCondition[i].disabled = false;\n }\n if (addGroup[i]) {\n addGroup[i].disabled = false;\n }\n if (lockElem[i]) {\n lockElem[i].disabled = false;\n }\n if (notElem[i]) {\n notElem[i].disabled = false;\n }\n if (deleteGrpElem[i]) {\n deleteGrpElem[i].disabled = false;\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = false;\n }\n andElem[i].parentElement.classList.remove('e-disabled');\n if (lockElem[i]) {\n lockElem[i].children[0].classList.remove('e-lock');\n }\n if (lockElem[i]) {\n lockElem[i].children[0].classList.add('e-unlock');\n }\n }\n }\n this.disableRuleControls(target, groupElem, isDisabled);\n };\n QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {\n var disableComponents = function (elements, componentGetter, isDisabled) {\n elements.forEach(function (element) {\n var component = componentGetter(element);\n if ('enabled' in component) {\n component.enabled = !isDisabled;\n }\n else if ('disabled' in component) {\n component.disabled = isDisabled;\n }\n });\n };\n var elements = {\n ddl: groupElem.querySelectorAll('.e-control.e-dropdownlist'),\n numeric: groupElem.querySelectorAll('.e-control.e-numerictextbox'),\n text: groupElem.querySelectorAll('.e-control.e-textbox'),\n date: groupElem.querySelectorAll('.e-control.e-datepicker'),\n checkbox: groupElem.querySelectorAll('.e-control.e-checkbox'),\n radio: groupElem.querySelectorAll('.e-control.e-radio'),\n multiSelect: groupElem.querySelectorAll('.e-control.e-multiselect'),\n deleteElem: groupElem.querySelectorAll('.e-rule-delete'),\n lockElem: groupElem.querySelectorAll('.e-lock-rule'),\n cloneElem: groupElem.querySelectorAll('.e-clone-rule'),\n ruleElem: groupElem.querySelectorAll('.e-rule-container')\n };\n elements.deleteElem.forEach(function (elem, i) {\n if (isDisabled) {\n if (elements.ruleElem[i] && elements.ruleElem[i].classList.contains('e-disable')) {\n elements.ruleElem[i].classList.add('e-disable');\n }\n elements.deleteElem[i].disabled = true;\n if (elements.cloneElem[i]) {\n elements.cloneElem[i].disabled = true;\n }\n if (elements.lockElem[i] !== target) {\n elements.lockElem[i].disabled = true;\n elements.lockElem[i].children[0].classList.remove('e-unlock');\n elements.lockElem[i].children[0].classList.add('e-lock');\n }\n }\n else {\n if (elements.ruleElem[i]) {\n elements.ruleElem[i].classList.remove('e-disable');\n }\n if (elements.cloneElem[i]) {\n elements.cloneElem[i].disabled = false;\n }\n elements.deleteElem[i].disabled = false;\n elements.lockElem[i].disabled = false;\n elements.lockElem[i].children[0].classList.remove('e-lock');\n elements.lockElem[i].children[0].classList.add('e-unlock');\n }\n });\n disableComponents(elements.ddl, function (elem) { return getComponent(elem, 'dropdownlist'); }, isDisabled);\n disableComponents(elements.numeric, function (elem) { return getComponent(elem, 'numerictextbox'); }, isDisabled);\n disableComponents(elements.text, function (elem) { return getComponent(elem, 'textbox'); }, isDisabled);\n disableComponents(elements.date, function (elem) { return getComponent(elem, 'datepicker'); }, isDisabled);\n disableComponents(elements.checkbox, function (elem) { return getComponent(elem, 'checkbox'); }, isDisabled);\n disableComponents(elements.radio, function (elem) { return getComponent(elem, 'radio'); }, isDisabled);\n disableComponents(elements.multiSelect, function (elem) { return getComponent(elem, 'multiselect'); }, isDisabled);\n };\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"beforeChange\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"ruleChange\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"drop\", void 0);\n __decorate([\n Complex({}, ShowButtons)\n ], QueryBuilder.prototype, \"showButtons\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"summaryView\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"allowValidation\", void 0);\n __decorate([\n Property('Default')\n ], QueryBuilder.prototype, \"fieldMode\", void 0);\n __decorate([\n Property([])\n ], QueryBuilder.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"fieldModel\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"operatorModel\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"valueModel\", void 0);\n __decorate([\n Property()\n ], QueryBuilder.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], QueryBuilder.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], QueryBuilder.prototype, \"dataSource\", void 0);\n __decorate([\n Property('Horizontal')\n ], QueryBuilder.prototype, \"displayMode\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('Default')\n ], QueryBuilder.prototype, \"sortDirection\", void 0);\n __decorate([\n Property(5)\n ], QueryBuilder.prototype, \"maxGroupCount\", void 0);\n __decorate([\n Property('auto')\n ], QueryBuilder.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], QueryBuilder.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"matchCase\", void 0);\n __decorate([\n Property(0)\n ], QueryBuilder.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enableNotCondition\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], QueryBuilder.prototype, \"addRuleToNewGroups\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"autoSelectField\", void 0);\n __decorate([\n Property(true)\n ], QueryBuilder.prototype, \"autoSelectOperator\", void 0);\n __decorate([\n Property('')\n ], QueryBuilder.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enableSeparateConnector\", void 0);\n __decorate([\n Complex({ condition: 'and', rules: [] }, Rule)\n ], QueryBuilder.prototype, \"rule\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"allowDragAndDrop\", void 0);\n QueryBuilder = __decorate([\n NotifyPropertyChanges\n ], QueryBuilder);\n return QueryBuilder;\n}(Component));\nexport { QueryBuilder };\nvar LevelColl = /** @class */ (function () {\n function LevelColl() {\n }\n return LevelColl;\n}());\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar QueryLibrary = /** @class */ (function () {\n function QueryLibrary(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n QueryLibrary.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n QueryLibrary.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('query-library', this.queryLibrary, this);\n this.parent.on('destroyed', this.destroy, this);\n };\n QueryLibrary.prototype.removeEventListener = function () {\n this.parent.off('query-library', this.queryLibrary);\n this.parent.off('destroyed', this.destroy);\n };\n QueryLibrary.prototype.queryLibrary = function (args) {\n switch (args.prop) {\n case 'getMongoFromRules':\n args.value['obj']['mongoQuery'] = this.getMongoFromRules(args.value['rule'], args.value['mongoQuery']);\n break;\n case 'mongoParser':\n this.mongoParser(args.value['mongoQuery'], args.value['rule'], args.value['mongoLocale']);\n break;\n case 'getParameterSql':\n args.value['obj']['sql'] = this.getParameterSql(args.value['rule']);\n break;\n case 'getNamedParameterSql':\n args.value['obj']['sql'] = this.getNamedParameterSql(args.value['rule']);\n break;\n case 'convertParamSqlToSql':\n args.value['obj']['sql'] = this.convertParamSqlToSql(args.value['sql']);\n break;\n case 'convertNamedParamSqlToSql':\n args.value['obj']['sql'] = this.convertNamedParamSqlToSql(args.value['sql']);\n break;\n }\n };\n QueryLibrary.prototype.getMongoFromRules = function (rule, mongoQuery) {\n mongoQuery = '{';\n if (rule.condition === 'or') {\n mongoQuery += '\"$or\":[';\n mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';\n }\n else {\n mongoQuery += '\"$and\":[';\n mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';\n }\n mongoQuery += '}';\n return mongoQuery;\n };\n QueryLibrary.prototype.getOperatorFromMongoOperator = function (operator) {\n var operatorValue;\n switch (operator) {\n case '$ne':\n operatorValue = 'notequal';\n break;\n case '$gt':\n operatorValue = 'greaterthan';\n break;\n case '$gte':\n operatorValue = 'greaterthanorequal';\n break;\n case '$lt':\n operatorValue = 'lessthan';\n break;\n case '$lte':\n operatorValue = 'lessthanorequal';\n break;\n case '$nin':\n operatorValue = 'notin';\n break;\n }\n return operatorValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n QueryLibrary.prototype.convertMongoQuery = function (rules, mongoQuery) {\n var _this = this;\n var i = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.forEach(function (item) {\n i++;\n mongoQuery += '{';\n if (item.rules !== undefined) {\n if (item.condition === 'or') {\n mongoQuery += ' \"$or\":[';\n mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';\n }\n else {\n mongoQuery += ' \"$and\":[';\n mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';\n }\n }\n var itVal = item.type === 'string' && item.operator !== 'in' && item.operator !== 'notin' && item.value && item.value.trim() !== '' ? item.value.replace(/'/g, '\\\\') : '';\n if (item.type === 'string' && (item.operator === 'in' || item.operator === 'notin') && item.value && item.value.length === 1) {\n itVal = item.value[0].replace(/'/g, '\\\\');\n }\n var field = item.field ? item.field.substring(0) : '';\n switch (item.operator) {\n case 'contains':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"' + itVal + '\"}';\n break;\n case 'notcontains':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"' + item.value + '\"}}';\n break;\n case 'startswith':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"^' + itVal + '\"}';\n break;\n case 'notstartswith':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"^' + item.value + '\"}}';\n break;\n case 'endswith':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"' + itVal + '$\"}';\n break;\n case 'notendswith':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"' + item.value + '$\"}}';\n break;\n case 'isnull':\n mongoQuery += '\"' + field + '\": null';\n break;\n case 'isnotnull':\n mongoQuery += '\"' + field + '\":{\"$ne\": null}';\n break;\n case 'isempty':\n mongoQuery += '\"' + field + '\": \"\"';\n break;\n case 'isnotempty':\n mongoQuery += '\"' + field + '\":{\"$ne\": \"\"}';\n break;\n case 'equal':\n if (item.type === 'string') {\n mongoQuery += '\"' + field + '\":\"' + itVal + '\"';\n }\n else if (item.type === 'date') {\n mongoQuery += '\"' + field + '\":\"' + item.value + '\"';\n }\n else if (item.type === 'boolean') {\n mongoQuery += '\"' + field + '\":' + item.value + '';\n }\n else {\n mongoQuery += '\"' + field + '\":' + item.value + '';\n }\n break;\n case 'notequal':\n if (item.type === 'string') {\n mongoQuery += '\"' + field + '\":{\"$ne\":\"' + itVal + '\"}';\n }\n else if (item.type === 'date') {\n mongoQuery += '\"' + field + '\":{\"$ne\":\"' + item.value + '\"}';\n }\n else {\n mongoQuery += '\"' + field + '\":{\"$ne\":' + item.value + '}';\n }\n break;\n case 'in':\n if (item.type === 'string') {\n if (item.value.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var s = item.value.map(function (x, j) { return (j < item.value.length ? \"\\\"\" + x + \"\\\"\" : ''); }).toString();\n s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;\n mongoQuery += '\"' + field + '\": { \"$in\": [' + s + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$in\": [\"' + itVal + '\"]}';\n }\n }\n else if (item.type === 'number') {\n if (item.value.length > 1) {\n mongoQuery += '\"' + field + '\": { \"$in\": [' + item.value.toString() + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$in\": [' + item.value + ']}';\n }\n }\n break;\n case 'notin':\n if (item.type === 'string') {\n if (item.value.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var s = item.value.map(function (x, j) { return (j < item.value.length ? \"\\\"\" + x + \"\\\"\" : ''); }).toString();\n s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + s + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$nin\": [\"' + itVal + '\"]}';\n }\n }\n else if (item.type === 'number') {\n if (item.value.length > 1) {\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + item.value.toString() + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + item.value + ']}';\n }\n }\n break;\n case 'greaterthan':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$gt\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$gt\": \"' + item.value + '\"}';\n }\n break;\n case 'greaterthanorequal':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$gte\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$gte\": \"' + item.value + '\"}';\n }\n break;\n case 'between':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": {\"$gte\":' + item.value[0] + ', \"$lte\":' + item.value[1] + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": {\"$gte\": \"' + item.value[0] + '\", \"$lte\": \"' + item.value[1] + '\"}';\n }\n break;\n case 'notbetween':\n if (item.type === 'number') {\n mongoQuery += '\"$or\":[{\"' + field + '\": {\"$lt\":' + item.value[0] + '}}, {\"' + field + '\": {\"$gt\":' + item.value[1] + '}}]';\n }\n else {\n mongoQuery += '\"$or\":[{\"' + field + '\": {\"$lt\": \"' + item.value[0] + '\"}}, {\"' + field + '\": {\"$gt\": \"' + item.value[1] + '\"}}]';\n }\n break;\n case 'lessthan':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$lt\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$lt\": \"' + item.value + '\"}';\n }\n break;\n case 'lessthanorequal':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$lte\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$lte\": \"' + item.value + '\"}';\n }\n break;\n }\n mongoQuery += '}';\n if (rules.length !== i) {\n mongoQuery += ',';\n }\n });\n return mongoQuery;\n };\n QueryLibrary.prototype.mongoParser = function (mongoQuery, rule, mongoLocale) {\n var mongoList;\n if (Object.keys(mongoQuery).indexOf('$and') > -1) {\n mongoList = mongoQuery['$and'];\n rule.condition = 'and';\n }\n else if (Object.keys(mongoQuery).indexOf('$or') > -1) {\n mongoList = mongoQuery['$or'];\n rule.condition = 'or';\n }\n rule.rules = [];\n this.mongoRecursion(mongoList, rule.rules, mongoLocale);\n };\n QueryLibrary.prototype.mongoRecursion = function (mongoList, rules, mongoLocale) {\n var operatorValue;\n var type;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var stringValue;\n var key;\n var betweenValue;\n var fieldType;\n var condition;\n var value;\n var subRules;\n var rule;\n var keyObj;\n var ruleValue;\n for (var i = 0, len = mongoList.length; i < len; i++) {\n var betweenOperatorArray = [];\n var inOperatorArray = [];\n condition = Object.keys(mongoList[i])[0];\n value = mongoList[i][condition];\n if (condition === '$and') {\n if (this.parent.enableNotCondition) {\n subRules = { condition: condition.replace('$', ''), rules: [], not: false };\n }\n else {\n subRules = { condition: condition.replace('$', ''), rules: [] };\n }\n rules.push(subRules);\n this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);\n }\n else if (condition === '$or') {\n var notBetween = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var innerObject = [];\n var keys = [];\n var firstKey = [];\n var secondKey = [];\n var innerKeys = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var firstValue = [];\n var secondValue = [];\n var innerFirstValue = [];\n var innerSecondValue = [];\n if (Array.isArray(value) && value.length === 2) {\n keys = Object.keys(value);\n innerFirstValue = value[keys[0]];\n innerSecondValue = value[keys[1]];\n if (typeof innerFirstValue === 'object') {\n innerObject = Object.keys(innerFirstValue)[0];\n innerKeys = Object.keys(innerFirstValue[Object.keys(innerFirstValue)[0]]);\n firstKey = innerKeys[0];\n secondKey = Object.keys(innerSecondValue[Object.keys(innerSecondValue)[0]])[0];\n if (firstKey === '$lt' && secondKey === '$gt') {\n operatorValue = 'notbetween';\n // eslint-disable-next-line security/detect-object-injection\n firstValue = innerFirstValue[innerObject][firstKey];\n // eslint-disable-next-line security/detect-object-injection\n secondValue = innerSecondValue[innerObject][secondKey];\n type = typeof firstValue === 'number' ? 'number' : 'date';\n ruleValue = [firstValue, secondValue];\n rule = { field: innerObject, label: innerObject, value: ruleValue, operator: operatorValue, type: type };\n rules.push(rule);\n notBetween = true;\n }\n }\n }\n if (!notBetween) {\n if (this.parent.enableNotCondition) {\n subRules = { condition: condition.replace('$', ''), rules: [], not: false };\n }\n else {\n subRules = { condition: condition.replace('$', ''), rules: [] };\n }\n rules.push(subRules);\n this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);\n }\n }\n else {\n value = mongoList[i][condition];\n if (value === null) { // isnull operator\n operatorValue = 'isnull';\n }\n if (typeof value === 'boolean') { // boolean type values\n operatorValue = 'equal';\n type = 'boolean';\n ruleValue = value;\n }\n if (typeof (value) === 'number') {\n ruleValue = value;\n type = 'number';\n operatorValue = 'equal';\n }\n else if (typeof (value) === 'object' && value !== null) {\n keyObj = Object.keys(value);\n for (var i_1 = 0; i_1 < keyObj.length; i_1++) {\n key = keyObj[i_1];\n stringValue = (value)[keyObj[i_1]];\n if (key === '$ne' && isNullOrUndefined(stringValue)) { // not null operator\n operatorValue = 'isnotnull';\n ruleValue = null;\n }\n if (key === '$ne' && typeof stringValue === 'boolean') { // not equal operator for boolean\n operatorValue = 'notequal';\n ruleValue = stringValue;\n type = 'boolean';\n }\n if (keyObj.length >= 2 && keyObj[i_1]) {\n if (typeof (stringValue) == 'object') { // between and notbetween operators\n operatorValue = 'notbetween';\n condition = Object.keys(stringValue)[0];\n betweenValue = [Object.keys(stringValue[condition])[0]];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n betweenOperatorArray.push(stringValue[condition][betweenValue]);\n type = 'number';\n }\n else {\n operatorValue = 'between';\n betweenOperatorArray.push(stringValue);\n }\n if (typeof (stringValue) === 'number') {\n type = 'number';\n }\n }\n else if (typeof (stringValue) === 'object' && stringValue !== null) { // \"in\" and \"notin\" operator\n if (key === '$not' && Object.keys(stringValue)[0] === '$regex') {\n if (stringValue['$regex'].indexOf('^') > -1) {\n operatorValue = 'notstartswith';\n ruleValue = stringValue['$regex'].replace('^', '');\n }\n else if (stringValue['$regex'].indexOf('$') > -1) {\n operatorValue = 'notendswith';\n ruleValue = stringValue['$regex'].replace('$', '');\n }\n else {\n operatorValue = 'notcontains';\n ruleValue = stringValue['$regex'];\n }\n }\n else {\n operatorValue = key === '$in' ? 'in' : 'notin';\n inOperatorArray = stringValue;\n type = typeof (stringValue[0]) === 'number' ? 'number' : 'string';\n }\n }\n else if (typeof (stringValue) === 'number') { // number type values\n operatorValue = this.getOperatorFromMongoOperator(key);\n type = 'number';\n ruleValue = stringValue;\n }\n if (typeof (stringValue) === 'string') { // string type values\n if (key === '$regex') {\n operatorValue = 'contains';\n ruleValue = stringValue;\n type = 'string';\n }\n if (key === '$ne') { // not equal\n if (stringValue !== null && stringValue.length > 0 && isNaN(Date.parse(stringValue))) {\n operatorValue = 'notequal';\n ruleValue = stringValue;\n }\n else if (isNullOrUndefined(stringValue)) { // is not null operator\n operatorValue = 'isnotnull';\n ruleValue = stringValue;\n }\n else if (stringValue === '') { // is not empty operator\n operatorValue = 'isnotempty';\n ruleValue = stringValue;\n }\n type = 'string';\n }\n if (stringValue.indexOf('^') > -1) {\n operatorValue = 'startswith';\n ruleValue = stringValue.replace('^', '');\n type = 'string';\n }\n if (stringValue.indexOf('$') > -1 && key !== '$not') {\n operatorValue = 'endswith';\n ruleValue = stringValue.replace('$', '');\n type = 'string';\n }\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n if (column.field === condition) {\n fieldType = column.type;\n break;\n }\n }\n if (!isNaN(Date.parse(stringValue)) || fieldType === 'date') { // Date type operators\n operatorValue = operatorValue || this.getOperatorFromMongoOperator(key);\n type = 'date';\n ruleValue = stringValue;\n }\n }\n }\n }\n else if (value && typeof (value) === 'string' && !isNaN(Date.parse(value))) {\n operatorValue = 'equal';\n ruleValue = value;\n type = 'date';\n }\n else if (typeof (value) === 'string' && value !== '' && value !== 'true' && value !== 'false') {\n operatorValue = 'equal';\n ruleValue = value;\n type = 'string';\n }\n else if (typeof (value) === 'string' && value === '') {\n operatorValue = 'isempty';\n ruleValue = value;\n type = 'string';\n }\n if (betweenOperatorArray && betweenOperatorArray.length > 1) { // between opertor value\n rule = { field: condition, label: condition, value: betweenOperatorArray, operator: operatorValue, type: type };\n }\n else if (inOperatorArray && inOperatorArray.length > 1) { // in operator value\n rule = { field: condition, label: condition, value: inOperatorArray, operator: operatorValue, type: type };\n }\n else {\n rule = { field: condition, label: condition, value: ruleValue, operator: operatorValue, type: type };\n }\n rules.push(rule);\n operatorValue = '';\n }\n }\n };\n QueryLibrary.prototype.convertParamSqlToSql = function (sql) {\n var paramSql = sql.sql;\n var paramValues = sql.params;\n var parts = paramSql.split('?');\n var normalSql = parts[0];\n for (var i = 0; i < paramValues.length; i++) {\n normalSql += (typeof (paramValues[i]) === 'string' ? \"'\" + paramValues[i] + \"'\" + parts[i + 1] : paramValues[i] + parts[i + 1]);\n }\n if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {\n normalSql = normalSql.slice(1, -1);\n }\n normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');\n return normalSql;\n };\n QueryLibrary.prototype.convertNamedParamSqlToSql = function (sql) {\n var namedParamSql = sql.sql;\n var params = sql.params;\n var normalSql = namedParamSql;\n Object.keys(params).forEach(function (paramName) {\n var paramValue = params[paramName];\n paramName = ':' + paramName;\n normalSql = normalSql.replace(paramName, typeof (paramValue) === 'string' ? \"'\" + paramValue + \"'\" : String(paramValue));\n });\n if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {\n normalSql = normalSql.slice(1, -1);\n }\n normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');\n return normalSql;\n };\n QueryLibrary.prototype.getParameterSql = function (qbrule) {\n var qbRule = extend({}, qbrule, null, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateRuleValue(qbRule, false);\n return this.getParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['ruleVal']);\n };\n QueryLibrary.prototype.getNamedParameterSql = function (qbrule) {\n var qbRule = extend({}, qbrule, null, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateRuleValue(qbRule, true);\n return this.getNamedParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['namedRuleVal']);\n };\n QueryLibrary.prototype.getParameterSQLVal = function (content, ruleValue) {\n var replacedString = content.replace(/[%']/g, '');\n return { sql: '(' + replacedString + ')', params: ruleValue };\n };\n QueryLibrary.prototype.getNamedParameterSQLVal = function (content, ruleValue) {\n var replacedString = content.replace(/[%']/g, '');\n return { sql: '(' + replacedString + ')', params: ruleValue };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n QueryLibrary.prototype.updateRuleValue = function (rule, isNamedParameter) {\n var ruleVal = [];\n var namedRuleVal = {};\n var namedParameters = [];\n return this.updateValue(rule.rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);\n };\n QueryLibrary.prototype.updateValue = function (rules, isNamedParameter, ruleVal, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal, namedParameters) {\n if (isNullOrUndefined(rules)) {\n return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };\n }\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].rules) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateValue(rules[i].rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);\n ruleVal = value['ruleVal'];\n namedRuleVal = value['namedRuleVal'];\n }\n else {\n var namedField = void 0;\n if (rules[i].value instanceof Array) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var j = 0; j < (rules[i].value).length; j++) {\n if (isNamedParameter) {\n namedField = this.getNamedParameter(rules[i].field, namedParameters);\n }\n if (!isNullOrUndefined(rules[i].value[j])) {\n if (rules[i].type === 'string' || rules[i].type === 'date') {\n if (isNamedParameter) {\n namedRuleVal[namedField] = rules[i].value[j];\n }\n else {\n ruleVal.push(rules[i].value[j]);\n }\n }\n else {\n if (isNamedParameter) {\n namedRuleVal[namedField] = rules[i].value[j];\n }\n else {\n ruleVal.push(rules[i].value[j]);\n }\n }\n }\n if (isNamedParameter) {\n rules[i].value[j] = ':' + namedField;\n }\n else {\n rules[i].value[j] = '?';\n }\n }\n }\n else {\n if (isNamedParameter) {\n namedField = this.getNamedParameter(rules[i].field, namedParameters);\n }\n if (rules[i].operator.indexOf('null') < 1) {\n if (rules[i].type !== 'string' || (rules[i].type === 'string' && (rules[i].value !== '' || rules[i].value === 0))) {\n if (rules[i].type === 'string' || rules[i].type === 'date') {\n if (rules[i].operator.indexOf('empty') < 1) {\n var value = rules[i].value.toString();\n switch (rules[i].operator) {\n case 'startswith':\n case 'notstartswith':\n value = value + '%';\n break;\n case 'endswith':\n case 'notendswith':\n value = '%' + value;\n break;\n case 'contains':\n case 'notcontains':\n value = '%' + value + '%';\n break;\n }\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = value;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push(value);\n }\n }\n else {\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = '';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push('');\n }\n if (rules[i].operator === 'isempty') {\n rules[i].operator = 'equal';\n }\n else {\n rules[i].operator = 'notequal';\n }\n }\n }\n else {\n if (!isNullOrUndefined(rules[i].value)) {\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = rules[i].value;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push(rules[i].value);\n }\n }\n }\n if (isNamedParameter) {\n rules[i].value = ':' + namedField;\n }\n else {\n rules[i].value = '?';\n }\n }\n }\n }\n }\n }\n return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };\n };\n QueryLibrary.prototype.getNamedParameter = function (field, namedParameters) {\n var newField = null;\n if (namedParameters.length > 0) {\n for (var i = namedParameters.length - 1; i >= 0; i--) {\n var currField = namedParameters[i];\n if (currField.indexOf(field) > -1) {\n var idx = parseInt(currField.split('_')[1], 10) + 1;\n newField = field + '_' + idx;\n namedParameters.push(newField);\n break;\n }\n }\n }\n if (!newField) {\n newField = field + '_1';\n namedParameters.push(newField);\n }\n return newField;\n };\n QueryLibrary.prototype.getModuleName = function () {\n return 'query-library';\n };\n return QueryLibrary;\n}());\nexport { QueryLibrary };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Columns","ChildProperty","Property","isRequired","min","max","Number","MAX_VALUE","Rule","Collection","Value","ShowButtons","Component","QueryBuilder","getPersistData","addOnPersist","reset","isImportRules","fragment","grpContainer","grpHeader","grpBody","bodyElem","element","querySelector","inputElements","querySelectorAll","batchSize","currentIndex","processBatch","endIndex","Math","tooltip","className","indexOf","getComponent","destroy","parentElement","e","console","warn","requestAnimationFrame","textContent","document","createDocumentFragment","createElement","attrs","class","appendChild","headerTemplate","isRoot","enableNotCondition","toggleElements","removeClass","levelColl","id","setProperties","rule","condition","not","rules","disableRuleCondition","getWrapper","getModuleName","requiredModules","modules","push","member","args","GetRootColumnName","field","isNullOrUndefined","separator","split","initialize","_this","dataColl","type_1","value_1","columnKeys_1","keys","cols","categories_1","groupBy_1","isDate_1","validateObj_1","columns","columnSort","forEach","column","updateCustomOperator","type","isNaN","Date","parse","getTime","validation","category","l10n","getConstant","operators","isLocale","isCustomOprCols","customOperators","fields","text","value","groupBy","updateSubFieldsFromColumns","len","label","updateSubFields","sortDirection","processColumnsInBatches","setTimeout","trigger","endIdx","processedCount","col","updateSubFieldsLarge","processNextBatch","colLength","j","data","columnKeys","compField","result","resData","sampCol","from","this_1","_loop_1","operator_1","values","sqlIdx","operColl","map","join","valueIdx","focusEventHandler","event","clickEventHandler","forIdValue","group","ariaChecked","targetValue","tagName","animation","Animation","duration","delay","renderSummary","txtareaElem","summaryElem","getElementById","animate","name","groupElem","style","display","getSqlFromRules","height","scrollHeight","mRules","actionButton","deleteRule","cloneRuleBtnClick","ruleClone","ruleLock","groupLock","cloneGrpBtnClick","groupClone","closest","deleteGroup","addGroupElement","extend","setGroupRules","renderSummaryCollapse","getAttribute","enableSeparateConnector","classList","contains","groupID","replace","getGroup","toggleElem","getElementsByClassName","addClass","cancel","toLowerCase","beforeSuccessCallBack","observedChangeArgs","beforeRules","andElem","orElem","getValidRules","getParentGroup","previousElementSibling","getRule","ruleID","filterRules","checked","selectBtn","showButtons","groupInsert","maxGroupCount","enableRtl","children","addRuleElement","appendRuleElem","parentId","action","ruleElem","elem","ruleListElem","select","setAttribute","ruleIdCounter","cloneRule","ruleIndex","index","tempRuleIndex","insertBefore","ruleTemplate","requestType","ruleTemplateFn","templateParser","templateID","getOperators","operatorFields","isReact","isAngular","templateColl","nodeType","isVue3","append","cloneNode","lockGroup","lockRule","cloneGroup","ruleDelete","allowDragAndDrop","renderReactTemplates","isRuleTemplate","isInitialLoad","prvtEvtTgrDaD","addRuleSuccessCallBack","trgt","act","pId","isRlTmp","isVertical","displayMode","getColumn","newRule","operator","selectedColumn","passedRule","actionArgs","spanElement","add","previousRuleElem","processAdjacentElements","updateAddedRule","ruleCount","applyFieldComponent","isLocked","lockRuleTarget","processConnectorElements","prevRule","ruleContainer","headerTemplateFn","handleOrphanedRuleElement","prevRuleContainer","prevElem","notCondition","undefined","handleOrphanedConnectorElement","setMultiConnector","fieldMode","applyDropdownListComponent","applyDropdownTreeComponent","ddlValue","autoSelectField","ddlField","dataSource","placeholder","popupHeight","close","fieldClose","bind","change","changeField","open","popupOpen","cssClass","dropDownList","fieldModel","DropDownList","appendTo","ddlVal","getDataByValue","changeRule","itemData","dropdowntree","dummyDropdownTreeDs","updateDropdowntreeDS","child","expanded","selectable","showClearButton","changeOnBlur","treeSettings","expandOn","filtering","dropdownTreeFiltering","dropdownTreeClose","DropDownTree","getLabelFromColumn","proxy","srcElement","ruleElemID","hierarchicalData","ddTree","changeDataSource","matchedDataSource","nestedChildFilter","filter","filteredChild","treeObj","expandAll","refresh","node","matchedChildren","isMatchedNode","checkValue","parseInt","toString","template","isNewRuleAdded","enableSeparateCondition","custom","splice","changeRuleTemplate","parentGroup","previousColumn","detach","clearQBTemplate","operVal","renderToolTip","Tooltip","content","isSticky","position","afterClose","beforeOpen","tooltipCloseElement","validateFields","dropDownTreeObj","isValid","allowValidation","excludeOprs","fieldElem","indexElem","valArray","dropDownObj","tempElem","ruleElemCln","validateRule","separateCondition","valElem","jLen","refreshLevelColl","refreshLevel","groupElement","level","obj","childElem","ruleList","iLen","groupCount","slice","groupTemplate","isConnector","inputElem","groupBtn","groupHdrElem","grpBodyElem","rulesElem","dragClsName","spanDragElement","aria-label","title","glueElem","role","labelElem","innerHTML","grpActElem","filterElem","cloneRuleBtnElem","cloneClsName","lockClsName","cloneLockBtnElem","clsName","delBtnElem","isGroup","isBtnClick","addGroupSuccess","eventTarget","conditionBtn_1","groupBtn_1","btnObj","dltGroupBtn","groupIdCounter","andInpElem","orInpElem","andLblElem","orLblElem","btnGroupId","groupDelete","Button","iconCss","rippleEffect","selector","childElems","grpLen","groupIndex","isLastGroup","tempGroupIndex","idx","parentNode","isMiddleGroup","lockBtnElem","isAddSuccess","addGroups","addRuleToNewGroups","cloneBtnElem","lockSpanElement","notElem","CheckBox","updatedRule","nextSibling","btnGroup","childNodes","newAndElem","newOrElem","nextElementSibling","args_1","onclick","DropDownButton","items","grpId","chgrpId","childGroupID","btnGroupElem","addHeaderDiv","disabled","isInitialRule","groupHdr","getRuleCollection","headerFn","enableSeparateConnectorInitialRule","nodeName","notifyChange","grpElement","ruleElement","format","getFormat","intl","formatDate","templateChange","isNotified","updateRules","grpElem","validateValue","prevOper","arrOper","grpEle","destroyControls","eventsArgs","changeValue","numericTextBoxObj","decimalSeparator","isNumInput","currentTarget","dateElement","rbValue","getInstance","NumericTextBox","getValue","getNumericObject","locale","getNumberParser","immediateModeDelay","window","clearInterval","timer","setInterval","filterValue","grID","rlID","ele","changeValueSuccessCallBack","customArgs","isFieldChange","isDestroy","isFieldClose","item","ddl","popupObj","getItemData","isInteracted","previousItemData","prevItemData","previousItem","previousValue","ddtElem","ddt","oldValue","dataBind","destroySubFields","subFieldElem","isNotValueChange","ddlArgs","ddlObj","changeFilter","flt","dl","rl","tmpRl","dArg","operatorElem","selectedField","fieldChangeSuccess","changeOperator","opr","selectedIndex","operatorChangeSuccess","changeRuleValues","tempRule","tooltipElem","createSubFields","remove","subFieldValue","subFilterCounter","ruleId","subField","parentElem","currOper","prevValue","operatorList","operator_2","ddlIdx","ddlOperator","childElementCount","fieldObj","renderValues","oprElem","autoSelectOperator","operatorModel","isField","popup","inputElement","divElement","templateDestroy","templateElement","elemId","temp","templateElements","elementId","elements","getValues","original","fieldColl","fieldStr","dataObj","createNestedObject","lastIndex","k","getDistinctValues","nest","isNested","this_2","_loop_2","renderMultiSelect","selectedValue","ds","isFetched","isValues","multiSelectObj","isGetNestedData","multiSelectValue","dataManager","query","Query","selectedRule","mode","width","closePopup","actionBegin","multiSelectOpen","valueModel","multiSelectModel","MultiSelect","DataManager","bindMultiSelectData","getMultiSelectData","dummyData","deferred","Deferred","executeQuery","multiselectObj","hideSpinner","createSpinner","showSpinner","then","actual","catch","reject","spinnerElem","Browser","isDevice","ms","processTemplate","container","tempElements","write","parentFieldObj","subFieldObjList","lastSubFieldObj","setDefaultValue","isArryValue","isNumber","renderStringValue","ruleValElem","selectedVal","columnData","isTemplate","isPublic","txtBox","input","textBoxModel","inputobj","TextBox","minWidth","renderNumberValue","numericTxt","selVal","txtInp","step","numericTextBoxModel","numeric","oninput","processValueString","numArr","strArr","kLen","parseDate","dParser","getDateParser","skeleton","formatOpt","renderControls","isRendered","length_1","processBoolValues","datePicker","place","formatObj","getLocale","datePickerModel","DatePicker","orgValue","isCheck","radiobutton","radioBtn","radioButtonModel","RadioButton","getOperatorIndex","getPreviousItemData","isRender","filtElem","getElementsByTagName","filtObj","isTempRendered","setColumnTemplate","inputLen","renderTemplate","observedActionArgs","actionBeginSuccessCallBack","Element","columnTemplateFn","valElemColl","updateValues","selectedDate","textboxValue","controlName","some","op","val","trim","radioBtnObj","isNotTrigger","valueContainer","elementCln","i_1","i_2","ruleValueUpdate","beforeRule","afterRule","JSON","stringify","previousRule","oper","arrOperator","dupSelectedValue","parseFloat","isObject","formatOptions","findGroupByIdx","groupIdx","ruleColl","dupRuleColl","unWireEvents","portals","popupElement","addRules","groups","importRules","initWrapper","innerWidth","isPropChange","summaryView","isRefreshed","notGroupRtl","readonly","enableReadonly","button","buttons","contentElem","textElem","styles","editElem","divElem","collapseElem","executeLocal","sortByDesc","sortBy","onChangeNotGroup","checkNotGroup","orgRule","onPropertyChanged","newProp","oldProp","properties","_i","properties_1","enablePersistence","setRules","Internationalization","isReadonly","preRender","getUniqueID","defaultLocale","StartsWith","DoesNotStartWith","EndsWith","DoesNotEndWith","Contains","DoesNotContain","NotLike","Like","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","Between","NotBetween","In","NotIn","Remove","SelectField","SelectOperator","DeleteRule","DeleteGroup","AddGroup","AddCondition","Edit","ValidationMessage","SummaryViewTitle","OtherFields","AND","OR","NOT","SelectValue","IsEmpty","IsNotEmpty","IsNull","IsNotNull","True","False","AddButton","CloneGroup","LockGroup","CloneRule","LockRule","UnlockRule","UnlockGroup","L10n","parser","stringOperator","dateOperator","booleanOperator","numberOperator","equal","notequal","greaterthan","greaterthanorequal","lessthan","in","notin","lessthanorequal","startswith","endswith","between","notbetween","isnull","isnotnull","isempty","isnotempty","notstartswith","notendswith","notcontains","sqlOperators","toUpperCase","render","stringOper","numberOper","concat","executeDataManager","take","initControl","renderComplete","initializeDrag","draggable","Draggable","dragTarget","distance","helper","dragStart","dragStartHandler","drag","dragHandler","dragStop","dragStopHandler","isReplaceDragEle","isPreventSelect","abort","isDragScroll","visualElement","cloneElement","currentStateTarget","offsetWidth","removeAttribute","draggedRule","isDragEventPrevent","body","dragElement","dragEventArgs","dragRuleID","dragGroupID","targetElem","rect","mouseY","distanceToBottom","threshold","getBoundingClientRect","distanceToTop","clientY","changedTouches","top","bottom","isPreventelem","dropEventArgs","groupId_2","groupId","targetGroup","tgrt","targetGrp","dropRuleID","dropGroupID","groupId_1","groupRule","ruleElems","ruleIds","dropInd","deleteRules","borderLineElem","templateCompiler","compile","error","wireEvents","wrapper","EventHandler","keyBoardHandler","addEventListener","windowResizeHandler","removeEventListener","isParent","groupLevel","deleteGroupSuccessCallBack","nextElem","removeString","remRule","ruleElemColl","isTemplateRendered","isPlatformTemplate","deleteRuleSuccessCallBack","clnruleElem","previousElem","nextElem_1","err","i_3","lockGrpTarget","dragElemnet","keyCode","code","preventDefault","clearTemplate","isNewGroup","count","andGroup","orGroup","currentRule","isValueEmpty","ruleCondtion","getRules","isValidRule","notValue","customObj","isQuestion","lockedRule","isArray","HTMLElement","deleteGroups","groupIdColl","getFilteredRecords","predicate","getPredicate","dataManagerQuery","where","ruleIdColl","getDataManagerQuery","pred","ruleValue","ignoreCase","isDateFilter","dateOperColl","pred2","and","or","matchCase","getDate","isTime","datePredicate","arrayPredicate","Predicate","localeString","cldrData","fieldParts","rootField","substring","setTime","date","isStart","setHours","startDate","endDate","nullValue","gte","currDate","setMinutes","setSeconds","isReset","renderGroup","tglBtnElem","renderRule","cloneElem","radioButtonObj","deleteGroupElems","addRuleGroupElems","removeRuleElems","elems","enableBtnGroup","isDateFunction","dateFunc","getSqlString","enableEscape","queryStr","sqlLocale","notPrefix","reduce","valueStr","custOper","ruleStr","ruleOpertor","ruleCondition","fieldName","isCustom","setRulesFromSql","sqlString","ruleModel","getRulesFromSql","sqlParser","processParser","allowEscape","getParameterizedSql","moduleLoader","loadedModules","notify","prop","onPropertyChange","sql","setParameterizedSql","sqlQuery","getParameterizedNamedSql","setParameterizedNamedSql","setMongoQuery","mongoQuery","mongoLocale","getMongoQuery","isCloneRule","parentGroupID","isCloneGroup","str","st","parseSqlStrings","matchValue","conditions","subOp","regexStr","test","RegExp","exec","lastPasrser","checkLiteral","checkNumberLiteral","regExValue","singleString","getSingleQuoteString","isClosed","checkCondition","combineSingleQuoteString","doubleString","getDoubleQuoteString","start","end","isBetween","parsedValue","tempMatchValue","tempStr","secParser","betweenParser","lastParser","betweenOperator","getOperator","localeOperator","=","!=","<",">","<=",">=","not in","not between","is empty","is null","is not null","is not empty","getTypeFromColumn","l","getLabelFromField","startIdx","lLen","grpCount","numVal","strVal","isLeftOpened","isNotOpened","subRules","pop","targetGrpId","lockItems","lockItem","disableRuleControls","newGroup","disableHeaderControls","updateLockItems","isDisabled","addElem","deleteGrpElem","lockElem","groupContElem","addCondition","addGroup","disableComponents","componentGetter","component","enabled","checkbox","radio","multiSelect","deleteElem","Event","Complex","NotifyPropertyChanges","options","groupCounter","Inject","CheckBoxSelection","QueryLibrary","parent","isDestroyed","on","queryLibrary","off","getMongoFromRules","mongoParser","getParameterSql","getNamedParameterSql","convertParamSqlToSql","convertNamedParamSqlToSql","convertMongoQuery","getOperatorFromMongoOperator","operatorValue","itVal","x","endsWith","mongoList","mongoRecursion","stringValue","betweenValue","fieldType","betweenOperatorArray","inOperatorArray","innerObject","secondKey","secondValue","innerFirstValue","innerSecondValue","notBetween","firstKey","firstValue","keyObj","_a","paramSql","paramValues","params","parts","normalSql","namedParamSql","paramName","paramValue","String","qbrule","qbRule","updateRuleValue","getParameterSQLVal","getNamedParameterSQLVal","isNamedParameter","updateValue","ruleVal","namedRuleVal","namedParameters","namedField","getNamedParameter","newField","currField"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-querybuilder.umd.min.js","sources":["../src/query-builder/query-builder.js","../src/query-builder/query-library.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 __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\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};\n/**\n * Query Builder Source\n */\n/* eslint-disable max-len */\nimport { Component, NotifyPropertyChanges, getComponent, Browser, compile, append, Draggable, remove } from '@syncfusion/ej2-base';\nimport { Property, ChildProperty, Complex, L10n, closest, extend, isNullOrUndefined, Collection, cldrData } from '@syncfusion/ej2-base';\nimport { getInstance, addClass, removeClass, rippleEffect, detach, classList } from '@syncfusion/ej2-base';\nimport { Internationalization, getUniqueID, select } from '@syncfusion/ej2-base';\nimport { Button, CheckBox, RadioButton } from '@syncfusion/ej2-buttons';\nimport { DropDownList, CheckBoxSelection, DropDownTree } from '@syncfusion/ej2-dropdowns';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { Event, EventHandler, getValue, Animation } from '@syncfusion/ej2-base';\nimport { Query, Predicate, DataManager, Deferred } from '@syncfusion/ej2-data';\nimport { TextBox, NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { compile as templateCompiler, getNumericObject } from '@syncfusion/ej2-base';\n/**\n * Defines the Columns of Query Builder\n */\nvar Columns = /** @class */ (function (_super) {\n __extends(Columns, _super);\n function Columns() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Columns.prototype, \"field\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"values\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"operators\", void 0);\n __decorate([\n Property()\n ], Columns.prototype, \"ruleTemplate\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"template\", void 0);\n __decorate([\n Property({ isRequired: true, min: 0, max: Number.MAX_VALUE })\n ], Columns.prototype, \"validation\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"category\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"columns\", void 0);\n return Columns;\n}(ChildProperty));\nexport { Columns };\n/**\n * Defines the rule of Query Builder\n */\nvar Rule = /** @class */ (function (_super) {\n __extends(Rule, _super);\n function Rule() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Rule.prototype, \"condition\", void 0);\n __decorate([\n Collection([], Rule)\n ], Rule.prototype, \"rules\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"field\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"operator\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], Rule.prototype, \"not\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"isLocked\", void 0);\n return Rule;\n}(ChildProperty));\nexport { Rule };\n/**\n * Defines the property for value.\n */\nvar Value = /** @class */ (function (_super) {\n __extends(Value, _super);\n function Value() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Value.prototype, \"numericTextBoxModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"multiSelectModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"datePickerModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"textBoxModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"radioButtonModel\", void 0);\n return Value;\n}(ChildProperty));\nexport { Value };\n/**\n * Defines the ruleDelete, groupInsert, and groupDelete options of Query Builder.\n */\nvar ShowButtons = /** @class */ (function (_super) {\n __extends(ShowButtons, _super);\n function ShowButtons() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"cloneRule\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"cloneGroup\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"lockRule\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"lockGroup\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"ruleDelete\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"groupInsert\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"groupDelete\", void 0);\n return ShowButtons;\n}(ChildProperty));\nexport { ShowButtons };\nvar QueryBuilder = /** @class */ (function (_super) {\n __extends(QueryBuilder, _super);\n function QueryBuilder(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isReadonly = true;\n _this.fields = { text: 'label', value: 'field' };\n _this.updatedRule = { not: false, condition: 'and', isLocked: false };\n _this.isLocale = false;\n _this.isRefreshed = false;\n _this.isNotified = false;\n _this.isAddSuccess = false;\n _this.isNotValueChange = false;\n _this.isFieldChange = false;\n _this.isFieldClose = false;\n _this.isDestroy = false;\n _this.isGetNestedData = false;\n _this.isCustomOprCols = [];\n _this.groupCounter = 0;\n _this.lockItems = [];\n _this.groupIndex = -1;\n _this.ruleIndex = -1;\n _this.isLastGroup = false;\n _this.cloneGrpBtnClick = false;\n _this.isMiddleGroup = false;\n _this.cloneRuleBtnClick = false;\n _this.isValueEmpty = false;\n _this.isPropChange = false;\n MultiSelect.Inject(CheckBoxSelection);\n return _this;\n }\n QueryBuilder.prototype.getPersistData = function () {\n return this.addOnPersist(['rule']);\n };\n /**\n * Clears the rules without root rule.\n *\n * @returns {void}.\n */\n QueryBuilder.prototype.reset = function () {\n this.isImportRules = false;\n var bodyElem = this.element.querySelector('.e-group-body');\n var inputElements = this.element.querySelectorAll('input.e-control');\n var batchSize = 20;\n var currentIndex = 0;\n var processBatch = function () {\n var endIndex = Math.min(currentIndex + batchSize, inputElements.length);\n for (var i = currentIndex; i < endIndex; i++) {\n var element = inputElements[i];\n try {\n if (element.className.indexOf('e-tooltip') > -1) {\n var tooltip = getComponent(element, 'tooltip');\n if (tooltip) {\n tooltip.destroy();\n }\n }\n else if (element.parentElement && element.parentElement.className.indexOf('e-tooltip') > -1) {\n var tooltip = getComponent(element.parentElement, 'tooltip');\n if (tooltip) {\n tooltip.destroy();\n }\n }\n }\n catch (e) {\n console.warn('Error destroying tooltip:', e);\n }\n }\n currentIndex = endIndex;\n if (currentIndex < inputElements.length) {\n requestAnimationFrame(processBatch);\n }\n };\n if (inputElements.length > 0) {\n processBatch();\n }\n if (bodyElem) {\n bodyElem.textContent = '';\n }\n else {\n var fragment = document.createDocumentFragment();\n var grpContainer = this.createElement('div', { attrs: { class: 'e-group-container' } });\n var grpHeader = this.createElement('div', { attrs: { class: 'e-group-header' } });\n var grpBody = this.createElement('div', { attrs: { class: 'e-group-body' } });\n grpContainer.appendChild(grpHeader);\n grpContainer.appendChild(grpBody);\n fragment.appendChild(grpContainer);\n this.element.appendChild(fragment);\n bodyElem = this.element.querySelector('.e-group-body');\n }\n if (this.headerTemplate && this.isRoot) {\n this.element.textContent = '';\n this.isRoot = false;\n }\n if (this.enableNotCondition) {\n var toggleElements = this.element.querySelectorAll('.e-qb-toggle');\n for (var i = 0; i < toggleElements.length; i++) {\n removeClass([toggleElements[i]], 'e-active-toggle');\n }\n }\n if (bodyElem) {\n bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));\n }\n this.levelColl[this.element.id + '_group0'] = [0];\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n if (bodyElem && bodyElem.parentElement) {\n this.disableRuleCondition(bodyElem.parentElement);\n }\n };\n QueryBuilder.prototype.getWrapper = function () {\n return this.element;\n };\n QueryBuilder.prototype.getModuleName = function () {\n return 'query-builder';\n };\n QueryBuilder.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'query-library',\n args: [this]\n });\n return modules;\n };\n QueryBuilder.prototype.GetRootColumnName = function (field) {\n if (!isNullOrUndefined(field)) {\n return this.separator ? field.split(this.separator)[0] : field;\n }\n return '';\n };\n QueryBuilder.prototype.initialize = function () {\n var _this = this;\n if (this.dataColl.length) {\n var columnKeys_1 = Object.keys(this.dataColl[0]);\n var cols = [];\n var categories_1 = [];\n var type_1;\n var groupBy_1 = false;\n var isDate_1 = false;\n var value_1;\n var validateObj_1 = { isRequired: true, min: 0, max: Number.MAX_VALUE };\n if (this.columns.length) {\n this.columnSort();\n var columns = this.columns;\n columns.forEach(function (column) {\n _this.updateCustomOperator(column, 'initial');\n if (!column.type) {\n if (columnKeys_1.indexOf(column.field) > -1) {\n value_1 = _this.dataColl[0][column.field];\n type_1 = typeof value_1;\n if (type_1 === 'string') {\n isDate_1 = !isNaN(Date.parse(value_1));\n }\n else if (type_1 === 'object') {\n isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());\n type_1 = 'string';\n }\n column.type = type_1;\n isDate_1 = false;\n }\n type_1 = 'string';\n }\n if (!column.validation) {\n column.validation = validateObj_1;\n }\n if (column.category) {\n groupBy_1 = true;\n }\n else {\n column.category = _this.l10n.getConstant('OtherFields');\n }\n if (categories_1.indexOf(column.category) < 0) {\n categories_1.push(column.category);\n }\n if (!column.operators ||\n (_this.isLocale && _this.isCustomOprCols.indexOf(column.field) === -1)) {\n column.operators = _this.customOperators[column.type + 'Operator'];\n }\n });\n if (groupBy_1 && (categories_1.length > 1 || categories_1[0] !== this.l10n.getConstant('OtherFields'))) {\n this.fields = { text: 'label', value: 'field', groupBy: 'category' };\n }\n this.updateSubFieldsFromColumns(this.columns);\n }\n else {\n for (var i = 0, len = columnKeys_1.length; i < len; i++) {\n value_1 = this.dataColl[0][columnKeys_1[i]];\n type_1 = typeof value_1;\n if (type_1 === 'string') {\n isDate_1 = !isNaN(Date.parse(value_1));\n }\n else if (type_1 === 'object' && !Object.keys(value_1).length) {\n isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());\n type_1 = 'string';\n }\n cols[i] = {\n 'field': columnKeys_1[i], 'label': columnKeys_1[i], 'type': isDate_1 ? 'date' : type_1,\n 'validation': validateObj_1\n };\n isDate_1 = false;\n cols[i].operators = this.customOperators[cols[i].type + 'Operator'];\n if (type_1 === 'object') {\n this.updateSubFields(value_1, cols[i]);\n }\n }\n this.columns = cols;\n }\n }\n else if (this.columns && this.columns.length) {\n if (this.sortDirection !== 'Default') {\n this.columnSort();\n }\n this.processColumnsInBatches();\n if (this.columns.length > 50) {\n setTimeout(function () {\n _this.updateSubFieldsFromColumns(_this.columns);\n }, 0);\n }\n else {\n this.updateSubFieldsFromColumns(this.columns);\n }\n }\n this.trigger('dataBound', { type: 'dataBound' });\n };\n QueryBuilder.prototype.processColumnsInBatches = function () {\n var _this = this;\n var columns = this.columns;\n var batchSize = 10;\n var processedCount = 0;\n var processBatch = function () {\n var endIdx = Math.min(processedCount + batchSize, columns.length);\n for (var i = processedCount; i < endIdx; i++) {\n if (columns[i].category && columns[i].category !== _this.l10n.getConstant('OtherFields')) {\n _this.fields = { text: 'label', value: 'field', groupBy: 'category' };\n }\n else {\n columns[i].category = _this.l10n.getConstant('OtherFields');\n }\n _this.updateCustomOperator(columns[i], 'initial');\n if (!columns[i].operators ||\n (_this.isLocale && _this.isCustomOprCols.indexOf(columns[i].field) === -1)) {\n columns[i].operators = _this.customOperators[columns[i].type + 'Operator'];\n }\n }\n processedCount = endIdx;\n if (processedCount < columns.length) {\n requestAnimationFrame(processBatch);\n }\n };\n processBatch();\n };\n QueryBuilder.prototype.updateSubFieldsFromColumns = function (col, field) {\n if (col.length > 50) {\n this.updateSubFieldsLarge(col, field);\n return;\n }\n for (var i = 0; i < col.length; i++) {\n if (this.separator !== '' && col[i].field.indexOf(this.separator) < 0) {\n col[i].field = field ? field + this.separator + col[i].field : col[i].field;\n }\n if (col[i].operators) {\n this.updateCustomOperator(col[i]);\n }\n else if (col[i].type && col[i].type !== 'object') {\n col[i].operators = this.customOperators[col[i].type + 'Operator'];\n }\n if (col[i].columns) {\n col[i].type = 'object';\n this.updateSubFieldsFromColumns(col[i].columns, col[i].field);\n }\n }\n };\n QueryBuilder.prototype.updateSubFieldsLarge = function (col, field) {\n var _this = this;\n var i = 0;\n var colLength = col.length;\n var processNextBatch = function () {\n var endIdx = Math.min(i + 10, colLength);\n for (; i < endIdx; i++) {\n if (_this.separator !== '' && col[i].field.indexOf(_this.separator) < 0) {\n col[i].field = field ? field + _this.separator + col[i].field : col[i].field;\n }\n if (col[i].operators) {\n _this.updateCustomOperator(col[i]);\n }\n else if (col[i].type && col[i].type !== 'object') {\n col[i].operators = _this.customOperators[col[i].type + 'Operator'];\n }\n }\n if (i < colLength) {\n requestAnimationFrame(processNextBatch);\n }\n else {\n setTimeout(function () {\n for (var j = 0; j < colLength; j++) {\n if (col[j].columns) {\n col[j].type = 'object';\n _this.updateSubFieldsFromColumns(col[j].columns, col[j].field);\n }\n }\n }, 0);\n }\n };\n processNextBatch();\n };\n QueryBuilder.prototype.updateSubFields = function (value, col, data) {\n var sampCol;\n col.columns = [];\n var columnKeys = Object.keys(value);\n var field;\n var label;\n var type;\n var result;\n data = data ? data : this.dataColl[0];\n for (var i = 0, len = columnKeys.length; i < len; i++) {\n var compField = col.field.split('.');\n if (data) {\n result = data[compField[compField.length - 1]][columnKeys[i]];\n }\n else {\n result = this.dataColl[0][col.field][columnKeys[i]];\n }\n var resData = data[col.field.split(this.separator)[col.field.split(this.separator).length - 1]];\n type = typeof result;\n field = col.field + this.separator + columnKeys[i];\n label = columnKeys[i];\n type = (type === 'object' && !isNaN(Date.parse(result))) ? 'date' : type;\n sampCol = { field: field, label: label, type: type };\n if (type !== 'object') {\n sampCol.operators = this.customOperators[type + 'Operator'];\n }\n col.columns.push(sampCol);\n if (type === 'object') {\n this.updateSubFields(result, sampCol, resData);\n }\n }\n };\n QueryBuilder.prototype.updateCustomOperator = function (column, from) {\n if (column.operators) {\n if (!this.isLocale && from === 'initial' && !isNullOrUndefined(this.isCustomOprCols)) {\n this.isCustomOprCols.push(column.field);\n }\n var _loop_1 = function (j) {\n var sqlIdx = Object.keys(column.operators[j]).indexOf('sqlOperator');\n if (sqlIdx > -1) {\n var operator_1 = column.operators[j];\n var operColl = Object.keys(operator_1);\n var values = operColl.map(function (key) { return operator_1[\"\" + key]; }).join(',').split(',');\n var valueIdx = operColl.indexOf('value');\n this_1.operators[values[valueIdx]] = values[sqlIdx];\n }\n };\n var this_1 = this;\n for (var j = 0; j < column.operators.length; j++) {\n _loop_1(j);\n }\n }\n };\n QueryBuilder.prototype.focusEventHandler = function (event) {\n this.target = event.target;\n };\n QueryBuilder.prototype.clickEventHandler = function (event) {\n var _this = this;\n var target = event.target;\n var args;\n this.isImportRules = false;\n var groupID;\n if (target.tagName === 'SPAN') {\n target = target.parentElement;\n }\n if (typeof target.className === 'string' && target.className.indexOf('e-collapse-rule') > -1) {\n var animation = new Animation({ duration: 1000, delay: 0 });\n if (this.element.querySelectorAll('.e-summary-content').length < 1) {\n this.renderSummary();\n }\n var summaryElem = document.getElementById(this.element.id + '_summary_content');\n var txtareaElem = summaryElem.querySelector('.e-summary-text');\n animation.animate('.e-query-builder', { name: 'SlideLeftIn' });\n var groupElem = this.element.querySelector('.e-group-container');\n groupElem.style.display = 'none';\n txtareaElem.textContent = this.getSqlFromRules(this.rule);\n summaryElem.style.display = 'block';\n txtareaElem.style.height = txtareaElem.scrollHeight + 'px';\n }\n if (target.tagName === 'BUTTON' && typeof target.className === 'string' && target.className.indexOf('e-qb-toggle') < 0) {\n var animation = new Animation({ duration: 1000, delay: 0 });\n switch (true) {\n case target.className.indexOf('e-removerule') > -1:\n this.actionButton = target;\n this.deleteRule(target);\n break;\n case target.className.indexOf('e-clone-rule-btn') > -1:\n this.actionButton = target;\n this.cloneRuleBtnClick = true;\n this.ruleClone(target);\n break;\n case target.className.indexOf('e-lock-rule-btn') > -1:\n this.actionButton = target;\n this.ruleLock(target);\n break;\n case target.className.indexOf('e-lock-grp-btn') > -1:\n this.actionButton = target;\n this.groupLock(target);\n break;\n case target.className.indexOf('e-clone-grp-btn') > -1:\n this.actionButton = target;\n this.cloneGrpBtnClick = true;\n this.groupClone(closest(target, '.e-group-container'));\n break;\n case target.className.indexOf('e-deletegroup') > -1:\n this.actionButton = target;\n this.deleteGroup(closest(target, '.e-group-container'));\n break;\n case target.className.indexOf('e-edit-rule') > -1:\n animation.animate('.e-query-builder', { name: 'SlideLeftIn' });\n document.getElementById(this.element.id + '_summary_content').style.display = 'none';\n if (this.element.querySelectorAll('.e-group-container').length < 1) {\n this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not);\n var mRules = extend({}, this.rule, {}, true);\n this.setGroupRules(mRules);\n this.renderSummaryCollapse();\n }\n else {\n var groupElem = this.element.querySelector('.e-group-container');\n if (groupElem.querySelectorAll('.e-collapse-rule').length < 1) {\n this.renderSummaryCollapse();\n }\n groupElem.style.display = 'block';\n }\n break;\n }\n }\n else if ((target.tagName === 'LABEL' && target.parentElement.className.indexOf('e-btn-group') > -1) ||\n (typeof target.className === 'string' && target.className.indexOf('e-qb-toggle') > -1)) {\n var element = closest(target, '.e-group-container');\n if (!this.headerTemplate) {\n var forIdValue = target.getAttribute('for');\n var targetValue = void 0;\n if (forIdValue) {\n targetValue = document.getElementById(forIdValue).getAttribute('value');\n }\n else if (this.enableSeparateConnector) {\n if (target.classList.contains('e-btngroup-or-lbl')) {\n targetValue = 'or';\n }\n else if (target.classList.contains('e-btngroup-and-lbl')) {\n targetValue = 'and';\n }\n else {\n targetValue = target.textContent;\n }\n }\n groupID = element.id.replace(this.element.id + '_', '');\n var group = this.getGroup(groupID);\n var ariaChecked = void 0;\n if (this.enableNotCondition) {\n if (target.className.indexOf('e-qb-toggle') > -1) {\n var toggleElem = element.getElementsByClassName('e-qb-toggle')[0];\n if (toggleElem.className.indexOf('e-active-toggle') > -1) {\n removeClass([toggleElem], 'e-active-toggle');\n ariaChecked = false;\n }\n else {\n addClass([toggleElem], 'e-active-toggle');\n ariaChecked = true;\n }\n targetValue = group.condition;\n }\n else {\n ariaChecked = group.not;\n }\n }\n args = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase() };\n if (this.enableNotCondition) {\n args = {\n groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),\n 'not': ariaChecked\n };\n }\n }\n if (!this.isImportRules) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.beforeSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.beforeSuccessCallBack(args, target);\n }\n this.target = target;\n }\n };\n QueryBuilder.prototype.beforeSuccessCallBack = function (args, target) {\n if (args && !args.cancel) {\n var element = closest(target, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n var beforeRules = this.getValidRules(this.rule);\n var rule = this.getParentGroup(element);\n if (this.enableSeparateConnector) {\n if (isNullOrUndefined(closest(target, '.e-rule-container')) &&\n element.classList.contains('e-group-container')) {\n element = target.parentElement.previousElementSibling !== null ?\n target.parentElement.previousElementSibling : element;\n }\n else {\n element = closest(target, '.e-rule-container');\n }\n var id = element.id.replace(this.element.id + '_', '');\n if (element.classList.contains('e-rule-container')) {\n rule = this.getRule(element);\n rule.condition = args.value;\n }\n else if (element.classList.contains('e-group-container')) {\n rule = this.getGroup(element);\n rule.condition = args.value;\n }\n if (this.enableNotCondition) {\n rule.not = args.not;\n }\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: id, type: 'condition', value: rule.condition });\n }\n }\n else {\n rule.condition = args.value;\n if (this.enableNotCondition) {\n rule.not = args.not;\n }\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, type: 'condition', value: rule.condition });\n }\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'condition');\n if (this.enableSeparateConnector) {\n var andElem = target.parentElement.querySelector('.e-btngroup-and');\n var orElem = target.parentElement.querySelector('.e-btngroup-or');\n if (andElem && orElem) {\n if (args.value === 'and') {\n andElem.checked = true;\n orElem.checked = false;\n }\n else if (args.value === 'or') {\n orElem.checked = true;\n andElem.checked = false;\n }\n }\n }\n }\n };\n QueryBuilder.prototype.selectBtn = function (target, event) {\n if (event.name === 'beforeOpen') {\n if (this.showButtons.groupInsert || isNullOrUndefined(this.showButtons.groupInsert)) {\n if (this.element.querySelectorAll('.e-group-container').length >= this.maxGroupCount + 1) {\n addClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n else {\n removeClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n if (this.enableRtl) {\n addClass([event.element.querySelector('li').parentElement], 'e-rtl');\n }\n }\n else {\n addClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n }\n else if (event.element.children[0].className.indexOf('e-addrule') > -1) {\n this.addRuleElement(closest(target, '.e-group-container'), {});\n }\n else if (event.element.children[0].className.indexOf('e-addgroup') > -1) {\n this.addGroupElement(true, closest(target, '.e-group-container'), '', true);\n }\n };\n QueryBuilder.prototype.appendRuleElem = function (target, column, type, parentId, action, rule) {\n var ruleElem;\n var elem;\n var ruleListElem = target && target.querySelector('.e-rule-list');\n var args;\n if (type === 'change') {\n ruleElem = select('#' + parentId, target);\n }\n else {\n ruleElem = this.createElement('div', { attrs: { class: 'e-rule-container' } });\n ruleElem.setAttribute('id', target.id + '_rule' + this.ruleIdCounter);\n if (this.showButtons.cloneRule && this.cloneRuleBtnClick) {\n if (this.ruleIndex < 0) {\n ruleListElem.appendChild(ruleElem);\n }\n else {\n if (this.enableSeparateConnector) {\n var index = -1;\n var tempRuleIndex = this.ruleIndex + 1;\n for (var i = 0; i < tempRuleIndex; i++) {\n if (i === ruleListElem.children.length) {\n break;\n }\n if (ruleListElem.children[i].classList.contains('e-rule-container')) {\n tempRuleIndex++;\n index++;\n }\n }\n ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + index + 1]); // added clone rule to next position\n }\n else {\n ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + 1]); // added clone rule to next position\n }\n }\n this.cloneRuleBtnClick = false;\n }\n else {\n ruleListElem.appendChild(ruleElem);\n }\n this.ruleIdCounter++;\n }\n if (column && column.ruleTemplate && rule) {\n args = { requestType: 'template-initialize', ruleID: ruleElem.id, action: action, fields: this.fields, rule: rule };\n this.trigger('actionBegin', args);\n this.ruleTemplateFn = this.templateParser(column.ruleTemplate);\n var templateID = this.element.id + column.field;\n var template = void 0;\n args.fields = this.fields;\n args.columns = this.columns;\n if (rule.field === '') {\n rule.field = column.field;\n }\n args.operators = this.getOperators(rule.field);\n args.operatorFields = { text: 'key', value: 'value' };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n template = this.ruleTemplateFn(args, this, ruleElem.id, templateID)[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular) {\n var templateColl = this.ruleTemplateFn(args, this, ruleElem.id, templateID);\n template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isVue3) {\n template = this.ruleTemplateFn(args, this, 'Template', templateID);\n elem = template;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(elem, ruleElem);\n if (ruleElem.children.length) {\n ruleElem.children[ruleElem.children.length - 1].className += ' e-rule-field';\n }\n }\n else {\n template = this.ruleTemplateFn(args, this, 'Template', templateID)[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n }\n }\n else {\n elem = this.ruleElem.querySelector('.e-rule-field').cloneNode(true);\n ruleElem.appendChild(elem);\n }\n if (this.showButtons.lockGroup) {\n removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n if (this.showButtons.lockRule) {\n removeClass(ruleElem.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n if (this.showButtons.cloneGroup) {\n removeClass(ruleElem.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n if (this.showButtons.cloneRule) {\n removeClass(ruleElem.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n if (this.showButtons.ruleDelete) {\n removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n if (this.allowDragAndDrop) {\n removeClass(ruleElem.querySelectorAll('.e-drag-qb-rule'), 'e-hidden');\n }\n if (column && column.ruleTemplate && rule) {\n this.renderReactTemplates();\n }\n return ruleElem;\n };\n QueryBuilder.prototype.addRuleElement = function (target, rule, column, action, parentId, isRuleTemplate) {\n var _this = this;\n if (!target) {\n return;\n }\n var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertRule' };\n if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.addRuleSuccessCallBack(observedChangeArgs, target, rule, column, action, parentId, isRuleTemplate);\n });\n }\n else {\n this.isInitialLoad = false;\n this.addRuleSuccessCallBack(args, target, rule, column, action, parentId, isRuleTemplate);\n }\n };\n QueryBuilder.prototype.addRuleSuccessCallBack = function (args, trgt, rule, col, act, pId, isRlTmp) {\n var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';\n var ruleID;\n var column = (rule && rule.field) ? this.getColumn(rule.field) : col ? col : this.columns[0];\n var operators;\n var dropDownList;\n var ruleElem;\n var newRule = { 'label': '', 'field': '', 'type': '', 'operator': '' };\n if (!args.cancel) {\n if (column && column.ruleTemplate && rule.field) {\n this.selectedColumn = column;\n operators = this.selectedColumn.operators;\n newRule = { 'label': column.label, 'field': column.field, 'type': column.type, 'operator': operators[0].value };\n var passedRule = Object.keys(rule).length ? rule : newRule;\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field', passedRule);\n var args_1 = { requestType: 'template-create', action: 'insert-rule', ruleID: ruleElem.id,\n fields: this.fields, rule: passedRule };\n this.trigger('actionBegin', args_1);\n }\n else {\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field');\n ruleElem.querySelector('.e-filter-input').setAttribute('id', ruleElem.id + '_filterkey');\n var element = ruleElem.querySelector('.e-rule-delete');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n element.textContent = this.l10n.getConstant('Remove');\n addClass([element], 'e-flat');\n addClass([element], 'e-primary');\n }\n else {\n addClass([element], 'e-round');\n addClass([element], 'e-icon-btn');\n element.setAttribute('title', this.l10n.getConstant('DeleteRule'));\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-delete-icon' } });\n ruleElem.querySelector('.e-rule-delete').appendChild(spanElement);\n }\n if (!this.showButtons.ruleDelete) {\n element.classList.add('e-button-hide');\n }\n }\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleElem.className = 'e-rule-container e-vertical-mode';\n }\n else {\n ruleElem.className = 'e-rule-container e-horizontal-mode';\n }\n var previousRuleElem = ruleElem.previousElementSibling;\n if (this.enableSeparateConnector) {\n var prevRule = void 0;\n var ruleContainer = void 0;\n if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {\n ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');\n previousRuleElem = ruleContainer[ruleContainer.length - 1];\n }\n if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {\n prevRule = this.getRule(previousRuleElem);\n }\n if (this.headerTemplate && previousRuleElem && prevRule) {\n this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);\n }\n else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling) {\n var prevElem = group.previousElementSibling;\n var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');\n if (prevElem.classList.contains('e-group-container')) {\n prevElem = prevRuleContainer[prevRuleContainer.length - 1];\n }\n if (prevElem.classList.contains('e-rule-container')) {\n var prevRule_1 = this.getRule(prevElem);\n this.headerTemplateFn(prevElem, false, prevRule_1.condition, prevRule_1, prevElem.id, true);\n }\n }\n else {\n this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);\n }\n }\n }\n else {\n if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {\n if (ruleElem.className.indexOf('e-joined-rule') < 0) {\n ruleElem.className += ' e-joined-rule';\n }\n if (previousRuleElem.className.indexOf('e-prev-joined-rule') < 0) {\n previousRuleElem.className += ' e-prev-joined-rule';\n }\n }\n }\n if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&\n ruleElem.className.indexOf('e-separate-rule') < 0) {\n ruleElem.className += ' e-separate-rule';\n }\n if (!this.isImportRules) {\n this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);\n }\n if (!column || (column && !column.ruleTemplate) || !rule.field) {\n if (this.fieldMode === 'Default') {\n var ddlField = void 0;\n var ddlValue = void 0;\n if (this.separator && rule.field) {\n ddlValue = this.GetRootColumnName(rule.field);\n }\n else if (this.autoSelectField) {\n ddlValue = this.GetRootColumnName(rule.field);\n }\n else {\n ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;\n }\n ddlField = {\n dataSource: this.columns,\n fields: this.fields, placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.columns.length > 5) ? height : 'auto'), close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),\n change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true), cssClass: 'qb-dropdownlist'\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleElem.id + '_filterkey');\n var ddlVal = void 0;\n if (this.separator && rule.field) {\n ddlVal = this.GetRootColumnName(rule.field);\n }\n else {\n ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) :\n dropDownList.value;\n }\n this.selectedColumn = dropDownList.getDataByValue(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropDownList.element, itemData: this.selectedColumn\n });\n }\n }\n else {\n var ddlField = void 0;\n var ddlValue = this.isImportRules ? rule.field : rule.field;\n this.dummyDropdownTreeDs = extend([], this.columns, [], true);\n this.updateDropdowntreeDS(this.dummyDropdownTreeDs);\n ddlField = {\n fields: { dataSource: this.dummyDropdownTreeDs,\n value: 'field', text: 'label', child: 'columns', expanded: 'expanded', selectable: 'selectable' },\n placeholder: this.l10n.getConstant('SelectField'), showClearButton: false,\n popupHeight: ((this.columns.length > 5) ? height : 'auto'), changeOnBlur: false,\n change: this.changeField.bind(this), value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,\n open: this.popupOpen.bind(this, false), treeSettings: { expandOn: 'Click' },\n cssClass: 'e-qb-ddt', filtering: this.dropdownTreeFiltering.bind(this), close: this.dropdownTreeClose.bind(this)\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropdowntree = new DropDownTree(ddlField);\n dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');\n if (!isNullOrUndefined(dropdowntree.value)) {\n var value = this.getLabelFromColumn(dropdowntree.value[0]);\n dropdowntree.element.value = value;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ddlVal = !isNullOrUndefined(rule.field) ?\n this.GetRootColumnName(rule.field) : dropdowntree.value;\n this.selectedColumn = this.getColumn(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropdowntree.element, itemData: this.selectedColumn\n });\n }\n }\n }\n ruleID = ruleElem.id.replace(this.element.id + '_', '');\n if (rule && rule.isLocked) {\n var lockRuleTarget = ruleElem.querySelector('.e-lock-rule-btn');\n this.ruleLock(lockRuleTarget);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', { groupID: trgt.id.replace(this.element.id + '_', ''), ruleID: ruleID, type: 'insertRule' });\n }\n }\n if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {\n rule = this.getRule(ruleID);\n }\n if (this.enableSeparateConnector) {\n var prevElem = ruleElem.previousElementSibling;\n var ruleContainer = void 0;\n while (prevElem && !prevElem.classList.contains('e-rule-container')) {\n if (prevElem.classList.contains('e-group-container')) {\n ruleContainer = prevElem.querySelectorAll('.e-rule-container');\n prevElem = ruleContainer[ruleContainer.length - 1];\n break;\n }\n prevElem = prevElem.previousElementSibling;\n }\n if (this.headerTemplate && prevElem) {\n var prevRule = this.getRule(prevElem);\n var args_2 = { requestType: 'rule-template-create', ruleID: prevElem.id, condition: prevRule.condition,\n notCondition: this.enableNotCondition ? true : undefined };\n this.trigger('actionBegin', args_2);\n }\n else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {\n var prevElem_1 = group.previousElementSibling.previousElementSibling;\n if (prevElem_1.classList.contains('e-group-container')) {\n var ruleContainer_1 = prevElem_1.querySelectorAll('.e-rule-container');\n prevElem_1 = ruleContainer_1[ruleContainer_1.length - 1];\n }\n if (prevElem_1.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(prevElem_1);\n var args_3 = { requestType: 'rule-template-create', ruleID: prevElem_1.id,\n condition: prevRule.condition, notCondition: this.enableNotCondition ? true : undefined };\n this.trigger('actionBegin', args_3);\n }\n }\n }\n this.setMultiConnector(ruleElem);\n }\n };\n QueryBuilder.prototype.dropdownTreeFiltering = function (args) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var ruleElemID = '';\n var srcElement = args.event.srcElement;\n var isClearIcon = srcElement.classList.contains('e-clear-icon');\n var inputElem = isClearIcon ? srcElement.parentElement.querySelector('.e-textbox') : srcElement;\n ruleElemID = inputElem.id.split('_filterkey')[0];\n var ruleElem = document.getElementById(ruleElemID);\n this.ddTree = getComponent(ruleElem.querySelector('input.e-dropdowntree'), 'dropdowntree');\n var hierarchicalData = extend([], this.columns, [], true);\n args.cancel = true;\n if (args.text === '') {\n this.changeDataSource(hierarchicalData);\n }\n else {\n var matchedDataSource = hierarchicalData\n .map(function (data) { return _this.nestedChildFilter(args.text, data); })\n .filter(function (filteredChild) { return filteredChild !== null; });\n this.changeDataSource(matchedDataSource);\n setTimeout(function () {\n if (!isNullOrUndefined(proxy.ddTree) && !isNullOrUndefined(proxy.ddTree.treeObj)) {\n proxy.ddTree.treeObj.expandAll();\n }\n }, 100);\n }\n };\n QueryBuilder.prototype.changeDataSource = function (data) {\n this.updateDropdowntreeDS(data);\n this.ddTree.treeObj.fields = {\n dataSource: data,\n value: 'field',\n text: 'label',\n child: 'columns',\n expanded: 'expanded'\n };\n this.ddTree.treeObj.refresh();\n };\n QueryBuilder.prototype.nestedChildFilter = function (value, node) {\n var _this = this;\n var children = node[this.ddTree.fields.child];\n if (!children) {\n return this.isMatchedNode(value, node) ? node : null;\n }\n var matchedChildren = children\n .map(function (child) { return _this.nestedChildFilter(value, child); })\n .filter(function (filteredChild) { return filteredChild !== null; });\n if (matchedChildren.length) {\n node[this.ddTree.fields.child] = matchedChildren;\n return node;\n }\n else {\n node[this.ddTree.fields.child] = children;\n return this.isMatchedNode(value, node) ? node : null;\n }\n };\n QueryBuilder.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.ddTree.fields.text].toLowerCase();\n value = value ? value.toLowerCase() : '';\n return checkValue.indexOf(value) !== -1;\n };\n QueryBuilder.prototype.dropdownTreeClose = function () {\n if (this.ddTree) {\n this.changeDataSource(extend([], this.columns, [], true));\n }\n this.ddTree = null;\n };\n QueryBuilder.prototype.updateDropdowntreeDS = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].type === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {\n delete columns[parseInt(i.toString(), 10)].template;\n }\n columns[parseInt(i.toString(), 10)].selectable = false;\n this.updateDropdowntreeDS(columns[parseInt(i.toString(), 10)].columns);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {\n delete columns[parseInt(i.toString(), 10)].template;\n }\n }\n };\n QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId, isNewRuleAdded) {\n var ruleElem;\n var index = 0;\n var groupElem;\n var rules;\n if (isRuleTemplate) {\n ruleElem = select('#' + pId, target);\n groupElem = closest(target, '.e-group-container');\n rules = this.getParentGroup(groupElem);\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n var enableSeparateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))));\n if (!this.enableSeparateConnector || enableSeparateCondition) {\n index++;\n }\n }\n rules.rules[index] = rule;\n }\n else {\n groupElem = closest(target, '.e-group-container');\n rules = this.getParentGroup(groupElem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var custom = rule.custom;\n if (Object.keys(rule).length) {\n if (this.ruleIndex < 0) {\n rules.rules.push({\n 'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value\n });\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.rules[rules.rules.length - 1].custom = custom;\n }\n if (this.enableSeparateConnector) {\n rules.rules[rules.rules.length - 1].condition = rule.condition ? rule.condition : newRule.condition;\n }\n }\n else {\n rules.rules.splice(this.ruleIndex + 1, 0, {\n 'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value\n });\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.rules[this.ruleIndex + 1].custom = custom;\n }\n if (this.enableSeparateConnector) {\n rules.rules[this.ruleIndex + 1].condition = rule.condition ? rule.condition : newRule.condition;\n }\n }\n }\n else {\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newRule.custom = custom;\n }\n if (this.autoSelectField) {\n rule.field = newRule.field = this.rule.rules[0].field;\n }\n rules.rules.push(newRule);\n }\n }\n this.disableRuleCondition(target, rules, isNewRuleAdded);\n };\n QueryBuilder.prototype.changeRuleTemplate = function (column, element) {\n if (column && column.ruleTemplate) {\n return;\n }\n else {\n var parentGroup = closest(element, '.e-group-container');\n var parentId = closest(element, '.e-rule-container').id;\n if (this.previousColumn && this.previousColumn.ruleTemplate) {\n detach(element.closest('[id=\"' + parentId + '\"]').querySelector('.e-rule-field'));\n this.clearQBTemplate([parentId]);\n }\n if (column) {\n var operVal = this.selectedColumn.operators;\n var rule = { field: column.field, label: column.label, operator: operVal[0].value, value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n else {\n var rule = { field: '', label: '', operator: '', value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n }\n };\n QueryBuilder.prototype.renderToolTip = function (element) {\n var tooltip = new Tooltip({\n content: this.l10n.getConstant('ValidationMessage'), isSticky: true,\n position: 'BottomCenter', cssClass: 'e-querybuilder-error', afterClose: function () {\n tooltip.destroy();\n }, beforeOpen: function (args) {\n var tooltipCloseElement = args.element.querySelector('.e-tooltip-close');\n if (tooltipCloseElement) {\n tooltipCloseElement.style.display = 'none';\n }\n }\n });\n tooltip.appendTo(element);\n tooltip.open(element);\n };\n /**\n * Validate the conditions and it display errors for invalid fields.\n *\n * @returns {boolean} - Validation\n */\n QueryBuilder.prototype.validateFields = function () {\n var isValid = true;\n var dropDownTreeObj;\n if (this.allowValidation) {\n var excludeOprs = ['isnull', 'isnotnull', 'isempty', 'isnotempty'];\n var i = void 0;\n var len = void 0;\n var fieldElem = void 0;\n var indexElem = void 0;\n var valArray = [];\n var groupElem = void 0;\n var index = void 0;\n var dropDownObj = void 0;\n var tempElem = void 0;\n var rule = void 0;\n var ruleElemCln = this.element.querySelectorAll('.e-rule-container');\n for (i = 0, len = ruleElemCln.length; i < len; i++) {\n var validateRule = void 0;\n groupElem = closest(ruleElemCln[i], '.e-group-container');\n rule = this.getParentGroup(groupElem);\n index = 0;\n indexElem = tempElem = ruleElemCln[i];\n if (this.fieldMode === 'DropdownTree') {\n dropDownTreeObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdowntree'), 'dropdowntree');\n if (dropDownTreeObj && dropDownTreeObj.value && dropDownTreeObj.value.length) {\n this.selectedColumn = this.getColumn(dropDownTreeObj.value[0]);\n validateRule = this.selectedColumn.validation;\n }\n }\n else {\n dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdownlist'), 'dropdownlist');\n if (dropDownObj && dropDownObj.value) {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n validateRule = !isNullOrUndefined(dropDownObj.value) && this.selectedColumn.validation;\n }\n }\n fieldElem = tempElem.querySelector('.e-rule-field input.e-control');\n if (validateRule && validateRule.isRequired) {\n while (indexElem && indexElem.previousElementSibling !== null) {\n indexElem = indexElem.previousElementSibling;\n var separateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !indexElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && (indexElem.classList.contains('e-rule-container') || indexElem.classList.contains('e-group-container'))));\n if (!this.enableSeparateConnector || separateCondition) {\n index++;\n }\n }\n fieldElem = tempElem.querySelector('.e-rule-operator .e-control');\n if (!rule.rules[index].operator) {\n if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0 && fieldElem.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(fieldElem.parentElement);\n }\n isValid = false;\n }\n if (rule.rules[index].value instanceof Array) {\n valArray = rule.rules[index].value;\n }\n if (excludeOprs.indexOf(rule.rules[index].operator) < -1 &&\n (isNullOrUndefined(rule.rules[index].value) &&\n rule.rules[index].type !== 'date') || rule.rules[index].value === '' || rule.rules[index].value === null ||\n (rule.rules[index].value instanceof Array && valArray.length < 1)) {\n var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {\n isValid = false;\n }\n for (var j = 0, jLen = valElem.length; j < jLen; j++) {\n var element = valElem[j];\n var elem = void 0;\n if (element.parentElement.className.indexOf('e-searcher') > -1) {\n elem = closest(element, '.e-multi-select-wrapper');\n if (elem.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(elem);\n }\n }\n else if (valElem[j].parentElement.className.indexOf('e-tooltip') < 0 && valElem[j].className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(valElem[j].parentElement);\n }\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (rule.rules[index].type === 'date' && (rule.rules[index].value === null || rule.rules[index].value.indexOf(null) > -1)) {\n var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {\n isValid = false;\n }\n for (var j = 0, jLen = valElem.length; j < jLen; j++) {\n if (valElem[j].parentElement.className.indexOf('e-tooltip') < 0 && valElem[j].className.indexOf('e-tooltip') < 0 && (isNullOrUndefined(rule.rules[index].value) || rule.rules[index].value[j] == null)) {\n this.renderToolTip(valElem[j].parentElement);\n }\n }\n }\n }\n else if ((dropDownObj && dropDownObj.element && isNullOrUndefined(dropDownObj.value)) ||\n (dropDownTreeObj && dropDownTreeObj.element && (isNullOrUndefined(dropDownTreeObj.value) ||\n dropDownTreeObj.value.length < 1))) {\n if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(fieldElem.parentElement);\n }\n isValid = false;\n }\n }\n }\n return isValid;\n };\n QueryBuilder.prototype.refreshLevelColl = function () {\n this.levelColl = {};\n var groupElem = this.element.querySelector('.e-group-container');\n if (groupElem) {\n this.levelColl[groupElem.id] = [0];\n var obj = { groupElement: groupElem, level: [0] };\n this.refreshLevel(obj);\n }\n };\n QueryBuilder.prototype.refreshLevel = function (obj) {\n var ruleList = obj.groupElement.querySelector('.e-rule-list').children;\n var childElem;\n var groupElem = obj.groupElement;\n var i;\n var iLen = ruleList.length;\n var groupCount = 0;\n for (i = 0; i < iLen; i++) {\n childElem = ruleList[i];\n if (childElem.className.indexOf('e-group-container') > -1) {\n obj.level.push(groupCount);\n this.levelColl[childElem.id] = obj.level.slice();\n groupCount++;\n obj.groupElement = childElem;\n obj = this.refreshLevel(obj);\n }\n }\n var ruleListElem = closest(groupElem, '.e-rule-list');\n obj.groupElement = ruleListElem ? closest(ruleListElem, '.e-group-container') : groupElem;\n obj.level = this.levelColl[obj.groupElement.id].slice();\n return obj;\n };\n QueryBuilder.prototype.groupTemplate = function (isConnector) {\n var glueElem;\n var inputElem;\n var dragClsName;\n var labelElem;\n var grpActElem;\n var groupBtn;\n var groupElem = this.createElement('div', { attrs: { class: 'e-group-container' } });\n var groupHdrElem = this.createElement('div', { attrs: { class: 'e-group-header' } });\n var grpBodyElem = this.createElement('div', { attrs: { class: 'e-group-body' } });\n var rulesElem = this.createElement('div', { attrs: { class: 'e-rule-list' } });\n groupElem.appendChild(groupHdrElem);\n grpBodyElem.appendChild(rulesElem);\n groupElem.appendChild(grpBodyElem);\n if (!this.headerTemplate) {\n if (this.allowDragAndDrop) {\n dragClsName = 'e-icons e-drag-qb-rule';\n }\n else {\n dragClsName = 'e-icons e-drag-qb-rule e-hidden';\n }\n var spanDragElement = this.createElement('span', {\n attrs: {\n class: dragClsName, 'aria-label': 'drag handle',\n title: 'drag handle'\n }\n });\n groupHdrElem.appendChild(spanDragElement);\n var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';\n glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });\n if (this.enableSeparateConnector) {\n glueElem.classList.add('e-multi-connector');\n }\n if (this.enableNotCondition) {\n if (this.enableSeparateConnector) {\n inputElem = this.createElement('input', { attrs: { type: 'checkbox', class: 'e-qb-toggle' } });\n }\n else {\n inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });\n }\n glueElem.appendChild(inputElem);\n }\n inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });\n glueElem.appendChild(inputElem);\n labelElem = this.createElement('label', {\n attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },\n innerHTML: this.l10n.getConstant('AND')\n });\n glueElem.appendChild(labelElem);\n inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-or', value: 'OR' } });\n glueElem.appendChild(inputElem);\n labelElem = this.createElement('label', {\n attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },\n innerHTML: this.l10n.getConstant('OR')\n });\n glueElem.appendChild(labelElem);\n groupHdrElem.appendChild(glueElem);\n grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });\n if (this.enableSeparateConnector) {\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-condition-btn' } });\n grpActElem.appendChild(groupBtn);\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-group-btn' } });\n grpActElem.appendChild(groupBtn);\n }\n else {\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-btn' } });\n grpActElem.appendChild(groupBtn);\n }\n groupHdrElem.appendChild(grpActElem);\n }\n return groupElem;\n };\n QueryBuilder.prototype.ruleTemplate = function () {\n var tempElem;\n var clsName;\n var cloneClsName;\n var lockClsName;\n var dragClsName;\n var ruleElem = this.createElement('div');\n var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });\n if (this.allowDragAndDrop) {\n dragClsName = 'e-icons e-drag-qb-rule';\n }\n else {\n dragClsName = 'e-icons e-drag-qb-rule e-hidden';\n }\n var spanDragElement = this.createElement('span', {\n attrs: {\n class: dragClsName, 'aria-label': 'drag handle',\n title: 'drag handle'\n }\n });\n fieldElem.appendChild(spanDragElement);\n var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });\n tempElem.appendChild(filterElem);\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-operator' } });\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-value' } });\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-value-delete' } });\n if (this.showButtons.cloneRule) {\n cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn';\n }\n else {\n cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn e-button-hide';\n }\n if (this.showButtons.lockRule) {\n lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var cloneRuleBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneRule'), type: 'button', class: cloneClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });\n cloneRuleBtnElem.appendChild(spanElement);\n var cloneLockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockRule'), type: 'button', class: lockClsName } });\n spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n cloneLockBtnElem.appendChild(spanElement);\n if (this.showButtons.ruleDelete || isNullOrUndefined(this.showButtons.ruleDelete)) {\n clsName = 'e-removerule e-rule-delete e-css e-btn e-small';\n }\n else {\n clsName = 'e-removerule e-rule-delete e-css e-btn e-small e-button-hide';\n }\n var delBtnElem = this.createElement('button', { attrs: { type: 'button', class: clsName } });\n tempElem.appendChild(cloneRuleBtnElem);\n tempElem.appendChild(cloneLockBtnElem);\n tempElem.appendChild(delBtnElem);\n fieldElem.appendChild(tempElem);\n ruleElem.appendChild(fieldElem);\n return ruleElem;\n };\n QueryBuilder.prototype.addGroupElement = function (isGroup, target, condition, isBtnClick, not, isRoot, rule) {\n var _this = this;\n var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertGroup' };\n if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.addGroupSuccess(observedChangeArgs, isGroup, target, condition, isBtnClick, not, isRoot, rule);\n });\n }\n else {\n this.isInitialLoad = false;\n this.addGroupSuccess(args, isGroup, target, condition, isBtnClick, not, isRoot, rule);\n }\n };\n QueryBuilder.prototype.addGroupSuccess = function (args, isGroup, eventTarget, condition, isBtnClick, not, isRoot, rule) {\n var _this = this;\n if (!args.cancel && (this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount)) {\n var target = eventTarget;\n var dltGroupBtn = void 0;\n var groupID = '';\n if (target.className.indexOf('e-group-container') < 0) {\n groupID = target.querySelector('.e-group-container') && target.querySelector('.e-group-container').id;\n }\n else {\n groupID = target.id;\n }\n if (this.enableSeparateConnector) {\n this.groupElem = this.groupTemplate();\n }\n var groupElem = this.groupElem.cloneNode(true);\n groupElem.setAttribute('id', this.element.id + '_group' + this.groupIdCounter);\n if (this.groupIdCounter === 0 && this.allowDragAndDrop && groupElem.querySelector('.e-drag-qb-rule')) {\n if (groupElem && groupElem.children[0]) {\n groupElem.children[0].classList.add('e-parent-header');\n }\n addClass([groupElem.querySelector('.e-drag-qb-rule')], 'e-hidden');\n }\n if (this.headerTemplate) {\n if (isRoot) {\n isGroup = false;\n groupElem.setAttribute('id', this.element.id + '_group0');\n this.headerTemplateFn(groupElem, not, condition, rule, groupID);\n this.groupIdCounter = 0;\n }\n else {\n this.headerTemplateFn(groupElem, not, condition, rule, groupID);\n }\n }\n this.groupIdCounter++;\n if (!this.headerTemplate) {\n var andInpElem = groupElem.querySelector('.e-btngroup-and');\n var orInpElem = groupElem.querySelector('.e-btngroup-or');\n var andLblElem = groupElem.querySelector('.e-btngroup-and-lbl');\n var orLblElem = groupElem.querySelector('.e-btngroup-or-lbl');\n andInpElem.setAttribute('id', this.element.id + '_and' + this.btnGroupId);\n orInpElem.setAttribute('id', this.element.id + '_or' + this.btnGroupId);\n andInpElem.setAttribute('name', this.element.id + '_and' + this.btnGroupId);\n orInpElem.setAttribute('name', this.element.id + '_and' + this.btnGroupId);\n andLblElem.setAttribute('for', this.element.id + '_and' + this.btnGroupId);\n orLblElem.setAttribute('for', this.element.id + '_or' + this.btnGroupId);\n this.btnGroupId++;\n }\n if (isGroup) {\n var clsName = void 0;\n if (this.showButtons.groupDelete || isNullOrUndefined(this.showButtons.groupDelete)) {\n clsName = 'e-deletegroup';\n }\n else {\n clsName = 'e-deletegroup e-button-hide';\n }\n dltGroupBtn = this.createElement('button', { attrs: { type: 'button', class: clsName } });\n var button = new Button({ iconCss: 'e-icons e-delete-icon', cssClass: 'e-small e-round' });\n button.appendTo(dltGroupBtn);\n dltGroupBtn.setAttribute('title', this.l10n.getConstant('DeleteGroup'));\n rippleEffect(dltGroupBtn, { selector: '.deletegroup' });\n var ruleList = target.querySelector('.e-rule-list');\n var childElems = ruleList.children;\n var grpLen = 0;\n for (var j = 0, jLen = childElems.length; j < jLen; j++) {\n if (childElems[j].className.indexOf('e-group-container') > -1) {\n grpLen += 1;\n }\n }\n if (this.showButtons.cloneGroup && this.cloneGrpBtnClick) {\n if (this.groupIndex === (childElems.length - 1)) {\n ruleList.appendChild(groupElem);\n this.isLastGroup = true;\n }\n else {\n if (this.enableSeparateConnector) {\n var index = 0;\n var tempGroupIndex = this.groupIndex + 1;\n for (var i = 0; i < tempGroupIndex; i++) {\n if (childElems[i].classList.contains('e-rule-container')) {\n tempGroupIndex++;\n index++;\n }\n }\n if (index > 0) {\n index--;\n }\n var idx = this.groupIndex + index + 1;\n childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);\n }\n else {\n var idx = this.groupIndex + 1;\n childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);\n }\n this.isMiddleGroup = true;\n }\n }\n else {\n ruleList.appendChild(groupElem);\n }\n var level = this.levelColl[target.id].slice(0);\n level.push(grpLen);\n this.levelColl[groupElem.id] = level;\n if (this.groupIndex > -1) {\n this.refreshLevelColl();\n }\n if (!this.isImportRules) {\n this.isAddSuccess = true;\n this.addGroups([], target.id.replace(this.element.id + '_', ''));\n this.isAddSuccess = false;\n if (isBtnClick && this.addRuleToNewGroups) {\n this.addRuleElement(groupElem, {});\n }\n }\n if (!this.headerTemplate) {\n var lockClsName = '';\n if (this.showButtons.cloneGroup) {\n lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var cloneBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneGroup'), type: 'button', class: lockClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });\n cloneBtnElem.appendChild(spanElement);\n groupElem.querySelector('.e-group-action').appendChild(cloneBtnElem);\n if (this.showButtons.lockGroup) {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });\n var lockSpanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n lockBtnElem.appendChild(lockSpanElement);\n groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);\n groupElem.querySelector('.e-group-action').appendChild(dltGroupBtn);\n }\n }\n else {\n if (!this.headerTemplate) {\n var lockClsName = '';\n if (this.showButtons.lockGroup) {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n lockBtnElem.appendChild(spanElement);\n groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);\n }\n target.appendChild(groupElem);\n this.levelColl[groupElem.id] = [0];\n }\n if (this.enableNotCondition) {\n if (!this.headerTemplate) {\n var notElem = groupElem.querySelector('.e-qb-toggle');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var tglBtn = void 0;\n if (this.enableSeparateConnector) {\n tglBtn = new CheckBox({ label: this.l10n.getConstant('NOT'), cssClass: 'e-qb-toggle' });\n }\n else {\n tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });\n }\n tglBtn.appendTo(notElem);\n groupElem.querySelector('.e-btngroup-and-lbl').classList.add('e-not');\n if (this.updatedRule && this.updatedRule.not) {\n addClass([notElem], 'e-active-toggle');\n }\n }\n }\n if (this.enableSeparateConnector && !this.headerTemplate) {\n var andElem = groupElem.querySelector('.e-btngroup-and');\n var orElem = groupElem.querySelector('.e-btngroup-or');\n var btnGroup = groupElem.querySelector('.e-btn-group');\n for (var i = 0; i < btnGroup.childNodes.length; i++) {\n if (groupElem.querySelector('.e-btn-group').childNodes[i].textContent.toLowerCase() === 'not') {\n if (!this.enableNotCondition) {\n btnGroup.childNodes[i].style.display = 'none';\n }\n else {\n btnGroup.childNodes[i].classList.add('e-multiconnector');\n }\n }\n else {\n btnGroup.childNodes[i].style.display = 'none';\n }\n }\n var prevSibling = groupElem.previousElementSibling;\n if (prevSibling) {\n if (isNullOrUndefined(this.headerTemplate)) {\n groupElem.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), groupElem);\n var notElem = groupElem.previousElementSibling.childNodes[0];\n if (notElem.classList.contains('e-qb-toggle')) {\n notElem.style.display = 'none';\n }\n }\n if (!this.isImportRules) {\n var groupElement = groupElem.previousElementSibling;\n var newAndElem = groupElement.querySelector('.e-btngroup-and');\n var newOrElem = groupElement.querySelector('.e-btngroup-or');\n if (!andElem.checked && !orElem.checked) {\n var nextSibling = groupElem.nextElementSibling;\n if (nextSibling && nextSibling.classList.contains('e-btn-group')) {\n andElem = nextSibling.querySelector('.e-btngroup-and');\n orElem = nextSibling.querySelector('.e-btngroup-or');\n newAndElem.checked = andElem.checked;\n newOrElem.checked = orElem.checked;\n }\n }\n else if (this.enableSeparateConnector) {\n if (andElem.checked) {\n newAndElem.checked = true;\n }\n if (orElem.checked) {\n newOrElem.checked = true;\n }\n }\n }\n }\n }\n this.updatedRule = null;\n if (this.headerTemplate) {\n var args_4 = {\n requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,\n notCondition: this.enableNotCondition ? not : undefined\n };\n this.trigger('actionBegin', args_4);\n }\n else {\n if (this.enableSeparateConnector) {\n var conditionBtn_1 = groupElem.querySelector('.e-add-condition-btn');\n var btnObj = new Button({ cssClass: this.element.id + '_addConditionbtn', content: this.l10n.getConstant('AddCondition') });\n btnObj.appendTo(conditionBtn_1);\n btnObj.element.onclick = function () {\n _this.addRuleElement(closest(conditionBtn_1, '.e-group-container'), {});\n };\n var groupBtn_1 = groupElem.querySelector('.e-add-group-btn');\n btnObj = new Button({ cssClass: this.element.id + '_addGroupbtn', content: this.l10n.getConstant('AddGroup') });\n btnObj.appendTo(groupBtn_1);\n btnObj.element.onclick = function () {\n _this.addGroupElement(true, closest(groupBtn_1, '.e-group-container'), '', true);\n };\n }\n else {\n var groupBtn = groupElem.querySelector('.e-add-btn');\n var btnObj = new DropDownButton({\n items: this.items,\n cssClass: 'e-round e-small e-caret-hide e-addrulegroup',\n iconCss: 'e-icons e-add-icon',\n beforeOpen: this.selectBtn.bind(this, groupBtn),\n select: this.selectBtn.bind(this, groupBtn)\n });\n btnObj.appendTo(groupBtn);\n groupBtn.setAttribute('title', this.l10n.getConstant('AddButton'));\n }\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n var grpId = target.id.replace(this.element.id + '_', '');\n var chgrpId = groupElem.id.replace(this.element.id + '_', '');\n this.trigger('change', { groupID: grpId, type: 'insertGroup', childGroupID: chgrpId });\n }\n }\n };\n QueryBuilder.prototype.setMultiConnector = function (trgt) {\n if (this.enableSeparateConnector && !this.headerTemplate && trgt.previousElementSibling) {\n var btnGroupElem = this.groupTemplate(true).querySelector('.e-btn-group');\n if (btnGroupElem) {\n trgt.parentElement.insertBefore(btnGroupElem, trgt);\n var notElem = trgt.previousElementSibling.childNodes[0];\n if (notElem.classList.contains('e-qb-toggle')) {\n notElem.style.display = 'none';\n }\n this.addHeaderDiv(trgt);\n }\n }\n };\n QueryBuilder.prototype.addHeaderDiv = function (elem) {\n var prevRule;\n var prevElem = elem.previousElementSibling.previousElementSibling;\n if (prevElem) {\n if (prevElem.id.indexOf('rule') > -1) {\n prevRule = this.getRule(prevElem);\n }\n else {\n prevRule = this.getGroup(prevElem);\n }\n if (!isNullOrUndefined(prevRule) && isNullOrUndefined(prevRule.condition)) {\n prevRule.condition = 'and';\n }\n var orElem = elem.previousElementSibling.querySelector('.e-btngroup-or');\n var andElem = elem.previousElementSibling.querySelector('.e-btngroup-and');\n orElem.disabled = false;\n andElem.disabled = false;\n if (!isNullOrUndefined(prevRule) && prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n };\n QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID, isInitialRule) {\n var template;\n var templateID = this.element.id + '_header';\n var args;\n var groupHdr = groupElem.querySelector('.e-group-header');\n if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr = groupElem;\n }\n if (this.headerTemplate) {\n args = {\n requestType: 'header-template-initialize', ruleID: groupElem.id,\n notCondition: this.enableNotCondition ? not : undefined,\n condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID\n };\n this.trigger('actionBegin', args);\n if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n args.requestType = 'rule-template-create';\n }\n this.headerFn = this.templateParser(this.headerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n template = this.headerFn(args, this, groupElem.id, templateID)[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular) {\n var templateColl = this.headerFn(args, this, groupElem.id, templateID);\n template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isVue3) {\n template = this.headerFn(args, this, groupElem.id, templateID);\n if (this.enableSeparateConnector && (isInitialRule || groupElem.id.indexOf('rule') !== -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < template.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (template[i].nodeName === 'DIV') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template[i];\n break;\n }\n }\n }\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(template, groupHdr);\n }\n }\n else {\n template = this.headerFn(args, this, 'Template', templateID)[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n }\n this.renderReactTemplates();\n }\n return groupElem;\n };\n QueryBuilder.prototype.enableSeparateConnectorInitialRule = function (groupElem, template) {\n var elem = groupElem.nextElementSibling ? groupElem.nextElementSibling : groupElem;\n var group = elem.closest('.e-group-container');\n if (!groupElem.nextElementSibling && group) {\n group = group.nextElementSibling ? group.nextElementSibling : group;\n }\n if (group) {\n group.parentElement.insertBefore(template, group);\n }\n };\n /**\n * Notify the changes to component.\n *\n * @param {string | number | boolean | Date | string[] | number[] | Date[]} value - 'value' to be passed to update the rule value.\n * @param {Element} element - 'element' to be passed to update the rule.\n * @param {string} type - 'type' to be passed to update the rule .\n * @returns {void}.\n */\n QueryBuilder.prototype.notifyChange = function (value, element, type) {\n var grpElement = closest(element, '.e-group-container');\n var rules = this.getParentGroup(grpElement);\n var ruleElement = closest(element, '.e-rule-container');\n var index = 0;\n if (type === 'not') {\n rules.not = value;\n return;\n }\n if (type === 'condition') {\n if (this.enableSeparateConnector) {\n ruleElement = element.parentElement.previousElementSibling;\n if (ruleElement && ruleElement.classList.contains('e-group-container')) {\n ruleElement = ruleElement.querySelectorAll('.e-rule-container')[ruleElement.querySelectorAll('.e-rule-container').length - 1];\n }\n if (ruleElement && ruleElement.classList.contains('e-rule-container')) {\n rules = this.getRule(ruleElement);\n }\n rules.condition = value;\n }\n else {\n rules.condition = value;\n }\n return;\n }\n while (ruleElement && ruleElement.previousElementSibling !== null) {\n ruleElement = ruleElement.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElement.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElement.classList.contains('e-rule-container') ||\n ruleElement.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var rule = rules.rules[index];\n var column = this.getColumn(rule.field);\n var format = this.getFormat(column.format);\n if (column.type === 'date') {\n if (value instanceof Date) {\n value = this.intl.formatDate(value, format);\n }\n else if (value instanceof Array) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] && value[i] instanceof Date) {\n value[i] = this.intl.formatDate(value[i], format);\n }\n }\n }\n }\n if (column.ruleTemplate) {\n this.templateChange(element, value, type);\n }\n else {\n this.isNotified = true;\n this.updateRules(element, value);\n this.isNotified = false;\n }\n };\n QueryBuilder.prototype.templateChange = function (element, value, type) {\n var grpElem = closest(element, '.e-group-container');\n var eventsArgs;\n var rules = grpElem && this.getParentGroup(grpElem);\n var ruleElem = closest(element, '.e-rule-container');\n var index = 0;\n if (this.allowValidation) {\n this.validateValue(rules, ruleElem);\n }\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var rule = rules && rules.rules[index];\n if (type === 'field') {\n this.selectedColumn = this.getColumn(value);\n }\n else if (rule) {\n this.selectedColumn = this.getColumn(rule.field);\n }\n var operVal;\n this.previousColumn = rule && this.getColumn(rule.field);\n var beforeRules = this.getValidRules(this.rule);\n if (this.selectedColumn) {\n if (this.selectedColumn.operators) {\n operVal = this.selectedColumn.operators;\n }\n else {\n operVal = this.customOperators[this.selectedColumn.type + 'Operator'];\n }\n }\n var arrOper = ['in', 'notin', 'between', 'notbetween'];\n var prevOper;\n switch (type) {\n case 'field':\n if (isNullOrUndefined(value)) {\n if (!isNullOrUndefined(rule)) {\n rule.field = '';\n rule.label = '';\n rule.type = '';\n rule.value = '';\n rule.operator = '';\n }\n else {\n return;\n }\n }\n else {\n rule.field = value;\n rule.label = this.selectedColumn.label;\n rule.type = this.selectedColumn.type;\n rule.value = '';\n rule.operator = operVal[0].value;\n }\n break;\n case 'operator':\n prevOper = rule.operator;\n rule.operator = value;\n if (arrOper.indexOf(rule.operator) > -1) {\n rule.value = [];\n }\n else if (arrOper.indexOf(prevOper) > -1) {\n rule.value = '';\n }\n break;\n case 'value':\n rule.value = value;\n }\n this.changeRuleTemplate(this.selectedColumn, element);\n this.filterRules(beforeRules, this.getValidRules(this.rule), type);\n if (this.selectedColumn && this.selectedColumn.ruleTemplate) {\n if (type === 'field' || type === 'operator') {\n var grpEle = closest(element, '.e-rule-container');\n this.destroyControls(grpEle, true);\n detach(grpEle.querySelector('.e-rule-field'));\n var ruleElement = this.appendRuleElem(closest(grpEle, '.e-group-container'), this.selectedColumn, 'change', grpEle.id, type, rule);\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleElement.className = 'e-rule-container e-vertical-mode';\n }\n else {\n ruleElement.className = 'e-rule-container e-horizontal-mode';\n }\n if (!this.enableSeparateConnector) {\n if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-rule-container') > -1) {\n if (ruleElement.className.indexOf('e-joined-rule') < 0) {\n ruleElement.className += ' e-joined-rule';\n }\n if (ruleElement.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {\n ruleElement.previousElementSibling.className += ' e-prev-joined-rule';\n }\n }\n }\n if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-group-container') > -1 &&\n ruleElement.className.indexOf('e-separate-rule') < 0) {\n ruleElement.className += ' e-separate-rule';\n }\n var args = {\n requestType: 'template-create', action: type, ruleID: grpEle.id,\n fields: this.fields, rule: rule\n };\n eventsArgs = {\n groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),\n value: rule.field, type: 'field'\n };\n this.trigger('actionBegin', args);\n this.trigger('change', eventsArgs);\n }\n }\n };\n QueryBuilder.prototype.changeValue = function (i, args) {\n var _this = this;\n var element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.isNumInput && typeof args.value === 'number') || (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox'))\n && (this.selectedColumn.validation && (this.selectedColumn.validation.max !== Number.MAX_VALUE || this.selectedColumn.validation.min > 0))) {\n this.isNumInput = false;\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (args.element && args.element.classList.contains('e-multiselect')) {\n var multiSelectArgs = args;\n element = multiSelectArgs.element;\n }\n else if (args.event) {\n element = args.event.target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element = args.currentTarget;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element = args.element;\n }\n if (!element) {\n return;\n }\n if (element.className.indexOf('e-day') > -1 || element.className.indexOf('e-today') > -1 || element.className.indexOf('e-cell') > -1) {\n var calenderArgs = args;\n element = calenderArgs.element;\n }\n var groupElem = closest(element, '.e-group-container');\n var ruleElem = closest(element, '.e-rule-container');\n var groupID = groupElem && groupElem.id.replace(this.element.id + '_', '');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n var dateElement = args;\n var dropDownObj;\n if (dateElement.element && dateElement.element.className.indexOf('e-datepicker') > -1) {\n element = dateElement.element;\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');\n if (dropDownObj) {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n }\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');\n if (dropDownObj) {\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n }\n var value;\n var rbValue;\n if (element.className.indexOf('e-radio') > -1) {\n rbValue = parseInt(element.id.split('valuekey')[1], 10);\n if (this.fieldMode === 'Default') {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n if (this.selectedColumn.columns) {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-rule-sub-filter .e-dropdownlist'), 'dropdownlist');\n this.selectedColumn = this.getColumn(dropDownObj.value);\n }\n }\n else {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n if (this.selectedColumn.values) {\n value = this.selectedColumn.values[rbValue];\n }\n else {\n var valColl = [true, false];\n value = valColl[rbValue];\n }\n }\n else if (element.className.indexOf('e-multiselect') > -1) {\n value = getComponent(element, 'multiselect').value;\n }\n else {\n value = args.value;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value = Number(args.currentTarget.value);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var elem = args.currentTarget;\n var numericTextBoxObj = getInstance(elem, NumericTextBox);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n if (isNaN(value) && elem.value.indexOf(decimalSeparator) !== -1) {\n value = this.intl.getNumberParser({ format: 'n' })(elem.value);\n }\n if (!isNaN(value)) {\n numericTextBoxObj.value = value;\n }\n this.isNumInput = true;\n }\n }\n if (args.name === 'input' && this.immediateModeDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setInterval(function () { _this.filterValue(groupID, ruleID, value, i, element); }, this.immediateModeDelay);\n }\n else {\n this.filterValue(groupID, ruleID, value, i, element);\n }\n };\n QueryBuilder.prototype.filterValue = function (grID, rlID, value, i, ele) {\n var _this = this;\n var eventsArgs = { groupID: grID, ruleID: rlID, value: value, cancel: false, type: 'value' };\n window.clearInterval(this.timer);\n if (!this.isImportRules) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.changeValueSuccessCallBack(observedChangeArgs, ele, i, grID, rlID);\n });\n }\n else {\n this.changeValueSuccessCallBack(eventsArgs, ele, i, grID, rlID);\n }\n };\n QueryBuilder.prototype.changeValueSuccessCallBack = function (args, element, i, groupID, ruleID) {\n if (!args.cancel) {\n this.updateRules(element, args.value, i);\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: ruleID, value: args.value, cancel: false, type: 'value' });\n }\n }\n };\n QueryBuilder.prototype.fieldClose = function (id) {\n if (this.isFieldChange || this.isDestroy) {\n return;\n }\n this.isFieldClose = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ddl = getComponent(id, 'dropdownlist');\n var item = ddl.popupObj && ddl.popupObj.element.querySelector('.e-active');\n var itemData = ddl.getItemData();\n ddl.value = itemData.value;\n var customArgs = {\n element: ddl.element, value: itemData.value, isInteracted: true,\n previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null\n };\n if (ddl.previousValue !== ddl.value) {\n this.changeField(customArgs);\n }\n this.isFieldChange = false;\n };\n QueryBuilder.prototype.changeField = function (args) {\n if (args.isInteracted) {\n if (isNullOrUndefined(args.value)) {\n return;\n }\n this.isFieldChange = true;\n this.prevItemData = args.itemData;\n var fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);\n if (this.fieldMode === 'DropdownTree' && fieldElem !== null) {\n var ddtElem = fieldElem.querySelector('.e-dropdowntree.e-control');\n var ddt = getComponent(ddtElem, 'dropdowntree');\n if (column) {\n if (column.type === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ddt.value = args.oldValue;\n ddt.dataBind();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNullOrUndefined(args.oldValue)) {\n ddtElem.value = '';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getLabelFromColumn(args.oldValue[0]);\n ddtElem.value = result;\n }\n return;\n }\n else {\n if (!isNullOrUndefined(args.value[0])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ddt.value = args.value[0];\n ddt.dataBind();\n var result = this.getLabelFromColumn(args.value[0]);\n ddtElem.value = result;\n }\n }\n }\n else {\n return;\n }\n }\n this.destroySubFields(fieldElem);\n this.subFieldElem = null;\n this.isNotValueChange = true;\n if (column && column.ruleTemplate) {\n this.templateChange(args.element, column.field, 'field');\n }\n else if (column && column.columns && column.columns[0].ruleTemplate) {\n this.templateChange(args.element, column.columns[0].field, 'field');\n }\n else {\n var groupElem = closest(args.element, '.e-group-container');\n var rules = this.getParentGroup(groupElem);\n var ruleElem = closest(args.element, '.e-rule-container');\n var index = 0;\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n rules.rules[index].value = '';\n this.changeRule(rules.rules[index], args);\n }\n }\n };\n QueryBuilder.prototype.changeRule = function (rule, ddlArgs) {\n if (!ddlArgs.itemData) {\n if (this.fieldMode === 'DropdownTree') {\n var ddt = getComponent(ddlArgs.element, 'dropdowntree');\n if (ddt.value == null) {\n return;\n }\n }\n else {\n return;\n }\n }\n var tempRule = {};\n var filterElem = closest(ddlArgs.element, '.e-rule-filter');\n filterElem = filterElem ? filterElem : closest(ddlArgs.element, '.e-rule-sub-filter');\n var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');\n if (this.fieldMode === 'DropdownTree' && filterElem !== null) {\n ddlObj = getComponent(ddlArgs.element, 'dropdowntree');\n }\n var element = closest(ddlArgs.element, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n this.changeFilter(filterElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n };\n QueryBuilder.prototype.changeFilter = function (flt, dl, grID, rl, tmpRl, dArg) {\n var _this = this;\n if (flt) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ddlValue = void 0;\n if (this.fieldMode === 'DropdownTree') {\n ddlValue = (dl.value[0]);\n }\n else {\n ddlValue = this.isImportRules ? this.GetRootColumnName(dl.value) : dl.value;\n }\n this.selectedColumn = this.getColumn(ddlValue);\n var ruleElem = closest(flt, '.e-rule-container');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n var eventsArgs = {\n groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?\n dl.value[0] : dl.value, cancel: false, type: 'field'\n };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);\n });\n }\n else {\n this.fieldChangeSuccess(eventsArgs, tmpRl, flt, rl, dArg);\n }\n }\n else {\n var operatorElem = closest(dArg.element, '.e-rule-operator');\n this.changeOperator(flt, operatorElem, dl, grID, rl, tmpRl, dArg);\n }\n };\n QueryBuilder.prototype.changeOperator = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n flt, opr, dl, grID, rl, tmpRl, dArg) {\n var _this = this;\n var ruleElem;\n var ruleID;\n var eventsArgs;\n if (opr) {\n ruleElem = closest(opr, '.e-rule-container');\n ruleID = ruleElem.id.replace(this.element.id + '_', '');\n eventsArgs = { groupID: grID, ruleID: ruleID, selectedIndex: dl.index, cancel: false, type: 'operator' };\n if (!this.isImportRules) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.operatorChangeSuccess(observedChangeArgs, flt, tmpRl, rl, dArg);\n });\n }\n else {\n this.operatorChangeSuccess(eventsArgs, flt, tmpRl, rl, dArg);\n }\n }\n else {\n this.changeRuleValues(flt, rl, tmpRl, dArg);\n }\n };\n QueryBuilder.prototype.fieldChangeSuccess = function (args, tempRule, filterElem, rule, ddlArgs) {\n var ruleElem = closest(filterElem, '.e-rule-container');\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var element = closest(ddlArgs.element, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');\n var tooltipElem = ruleElem.querySelectorAll('.e-tooltip.e-input-group');\n for (var i = 0; i < tooltipElem.length; i++) {\n getComponent(tooltipElem[i], 'tooltip').destroy();\n }\n if (!args.cancel) {\n if (isNullOrUndefined(this.selectedColumn)) {\n return;\n }\n tempRule.type = this.selectedColumn.type;\n if (ruleElem.querySelector('.e-template')) {\n rule.value = '';\n }\n if (this.selectedColumn.type === 'object' && this.fieldMode === 'Default') {\n tempRule.type = this.selectedColumn.columns[0].type;\n while (this.selectedColumn.columns) {\n this.createSubFields(filterElem, rule, tempRule, ddlArgs);\n }\n }\n else {\n this.destroySubFields(filterElem);\n this.changeOperator(filterElem, operatorElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n }\n }\n else {\n this.changeOperator(filterElem, operatorElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.destroySubFields = function (filterElem) {\n while (filterElem && filterElem.nextElementSibling.classList.contains('e-rule-sub-filter')) {\n this.destroyControls(filterElem);\n filterElem.nextElementSibling.remove();\n }\n };\n QueryBuilder.prototype.createSubFields = function (filterElem, rule, tempRule, ddlArgs) {\n var subFieldValue = false;\n var fieldElem = closest(filterElem, '.e-rule-field');\n var tempElem = this.createElement('div', { attrs: { class: 'e-rule-sub-filter', id: 'subfilter' + this.subFilterCounter } });\n fieldElem.insertBefore(tempElem, fieldElem.querySelector('.e-rule-operator'));\n var ruleId = closest(tempElem, '.e-rule-container').id;\n var subFieldElem = this.createElement('input', { attrs: { type: 'text', id: ruleId + '_subfilterkey' + this.subFilterCounter } });\n tempElem.appendChild(subFieldElem);\n var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';\n var ddlField;\n ddlField = {\n dataSource: this.selectedColumn.columns,\n fields: this.fields,\n placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.selectedColumn.columns.length > 5) ? height : 'auto'),\n change: this.changeField.bind(this),\n index: 0,\n open: this.popupOpen.bind(this, false)\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleId + '_subfilterkey' + this.subFilterCounter);\n if (this.isImportRules || (this.previousColumn && this.previousColumn.ruleTemplate &&\n this.GetRootColumnName(rule.field) === this.GetRootColumnName(this.previousColumn.field))) {\n var subField = this.selectedColumn.columns;\n for (var i = 0; i < subField.length; i++) {\n if (rule.field === subField[i].field || rule.field.indexOf(subField[i].field + this.separator) > -1) {\n dropDownList.value = subField[i].field;\n this.selectedColumn = subField[i];\n subFieldValue = true;\n break;\n }\n }\n }\n this.subFilterCounter++;\n this.subFieldElem = subFieldElem;\n // eslint-disable-next-line\n ddlArgs.itemData = ddlArgs.itemData;\n if (!subFieldValue && this.selectedColumn.columns) {\n if (!subFieldValue && this.isImportRules) {\n dropDownList.value = null;\n }\n this.selectedColumn = this.selectedColumn.columns[0];\n }\n this.previousColumn = this.selectedColumn;\n if (!this.selectedColumn.columns) {\n this.changeRuleValues(tempElem, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.operatorChangeSuccess = function (eventsArgs, filterElem, tempRule, rule, ddlArgs) {\n if (!eventsArgs.cancel) {\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var valElem = operatorElem.nextElementSibling;\n var dropDownObj = getComponent(ddlArgs.element, 'dropdownlist');\n var prevOper = rule.operator ? rule.operator.toString().toLowerCase() : '';\n tempRule.operator = dropDownObj.value.toString();\n var currOper = tempRule.operator.toLowerCase();\n if (tempRule.operator.toLowerCase().indexOf('between') > -1 || (tempRule.operator.toLowerCase().indexOf('in') > -1\n && tempRule.operator.toLowerCase().indexOf('contains') < 0)) {\n filterElem = operatorElem.previousElementSibling;\n tempRule.type = rule.type;\n if (tempRule.operator.toLowerCase().indexOf('in') < 0 || prevOper.indexOf('in') < 0) {\n rule.value = [];\n }\n }\n else if (typeof rule.value === 'object' && rule.value !== null) {\n rule.value = rule.value.length > 0 ? rule.value[0] : rule.type === 'number' ? 0 : '';\n }\n if (ddlArgs.previousItemData) {\n var prevValue = ddlArgs.previousItemData.value.toString().toLowerCase();\n if ((prevValue.indexOf('between') > -1 || (prevValue.indexOf('in') > -1 || (prevValue.indexOf('null') > -1)\n || (prevValue.indexOf('empty') > -1)) && prevValue.indexOf('contains') < 0)) {\n filterElem = operatorElem.previousElementSibling;\n tempRule.type = rule.type;\n }\n }\n if ((prevOper.indexOf('in') > -1 && prevOper.indexOf('in') < 5) && (currOper.indexOf('in') > -1\n && currOper.indexOf('in') < 5)) {\n filterElem = null;\n }\n if (tempRule.operator.indexOf('null') > -1 || (tempRule.operator.indexOf('empty') > -1)) {\n var parentElem = operatorElem.parentElement.querySelector('.e-rule-value');\n var tooltipElem = parentElem.querySelector('.e-tooltip.e-input-group');\n if (tooltipElem) {\n getComponent(tooltipElem, 'tooltip').destroy();\n }\n else if (prevOper.indexOf('in') > -1) {\n tooltipElem = parentElem.querySelector('.e-tooltip');\n if (tooltipElem) {\n getComponent(tooltipElem, 'tooltip').destroy();\n }\n }\n removeClass([parentElem], 'e-show');\n addClass([parentElem], 'e-hide');\n }\n if (valElem && this.getColumn(rule.field).template) {\n filterElem = operatorElem.previousElementSibling;\n }\n if (valElem.children.length === 0) {\n filterElem = operatorElem.previousElementSibling;\n }\n this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.changeRuleValues = function (filterElem, rule, tempRule, ddlArgs) {\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var isSub;\n var ddlObj;\n var operatorList;\n var oprElem;\n if (filterElem) {\n operatorElem = filterElem.nextElementSibling;\n if (filterElem.classList.contains('e-rule-sub-filter')) {\n tempRule.type = this.selectedColumn.type;\n isSub = operatorElem.classList.contains('e-rule-sub-filter');\n operatorElem = isSub ? operatorElem.nextElementSibling : operatorElem;\n }\n addClass([operatorElem], 'e-operator');\n if (operatorElem.childElementCount) {\n ddlObj = getComponent(operatorElem.querySelector('.e-dropdownlist'), 'dropdownlist');\n tempRule.operator = ddlObj.value;\n var fieldObj = void 0;\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(filterElem.querySelector('.e-dropdowntree'), 'dropdowntree');\n }\n else {\n fieldObj = getComponent(filterElem.querySelector('.e-dropdownlist'), 'dropdownlist');\n }\n tempRule.type = this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]).type :\n this.getColumn(fieldObj.value).type;\n var itemData = ddlArgs.itemData;\n if (ddlObj.value !== '') {\n this.renderValues(operatorElem, itemData, ddlArgs.previousItemData, true, rule, tempRule, ddlArgs.element);\n }\n }\n else {\n var ruleId = closest(operatorElem, '.e-rule-container').id;\n oprElem = this.createElement('input', { attrs: { type: 'text', id: ruleId + '_operatorkey' } });\n operatorElem.appendChild(oprElem);\n if (this.selectedColumn.operators) {\n operatorList = this.selectedColumn.operators;\n }\n else if (ddlArgs.itemData) {\n operatorList = this.customOperators[this.selectedColumn.type + 'Operator'];\n }\n var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';\n var operator_2;\n if (rule.operator) {\n operatorList.forEach(function (obj) {\n if ('value' in obj && typeof obj.value === 'string' && obj.value.toLowerCase() === rule.operator.toLowerCase()) {\n operator_2 = obj.value;\n }\n });\n }\n var value = operator_2 ? operator_2 : operatorList[0].value;\n var ddlIdx = 0;\n if (!this.autoSelectOperator) {\n value = '';\n ddlIdx = -1;\n }\n if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1 || this.prvtEvtTgrDaD)) {\n value = rule ? (rule.operator ? rule.operator : value) : value;\n }\n var ddlOperator = void 0;\n ddlOperator = {\n dataSource: operatorList,\n fields: { text: 'key', value: 'value' },\n placeholder: this.l10n.getConstant('SelectOperator'),\n popupHeight: ((operatorList.length > 5) ? height : 'auto'),\n change: this.changeField.bind(this),\n index: ddlIdx,\n value: value,\n open: this.popupOpen.bind(this, false)\n };\n if (this.operatorModel) {\n ddlOperator = __assign({}, ddlOperator, this.operatorModel);\n }\n var dropDownList = new DropDownList(ddlOperator);\n dropDownList.appendTo('#' + ruleId + '_operatorkey');\n tempRule.operator = (rule && rule.operator !== '' && !isNullOrUndefined(rule.operator)) ? rule.operator : operatorList[0].value;\n if (this.isImportRules) {\n tempRule.type = this.selectedColumn.type;\n tempRule.operator = rule.operator;\n }\n if (!isNullOrUndefined(value) && value !== '') {\n this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);\n }\n else if (this.autoSelectField && this.autoSelectOperator) {\n this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);\n }\n }\n }\n if (!this.isImportRules) {\n this.updateRules(ddlArgs.element, ddlArgs.item);\n }\n };\n QueryBuilder.prototype.popupOpen = function (isField, args) {\n if (this.enableRtl) {\n addClass([args.popup.element], 'e-rtl');\n }\n if (isField) {\n this.isFieldClose = false;\n }\n };\n QueryBuilder.prototype.destroyControls = function (target, isRuleTemplate) {\n var element = isRuleTemplate ? target : target.nextElementSibling;\n var inputElement = element.querySelectorAll('input.e-control');\n var divElement = element.querySelectorAll('div.e-control:not(.e-handle)');\n var columns = this.columns;\n for (var i = 0, len = inputElement.length; i < len; i++) {\n if (inputElement[i].classList.contains('e-textbox')) {\n getComponent(inputElement[i], 'textbox').destroy();\n detach(select('input#' + inputElement[i].id, element));\n }\n else if (inputElement[i].classList.contains('e-dropdownlist')) {\n if (this.allowValidation && inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(inputElement[i].parentElement, 'tooltip').destroy();\n }\n getComponent(inputElement[i], 'dropdownlist').destroy();\n }\n else if (inputElement[i].classList.contains('e-radio')) {\n getComponent(inputElement[i], 'radio').destroy();\n }\n else if (inputElement[i].classList.contains('e-numerictextbox')) {\n getComponent(inputElement[i], 'numerictextbox').destroy();\n detach(select('input#' + inputElement[i].id, element));\n }\n else if (inputElement[i].classList.contains('e-datepicker')) {\n getComponent(inputElement[i], 'datepicker').destroy();\n }\n else if (inputElement[i].classList.contains('e-multiselect')) {\n getComponent(inputElement[i], 'multiselect').destroy();\n }\n else if (inputElement[i].className.indexOf('e-template') > -1) {\n var clsName = inputElement[i].className;\n for (var j = 0, jLen = columns.length; j < jLen; j++) {\n if (columns[j].template && clsName.indexOf(columns[j].field) > -1) {\n this.templateDestroy(columns[j], inputElement[i].id);\n break;\n }\n }\n }\n if (document.getElementById(inputElement[i].id)) {\n detach(inputElement[i]);\n }\n }\n for (var i = 0, len = divElement.length; i < len; i++) {\n if (divElement[i].className.indexOf('e-template') > -1) {\n var clsName = divElement[i].className;\n for (var j = 0, jLen = columns.length; j < jLen; j++) {\n if (columns[j].template && clsName.indexOf(columns[j].field) > -1) {\n this.templateDestroy(columns[j], divElement[i].id);\n break;\n }\n }\n }\n detach(divElement[i]);\n }\n var templateElement = element.querySelectorAll('.e-template:not(.e-control)');\n for (var i = 0, len = templateElement.length; i < len; i++) {\n detach(templateElement[i]);\n }\n };\n QueryBuilder.prototype.templateDestroy = function (column, elemId) {\n var template;\n if (typeof column.template !== 'string' || column.template.destroy === undefined) {\n template = column.template;\n }\n else {\n return;\n }\n var temp = template.destroy;\n if (template.destroy) {\n var templateElements = void 0;\n if (document.getElementById(elemId)) {\n templateElements = closest(document.getElementById(elemId), '.e-rule-field').querySelectorAll('.e-template');\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp({ field: column.field, elementId: elemId, elements: templateElements });\n }\n else {\n template.destroy({ field: column.field, elementId: elemId, elements: templateElements });\n }\n }\n };\n /**\n * Return values bound to the column.\n *\n * @param {string} field - 'field' to be passed to get the field values.\n * @returns {object[]} - Values bound to the column\n */\n QueryBuilder.prototype.getValues = function (field) {\n var original = {};\n var result = [];\n var value;\n var fieldColl = [];\n if (this.separator.length > 0) {\n fieldColl = field.split(this.separator);\n }\n var dataSource = this.dataColl;\n if (this.dataColl[1]) {\n for (var i = 0, iLen = dataSource.length; i < iLen; i++) {\n var data = {};\n if (fieldColl.length > 1) {\n var dataObj = dataSource[i];\n var fieldStr = void 0;\n for (var j = 0, jLen = fieldColl.length; j < jLen; j++) {\n fieldStr = fieldColl[j];\n if (fieldColl.length === (j + 1)) {\n value = dataObj[\"\" + fieldStr];\n if (Number(dataObj[\"\" + fieldStr]) === dataObj[\"\" + fieldStr] && dataObj[\"\" + fieldStr] % 1 !== 0) {\n value = dataObj[\"\" + fieldStr].toString();\n }\n }\n else {\n dataObj = dataObj[\"\" + fieldStr];\n }\n }\n }\n else {\n value = dataSource[i][\"\" + field];\n if (Number(dataSource[i][\"\" + field]) === dataSource[i][\"\" + field] && dataSource[i][\"\" + field] % 1 !== 0) {\n value = dataSource[i][\"\" + field].toString();\n }\n }\n if (!(value in original)) {\n original[\"\" + value] = 1;\n if (fieldColl.length > 1) {\n this.createNestedObject(data, fieldColl, value);\n }\n else {\n data[\"\" + field] = value;\n }\n result.push(data);\n }\n }\n }\n return result;\n };\n QueryBuilder.prototype.createNestedObject = function (obj, fieldColl, value) {\n var key;\n var lastIndex = fieldColl.length - 1;\n for (var k = 0; k < lastIndex; ++k) {\n key = fieldColl[k];\n if (!(key in obj)) {\n obj[\"\" + key] = {};\n }\n obj = obj[\"\" + key];\n }\n obj[fieldColl[lastIndex]] = value;\n };\n QueryBuilder.prototype.getDistinctValues = function (dataSource, field) {\n var original = {};\n var result = [];\n var nest = [];\n var value = '';\n var isNested = field.indexOf(this.separator);\n var _loop_2 = function (i, iLen) {\n value = '';\n if (isNested === 0) {\n value = dataSource[i][\"\" + field];\n }\n else {\n nest = field.split(this_2.separator);\n // eslint-disable-next-line @typescript-eslint/tslint/config\n nest.forEach(function (element) {\n if (value) {\n value = value[\"\" + element];\n }\n else {\n value = dataSource[i][\"\" + element];\n }\n });\n }\n if (Number(dataSource[i][\"\" + field]) === dataSource[i][\"\" + field] && dataSource[i][\"\" + field] % 1 !== 0) {\n value = dataSource[i][\"\" + field].toString();\n }\n var data = {};\n if (!(value in original)) {\n original[\"\" + value] = 1;\n if (isNested === 0) {\n data[\"\" + field] = value;\n }\n else {\n data[nest[nest.length - 1]] = value;\n }\n result.push(data);\n }\n };\n var this_2 = this;\n for (var i = 0, iLen = dataSource.length; i < iLen; i++) {\n _loop_2(i, iLen);\n }\n return result;\n };\n QueryBuilder.prototype.renderMultiSelect = function (rule, parentId, i, selectedValue, values) {\n var isFetched = false;\n var ds;\n var isValues = false;\n this.isGetNestedData = false;\n if (this.dataColl[1]) {\n if (Object.keys(this.dataColl[1]).indexOf(rule.field) > -1) {\n isFetched = true;\n ds = this.getDistinctValues(this.dataColl, rule.field);\n }\n }\n isFetched = rule.columns ? false : isFetched;\n if (!this.dataColl.length && values.length) {\n isValues = true;\n }\n var multiSelectValue;\n multiSelectValue = {\n dataSource: isValues ? values : (isFetched ? ds : this.dataManager),\n query: new Query([rule.field]),\n fields: { text: this.selectedRule.field, value: this.selectedRule.field },\n placeholder: this.l10n.getConstant('SelectValue'),\n value: selectedValue,\n mode: 'CheckBox',\n width: '100%',\n change: this.changeValue.bind(this, i),\n close: this.closePopup.bind(this, i),\n actionBegin: this.multiSelectOpen.bind(this, parentId + '_valuekey' + i),\n open: this.popupOpen.bind(this, false)\n };\n if (this.valueModel && this.valueModel.multiSelectModel) {\n multiSelectValue = __assign({}, multiSelectValue, this.valueModel.multiSelectModel);\n }\n var multiSelectObj = new MultiSelect(multiSelectValue);\n multiSelectObj.appendTo('#' + parentId + '_valuekey' + i);\n this.updateRules(multiSelectObj.element, selectedValue, 0);\n };\n QueryBuilder.prototype.multiSelectOpen = function (parentId, args) {\n if (this.dataSource instanceof DataManager) {\n var element = document.getElementById(parentId);\n var dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), this.fieldMode === 'DropdownTree' ? 'dropdowntree' : 'dropdownlist');\n if (this.fieldMode === 'DropdownTree') {\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n else {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n }\n var value = this.selectedColumn.field;\n var isFetched = false;\n if (this.dataColl[1]) {\n if (Object.keys(this.dataColl[1]).indexOf(value) > -1) {\n isFetched = true;\n }\n var isNest = value.indexOf(this.separator);\n if (isNest !== 0 && this.isGetNestedData) {\n isFetched = true;\n }\n }\n if (!isFetched) {\n args.cancel = true;\n this.bindMultiSelectData(element, value);\n }\n }\n };\n QueryBuilder.prototype.bindMultiSelectData = function (element, value) {\n this.getMultiSelectData(element, value);\n };\n QueryBuilder.prototype.getMultiSelectData = function (element, value) {\n var _this = this;\n var dummyData;\n var deferred = new Deferred();\n var data = this.dataManager.executeQuery(new Query().select(value));\n var multiselectObj = getComponent(element, 'multiselect');\n multiselectObj.hideSpinner();\n this.createSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n showSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n data.then(function (e) {\n if (e.actual && e.actual.result) {\n dummyData = e.actual.result;\n }\n else {\n dummyData = e.result;\n }\n _this.dataColl = extend(_this.dataColl, dummyData, [], true);\n multiselectObj.dataSource = _this.getDistinctValues(_this.dataColl, value);\n _this.isGetNestedData = true;\n hideSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n }).catch(function (e) {\n deferred.reject(e);\n });\n };\n QueryBuilder.prototype.createSpinner = function (element) {\n var spinnerElem = this.createElement('span', { attrs: { class: 'e-qb-spinner' } });\n element.appendChild(spinnerElem);\n createSpinner({ target: spinnerElem, width: Browser.isDevice ? '16px' : '14px' });\n };\n QueryBuilder.prototype.closePopup = function (i, args) {\n var element = document.getElementById(args.popup.element.id.replace('_popup', ''));\n if (element) {\n var ms = getComponent(element, 'multiselect');\n if (ms) {\n var value = ms.value;\n this.updateRules(element, value, i);\n }\n }\n };\n QueryBuilder.prototype.processTemplate = function (target, itemData, rule, tempRule) {\n var container = closest(target, '.e-rule-container');\n var tempElements = container.querySelectorAll('.e-template');\n var filterElem = container.querySelector('.e-rule-filter .e-filter-input');\n var ddlObj = this.fieldMode === 'DropdownTree' ? getComponent(filterElem, 'dropdowntree')\n : getComponent(container.querySelector('.e-rule-filter .e-filter-input'), 'dropdownlist');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(ddlObj.value[0]) : this.getColumn(ddlObj.value);\n if (typeof itemData.template === 'string' || itemData.template.write === undefined) {\n var args = {\n rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,\n requestType: 'value-template-create'\n };\n this.trigger('actionBegin', args);\n }\n else {\n var template = itemData.template;\n if (typeof template.write === 'string') {\n getValue(template.write, window)({\n elements: tempElements.length > 1 ? tempElements : tempElements[0], values: rule.value,\n operator: tempRule.operator, field: column.field, dataSource: column.values\n });\n }\n else if (typeof itemData.template !== 'function') {\n itemData.template.write({\n elements: tempElements.length > 1 ? tempElements : tempElements[0],\n values: rule.value, operator: tempRule.operator, field: column.field, dataSource: column.values\n });\n }\n }\n };\n QueryBuilder.prototype.getItemData = function (parentId) {\n var fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');\n var parentFieldObj = this.element.querySelector(\"#\" + parentId);\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');\n }\n else if (parentFieldObj) {\n var subFieldObjList = parentFieldObj.querySelectorAll('.e-rule-sub-filter');\n if (subFieldObjList.length > 0) {\n var lastSubFieldObj = subFieldObjList[subFieldObjList.length - 1].querySelector('.e-dropdownlist');\n fieldObj = getComponent(lastSubFieldObj, 'dropdownlist');\n }\n }\n return this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]) : this.getColumn(fieldObj.value);\n };\n QueryBuilder.prototype.setDefaultValue = function (parentId, isArryValue, isNumber) {\n var itemData = this.getItemData(parentId);\n if (isNullOrUndefined(itemData.value)) {\n return isNumber ? isArryValue ? [0, 0] : 0 : isArryValue ? [] : '';\n }\n if (isArryValue) {\n if (!(itemData.value instanceof Array)) {\n return [itemData.value];\n }\n }\n else {\n if (itemData.value instanceof Array) {\n return itemData.value[0];\n }\n }\n return itemData.value;\n };\n QueryBuilder.prototype.renderStringValue = function (parentId, rule, operator, idx, ruleValElem) {\n var selectedVal;\n var columnData = this.getItemData(parentId);\n var selectedValue;\n var isTemplate = (typeof columnData.template === 'string');\n if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value !== '') {\n selectedValue = rule.value;\n }\n else {\n selectedValue = this.setDefaultValue(parentId, false, false);\n }\n if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleValElem.style.width = '100%';\n }\n else {\n ruleValElem.style.width = null;\n ruleValElem.style.minWidth = '200px';\n }\n }\n else {\n if (operator === 'in' || operator === 'notin') {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n selectedValue = selectedVal.join(',');\n }\n if (operator === 'between' || operator === 'notbetween') {\n if (selectedValue.length > 1) {\n selectedValue = selectedValue[idx];\n }\n }\n var txtBox = void 0;\n txtBox = {\n placeholder: this.l10n.getConstant('SelectValue'),\n input: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.textBoxModel) {\n txtBox = __assign({}, txtBox, this.valueModel.textBoxModel);\n }\n var inputobj = new TextBox(txtBox);\n inputobj.appendTo('#' + parentId + '_valuekey' + idx);\n inputobj.value = selectedValue;\n inputobj.dataBind();\n }\n };\n QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {\n var columnData = this.getItemData(parentId);\n var isTemplate = (typeof columnData.template === 'string');\n var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||\n typeof rule.value === 'number') ? rule.value : this.setDefaultValue(parentId, false, true);\n if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n ruleValElem.style.width = '100%';\n }\n else {\n ruleValElem.style.minWidth = '200px';\n ruleValElem.style.width = null;\n }\n }\n else if (operator === 'in' || operator === 'notin') {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n var selVal = selectedVal.join(',');\n var txtInp = void 0;\n txtInp = {\n placeholder: this.l10n.getConstant('SelectValue'),\n input: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.textBoxModel) {\n txtInp = __assign({}, txtInp, this.valueModel.textBoxModel);\n }\n var input = new TextBox(txtInp);\n input.appendTo('#' + parentId + '_valuekey' + idx);\n input.value = selVal;\n input.dataBind();\n }\n else {\n itemData = columnData;\n var min = (itemData.validation && itemData.validation.min) ? itemData.validation.min : 0;\n var max = (itemData.validation && itemData.validation.max) ? itemData.validation.max : Number.MAX_VALUE;\n var format = itemData.format ? itemData.format : 'n';\n if (length > 1 && rule) {\n selectedVal = rule.value[idx] ? rule.value[idx] : this.setDefaultValue(parentId, true, true);\n }\n var numericTxt = void 0;\n numericTxt = {\n value: (selectedVal instanceof Array) ? selectedVal[idx] : selectedVal,\n format: format, min: min, max: max, width: '100%',\n step: itemData.step ? itemData.step : 1,\n change: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.numericTextBoxModel) {\n numericTxt = __assign({}, numericTxt, this.valueModel.numericTextBoxModel);\n }\n var numeric = new NumericTextBox(numericTxt);\n numeric.appendTo('#' + parentId + '_valuekey' + idx);\n numeric.element.setAttribute('aria-label', itemData.label + ' ' + 'Value');\n numeric.element.oninput = this.changeValue.bind(this, idx);\n }\n };\n QueryBuilder.prototype.processValueString = function (value, type) {\n var numArr = [];\n var strArr = value.split(',');\n if (type === 'string') {\n return strArr;\n }\n else {\n for (var k = 0, kLen = strArr.length; k < kLen; k++) {\n numArr.push(Number(strArr[k]));\n }\n return numArr;\n }\n };\n QueryBuilder.prototype.parseDate = function (value, format) {\n var formatOpt;\n var selectedValue;\n if (format) {\n var dParser = this.intl.getDateParser({ skeleton: 'full', type: 'dateTime' });\n formatOpt = this.getFormat(format);\n selectedValue = dParser(value);\n if (isNullOrUndefined(selectedValue)) {\n selectedValue = this.intl.parseDate(value, formatOpt);\n }\n }\n else {\n selectedValue = new Date(value);\n }\n return selectedValue;\n };\n QueryBuilder.prototype.renderControls = function (target, itemData, rule, tempRule, isRendered) {\n addClass([target.parentElement.querySelector('.e-rule-value')], 'e-value');\n removeClass([target.parentElement.querySelector('.e-rule-value')], 'e-hide');\n addClass([target.parentElement.querySelector('.e-rule-value')], 'e-show');\n if (itemData.template && (itemData.template.create || isRendered)) {\n this.processTemplate(target, itemData, rule, tempRule);\n }\n else {\n var length_1;\n if (tempRule.type === 'boolean') {\n length_1 = this.selectedColumn.values ? this.selectedColumn.values.length : 2;\n }\n else {\n length_1 = tempRule.operator && tempRule.operator.toString().toLowerCase().indexOf('between') > -1 ? 2 : 1;\n }\n var parentId = closest(target, '.e-rule-container').id;\n var ruleValElem = void 0;\n var operator = tempRule.operator.toString();\n if (target.className.indexOf('e-rule-operator') > -1 || target.className.indexOf('e-rule-filter') > -1) {\n ruleValElem = target.parentElement.querySelector('.e-rule-value');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n ruleValElem.style.width = '100%';\n }\n else {\n if (operator !== 'in' && operator !== 'notin') {\n addClass([ruleValElem], 'e-custom-value');\n }\n else {\n removeClass([ruleValElem], 'e-custom-value');\n }\n }\n for (var i = 0; i < length_1; i++) {\n switch (tempRule.type) {\n case 'string':\n {\n this.renderStringValue(parentId, rule, operator, i, ruleValElem);\n }\n break;\n case 'number':\n {\n this.renderNumberValue(parentId, rule, operator, i, ruleValElem, itemData, length_1);\n }\n break;\n case 'boolean':\n this.processBoolValues(itemData, rule, parentId, i);\n break;\n case 'date':\n {\n var selectedValue = new Date();\n var selVal = void 0;\n var column = void 0;\n var format = itemData.format;\n var datepick = void 0;\n var datePicker = void 0;\n var place = this.l10n.getConstant('SelectValue');\n var isTemplate = (typeof itemData.template === 'string');\n if (rule.value && !isNullOrUndefined(format)) {\n selVal = (length_1 > 1) ? rule.value[i] : rule.value;\n selectedValue = this.parseDate(selVal, format) || new Date();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!itemData.field && !itemData.key && itemData.value) {\n if (itemData.value instanceof Date) {\n selectedValue = itemData.value;\n }\n else {\n selectedValue = this.parseDate(itemData.value, itemData.format);\n }\n }\n if (!itemData.format && rule && rule.field !== '') {\n column = this.getColumn(rule.field);\n format = column.format;\n }\n if ((this.isImportRules || this.isPublic || isTemplate) && rule) {\n column = this.getColumn(rule.field);\n format = column.format;\n if (rule.value) {\n selVal = (length_1 > 1) ? rule.value[i] : rule.value;\n selectedValue = this.parseDate(selVal, column.format);\n }\n else {\n selectedValue = rule.value;\n }\n }\n if (format) {\n var formatObj = this.getFormat(format);\n if (formatObj.skeleton) {\n datePicker = {\n locale: this.getLocale(), value: selectedValue,\n placeholder: place, format: formatObj, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n else {\n datePicker = {\n value: selectedValue, locale: this.getLocale(), placeholder: place,\n format: formatObj.format, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n }\n else {\n datePicker = {\n locale: this.getLocale(), value: selectedValue,\n placeholder: place, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n datepick.appendTo('#' + parentId + '_valuekey' + i);\n if (!rule.value) {\n var elem = document.getElementById(parentId + '_valuekey' + i);\n this.updateRules(elem, selectedValue, null, this.isNotValueChange);\n this.isNotValueChange = false;\n }\n }\n break;\n }\n }\n }\n }\n };\n QueryBuilder.prototype.processBoolValues = function (itemData, rule, parentId, i) {\n var isCheck = false;\n var value;\n var orgValue;\n if (isNullOrUndefined(rule.type) && itemData) {\n rule.type = itemData.type;\n }\n var label;\n if (itemData.values) {\n var values = itemData.values;\n if (rule.type === 'boolean' && !isNullOrUndefined(rule.value)) {\n isCheck = values[i].toLowerCase() === rule.value.toString().toLowerCase();\n }\n else if (itemData.value) {\n isCheck = values[i].toLowerCase() === itemData.value.toString().toLowerCase();\n }\n else if (i === 0) {\n isCheck = true;\n }\n orgValue = value = label = values[i];\n }\n else {\n var values = [true, false];\n if (rule.type === 'boolean' && !isNullOrUndefined(rule.value)) {\n isCheck = values[i].toString().toLowerCase() === rule.value.toString().toLowerCase();\n }\n else if (itemData.value) {\n isCheck = values[i].toString().toLowerCase() === itemData.value.toString().toLowerCase();\n }\n else if (i === 0) {\n if (typeof rule.value === 'boolean') {\n isCheck = rule.value ? true : false;\n }\n else {\n isCheck = true;\n }\n }\n if (typeof rule.value === 'boolean' && i === 1) {\n isCheck = !rule.value ? true : false;\n }\n value = values[i].toString();\n orgValue = values[i];\n label = this.l10n.getConstant(['True', 'False'][i]);\n }\n var radioBtn;\n radioBtn = {\n label: label, name: parentId + 'default', checked: isCheck, value: value,\n change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.radioButtonModel) {\n radioBtn = __assign({}, radioBtn, this.valueModel.radioButtonModel);\n }\n var radiobutton = new RadioButton(radioBtn);\n radiobutton.appendTo('#' + parentId + '_valuekey' + i);\n if (isCheck) {\n this.updateRules(radiobutton.element, orgValue, 0, true);\n }\n };\n QueryBuilder.prototype.getOperatorIndex = function (ddlObj, rule) {\n var i;\n var dataSource = ddlObj.dataSource;\n var len = dataSource.length;\n for (i = 0; i < len; i++) {\n if (rule.operator === ddlObj.dataSource[i].value) {\n return i;\n }\n }\n return 0;\n };\n QueryBuilder.prototype.getPreviousItemData = function (prevItemData, column) {\n if (this.isFieldClose && prevItemData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n prevItemData = this.getColumn(prevItemData.value ? prevItemData.value : prevItemData.field);\n }\n if (column && column.template && prevItemData && Object.keys(prevItemData).length < 4) {\n prevItemData.template = column.template;\n }\n return prevItemData;\n };\n QueryBuilder.prototype.renderValues = function (target, itemData, prevItemData, isRender, rule, tempRule, element) {\n var subFldElem = target.previousElementSibling;\n var filtElem = subFldElem.getElementsByTagName('input')[0];\n var filtObj = this.fieldMode === 'DropdownTree' ? getComponent(filtElem, 'dropdowntree')\n : getComponent(filtElem, 'dropdownlist');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(filtObj.value[0])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n : this.getColumn(filtObj.value);\n this.selectedRule = column;\n var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');\n if (isRender) {\n itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;\n if (itemData.operators) {\n ddlObj.value = null;\n ddlObj.dataBind();\n ddlObj.dataSource = itemData.operators;\n ddlObj.index = this.getOperatorIndex(ddlObj, rule);\n ddlObj.value = tempRule.operator = ddlObj.dataSource[ddlObj.index].value;\n if (!this.autoSelectOperator) {\n ddlObj.index = -1;\n tempRule.operator = ddlObj.value = '';\n }\n else {\n ddlObj.dataBind();\n }\n }\n }\n var operator = tempRule.operator.toString();\n var isTempRendered = false;\n if (!(operator.indexOf('null') > -1 || operator.indexOf('isempty') > -1 || operator.indexOf('isnotempty') > -1)) {\n var parentId = closest(target, '.e-rule-container').id;\n prevItemData = this.getPreviousItemData(prevItemData, column);\n if (prevItemData && prevItemData.template === undefined) {\n if (prevItemData.columns) {\n prevItemData = this.getColumn(rule.field);\n }\n }\n else if (this.fieldMode === 'DropdownTree' && prevItemData === undefined) {\n prevItemData = this.getColumn(rule.field);\n }\n if (prevItemData && prevItemData.template) {\n this.templateDestroy(prevItemData, parentId + '_valuekey0');\n var elem = select('#' + parentId + '_valuekey0', target.nextElementSibling);\n if (elem && !elem.classList.contains('e-control')) {\n detach(select('#' + parentId + '_valuekey0', target.nextElementSibling));\n }\n if (typeof prevItemData.template === 'string' || prevItemData.template.create === undefined) {\n if (target.nextElementSibling.classList.contains('e-template-value')) {\n this.clearQBTemplate([parentId]);\n }\n target.nextElementSibling.innerHTML = '';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && !isNullOrUndefined(prevItemData.key) && this.fieldMode === 'DropdownTree') {\n delete prevItemData.template;\n }\n }\n if (isRender) {\n this.validateValue(rule, closest(target, '.e-rule-container'));\n this.destroyControls(target);\n }\n if (this.isImportRules || (ddlObj && ddlObj.value !== '')) {\n if (column) {\n itemData.template = column.template;\n }\n if (itemData.template) {\n addClass([target.nextElementSibling], 'e-template-value');\n itemData.template = column.template;\n isTempRendered = this.setColumnTemplate(itemData, parentId, column.field, itemData.value ||\n operator, target, rule);\n }\n if (isTempRendered) {\n var parentElem = target.parentElement.querySelector('.e-rule-value');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n parentElem.style.width = '100%';\n }\n else {\n parentElem.style.width = '200px';\n }\n }\n else {\n removeClass([target.nextElementSibling], 'e-template-value');\n var inputLen = 1;\n if (tempRule.type === 'boolean') {\n inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;\n }\n else {\n inputLen = (operator && operator.toLowerCase().indexOf('between') > -1) ? 2 : 1;\n }\n for (var i = 0; i < inputLen; i++) {\n var valElem = this.createElement('input', { attrs: { type: 'text', id: parentId + '_valuekey' + i } });\n target.nextElementSibling.appendChild(valElem);\n }\n }\n this.renderControls(target, itemData, rule, tempRule, isTempRendered);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && !isNullOrUndefined(itemData.key) && itemData.template && this.fieldMode === 'DropdownTree') {\n delete itemData.template;\n }\n }\n }\n else {\n var parentElem = target.parentElement.querySelector('.e-rule-value');\n if (parentElem) {\n removeClass([parentElem], 'e-show');\n addClass([parentElem], 'e-hide');\n }\n }\n };\n QueryBuilder.prototype.setColumnTemplate = function (itemData, ruleID, field, operator, target, rule) {\n var _this = this;\n var args;\n var isRendered = true;\n if (!itemData.template) {\n return true;\n }\n else {\n if (typeof itemData.template === 'string' || itemData.template.create === undefined) {\n args = {\n requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,\n renderTemplate: true\n };\n this.trigger('actionBegin', args, function (observedActionArgs) {\n isRendered = _this.actionBeginSuccessCallBack(observedActionArgs, itemData, ruleID, field, target);\n });\n return isRendered;\n }\n else {\n var valElem = void 0;\n var template = itemData.template;\n if (typeof template.create === 'string') {\n valElem = getValue(template.create, window)({ field: field, operator: operator });\n }\n else {\n valElem = template.create({ field: field, operator: operator });\n }\n if (valElem instanceof Element) {\n valElem.id = ruleID + '_valuekey0';\n addClass([valElem], 'e-template');\n target.nextElementSibling.appendChild(valElem);\n if (field.indexOf(' ') < 0) {\n addClass([valElem], 'e-' + field);\n }\n }\n else if (valElem instanceof Array) {\n addClass(valElem, 'e-template');\n for (var i = 0, iLen = valElem.length; i < iLen; i++) {\n valElem[i].id = ruleID + '_valuekey' + i;\n target.nextElementSibling.appendChild(valElem[i]);\n }\n }\n addClass([target.nextElementSibling], 'e-template-value');\n return true;\n }\n }\n };\n QueryBuilder.prototype.actionBeginSuccessCallBack = function (args, itemData, ruleID, field, target) {\n if (args.renderTemplate) {\n var valElem = void 0;\n this.columnTemplateFn = this.templateParser(typeof itemData.template === 'function' ? itemData.template : itemData.template);\n var templateID = this.element.id + field;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n valElem = this.columnTemplateFn(args, this, ruleID, templateID)[0];\n target.nextElementSibling.appendChild(valElem);\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if (this.isAngular) {\n var valElemColl = this.columnTemplateFn(args, this, ruleID, templateID);\n valElem = (valElemColl[0].nodeType === 3) ? valElemColl[1] : valElemColl[0];\n target.nextElementSibling.appendChild(valElem);\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if (this.isVue3) {\n valElem = this.columnTemplateFn(args, this, 'Template', templateID);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(valElem, target.nextElementSibling);\n }\n else {\n valElem = this.columnTemplateFn(args, this, 'Template', templateID)[0];\n target.nextElementSibling.appendChild(valElem);\n }\n addClass([target.nextElementSibling], 'e-template-value');\n this.renderReactTemplates();\n return true;\n }\n else {\n return false;\n }\n };\n QueryBuilder.prototype.updateValues = function (element, rule) {\n var idx = 1;\n if (element.className.indexOf('e-template') > -1) {\n idx = 3;\n }\n var controlName = element.className.split(' e-')[idx];\n var i = parseInt(element.id.slice(-1), 2);\n var column;\n var format;\n var selectedDate;\n var value;\n var radioBtnObj;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textboxValue;\n switch (controlName) {\n case 'checkbox':\n value = getComponent(element, controlName).value;\n rule.value = (value !== '') ? value : undefined;\n break;\n case 'textbox':\n textboxValue = getComponent(element, controlName).value;\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = textboxValue;\n }\n else if (['in', 'notin'].some(function (op) { return rule.operator.indexOf(op) !== -1; })\n && rule.operator.indexOf('contains') === -1) {\n rule.value = textboxValue ?\n (rule.type === 'string' ? textboxValue.split(',').map(function (val) { return val.trim(); }) :\n textboxValue.split(',').map(Number)) : [];\n }\n else {\n rule.value = textboxValue;\n }\n break;\n case 'dropdownlist':\n rule.value = getComponent(element, controlName).value;\n break;\n case 'radio':\n radioBtnObj = getComponent(element, controlName);\n if (radioBtnObj.checked) {\n if (typeof rule.value === 'boolean') {\n rule.value = radioBtnObj.value === 'true';\n }\n else {\n if (this.getColumn(rule.field).values) {\n rule.value = radioBtnObj.value;\n }\n else {\n rule.value = radioBtnObj.value === 'true';\n }\n }\n }\n radioBtnObj.refresh();\n break;\n case 'numerictextbox':\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = getComponent(element, controlName).value;\n }\n else {\n rule.value = getComponent(element, controlName).value;\n }\n break;\n case 'datepicker':\n column = this.getColumn(rule.field);\n format = this.getFormat(column.format);\n selectedDate = getComponent(element, controlName).value;\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = this.intl.formatDate(selectedDate, format);\n }\n else if (isNullOrUndefined(format.format) && selectedDate) {\n rule.value = this.intl.formatDate(selectedDate);\n }\n else if (selectedDate) {\n rule.value = this.intl.formatDate(selectedDate, format);\n }\n else {\n rule.value = selectedDate;\n }\n break;\n case 'multiselect':\n rule.value = getComponent(element, controlName).value;\n break;\n }\n };\n QueryBuilder.prototype.updateRules = function (target, selectedValue, i, isNotTrigger) {\n var groupElem = closest(target, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n var ruleElem = closest(target, '.e-rule-container');\n var index = 0;\n var dropDownObj;\n var eventsArgs;\n var groupID = groupElem.id.replace(this.element.id + '_', '');\n var beforeRules = this.getValidRules(this.rule);\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var operator = rule.rules[index].operator ? rule.rules[index].operator.toString() : '';\n ruleElem = closest(target, '.e-rule-container');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n if (closest(target, '.e-rule-filter') || closest(target, '.e-rule-sub-filter')) {\n if (this.subFieldElem) {\n target = this.subFieldElem;\n }\n dropDownObj = this.fieldMode === 'DropdownTree' ? getComponent(target, 'dropdowntree') :\n getComponent(target, 'dropdownlist');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n : this.getColumn(dropDownObj.value);\n if (!this.isImportRules && rule.rules[index].field &&\n rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {\n if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)\n || (operator.indexOf('empty') > -1)) {\n rule.rules[index].value = '';\n }\n }\n this.selectedColumn = this.getColumn(this.selectedColumn.field);\n rule.rules[index].field = this.selectedColumn.field;\n rule.rules[index].type = this.selectedColumn.type;\n rule.rules[index].label = this.selectedColumn.label;\n var ruleElement = closest(target, '.e-rule-filter');\n ruleElement = ruleElement ? ruleElement : closest(target, '.e-rule-sub-filter');\n var element = ruleElement.nextElementSibling.querySelector('input.e-control');\n element = element ? element : ruleElement.nextElementSibling.nextElementSibling.querySelector('input.e-control');\n operator = getComponent(element, 'dropdownlist').value.toString();\n rule.rules[index].operator = operator;\n var valueContainer = ruleElement.nextElementSibling.nextElementSibling;\n var elementCln = valueContainer.querySelectorAll('input.e-control');\n if (elementCln.length < 1) {\n elementCln = valueContainer.querySelectorAll('div.e-control');\n }\n if (elementCln.length < 1) {\n elementCln = valueContainer.querySelectorAll('.e-template');\n }\n eventsArgs = { groupID: groupID, ruleID: ruleID, value: rule.rules[index].field, type: 'field' };\n for (var i_1 = 0; i_1 < elementCln.length; i_1++) {\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n rule.rules[index].value = null;\n continue;\n }\n this.updateValues(elementCln[i_1], rule.rules[index]);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', eventsArgs);\n }\n if (this.allowValidation && rule.rules[index].field && target.parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(target.parentElement, 'tooltip').destroy();\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'field');\n }\n else if (closest(target, '.e-rule-operator')) {\n dropDownObj = getComponent(target, 'dropdownlist');\n rule.rules[index].operator = dropDownObj.value.toString();\n var inputElem = ruleElem.querySelectorAll('.e-rule-value input.e-control');\n eventsArgs = { groupID: groupID, ruleID: ruleID, value: dropDownObj.value, type: 'operator' };\n if (this.allowValidation && rule.rules[index].operator && target.parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(target.parentElement, 'tooltip').destroy();\n }\n if (inputElem.length > 1 && !(inputElem[0].className.indexOf('e-template') > -1)) {\n rule.rules[index].value = [];\n }\n for (var i_2 = 0; i_2 < inputElem.length; i_2++) {\n if (rule.rules[index].operator.indexOf('null') > -1 || rule.rules[index].operator.indexOf('empty') > -1) {\n rule.rules[index].value = null;\n continue;\n }\n else if (inputElem[i_2].classList.contains('e-template')) {\n continue;\n }\n this.updateValues(inputElem[i_2], rule.rules[index]);\n }\n if (!this.isImportRules) {\n this.trigger('change', eventsArgs);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'operator');\n }\n else if (closest(target, '.e-rule-value')) {\n this.ruleValueUpdate(target, selectedValue, rule, index, groupElem, ruleElem, i);\n if (!isNotTrigger) {\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'value');\n }\n }\n };\n QueryBuilder.prototype.filterRules = function (beforeRule, afterRule, type) {\n var beforeRuleStr = JSON.stringify({ condition: beforeRule.condition, not: beforeRule.not, rule: beforeRule.rules });\n var afetrRuleStr = JSON.stringify({ condition: afterRule.condition, not: afterRule.not, rule: afterRule.rules });\n if (beforeRuleStr !== afetrRuleStr) {\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('ruleChange', { previousRule: beforeRule, rule: afterRule, type: type });\n }\n }\n };\n QueryBuilder.prototype.ruleValueUpdate = function (target, selectedValue, rule, index, groupElem, ruleElem, i) {\n var eventsArgs;\n var oper;\n var arrOperator = ['in', 'between', 'notin', 'notbetween'];\n if (rule.rules[index].operator) {\n oper = rule.rules[index].operator.toString().toLowerCase();\n }\n if (selectedValue !== null) {\n if (target.className.indexOf('e-multiselect') > -1 && rule.rules[index].type === 'number' &&\n !this.isNotified) {\n var selVal = [];\n var dupSelectedValue = selectedValue;\n for (var k = 0, kLen = dupSelectedValue.length; k < kLen; k++) {\n if (typeof dupSelectedValue[k] === 'string') {\n selVal.push(parseFloat(dupSelectedValue[k]));\n }\n }\n if (selVal.length) {\n selectedValue = selVal;\n }\n }\n if (this.isNotified) {\n rule.rules[index].value = selectedValue;\n eventsArgs = { groupID: groupElem.id, ruleID: ruleElem.id, value: rule.rules[index].value, type: 'value' };\n if (!this.isImportRules) {\n this.trigger('change', eventsArgs);\n }\n }\n else if (target.className.indexOf('e-spin') > -1 || target.className.indexOf('e-numeric') > -1) {\n if (arrOperator.indexOf(oper) > -1) {\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else if (target.className.indexOf('e-radio') > -1) {\n rule.rules[index].value = selectedValue;\n }\n else if (target.className.indexOf('e-multiselect') > -1) {\n rule.rules[index].value = selectedValue;\n }\n else if (target.className.indexOf('e-textbox') > -1) {\n if (oper === 'in' || oper === 'notin') {\n if (rule.rules[index].type === 'string') {\n rule.rules[index].value = this.processValueString(selectedValue, rule.rules[index].type);\n }\n else {\n rule.rules[index].value = this.processValueString(selectedValue, rule.rules[index].type);\n }\n }\n else if (oper === 'between' || oper === 'notbetween') {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else if (target.className.indexOf('e-datepicker') > -1) {\n var format = this.getFormat(this.getColumn(this.selectedColumn.field).format);\n if (format.type) {\n if (arrOperator.indexOf(oper) > -1) {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = this.intl.formatDate(selectedValue, format);\n }\n else {\n rule.rules[index].value = this.intl.formatDate(selectedValue, format);\n }\n }\n }\n this.validateValue(rule, ruleElem, index);\n }\n else {\n if (target.className.indexOf('e-datepicker') > -1) {\n if (arrOperator.indexOf(oper) > -1) {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n };\n QueryBuilder.prototype.validateValue = function (rule, ruleElem, index) {\n if (isNullOrUndefined(rule) && isNullOrUndefined(ruleElem)) {\n return;\n }\n if (!isNullOrUndefined(index)) {\n rule = rule.rules[index];\n }\n var isObject = typeof (rule.value) === 'object';\n if (this.allowValidation && (isNullOrUndefined(index) || (isObject ? rule.value.length > 0 : rule.value))) {\n var valElem = ruleElem.querySelectorAll('.e-rule-value .e-control');\n if (valElem.length > 0) {\n if (valElem[0].className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[0], 'tooltip').destroy();\n }\n else if (valElem[0].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[0].parentElement, 'tooltip').destroy();\n }\n if (valElem[1] && valElem[1].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[1].parentElement, 'tooltip').destroy();\n }\n if (valElem[2] && valElem[2].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[2].parentElement, 'tooltip').destroy();\n }\n }\n }\n };\n QueryBuilder.prototype.getFormat = function (format) {\n var formatOptions;\n if (format) {\n if (typeof (format) === 'string') {\n formatOptions = { type: 'dateTime' };\n if (format === 'short' || format === 'yMd') {\n formatOptions.type = 'date';\n formatOptions.skeleton = format;\n }\n else {\n formatOptions.format = format;\n }\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: format.skeleton };\n }\n }\n else {\n formatOptions = { type: 'date', skeleton: 'yMd' };\n }\n return formatOptions;\n };\n QueryBuilder.prototype.findGroupByIdx = function (groupIdx, rule, isRoot) {\n var ruleColl = rule.rules;\n var dupRuleColl = [];\n if (!isRoot) {\n for (var j = 0, jLen = ruleColl.length; j < jLen; j++) {\n rule = ruleColl[j];\n if (rule.rules) {\n dupRuleColl.push(rule);\n }\n }\n return dupRuleColl[groupIdx];\n }\n return rule;\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n QueryBuilder.prototype.destroy = function () {\n this.isDestroy = true;\n var queryElement = this.element;\n if (!queryElement) {\n return;\n }\n var element;\n var i;\n var len;\n var tooltip;\n _super.prototype.destroy.call(this);\n element = this.element.querySelectorAll('.e-addrulegroup');\n len = element.length;\n for (i = 0; i < len; i++) {\n getComponent(element[i], 'dropdown-btn').destroy();\n detach(element[i]);\n }\n tooltip = this.element.querySelectorAll('.e-rule-filter .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n element = this.element.querySelectorAll('.e-rule-filter .e-control:not(.e-tooltip)');\n len = element.length;\n for (i = 0; i < len; i++) {\n if (getComponent(element[i], 'dropdownlist')) {\n getComponent(element[i], 'dropdownlist').destroy();\n }\n else {\n getComponent(element[i], 'dropdowntree').destroy();\n }\n detach(element[i]);\n }\n tooltip = this.element.querySelectorAll('.e-rule-operator .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n element = this.element.querySelectorAll('.e-rule-operator .e-control:not(.e-tooltip)');\n len = element.length;\n for (i = 0; i < len; i++) {\n if (getComponent(element[i], 'dropdownlist')) {\n getComponent(element[i], 'dropdownlist').destroy();\n detach(element[i]);\n }\n }\n tooltip = this.element.querySelectorAll('.e-rule-value .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n this.isImportRules = false;\n this.unWireEvents();\n this.levelColl[this.element.id + '_group0'] = [0];\n this.element.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.portals && this.portals.length) {\n this.clearQBTemplate();\n }\n var popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');\n if (popupElement) {\n for (i = 0; i < popupElement.length; i++) {\n popupElement[i].remove();\n }\n }\n classList(this.element, [], ['e-rtl', 'e-responsive', 'e-device']);\n this.isDestroy = false;\n };\n /**\n * Adds single or multiple rules.\n *\n * @param {RuleModel[]} rule - 'rule collection' to be passed to add the rules.\n * @param {string} groupID - 'group id' to be passed to add the rule in groups.\n * @returns {void}.\n */\n QueryBuilder.prototype.addRules = function (rule, groupID) {\n groupID = this.element.id + '_' + groupID;\n this.isPublic = true;\n for (var i = 0, len = rule.length; i < len; i++) {\n this.addRuleElement(document.getElementById(groupID), rule[i]);\n }\n this.isPublic = false;\n };\n /**\n * Adds single or multiple groups, which contains the collection of rules.\n *\n * @param {RuleModel[]} groups - 'group collection' to be passed to add the groups.\n * @param {string} groupID - 'group id' to be passed to add the groups.\n * @returns {void}.\n */\n QueryBuilder.prototype.addGroups = function (groups, groupID) {\n if (this.isAddSuccess || this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount) {\n groupID = this.element.id + '_' + groupID;\n var groupElem = document.getElementById(groupID);\n var rule = this.getParentGroup(groupElem);\n var grouplen = groups.length;\n if (grouplen) {\n this.isPublic = true;\n for (var i = 0, len = groups.length; i < len; i++) {\n this.updatedRule = {\n isLocked: groups[i].isLocked, condition: groups[i].condition,\n not: groups[i].not\n };\n this.importRules(groups[i], groupElem, false, groups[i].not);\n }\n this.isPublic = false;\n }\n else {\n var condition = 'and';\n var not = false;\n var isLocked = false;\n if (this.updatedRule) {\n condition = this.updatedRule.condition;\n not = this.updatedRule.not;\n isLocked = this.updatedRule.isLocked;\n }\n if (this.groupIndex < 0) {\n if (this.enableNotCondition) {\n rule.rules.push({ 'condition': condition, 'not': not, rules: [] });\n }\n else {\n rule.rules.push({ 'condition': condition, rules: [] });\n }\n }\n else {\n if (this.enableNotCondition) {\n rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, not: not, rules: [], isLocked: isLocked });\n }\n else {\n rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, rules: [], isLocked: isLocked });\n }\n }\n }\n if (!this.headerTemplate) {\n this.disableRuleCondition(groupElem, rule, null, this.enableSeparateConnector ? true : null);\n }\n }\n };\n QueryBuilder.prototype.initWrapper = function () {\n this.isInitialLoad = true;\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableSeparateConnector) {\n addClass([this.element], 'e-multi-connector');\n }\n if (this.enableRtl) {\n addClass([this.element], 'e-rtl');\n }\n if (this.width) {\n this.element.style.width = this.width;\n }\n if (this.height) {\n this.element.style.height = this.height;\n }\n if (this.rule.rules.length) {\n this.isImportRules = true;\n }\n else {\n this.addGroupElement(false, this.element);\n }\n if (Browser.isDevice || (window.innerWidth < 768 && !this.isPropChange) || this.displayMode === 'Vertical') {\n if (Browser.isDevice || window.innerWidth < 768) {\n this.element.style.width = '100%';\n this.element.classList.add('e-device');\n }\n removeClass(this.element.querySelectorAll('.e-rule-container'), 'e-horizontal-mode');\n addClass(this.element.querySelectorAll('.e-rule-container'), 'e-vertical-mode');\n this.displayMode = 'Vertical';\n }\n else {\n this.displayMode = 'Horizontal';\n }\n if (this.summaryView) {\n if (this.isImportRules) {\n this.renderSummary();\n }\n else {\n this.renderSummaryCollapse();\n }\n }\n else {\n if (this.columns && this.columns.length && this.isImportRules) {\n this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not, false, this.rule);\n var mRules = extend({}, this.rule, {}, true);\n this.isRefreshed = true;\n this.setGroupRules(mRules);\n this.isRefreshed = false;\n }\n else if (this.columns && this.columns.length) {\n this.addRuleElement(this.element.querySelector('.e-group-container'), {});\n }\n this.notGroupRtl();\n if (this.readonly) {\n this.enableReadonly();\n }\n var buttons = this.element.querySelectorAll('label.e-btn');\n var button = void 0;\n for (var i = 0; i < buttons.length; i++) {\n button = buttons.item(i);\n rippleEffect(button, { selector: '.e-btn' });\n }\n }\n };\n QueryBuilder.prototype.renderSummary = function () {\n var contentElem = this.createElement('div', {\n attrs: {\n class: 'e-summary-content',\n id: this.element.id + '_summary_content'\n }\n });\n var textElem = this.createElement('textarea', { attrs: { class: 'e-summary-text', readonly: 'true' }, styles: 'max-height:500px' });\n var editElem = this.createElement('button', { attrs: { type: 'button', class: 'e-edit-rule e-css e-btn e-small e-flat e-primary' } });\n var divElem = this.createElement('div', { attrs: { class: 'e-summary-btndiv' } });\n contentElem.appendChild(textElem);\n textElem.textContent = this.getSqlFromRules(this.rule);\n editElem.textContent = this.l10n.getConstant('Edit');\n divElem.appendChild(editElem);\n contentElem.appendChild(divElem);\n this.element.appendChild(contentElem);\n };\n QueryBuilder.prototype.renderSummaryCollapse = function () {\n var collapseElem = this.createElement('div', {\n attrs: {\n class: 'e-collapse-rule e-icons',\n title: this.l10n.getConstant('SummaryViewTitle')\n }\n });\n this.element.querySelector('.e-group-header').appendChild(collapseElem);\n };\n QueryBuilder.prototype.columnSort = function () {\n if (this.sortDirection && this.sortDirection.toLowerCase() === 'descending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortByDesc('field'));\n }\n else if (this.sortDirection && this.sortDirection.toLowerCase() === 'ascending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortBy('field'));\n }\n };\n QueryBuilder.prototype.onChangeNotGroup = function () {\n this.element.innerHTML = '';\n this.groupIdCounter = 0;\n if (!this.headerTemplate) {\n if (this.enableNotCondition) {\n var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });\n if (this.groupElem.querySelector('.e-btn-group')) {\n this.groupElem.querySelector('.e-btn-group').insertBefore(inputElem, this.groupElem.querySelector('.e-btngroup-and'));\n }\n }\n else {\n this.groupElem.querySelector('.e-qb-toggle').remove();\n }\n }\n this.setProperties({ rule: this.checkNotGroup(this.rule) }, true);\n this.initWrapper();\n };\n QueryBuilder.prototype.notGroupRtl = function () {\n if (this.enableRtl) {\n addClass(this.element.querySelectorAll('.e-btn-group'), 'e-rtl');\n }\n else {\n removeClass(this.element.querySelectorAll('.e-btn-group'), 'e-rtl');\n }\n };\n QueryBuilder.prototype.checkNotGroup = function (rule) {\n var orgRule;\n if (rule.rules) {\n for (var i = 0; i < rule.rules.length; i++) {\n orgRule = rule.rules[i];\n orgRule = this.checkNotGroup(orgRule);\n rule.rules[i] = orgRule;\n }\n }\n if (!isNullOrUndefined(rule.not)) {\n if (this.enableNotCondition) {\n rule.not = false;\n }\n delete rule.not;\n }\n else if (this.enableNotCondition && !isNullOrUndefined(rule.condition)) {\n rule.not = false;\n }\n return rule;\n };\n QueryBuilder.prototype.onPropertyChanged = function (newProp, oldProp) {\n var properties = Object.keys(newProp);\n this.isPropChange = true;\n var groupElem = this.element.querySelector('.e-group-container');\n var summaryElem = this.element.querySelector('.e-summary-content');\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'summaryView':\n if (newProp.summaryView) {\n groupElem.style.display = 'none';\n if (this.element.querySelectorAll('.e-summary-content').length < 1) {\n this.renderSummary();\n summaryElem = this.element.querySelector('.e-summary-content');\n }\n else {\n this.element.querySelector('.e-summary-text').textContent = this.getSqlFromRules(this.rule);\n }\n summaryElem.style.display = 'block';\n }\n else {\n if (groupElem.querySelectorAll('.e-collapse-rule').length > -1) {\n this.renderSummaryCollapse();\n }\n groupElem.style.display = 'block';\n summaryElem.style.display = 'none';\n }\n break;\n case 'displayMode':\n this.refresh();\n break;\n case 'showButtons':\n if (!isNullOrUndefined(newProp.showButtons.lockGroup)) {\n if (newProp.showButtons.lockGroup) {\n removeClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.lockRule)) {\n if (newProp.showButtons.lockRule) {\n removeClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.cloneGroup)) {\n if (newProp.showButtons.cloneGroup) {\n removeClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.cloneRule)) {\n if (newProp.showButtons.cloneRule) {\n removeClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.ruleDelete)) {\n if (newProp.showButtons.ruleDelete) {\n removeClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.groupDelete)) {\n if (newProp.showButtons.groupDelete) {\n removeClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');\n }\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.element], 'e-rtl');\n this.notGroupRtl();\n }\n else {\n removeClass([this.element], 'e-rtl');\n this.notGroupRtl();\n }\n break;\n case 'enablePersistence':\n this.enablePersistence = newProp.enablePersistence;\n break;\n case 'dataSource':\n this.dataSource = newProp.dataSource;\n this.refresh();\n break;\n case 'columns':\n this.columns = newProp.columns;\n this.columnSort();\n this.updateSubFieldsFromColumns(this.columns);\n break;\n case 'sortDirection':\n this.sortDirection = newProp.sortDirection;\n this.columnSort();\n break;\n case 'maxGroupCount':\n this.maxGroupCount = newProp.maxGroupCount;\n break;\n case 'height':\n this.height = newProp.height;\n this.element.style.height = this.height;\n break;\n case 'rule':\n if (this.rule.rules.length === 0 && !isNullOrUndefined(this.rule)) {\n this.reset();\n }\n this.setProperties({ rule: newProp.rule }, true);\n newProp.rule = this.getRuleCollection(this.rule, false);\n this.setRules(this.rule);\n break;\n case 'width':\n this.width = newProp.width;\n this.element.style.width = this.width;\n break;\n case 'locale':\n this.locale = newProp.locale;\n this.intl = new Internationalization(this.locale);\n this.isLocale = true;\n this.refresh();\n this.isLocale = false;\n break;\n case 'enableNotCondition':\n this.onChangeNotGroup();\n break;\n case 'readonly':\n this.isReadonly = newProp.readonly;\n this.enableReadonly();\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.refresh();\n break;\n case 'enableSeparateConnector':\n this.enableSeparateConnector = newProp.enableSeparateConnector;\n this.refresh();\n break;\n }\n }\n this.isPropChange = false;\n };\n QueryBuilder.prototype.preRender = function () {\n this.element.id = this.element.id || getUniqueID('ej2-querybuilder');\n this.defaultLocale = {\n StartsWith: 'Starts With',\n DoesNotStartWith: 'Does Not Start With',\n EndsWith: 'Ends With',\n DoesNotEndWith: 'Does Not End With',\n Contains: 'Contains',\n DoesNotContain: 'Does Not Contain',\n NotLike: 'Not Like',\n Like: 'Like',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n Between: 'Between',\n NotBetween: 'Not Between',\n In: 'In',\n NotIn: 'Not In',\n Remove: 'REMOVE',\n SelectField: 'Select a field',\n SelectOperator: 'Select operator',\n DeleteRule: 'Remove this condition',\n DeleteGroup: 'Delete group',\n AddGroup: 'Add Group',\n AddCondition: 'Add Condition',\n Edit: 'EDIT',\n ValidationMessage: 'This field is required',\n SummaryViewTitle: 'Summary View',\n OtherFields: 'Other Fields',\n AND: 'AND',\n OR: 'OR',\n NOT: 'NOT',\n SelectValue: 'Enter Value',\n IsEmpty: 'Is Empty',\n IsNotEmpty: 'Is Not Empty',\n IsNull: 'Is Null',\n IsNotNull: 'Is Not Null',\n True: 'true',\n False: 'false',\n AddButton: 'Add Group/Condition',\n CloneGroup: 'Clone Group',\n LockGroup: 'Lock Group',\n CloneRule: 'Clone Rule',\n LockRule: 'Lock Rule',\n UnlockRule: 'Unlock Rule',\n UnlockGroup: 'Unlock Group'\n };\n this.l10n = new L10n('querybuilder', this.defaultLocale, this.locale);\n this.intl = new Internationalization(this.locale);\n this.groupIdCounter = 0;\n this.subFilterCounter = 0;\n this.ruleIdCounter = 0;\n this.btnGroupId = 0;\n this.isImportRules = false;\n this.parser = [];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', key: this.l10n.getConstant('StartsWith') },\n { value: 'notstartswith', key: this.l10n.getConstant('DoesNotStartWith') },\n { value: 'endswith', key: this.l10n.getConstant('EndsWith') },\n { value: 'notendswith', key: this.l10n.getConstant('DoesNotEndWith') },\n { value: 'contains', key: this.l10n.getConstant('Contains') },\n { value: 'notcontains', key: this.l10n.getConstant('DoesNotContain') },\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'in', key: this.l10n.getConstant('In') },\n { value: 'notin', key: this.l10n.getConstant('NotIn') },\n { value: 'isempty', key: this.l10n.getConstant('IsEmpty') },\n { value: 'isnotempty', key: this.l10n.getConstant('IsNotEmpty') }\n ],\n dateOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', key: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', key: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'between', key: this.l10n.getConstant('Between') },\n { value: 'notbetween', key: this.l10n.getConstant('NotBetween') }\n ],\n booleanOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') }\n ],\n numberOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'greaterthan', key: this.l10n.getConstant('GreaterThan') },\n { value: 'between', key: this.l10n.getConstant('Between') },\n { value: 'lessthan', key: this.l10n.getConstant('LessThan') },\n { value: 'notbetween', key: this.l10n.getConstant('NotBetween') },\n { value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'in', key: this.l10n.getConstant('In') },\n { value: 'notin', key: this.l10n.getConstant('NotIn') }\n ]\n };\n this.operators = {\n equal: '=', notequal: '!=', greaterthan: '>', greaterthanorequal: '>=', lessthan: '<', in: 'IN', notin: 'NOT IN',\n lessthanorequal: '<=', startswith: 'LIKE', endswith: 'LIKE', between: 'BETWEEN', notbetween: 'NOT BETWEEN', contains: 'LIKE',\n isnull: 'IS NULL', isnotnull: 'IS NOT NULL', isempty: 'IS EMPTY', isnotempty: 'IS NOT EMPTY', notstartswith: 'NOT LIKE',\n notendswith: 'NOT LIKE', notcontains: 'NOT LIKE'\n };\n this.sqlOperators = {\n equal: '=', notequal: '!=', greaterthan: '>', greaterthanorequal: '>=', lessthan: '<', in: this.l10n.getConstant('In').toUpperCase(),\n notin: this.l10n.getConstant('NotIn').toUpperCase(), lessthanorequal: '<=', startswith: this.l10n.getConstant('Like').toUpperCase(),\n endswith: this.l10n.getConstant('Like').toUpperCase(), between: this.l10n.getConstant('Between').toUpperCase(),\n notbetween: this.l10n.getConstant('NotBetween').toUpperCase(), contains: this.l10n.getConstant('Like').toUpperCase(),\n isnull: this.l10n.getConstant('IsNull').toUpperCase(), isnotnull: this.l10n.getConstant('IsNotNull').toUpperCase(),\n isempty: this.l10n.getConstant('IsEmpty').toUpperCase(), isnotempty: this.l10n.getConstant('IsNotEmpty').toUpperCase(),\n notstartswith: this.l10n.getConstant('NotLike').toUpperCase(), notendswith: this.l10n.getConstant('NotLike').toUpperCase(),\n notcontains: this.l10n.getConstant('NotLike').toUpperCase()\n };\n if (!this.fields) {\n this.fields = { text: 'label', value: 'field' };\n }\n };\n QueryBuilder.prototype.render = function () {\n this.levelColl = {};\n this.items = [\n {\n text: this.l10n.getConstant('AddGroup'),\n iconCss: 'e-icons e-add-icon e-addgroup'\n },\n {\n text: this.l10n.getConstant('AddCondition'),\n iconCss: 'e-icons e-add-icon e-addrule'\n }\n ];\n this.ruleElem = this.ruleTemplate();\n this.groupElem = this.groupTemplate();\n var stringOper = [\n { value: 'isnull', key: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', key: this.l10n.getConstant('IsNotNull') }\n ];\n var numberOper = [\n { value: 'isnull', key: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', key: this.l10n.getConstant('IsNotNull') }\n ];\n this.customOperators['stringOperator'] = this.customOperators['stringOperator'].concat(stringOper); // tslint:disable-line\n this.customOperators['numberOperator'] = this.customOperators['numberOperator'].concat(numberOper); // tslint:disable-line\n if (this.dataSource instanceof DataManager) {\n this.dataManager = this.dataSource;\n this.executeDataManager(new Query().take(1));\n }\n else {\n this.dataManager = new DataManager(this.dataSource);\n this.dataColl = this.dataManager.executeLocal(new Query());\n this.initControl();\n }\n this.renderComplete();\n if (this.allowDragAndDrop) {\n this.initializeDrag();\n }\n };\n QueryBuilder.prototype.initializeDrag = function () {\n this.draggable = new Draggable(this.element, {\n dragTarget: '.e-drag-qb-rule',\n distance: 5,\n helper: this.helper.bind(this),\n dragStart: this.dragStartHandler.bind(this),\n drag: this.dragHandler.bind(this),\n dragStop: this.dragStopHandler.bind(this),\n isReplaceDragEle: true,\n isPreventSelect: false,\n abort: '.e-parent-header',\n isDragScroll: true\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n QueryBuilder.prototype.helper = function (e) {\n var target = this.draggable.currentStateTarget;\n if (!target.classList.contains('e-drag-qb-rule') || (target.classList.contains('e-drag-qb-rule') && closest(target, '.e-disable'))) {\n return false;\n }\n var visualElement = this.createElement('div', {\n className: 'e-cloneproperties e-draganddrop e-dragclone',\n styles: 'height:\"auto\", z-index:2, width:' + this.element.offsetWidth\n });\n var cloneElement;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n cloneElement = closest(target, '.e-group-container').cloneNode(true);\n closest(target, '.e-group-container').classList.add('e-qb-dragging-rule');\n }\n else {\n visualElement.classList.add('e-group-body');\n cloneElement = this.createElement('div', { className: 'e-rule-container' });\n var ruleElement = closest(target, '.e-rule-field').cloneNode(true);\n cloneElement.appendChild(ruleElement);\n closest(target, '.e-rule-field').classList.add('e-qb-dragging-rule');\n }\n visualElement.appendChild(cloneElement);\n var childElements = visualElement.querySelectorAll('*');\n childElements.forEach(function (child) {\n child.removeAttribute('id');\n });\n this.element.appendChild(visualElement);\n return visualElement;\n };\n QueryBuilder.prototype.dragStartHandler = function (e) {\n this.draggedRule = e.target;\n this.isDragEventPrevent = false;\n document.body.classList.add('e-prevent-select');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dragElement = e.dragElement;\n var rule = closest(e.target, '.e-rule-container');\n var group = closest(e.target, '.e-group-container');\n var dragEventArgs = { dragRuleID: rule !== null ? rule.id : group.id, dragGroupID: group.id, cancel: false };\n this.trigger('dragStart', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\n };\n QueryBuilder.prototype.dragHandler = function (e) {\n if (this.isDragEventPrevent) {\n return;\n }\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n if (isNullOrUndefined(e.target)) {\n return;\n }\n if (e.target.nodeName === 'HTML' || closest(e.target, '.e-qb-dragging-rule') || closest(e.target, '.e-group-header') ||\n !closest(e.target, '#' + this.element.id) || closest(e.target, '.e-disable') || (e.target.parentElement && e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector)) {\n this.dragElement.classList.add('e-notallowedcur');\n return;\n }\n else {\n this.dragElement.classList.remove('e-notallowedcur');\n }\n var targetElem = closest(e.target, '.e-rule-container');\n var grpElem = closest(e.target, '.e-group-container');\n if (targetElem) {\n var rect = targetElem.getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToTop = mouseY - rect.top;\n var distanceToBottom = rect.bottom - mouseY;\n var threshold = 20; // Adjust as needed\n if (distanceToTop < threshold) {\n targetElem.classList.add('e-drag-rule-top-line');\n }\n else if (distanceToBottom < threshold) {\n targetElem.classList.add('e-drag-rule-bottom-line');\n }\n }\n else if (e.target.classList.contains('e-rule-list') && e.target.children.length === 0) {\n e.target.classList.add('e-drag-rule-bottom-line');\n }\n else if (e.target.classList.contains('e-rule-list') && e.target.children[0].classList.contains('e-group-container')) {\n var rect = e.target.children[0].getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToTop = mouseY - rect.top;\n var threshold = 20; // Adjust as needed\n if (distanceToTop < threshold) {\n e.target.classList.add('e-drag-rule-top-line');\n }\n }\n else if (closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) {\n if (!grpElem) {\n grpElem = e.target;\n }\n if (grpElem.id.indexOf('group0') > -1) {\n var rect = e.target.getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToBottom = rect.bottom - mouseY;\n var threshold = 20; // Adjust as needed\n if (distanceToBottom < threshold) {\n e.target.classList.add('e-drag-rule-bottom-line');\n }\n }\n }\n var dragEventArgs = {\n dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,\n dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false\n };\n this.trigger('drag', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\n };\n QueryBuilder.prototype.dragStopHandler = function (e) {\n var _this = this;\n if (this.isDragEventPrevent) {\n return;\n }\n var targetGroup = closest(e.target, '.e-rule-container');\n if (isNullOrUndefined(targetGroup) && e.target.parentElement &&\n e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector) {\n targetGroup = closest(e.target.parentElement.previousElementSibling, '.e-rule-container');\n }\n var isPreventelem;\n if (!isNullOrUndefined(e.helper)) {\n isPreventelem = closest(e.helper, '.e-notallowedcur');\n }\n var prevRule;\n if (!isPreventelem) {\n var targetGrp = closest(e.target, '.e-group-container');\n var dropEventArgs = {\n cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id\n : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null\n };\n this.trigger('drop', dropEventArgs);\n if (dropEventArgs.cancel) {\n isPreventelem = true;\n }\n prevRule = this.getValidRules();\n }\n this.prvtEvtTgrDaD = true;\n var tgrt = this.enableSeparateConnector && e.target.parentElement &&\n e.target.parentElement.classList.contains('e-btn-group') ? e.target.parentElement.previousElementSibling : e.target;\n if (targetGroup && !isPreventelem) {\n var groupId_1 = targetGroup.id.split(this.element.id + '_')[1].split('_')[0];\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-rule-field') ||\n this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n var groupRule = extend([], this.getGroup(targetGroup), [], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (groupRule.properties) {\n groupRule = groupRule.properties;\n }\n var groupElem = closest(targetGroup, '.e-group-container');\n var nestGrpElem = groupElem.querySelectorAll('.e-group-container');\n nestGrpElem.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteGroup(ele);\n }\n });\n var ruleElems = groupElem.querySelectorAll('.e-rule-container');\n var ruleIds = [];\n var dropInd = void 0;\n for (var i = 0; i < ruleElems.length; i++) {\n if (ruleElems[i].classList.contains('e-drag-rule-top-line') ||\n ruleElems[i].classList.contains('e-drag-rule-bottom-line')) {\n dropInd = i;\n }\n ruleIds.push(ruleElems[i].id.split(this.element.id + '_')[1]);\n }\n this.deleteRules(ruleIds);\n if (targetGroup.classList.contains('e-drag-rule-top-line')) {\n groupRule.rules.splice(dropInd, 0, rule);\n }\n else {\n groupRule.rules.splice(dropInd + 1, 0, rule);\n }\n groupRule.rules.forEach(function (rule) {\n if (_this.enableSeparateConnector) {\n if (!rule.rules) {\n _this.addRules([rule], groupId_1);\n }\n else {\n _this.addGroups([rule], groupId_1);\n }\n }\n else {\n if (rule.condition) {\n _this.addGroups([rule], groupId_1);\n }\n else {\n _this.addRules([rule], groupId_1);\n }\n }\n });\n }\n }\n else if (tgrt.classList.contains('e-rule-list') && tgrt.children.length === 0 && !isPreventelem) {\n var groupElem = closest(tgrt, '.e-group-container');\n var groupId = groupElem.id.split(this.element.id + '_')[1].split('_')[0];\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n if (this.enableSeparateConnector) {\n if (!rule.rules) {\n this.addRules([rule], groupId);\n }\n else {\n this.addGroups([rule], groupId);\n }\n }\n else {\n if (rule.condition) {\n this.addGroups([rule], groupId);\n }\n else {\n this.addRules([rule], groupId);\n }\n }\n }\n else if (tgrt.classList.contains('e-rule-list') && tgrt.children[0].classList.contains('e-group-container') && !isPreventelem) {\n var groupElem = closest(tgrt, '.e-group-container');\n var groupId_2 = groupElem.id.split(this.element.id + '_')[1].split('_')[0];\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n var groupRule = extend([], this.getGroup(tgrt), [], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (groupRule.properties) {\n groupRule = groupRule.properties;\n }\n var groupElems = tgrt.querySelectorAll('.e-group-container');\n groupElems.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteGroup(ele);\n }\n });\n var ruleElems = groupElem.querySelectorAll('.e-rule-container');\n ruleElems.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteRule(ele);\n }\n });\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n this.addGroups([rule], groupId_2);\n }\n else {\n this.addRules([rule], groupId_2);\n }\n groupRule.rules.forEach(function (rule) {\n if (_this.enableSeparateConnector) {\n if (!rule.rules) {\n _this.addRules([rule], groupId_2);\n }\n else {\n _this.addGroups([rule], groupId_2);\n }\n }\n else {\n if (rule.condition) {\n _this.addGroups([rule], groupId_2);\n }\n else {\n _this.addRules([rule], groupId_2);\n }\n }\n });\n }\n else if ((closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) && !isPreventelem) {\n var rule = void 0;\n targetGroup = closest(e.target, '.e-group-container');\n if (!targetGroup && e.target.classList.contains('e-group-container')) {\n targetGroup = e.target;\n }\n var groupId = targetGroup.id.split(this.element.id + '_')[1].split('_')[0];\n if (groupId === 'group0') {\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n if (this.enableSeparateConnector) {\n if (!rule.rules) {\n this.addRules([rule], groupId);\n }\n else {\n this.addGroups([rule], groupId);\n }\n }\n else {\n if (rule.condition) {\n this.addGroups([rule], groupId);\n }\n else {\n this.addRules([rule], groupId);\n }\n }\n }\n }\n if (!isPreventelem) {\n this.trigger('ruleChange', { previousRule: prevRule, rule: this.getValidRules(), type: 'drag-and-drop' });\n }\n this.prvtEvtTgrDaD = false;\n document.body.classList.remove('e-prevent-select');\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-qb-dragging-rule');\n });\n if (e.helper && e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {\n remove(e.helper);\n }\n if (this.enableSeparateConnector) {\n this.refresh();\n }\n };\n QueryBuilder.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n QueryBuilder.prototype.executeDataManager = function (query) {\n var _this = this;\n var data = this.dataManager.executeQuery(query);\n var deferred = new Deferred();\n data.then(function (e) {\n if (e.actual && e.actual.result) {\n _this.dataColl = e.actual.result;\n }\n else {\n _this.dataColl = e.result;\n }\n _this.initControl();\n }).catch(function (e) {\n deferred.reject(e);\n });\n };\n QueryBuilder.prototype.initControl = function () {\n this.initialize();\n this.initWrapper();\n this.wireEvents();\n };\n QueryBuilder.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickEventHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);\n EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n if (this.allowDragAndDrop) {\n EventHandler.add(document, 'keydown', this.keyBoardHandler, this);\n }\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n QueryBuilder.prototype.unWireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.remove(wrapper, 'click', this.clickEventHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);\n EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n EventHandler.remove(document, 'keydown', this.keyBoardHandler);\n window.removeEventListener('resize', this.windowResizeHandler);\n };\n QueryBuilder.prototype.getParentGroup = function (target, isParent) {\n var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl[\"\" + target];\n var len = isParent ? groupLevel.length - 1 : groupLevel.length;\n var rule = this.rule;\n for (var i = 0; i < len; i++) {\n rule = this.findGroupByIdx(groupLevel[i], rule, i === 0);\n }\n return rule;\n };\n /**\n * Delete the Group\n *\n * @param {Element | string} target - 'target' to be passed to delete the group.\n * @returns {void}\n */\n QueryBuilder.prototype.deleteGroup = function (target) {\n var _this = this;\n var groupElem = target;\n var groupId;\n if (typeof target === 'string') {\n groupId = this.element.id + '_' + target;\n target = document.getElementById(groupId);\n groupId = groupId.replace(this.element.id + '_', '');\n }\n else {\n groupId = groupElem.id.replace(this.element.id + '_', '');\n }\n if (groupId === 'group0' || !target) {\n return;\n }\n var args = { groupID: groupId, cancel: false, type: 'deleteGroup' };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.deleteGroupSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.deleteGroupSuccessCallBack(args, target);\n }\n };\n QueryBuilder.prototype.deleteGroupSuccessCallBack = function (args, target) {\n if (!args.cancel) {\n var groupElem = target;\n var rule = this.getParentGroup(groupElem, true);\n var index = 0;\n var i = void 0;\n var len = void 0;\n var beforeRules = this.getValidRules(this.rule);\n var nextElem = groupElem.nextElementSibling;\n var prevElem = groupElem.previousElementSibling;\n var element = groupElem.querySelectorAll('.e-group-container');\n var valElem = groupElem.querySelectorAll('.e-tooltip');\n len = valElem.length;\n for (i = 0; i < len; i++) {\n getComponent(valElem[i], 'tooltip').destroy();\n }\n for (i = 0, len = element.length; i < len; i++) {\n delete this.levelColl[element[i].id];\n }\n while (groupElem.previousElementSibling !== null) {\n groupElem = groupElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !groupElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (groupElem.classList.contains('e-rule-container') ||\n groupElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n if (!this.enableSeparateConnector) {\n if (nextElem && nextElem.className.indexOf('e-separate-rule') > -1) {\n removeClass([nextElem], 'e-separate-rule');\n addClass([nextElem], 'e-joined-rule');\n if (prevElem && prevElem.className.indexOf('e-rule-container') > -1) {\n addClass([prevElem], 'e-prev-joined-rule');\n }\n }\n }\n var elem = groupElem.parentElement.parentElement.parentElement;\n var removeString = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact || this.isAngular) {\n var remRule = rule.rules[index];\n var ruleElemColl = target.querySelectorAll('.e-rule-container');\n if (remRule && remRule.rules) {\n for (var r = 0; r < remRule.rules.length; r++) {\n var column = this.getColumn(remRule.rules[r].field);\n if (ruleElemColl[r]) {\n var isTemplateRendered = ruleElemColl[r].querySelector('.e-template-value');\n if (column && (column.ruleTemplate || (this.isPlatformTemplate(column) && isTemplateRendered))) {\n removeString.push(ruleElemColl[r].id);\n }\n }\n }\n }\n }\n detach(target);\n if (this.headerTemplate) {\n this.clearQBTemplate([target.id]);\n }\n if (removeString.length) {\n this.clearQBTemplate(removeString);\n }\n rule.rules.splice(index, 1);\n delete this.levelColl[args.groupID];\n this.refreshLevelColl();\n this.disableRuleCondition(elem, rule);\n if (this.enableSeparateConnector && prevElem && ((!this.headerTemplate && prevElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && prevElem.classList.contains('e-custom-group-btn')))) {\n detach(prevElem);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', args);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteGroup');\n }\n };\n QueryBuilder.prototype.isPlatformTemplate = function (column) {\n var isTemp = false;\n isTemp = column.template && (typeof column.template === 'string' || column.template.create === undefined);\n return isTemp;\n };\n QueryBuilder.prototype.deleteRule = function (target) {\n var _this = this;\n var groupElem = closest(target, '.e-group-container');\n var groupID = groupElem.id.replace(this.element.id + '_', '');\n var ruleID = closest(target, '.e-rule-container').id.replace(this.element.id + '_', '');\n var args = { groupID: groupID, ruleID: ruleID, cancel: false, type: 'deleteRule' };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.deleteRuleSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.deleteRuleSuccessCallBack(args, target);\n }\n };\n QueryBuilder.prototype.deleteRuleSuccessCallBack = function (args, target) {\n if (!args.cancel) {\n var groupElem = closest(target, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n var ruleElem = closest(target, '.e-rule-container');\n var beforeRules = this.getValidRules(this.rule);\n var prevElem = ruleElem.previousElementSibling;\n var index = 0;\n var clnruleElem = ruleElem;\n var nextElem = ruleElem.nextElementSibling;\n var valElem = ruleElem.querySelectorAll('.e-tooltip');\n var i = void 0;\n var len = valElem.length;\n for (i = 0; i < len; i++) {\n getComponent(valElem[i], 'tooltip').destroy();\n }\n while (ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var column = this.getColumn(rule.rules[index].field);\n if (column && column.template && clnruleElem.querySelector('.e-template')) {\n this.templateDestroy(column, clnruleElem.querySelector('.e-template').id);\n }\n if (!prevElem || prevElem.className.indexOf('e-rule-container') < 0) {\n if (nextElem) {\n removeClass([nextElem], 'e-joined-rule');\n }\n }\n if (!nextElem || nextElem.className.indexOf('e-rule-container') < 0) {\n if (prevElem) {\n removeClass([prevElem], 'e-prev-joined-rule');\n }\n }\n var isTemplateRendered = clnruleElem.querySelector('.e-template-value');\n // eslint-disable\n try {\n if (this.enableSeparateConnector && (clnruleElem.previousElementSibling || clnruleElem.nextElementSibling)) {\n var previousElem = clnruleElem.previousElementSibling;\n var nextElem_1 = clnruleElem.nextElementSibling;\n if (isNullOrUndefined(nextElem_1) && ((!this.headerTemplate && previousElem.classList.contains('e-btn-group'))\n || (this.headerTemplate && previousElem.classList.contains('e-custom-group-btn')))) {\n if (previousElem && previousElem.previousElementSibling && previousElem.previousElementSibling.classList.contains('e-rule-container')) {\n var rule_1 = this.getRule(previousElem.previousElementSibling);\n rule_1.condition = null;\n }\n detach(previousElem);\n }\n else if ((!this.headerTemplate && nextElem_1.classList.contains('e-btn-group'))\n || (this.headerTemplate && nextElem_1.classList.contains('e-custom-group-btn'))) {\n detach(nextElem_1);\n }\n }\n detach(clnruleElem);\n }\n catch (err) {\n return;\n }\n if (column && column.ruleTemplate) {\n this.clearQBTemplate([clnruleElem.id]);\n }\n if (column && this.isPlatformTemplate(column) && isTemplateRendered) {\n this.clearQBTemplate([clnruleElem.id]);\n }\n rule.rules.splice(index, 1);\n if (!(rule.rules[0] && rule.rules[0].rules)) {\n this.disableRuleCondition(groupElem, rule, this.enableSeparateConnector ? true : false);\n }\n var tooltipElem = this.element.querySelectorAll('.e-tooltip');\n for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {\n getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', args);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteRule');\n }\n };\n QueryBuilder.prototype.setGroupRules = function (rule, isRoot) {\n if (this.headerTemplate && isRoot) {\n this.isRoot = true;\n }\n this.reset();\n this.groupIdCounter = 1;\n this.ruleIdCounter = 0;\n this.isImportRules = true;\n this.setProperties({ rule: rule }, true);\n rule = this.getRuleCollection(this.rule, false);\n this.importRules(this.rule, this.element.querySelector('.e-group-container'), true, this.rule.not, isRoot);\n if (rule.isLocked) {\n var lockGrpTarget = this.element.querySelector('.e-group-container').querySelector('.e-lock-grp-btn');\n this.groupLock(lockGrpTarget);\n }\n this.isImportRules = false;\n };\n QueryBuilder.prototype.keyBoardHandler = function (e) {\n if (e.currentTarget === this.element && this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {\n e.preventDefault();\n }\n else if (e.code === 'Escape' && this.allowDragAndDrop) {\n this.isDragEventPrevent = true;\n document.body.classList.remove('e-prevent-select');\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-qb-dragging-rule');\n });\n var dragElemnet = this.element.querySelector('.e-cloneproperties');\n if (dragElemnet) {\n remove(dragElemnet);\n }\n if (this.enableSeparateConnector) {\n this.refresh();\n }\n }\n };\n QueryBuilder.prototype.windowResizeHandler = function () {\n if (Browser.isDevice || window.innerWidth < 768) {\n this.displayMode = 'Vertical';\n }\n else {\n this.displayMode = 'Horizontal';\n }\n };\n QueryBuilder.prototype.clearQBTemplate = function (ruleElemColl) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact || this.isAngular) {\n this.clearTemplate(ruleElemColl);\n }\n };\n QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules, isNewRuleAdded, isNewGroup) {\n if (!this.headerTemplate) {\n if (this.readonly) {\n return;\n }\n var count = groupElem.querySelector('.e-rule-list').childElementCount;\n var andElem = groupElem.querySelector('.e-btngroup-and');\n var orElem = groupElem.querySelector('.e-btngroup-or');\n if (count > 1) {\n andElem.disabled = false;\n orElem.disabled = false;\n if (orElem.nextElementSibling.classList.contains('e-btn-disable') ||\n andElem.nextElementSibling.classList.contains('e-btn-disable')) {\n orElem.nextElementSibling.classList.remove('e-btn-disable');\n andElem.nextElementSibling.classList.remove('e-btn-disable');\n }\n if (this.enableSeparateConnector && !isNewRuleAdded) {\n var index = 0;\n var element = void 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');\n var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');\n andElem = andGroup[andGroup.length - (1 + index)];\n orElem = orGroup[orGroup.length - (1 + index)];\n element = andGroup[andGroup.length - (1 + index)];\n if (element && element.parentElement && element.parentElement.style.display === 'none') {\n index++;\n }\n else {\n break;\n }\n }\n var elem = groupElem.previousElementSibling;\n while (elem && !elem.classList.contains('e-rule-container')) {\n if (elem.classList.contains('e-group-container')) {\n elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];\n break;\n }\n elem = elem.previousElementSibling;\n }\n if (isNewGroup && groupElem.classList.contains('e-group-container')) {\n elem = groupElem;\n var prevRule = this.getGroup(elem);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n else if (elem && elem.classList.contains('e-rule-container')) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else if (!isNewRuleAdded) {\n if (rules && rules.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n if (this.enableSeparateConnector && !isNewRuleAdded) {\n var index = 0;\n var element = void 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');\n var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');\n andElem = andGroup[andGroup.length - (1 + index)];\n orElem = orGroup[orGroup.length - (1 + index)];\n if (this.isImportRules) {\n andElem = groupElem.parentElement.querySelector('.e-btn-group.e-multi-connector .e-btngroup-and');\n orElem = groupElem.parentElement.querySelector('.e-btn-group.e-multi-connector .e-btngroup-or');\n }\n element = andGroup[andGroup.length - (1 + index)];\n if (element && element.parentElement && element.parentElement.style.display === 'none') {\n index++;\n }\n else {\n break;\n }\n }\n var elem = void 0;\n var tempElem = groupElem.previousElementSibling;\n while (tempElem) {\n if (tempElem.classList.contains('e-group-container')) {\n tempElem = tempElem.querySelectorAll('.e-rule-container')[tempElem.querySelectorAll('.e-rule-container').length - 1];\n }\n if (tempElem.classList.contains('e-rule-container')) {\n elem = tempElem;\n break;\n }\n tempElem = tempElem.previousElementSibling;\n }\n if (isNullOrUndefined(elem) && groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1]) {\n elem = groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1];\n }\n if (isNewGroup && groupElem.classList.contains('e-group-container')) {\n elem = groupElem;\n var prevRule = this.getGroup(elem);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n else if (elem) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or' && orElem) {\n orElem.checked = true;\n }\n else if (andElem) {\n andElem.checked = true;\n }\n }\n }\n else if (!isNewRuleAdded && !isNullOrUndefined(andElem)) {\n andElem.checked = false;\n andElem.disabled = true;\n orElem.checked = false;\n orElem.disabled = true;\n if (rules) {\n orElem.nextElementSibling.classList.add('e-btn-disable');\n andElem.nextElementSibling.classList.add('e-btn-disable');\n }\n }\n }\n }\n };\n /**\n * Get the valid rule or rules collection.\n *\n * @param {RuleModel} currentRule - 'currentRule' to be passed to get the valid rules.\n * @returns {RuleModel} - Valid rule or rules collection\n */\n QueryBuilder.prototype.getValidRules = function (currentRule) {\n this.isValueEmpty = true;\n if (!currentRule) {\n currentRule = this.getRules();\n }\n var ruleCondtion = currentRule.condition;\n var notCondition = currentRule.not;\n var ruleColl = extend([], currentRule.rules, [], true);\n var rule = !isNullOrUndefined(currentRule.isLocked) ?\n this.getRuleCollection({ condition: ruleCondtion, rules: ruleColl, not: notCondition, isLocked: currentRule.isLocked }, true) :\n this.getRuleCollection({ condition: ruleCondtion, rules: ruleColl, not: notCondition }, true);\n this.isValueEmpty = false;\n return rule;\n };\n QueryBuilder.prototype.getRuleCollection = function (rule, isValidRule) {\n if (isNullOrUndefined(rule)) {\n return null;\n }\n var orgRule;\n if (rule.rules && rule.rules.length && (Object.keys(rule.rules[0]).length > 6 || isValidRule)) {\n var jLen = rule.rules.length;\n for (var j = 0; j < jLen; j++) {\n orgRule = rule.rules[j];\n orgRule = this.getRuleCollection(orgRule, isValidRule);\n rule.rules[j] = orgRule;\n if (Object.keys(orgRule).length < 1 && isValidRule) {\n rule.rules.splice(j, 1);\n j--;\n jLen--;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var customObj = rule.custom;\n if ((rule.field && rule.field !== '') && (isNullOrUndefined(customObj) || (customObj && (customObj.type !== 'question' &&\n customObj.type !== 'answer')))) {\n if (rule.operator) {\n if (rule.operator.toString().indexOf('null') > -1 || rule.operator.toString().indexOf('empty') > -1) {\n rule.value = null;\n }\n }\n if ((this.isRefreshed && this.enablePersistence) || (rule.field !== '' && rule.operator !== '' &&\n (this.isValueEmpty ? rule.value !== '' && rule.value !== undefined : rule.value !== undefined)) ||\n (customObj && customObj.isQuestion)) {\n var condition = rule.condition;\n var lockedRule = rule.isLocked;\n rule = { 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value };\n if (!isNullOrUndefined(lockedRule)) {\n rule.isLocked = lockedRule;\n }\n if (condition) {\n rule.condition = condition;\n }\n if (customObj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {\n rule = {};\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((rule.operator === 'between' || rule.operator === 'notbetween') && Array.isArray(rule.value) && (rule.value.length < 2 || rule.value.some(function (val) { return val === '' || val === null; }))) {\n rule = {};\n }\n }\n else {\n rule = {};\n }\n }\n else {\n if (customObj && (customObj.type === 'question' || customObj.type === 'answer')) {\n var notValue = rule.not;\n rule = {\n 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,\n 'condition': rule.condition, 'rules': rule.rules\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n if (this.enableNotCondition) {\n rule.not = notValue;\n }\n }\n else if ((isNullOrUndefined(rule.condition)) && isNullOrUndefined(rule.rules)) {\n rule = {};\n }\n else {\n var isLocked = rule.isLocked;\n if (this.enableNotCondition) {\n rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };\n }\n else {\n rule = { 'condition': rule.condition, 'rules': rule.rules };\n }\n if (!isNullOrUndefined(isLocked)) {\n rule.isLocked = isLocked;\n }\n if (customObj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n }\n if (rule.rules && rule.rules.length === 0) {\n rule = {};\n }\n }\n }\n return rule;\n };\n /**\n * Set the rule or rules collection.\n *\n * @param {RuleModel} rule - 'rule' to be passed to set rules.\n * @returns {void}.\n */\n QueryBuilder.prototype.setRules = function (rule) {\n var mRules = extend({}, rule, {}, true);\n if (this.headerTemplate) {\n this.setGroupRules(mRules, true);\n }\n else {\n this.setGroupRules(mRules);\n }\n };\n /**\n * Gets the rule or rule collection.\n *\n * @returns {object} - Rule or rule collection\n */\n QueryBuilder.prototype.getRules = function () {\n var rule;\n if (this.enableNotCondition) {\n rule = { condition: this.rule.condition, rules: this.rule.rules, not: this.rule.not };\n }\n else {\n rule = { condition: this.rule.condition, rules: this.rule.rules };\n }\n if (!isNullOrUndefined(this.rule.isLocked)) {\n rule.isLocked = this.rule.isLocked;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.rule.custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = this.rule.custom;\n }\n return rule;\n };\n /**\n * Gets the rule.\n *\n * @param {string | HTMLElement} elem - 'elem' to be passed to get rule.\n * @returns {object} - Rule\n */\n QueryBuilder.prototype.getRule = function (elem) {\n var ruleElem;\n var ruleId;\n var index = 0;\n if (elem instanceof HTMLElement) {\n ruleElem = closest(elem, '.e-rule-container');\n }\n else {\n ruleId = this.element.id + '_' + elem;\n ruleElem = document.getElementById(ruleId);\n }\n if (isNullOrUndefined(ruleElem)) {\n return null;\n }\n var groupElem = closest(ruleElem, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n while (ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n return rule.rules[index];\n };\n /**\n * Gets the group.\n *\n * @param {string | Element} target - 'target' to be passed to get group.\n * @returns {object} -Group\n */\n QueryBuilder.prototype.getGroup = function (target) {\n if (target instanceof Element && target.className.indexOf('e-group-container') < 1) {\n target = closest(target, '.e-group-container');\n }\n var groupId = (target instanceof Element) ? target.id : this.element.id + '_' + target;\n var rule = this.getParentGroup(groupId);\n return rule;\n };\n /**\n * Deletes the group or groups based on the group ID.\n *\n * @param {string[]} groupIdColl - 'groupIdColl' to be passed to delete groups.\n * @returns {void}\n */\n QueryBuilder.prototype.deleteGroups = function (groupIdColl) {\n var i;\n var len = groupIdColl.length;\n var groupID;\n for (i = 0; i < len; i++) {\n if (groupIdColl[i] === 'group0') {\n continue;\n }\n groupID = this.element.id + '_' + groupIdColl[i];\n this.deleteGroup(document.getElementById(groupID));\n }\n };\n /**\n * Return the Query from current rules collection.\n *\n * @returns {Promise} - Query from current rules collection\n * @blazorType object\n */\n QueryBuilder.prototype.getFilteredRecords = function () {\n var predicate = this.getPredicate(this.getValidRules(this.rule));\n var dataManagerQuery = isNullOrUndefined(predicate) ? new Query() : new Query().where(predicate);\n return this.dataManager.executeQuery(dataManagerQuery);\n };\n /**\n * Deletes the rule or rules based on the rule ID.\n *\n * @param {string[]} ruleIdColl - 'ruleIdColl' to be passed to delete rules.\n * @returns {void}.\n */\n QueryBuilder.prototype.deleteRules = function (ruleIdColl) {\n var i;\n var len = ruleIdColl.length;\n var ruleID;\n for (i = 0; i < len; i++) {\n ruleID = this.element.id + '_' + ruleIdColl[i];\n this.deleteRule(document.getElementById(ruleID));\n }\n };\n /**\n * Gets the query for Data Manager.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get query.\n * @returns {string} - Query for Data Manager\n */\n QueryBuilder.prototype.getDataManagerQuery = function (rule) {\n var predicate = this.getPredicate(rule);\n var query;\n var fields = [];\n for (var i = 0, len = Object.keys(this.columns); i < len.length; i++) {\n fields.push(this.columns[i].field);\n }\n if (rule.rules.length) {\n query = new Query().select(fields).where(predicate);\n }\n else {\n query = new Query().select(fields);\n }\n return query;\n };\n /**\n * Get the predicate from collection of rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get predicate.\n * @returns {Predicate} - Predicate from collection of rules\n */\n QueryBuilder.prototype.getPredicate = function (rule) {\n var ruleColl = rule.rules;\n var pred;\n var pred2;\n var ruleValue;\n var ignoreCase = false;\n var column;\n if (!ruleColl) {\n return pred;\n }\n for (var i = 0, len = ruleColl.length; i < len; i++) {\n var operator = ruleColl[i].operator;\n if (operator === 'notstartswith') {\n operator = 'doesnotstartwith';\n }\n else if (operator === 'notendswith') {\n operator = 'doesnotendwith';\n }\n else if (operator === 'notcontains') {\n operator = 'doesnotcontain';\n }\n var keys = Object.keys(ruleColl[i]);\n ignoreCase = false;\n if (keys.indexOf('rules') > -1 && ruleColl[i].rules) {\n pred2 = this.getPredicate(ruleColl[i]);\n if (pred2) {\n if (pred) {\n if (rule.condition === 'and') {\n pred = pred.and(pred2);\n }\n else {\n pred = pred.or(pred2);\n }\n }\n else {\n pred = pred2;\n }\n }\n }\n else if (!isNullOrUndefined(operator) && !isNullOrUndefined(operator.length)) {\n var oper = ruleColl[i].operator.toLowerCase();\n var isDateFilter = false;\n var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];\n if (ruleColl[i].type === 'string') {\n ignoreCase = this.matchCase ? false : true;\n }\n if (ruleColl[i].type === 'date' && dateOperColl.indexOf(oper) > -1) {\n ignoreCase = true;\n }\n column = this.getColumn(ruleColl[i].field);\n if (oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) {\n ruleColl[i].value = null;\n }\n else if (ruleColl[i].type === 'date' && !(ruleColl[i].value instanceof Array)) {\n var format = this.getFormat(column.format);\n if (!isNullOrUndefined(ruleColl[i].value)) {\n ruleValue = this.getDate(ruleColl[i].value, format);\n if (dateOperColl.indexOf(oper) > -1 && !this.isTime(ruleColl[i].value)) {\n isDateFilter = true;\n }\n }\n else {\n ruleValue = null;\n }\n }\n else {\n ruleValue = ruleColl[i].value;\n }\n if (i === 0) {\n if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||\n oper.indexOf('empty') > -1) && (oper.indexOf('contain') < 0)) {\n pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :\n this.arrayPredicate(ruleColl[i]);\n }\n else {\n var value = ruleValue;\n if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n }\n else {\n if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 ||\n oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('contain') < 0) {\n pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue, pred, rule.condition) :\n this.arrayPredicate(ruleColl[i], pred, rule.condition);\n }\n else {\n if (rule.condition === 'and') {\n var value = ruleValue;\n if (pred && value !== '') {\n pred\n = pred.and(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n else if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n else {\n var value = ruleValue;\n if (pred && value !== '') {\n pred = pred.or(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n else if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n }\n }\n }\n }\n if (this.dataSource instanceof DataManager) {\n if (!isNullOrUndefined(pred) && (pred.operator === 'isnull' || pred.operator === 'isnotnull')) {\n pred.operator = pred.operator === 'isnull' ? 'equal' : 'notequal';\n }\n }\n return pred;\n };\n QueryBuilder.prototype.getLocale = function () {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.short';\n var localeString = this.locale;\n var mainVal = 'main.';\n var cultureObj = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n if (!cultureObj) {\n localeString = 'en';\n }\n return localeString;\n };\n QueryBuilder.prototype.getColumn = function (field, col) {\n var columns = this.columns;\n var column;\n columns = col ? col : columns;\n var fieldParts = this.separator !== '' ? (field ? field.split(this.separator) : []) : [field];\n var rootField = fieldParts && fieldParts.length > 0 ? fieldParts[0] : null;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === field) {\n column = columns[i];\n break;\n }\n }\n if (!column && this.separator !== '') {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === rootField) {\n if (columns[i].columns) {\n var subField = field.substring(rootField.length + this.separator.length);\n if (subField) {\n column = this.getColumn(subField, columns[i].columns);\n }\n else {\n column = columns[i];\n }\n }\n else {\n column = columns[i];\n }\n break;\n }\n }\n }\n if (!column) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n column = this.getColumn(field, columns[i].columns);\n if (column) {\n break;\n }\n }\n }\n }\n return column;\n };\n /* eslint-disable */\n /**\n * Return the operator bound to the column.\n *\n * @returns {[key: string]: Object}[] - Operator bound to the column\n */\n /* eslint-enable */\n QueryBuilder.prototype.getOperators = function (field) {\n var column = this.getColumn(field);\n return column.operators;\n };\n QueryBuilder.prototype.setTime = function (date, isStart) {\n if (isStart) {\n date.setHours(0, 0, 0);\n }\n else {\n date.setHours(23, 59, 59);\n }\n return date;\n };\n QueryBuilder.prototype.datePredicate = function (ruleColl, value, predicate, condition) {\n var pred;\n var startDate = this.setTime(new Date(value.getTime()), true);\n var endDate = this.setTime(value);\n switch (ruleColl.operator) {\n case 'equal':\n pred = new Predicate(ruleColl.field, 'greaterthanorequal', startDate);\n pred = pred.and(ruleColl.field, 'lessthanorequal', endDate);\n break;\n case 'notequal':\n pred = new Predicate(ruleColl.field, 'lessthan', startDate);\n pred = pred.or(ruleColl.field, 'greaterthan', endDate);\n break;\n case 'greaterthan':\n pred = new Predicate(ruleColl.field, 'greaterthan', endDate);\n break;\n case 'greaterthanorequal':\n pred = new Predicate(ruleColl.field, 'greaterthanorequal', startDate);\n break;\n case 'lessthan':\n pred = new Predicate(ruleColl.field, 'lessthan', startDate);\n break;\n case 'lessthanorequal':\n pred = new Predicate(ruleColl.field, 'lessthanorequal', endDate);\n break;\n }\n if (pred) {\n if (predicate) {\n if (condition === 'and') {\n predicate = predicate.and(pred);\n }\n else if (condition === 'or') {\n predicate = predicate.or(pred);\n }\n }\n else {\n predicate = pred;\n }\n }\n return predicate;\n };\n QueryBuilder.prototype.arrayPredicate = function (ruleColl, predicate, condition) {\n var value = ruleColl.value;\n var operator = ruleColl.operator.toString();\n var nullValue = ruleColl.value;\n var pred;\n var column = this.getColumn(ruleColl.field);\n var format = this.getFormat(column.format);\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n switch (operator) {\n case 'isnull':\n pred = new Predicate(ruleColl.field, 'isnull', nullValue);\n break;\n case 'isnotnull':\n pred = new Predicate(ruleColl.field, 'isnotnull', nullValue);\n break;\n case 'isempty':\n pred = new Predicate(ruleColl.field, 'equal', '');\n break;\n case 'isnotempty':\n pred = new Predicate(ruleColl.field, 'notequal', '');\n break;\n }\n }\n if (!(operator.indexOf('null') > -1 || operator.indexOf('empty') > -1)) {\n for (var j = 0, jLen = value.length; j < jLen; j++) {\n if (value[j] !== '' || ((operator === 'in' || operator === 'notin') && column.type === 'string')) {\n if (j === 0) {\n var gte = 'greaterthanorequal';\n switch (operator) {\n case 'between':\n if (column.type !== 'date') {\n pred = new Predicate(ruleColl.field, gte, value[j]);\n }\n else {\n pred = new Predicate(ruleColl.field, gte, value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format), true)) : null);\n }\n break;\n case 'notbetween':\n if (column.type === 'date') {\n pred = new Predicate(ruleColl.field, 'lessthan', value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format), true)) : null);\n }\n else {\n pred = new Predicate(ruleColl.field, 'lessthan', value[j]);\n }\n break;\n case 'in':\n pred = new Predicate(ruleColl.field, 'equal', value[j]);\n break;\n case 'notin':\n pred = new Predicate(ruleColl.field, 'notequal', value[j]);\n break;\n }\n }\n else {\n var gt = 'greaterthan';\n switch (ruleColl.operator) {\n case 'between':\n if (column.type === 'date') {\n pred = pred.and(ruleColl.field, 'lessthanorequal', value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format))) : value[j]);\n }\n else {\n pred = pred.and(ruleColl.field, 'lessthanorequal', value[j]);\n }\n break;\n case 'notbetween':\n if (column.type === 'date') {\n pred = pred.or(ruleColl.field, gt, value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format))) : value[j]);\n }\n else {\n pred = pred.or(ruleColl.field, 'greaterthan', value[j]);\n }\n break;\n case 'in':\n pred = pred.or(ruleColl.field, 'equal', value[j]);\n break;\n case 'notin':\n pred = pred.and(ruleColl.field, 'notequal', value[j]);\n break;\n }\n }\n }\n }\n }\n if (pred) {\n if (predicate) {\n if (condition === 'and') {\n predicate = predicate.and(pred);\n }\n else if (condition === 'or') {\n predicate = predicate.or(pred);\n }\n }\n else {\n predicate = pred;\n }\n }\n return predicate;\n };\n QueryBuilder.prototype.getDate = function (value, format) {\n var currDate = this.intl.parseDate(value, format);\n if (value.indexOf(':') > -1 && (value.indexOf('/') < 0 && value.indexOf(',') < 0\n && value.indexOf('-') < 0)) {\n currDate = new Date();\n currDate.setHours(parseInt(value.split(':')[0], 10));\n currDate.setMinutes(parseInt(value.split(':')[1], 10));\n if (value.split(':')[2]) {\n currDate.setSeconds(parseInt(value.split(':')[2], 10));\n }\n }\n return currDate;\n };\n QueryBuilder.prototype.isTime = function (value) {\n if (value && value.indexOf(':') > -1) {\n return true;\n }\n return false;\n };\n QueryBuilder.prototype.importRules = function (rule, parentElem, isReset, not, isRoot) {\n if (!isReset) {\n parentElem = this.renderGroup(rule, rule.condition, parentElem, not);\n }\n else {\n if (rule.rules && rule.rules.length > 1 && !this.headerTemplate) {\n // enable/disable conditions when rule group is added\n var orElem = parentElem.querySelector('.e-btngroup-or');\n var andElem = parentElem.querySelector('.e-btngroup-and');\n if (this.enableSeparateConnector && parentElem.previousElementSibling) {\n orElem = parentElem.previousElementSibling.querySelector('.e-btngroup-or');\n andElem = parentElem.previousElementSibling.querySelector('.e-btngroup-and');\n }\n orElem.disabled = false;\n andElem.disabled = false;\n if (this.enableSeparateConnector) {\n var elem = parentElem.previousElementSibling;\n while (elem && !elem.classList.contains('e-rule-container')) {\n if (elem.classList.contains('e-group-container')) {\n elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];\n break;\n }\n elem = elem.previousElementSibling;\n }\n if (elem && elem.classList.contains('e-rule-container')) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n if (rule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n // enable/disable conditions when rule condition is added\n this.disableRuleCondition(parentElem);\n }\n if (this.headerTemplate && isRoot) {\n parentElem = this.renderGroup(rule, rule.condition, this.element, rule.not, isRoot);\n }\n if (this.enableNotCondition && !this.headerTemplate) {\n var tglBtnElem = parentElem.querySelector('.e-qb-toggle');\n if (rule.not) {\n addClass([tglBtnElem], 'e-active-toggle');\n if (this.enableSeparateConnector) {\n getComponent(tglBtnElem.querySelector('.e-checkbox'), 'checkbox').checked = rule.not;\n }\n }\n else {\n removeClass([tglBtnElem], 'e-active-toggle');\n }\n }\n }\n if (rule.rules && rule.rules.length === 0 && this.headerTemplate) {\n rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };\n }\n var ruleColl = rule.rules;\n if (!isNullOrUndefined(ruleColl)) {\n for (var i = 0, len = ruleColl.length; i < len; i++) {\n var keys = Object.keys(ruleColl[i]);\n if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1 && (ruleColl[i].rules.length !== 0)) {\n if (this.element.querySelectorAll('.e-group-container').length > this.maxGroupCount) {\n return null;\n }\n parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);\n parentElem = this.importRules(ruleColl[i], parentElem, true);\n }\n else if (!isNullOrUndefined(ruleColl[i].rules)) {\n parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);\n var andElem = parentElem.querySelector('.e-btngroup-and');\n var orElem = parentElem.querySelector('.e-btngroup-or');\n andElem.disabled = true;\n orElem.disabled = true;\n }\n else {\n this.renderRule(ruleColl[i], parentElem);\n }\n if (!isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {\n var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');\n this.groupLock(lockGrpTarget);\n }\n }\n }\n if (parentElem) {\n parentElem = closest(parentElem, '.e-rule-list');\n }\n if (parentElem) {\n parentElem = closest(parentElem, '.e-group-container');\n }\n return parentElem;\n };\n QueryBuilder.prototype.renderGroup = function (rule, condition, parentElem, not, isRoot) {\n this.addGroupElement(true, parentElem, condition, false, not, isRoot, rule); //Child group\n var element = parentElem.querySelectorAll('.e-group-container');\n var cloneElem = parentElem.querySelector('.e-rule-list').children;\n if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {\n this.isMiddleGroup = false;\n this.cloneGrpBtnClick = false;\n var index = 0;\n var tempGroupIndex = this.groupIndex + 1;\n if (this.enableSeparateConnector) {\n for (var i = 0; i < tempGroupIndex; i++) {\n if (cloneElem[i].classList.contains('e-rule-container')) {\n tempGroupIndex++;\n index++;\n }\n }\n }\n return cloneElem[this.groupIndex + index + 1]; // group added in the middle\n }\n else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {\n this.isLastGroup = false;\n this.cloneGrpBtnClick = false;\n return cloneElem[cloneElem.length - 1]; // group added in the end\n }\n else {\n return element[element.length - 1];\n }\n };\n QueryBuilder.prototype.renderRule = function (rule, parentElem) {\n if (parentElem.className.indexOf('e-group-container') > -1) {\n this.addRuleElement(parentElem, rule); //Create rule\n }\n else {\n this.addRuleElement(parentElem.querySelector('.e-group-container'), rule); //Create group\n }\n };\n QueryBuilder.prototype.enableReadonly = function () {\n var target = this.element;\n var elem = target.querySelectorAll('.e-dropdownlist, .e-dropdowntree, .e-numerictextbox, .e-textbox, .e-datepicker, .e-multiselect .e-lib, .e-radio');\n for (var i = 0; i < elem.length; i++) {\n if (elem[i].classList.contains('e-dropdownlist')) {\n var dropDownObj = getInstance(elem[i], DropDownList);\n dropDownObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-dropdowntree')) {\n var dropDownTreeObj = getComponent(elem[i], 'dropdowntree');\n dropDownTreeObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-numerictextbox')) {\n var numericTextBoxObj = getInstance(elem[i], NumericTextBox);\n numericTextBoxObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-textbox')) {\n var textBoxObj = getInstance(elem[i], TextBox);\n textBoxObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-datepicker')) {\n var datePickerObj = getInstance(elem[i], DatePicker);\n datePickerObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-multiselect')) {\n var multiSelectObj = getInstance(elem[i], MultiSelect);\n multiSelectObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-radio')) {\n var radioButtonObj = getInstance(elem[i], RadioButton);\n if (!radioButtonObj.checked) {\n if (this.isReadonly) {\n elem[i].parentElement.style.display = 'none';\n }\n else {\n elem[i].parentElement.style.display = 'inherit';\n }\n }\n }\n }\n var deleteGroupElems = this.element.querySelectorAll('.e-deletegroup');\n var addRuleGroupElems = this.element.querySelectorAll('.e-addrulegroup');\n var removeRuleElems = this.element.querySelectorAll('.e-removerule');\n if (!this.isReadonly && this.ruleElem.classList.contains('e-readonly')) {\n this.ruleElem.classList.remove('e-readonly');\n }\n var elems = [deleteGroupElems, addRuleGroupElems, removeRuleElems];\n for (var i = 0; i < elems.length; i++) {\n elems[i].forEach(function (elem) {\n if (elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n }\n else {\n elem.classList.add('e-readonly');\n }\n });\n }\n this.enableBtnGroup();\n };\n QueryBuilder.prototype.enableBtnGroup = function () {\n var _this = this;\n var elems = this.element.querySelectorAll('.e-btngroup-and-lbl, .e-btngroup-or-lbl, .e-qb-toggle');\n var not = false;\n elems.forEach(function (elem) {\n if (elem.classList.contains('e-qb-toggle') && !elem.classList.contains('e-active-toggle')\n && !elem.classList.contains('e-readonly')) {\n elem.classList.add('e-readonly');\n not = false;\n }\n else if (elem.classList.contains('e-qb-toggle') && elem.classList.contains('e-not-readonly')) {\n elem.classList.remove('e-not-readonly');\n }\n else if (elem.classList.contains('e-qb-toggle') && elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n }\n else if (elem.classList.contains('e-active-toggle')) {\n elem.classList.add('e-not-readonly');\n not = true;\n }\n else if (elem.previousElementSibling.checked || elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n if (not) {\n if (elem.textContent === 'AND') {\n elem.classList.add('e-readonly-and');\n }\n else {\n elem.classList.add('e-readonly-or');\n }\n }\n else {\n if (elem.textContent === 'AND' && _this.isReadonly) {\n elem.classList.remove('e-not');\n elem.classList.add('e-readonly-and');\n }\n else {\n if (_this.enableNotCondition) {\n elem.classList.add('e-not');\n }\n elem.classList.remove('e-readonly-and');\n }\n if (elem.textContent === 'OR' && _this.isReadonly) {\n elem.classList.add('e-readonly-or-not');\n }\n else {\n elem.classList.remove('e-readonly-or-not');\n }\n }\n }\n else if (elem.classList.contains('e-btn-disable')) {\n // do nothing\n }\n else {\n elem.classList.add('e-readonly');\n }\n });\n };\n QueryBuilder.prototype.isDateFunction = function (value) {\n var dateFunc = ['date', 'time', 'day', 'week', 'month', 'year', 'hour', 'minute', 'second', 'now', 'quarter', 'period', 'extract'];\n for (var i = 0, len = dateFunc.length; i < len; i++) {\n if (value.toLowerCase().indexOf(dateFunc[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n QueryBuilder.prototype.getSqlString = function (rules, enableEscape, queryStr, sqlLocale) {\n var _this = this;\n var isRoot = false;\n if (!queryStr && queryStr !== '') {\n queryStr = '';\n isRoot = true;\n }\n else {\n queryStr += '(';\n }\n if (rules.not) {\n var notPrefix = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' ' : 'NOT ';\n queryStr += isRoot ? notPrefix + '(' : ' ' + notPrefix + '(';\n }\n if (rules.rules && rules.rules.length) {\n queryStr += rules.rules.reduce(function (result, rule, j) {\n var ruleStr = '';\n if (rule.rules) {\n ruleStr = _this.getSqlString(rule, enableEscape, '', sqlLocale);\n if (_this.enableSeparateConnector) {\n rules.condition = rule.condition;\n }\n }\n else {\n var ruleOpertor = sqlLocale ? _this.sqlOperators[rule.operator] : _this.operators[rule.operator];\n var valueStr = '';\n if (rule.value instanceof Array) {\n if (rule.operator.toString().indexOf('between') > -1) {\n var ruleCondition = sqlLocale ? ' ' + _this.l10n.getConstant('AND').toUpperCase() + ' ' : ' AND ';\n if (rule.type === 'date' && !_this.isDateFunction(rule.value[0])) {\n valueStr = \"\\\"\" + rule.value[0] + \"\\\"\" + ruleCondition + \"\\\"\" + rule.value[1] + \"\\\"\";\n }\n else {\n valueStr = \"\" + rule.value[0] + ruleCondition + rule.value[1];\n }\n }\n else {\n if (typeof rule.value[0] === 'string' && rule.value !== null) {\n var valueArray = rule.value;\n valueStr = '(\"' + valueArray.join('\",\"') + '\")';\n }\n else {\n valueStr = \"(\" + rule.value + \")\";\n }\n }\n }\n else {\n if (rule.operator.toString().indexOf('startswith') > -1) {\n valueStr = rule.value ? \"(\\\"\" + rule.value + \"%\\\")\" : \"(\" + rule.value + \")\";\n }\n else if (rule.operator.toString().indexOf('endswith') > -1) {\n valueStr = rule.value ? \"(\\\"%\" + rule.value + \"\\\")\" : \"(\" + rule.value + \")\";\n }\n else if (rule.operator.toString().indexOf('contains') > -1) {\n valueStr = rule.value ? \"(\\\"%\" + rule.value + \"%\\\")\" : \"(\" + rule.value + \")\";\n }\n else {\n if (rule.type === 'number' || typeof rule.value === 'boolean' ||\n (rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {\n valueStr = \"\" + rule.value;\n }\n else if (rule.operator.toString().indexOf('empty') > -1) {\n valueStr = '\"\"';\n }\n else {\n valueStr = \"\\\"\" + rule.value + \"\\\"\";\n }\n }\n }\n var fieldName = rule.field;\n if (enableEscape) {\n fieldName = '`' + fieldName + '`';\n }\n else if (fieldName.indexOf(' ') > -1) {\n fieldName = '\"' + fieldName + '\"';\n }\n if (rule.operator.toString().indexOf('null') > -1) {\n ruleStr = fieldName + ' ' + ruleOpertor;\n }\n else {\n var custOper = ruleOpertor;\n if (rule.operator === 'isempty') {\n custOper = '=';\n }\n else if (rule.operator === 'isnotempty') {\n custOper = '!=';\n }\n ruleStr = fieldName + ' ' + custOper + ' ' + valueStr;\n }\n }\n if (j !== rules.rules.length - 1) {\n var condition = rules.condition;\n if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {\n condition = rule.condition;\n }\n if (condition) {\n condition = sqlLocale ? _this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();\n ruleStr += ' ' + condition + ' ';\n }\n }\n return result + ruleStr;\n }, '');\n }\n if (!isRoot) {\n queryStr += ')';\n }\n if (rules.not) {\n queryStr += ')';\n }\n return queryStr;\n };\n /**\n * Sets the rules from the sql query.\n *\n * @param {string} sqlString - 'sql String' to be passed to set the rule.\n * @param {boolean} sqlLocale - Optional. Set `true` if Localization for Sql query.\n * @returns {void}\n */\n QueryBuilder.prototype.setRulesFromSql = function (sqlString, sqlLocale) {\n sqlString = sqlString.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sqlString, sqlLocale);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n };\n /**\n * Get the rules from SQL query.\n *\n * @param {string} sqlString - 'sql String' to be passed to get the rule.\n * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.\n * @returns {object} - Rules from SQL query\n */\n QueryBuilder.prototype.getRulesFromSql = function (sqlString, sqlLocale) {\n this.parser = [];\n this.sqlParser(sqlString, sqlLocale);\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n var rule = this.processParser(this.parser, this.rule, [0], sqlLocale);\n if (this.enableNotCondition) {\n return { condition: rule.condition, not: rule.not, rules: rule.rules };\n }\n else {\n return { condition: rule.condition, rules: rule.rules };\n }\n };\n /**\n * Gets the sql query from rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get the sql.\n * @param {boolean} allowEscape - Set `true` if it exclude the escape character.\n * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.\n * @returns {string} - Sql query from rules.\n */\n QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {\n if (!rule) {\n rule = this.getValidRules();\n }\n rule = this.getRuleCollection(rule, false);\n var sqlString = this.getSqlString(this.getValidRules(rule), allowEscape, null, sqlLocale).replace(/\"/g, '\\'');\n return sqlString;\n };\n /**\n * Gets the parameter SQL query from rules.\n *\n * @param {RuleModel} rule – Specify the rule to be passed to get the parameter sql string.\n * @returns {ParameterizedSql} – Parameterized SQL query from rules.\n */\n QueryBuilder.prototype.getParameterizedSql = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { sql: null };\n this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });\n return obj['sql'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return null;\n };\n /**\n * Sets the rules from the parameter sql query.\n *\n * @param { ParameterizedSql} sqlQuery – Specifies the parameter SQL to be passed to set the rule and load it to the query builder.\n * @returns {void}\n */\n QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n var obj = { sql: null };\n this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });\n var sql = obj['sql'];\n if (sql) {\n sql = sql.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sql);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n }\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Gets the named parameter SQL query from rules.\n *\n * @param {RuleModel} rule – Specify the rule to be passed to get the named parameter SQL string.\n * @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.\n */\n QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { sql: null };\n this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });\n return obj['sql'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return null;\n };\n /**\n * Sets the rules from the named parameter SQL query.\n *\n * @param { ParameterizedNamedSql } sqlQuery – Specifies the named parameter SQL to be passed to set the rule and load it to the query builder.\n * @returns {void}\n */\n QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n var obj = { sql: null };\n this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });\n var sql = obj['sql'];\n if (sql) {\n sql = sql.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sql);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n }\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Set the rules from Mongo query.\n *\n * @param {string} mongoQuery - 'sql String' to be passed to get the rule.\n * @param {boolean} mongoLocale - Set `true` if Localization for Mongo query.\n * @returns {void}\n */\n QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n this.rule = { condition: 'and', not: false, rules: [] };\n this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Gets the Mongo query from rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get the sql.\n * @returns {object} - Sql query from rules.\n */\n QueryBuilder.prototype.getMongoQuery = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { mongoQuery: null };\n this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });\n return obj['mongoQuery'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return '';\n };\n /**\n * Clones the rule based on the rule ID to the specific group.\n *\n * @param {string} ruleID - Specifies the ruleID that needs to be cloned.\n * @param {string} groupID - Specifies the groupID in which the rule to be cloned.\n * @param {number} index - Specifies the index to insert the cloned rule inside the group.\n * @returns {void}\n */\n QueryBuilder.prototype.cloneRule = function (ruleID, groupID, index) {\n var getRule = this.getRule(ruleID.replace(this.element.id + '_', ''));\n var isCloneRule = this.showButtons.cloneRule;\n groupID = groupID.replace(this.element.id + '_', '');\n this.ruleIndex = index;\n this.cloneRuleBtnClick = true;\n this.showButtons.cloneRule = true;\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition\n }], groupID);\n this.ruleIndex = -1;\n this.cloneRuleBtnClick = false;\n this.showButtons.cloneRule = isCloneRule;\n isCloneRule = false;\n };\n /**\n * Clones the group based on the group ID to the specific group.\n *\n * @param {string} groupID - Specifies the groupID that needs to be cloned.\n * @param {string} parentGroupID - Specifies the parentGroupID in which the group to be cloned.\n * @param {number} index - Specifies the index to insert the cloned group inside the parent group.\n * @returns {void}\n */\n QueryBuilder.prototype.cloneGroup = function (groupID, parentGroupID, index) {\n parentGroupID = parentGroupID.replace(this.element.id + '_', '');\n var group = this.getGroup(parentGroupID);\n var isCloneGroup = this.showButtons.cloneGroup;\n groupID = groupID.replace(this.element.id + '_', '');\n this.groupIndex = index;\n this.cloneGrpBtnClick = true;\n this.showButtons.cloneGroup = true;\n this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupID);\n this.groupIndex = -1;\n this.cloneGrpBtnClick = false;\n this.showButtons.cloneGroup = isCloneGroup;\n isCloneGroup = false;\n };\n /**\n * Locks the rule based on the rule ID.\n *\n * @param {string} ruleID - Specifies the ruleID that needs to be locked.\n * @returns {void}\n */\n QueryBuilder.prototype.lockRule = function (ruleID) {\n if (ruleID.indexOf(this.element.id) < 0) {\n ruleID = this.element.id + '_' + ruleID;\n }\n var target = document.getElementById(ruleID).querySelectorAll('.e-lock-rule-btn')[0];\n this.ruleLock(target);\n };\n /**\n * Locks the group based on the group ID\n *\n * @param {string} groupID - Specifies the groupID that needs to be locked.\n * @returns {void}\n */\n QueryBuilder.prototype.lockGroup = function (groupID) {\n if (groupID.indexOf(this.element.id) < 0) {\n groupID = this.element.id + '_' + groupID;\n }\n var target = document.getElementById(groupID).querySelectorAll('.e-lock-grp-btn')[0];\n this.groupLock(target);\n };\n QueryBuilder.prototype.sqlParser = function (sqlString, sqlLocale) {\n var st = 0;\n var str;\n do {\n str = sqlString.slice(st);\n st += this.parseSqlStrings(str, sqlLocale);\n } while (str !== '');\n return this.parser;\n };\n QueryBuilder.prototype.parseSqlStrings = function (sqlString, sqlLocale) {\n var operators = ['=', '!=', '<=', '>=', '<', '>'];\n var conditions;\n if (sqlLocale) {\n conditions = [this.l10n.getConstant('AND').toUpperCase(), this.l10n.getConstant('OR').toUpperCase(), this.l10n.getConstant('NOT').toUpperCase()];\n }\n else {\n conditions = ['AND', 'OR', 'NOT'];\n }\n var subOp;\n if (sqlLocale) {\n subOp = [this.l10n.getConstant('In').toUpperCase(), this.l10n.getConstant('NotIn').toUpperCase(),\n this.l10n.getConstant('Like').toUpperCase(), this.l10n.getConstant('NotLike').toUpperCase(),\n this.l10n.getConstant('Between').toUpperCase(), this.l10n.getConstant('NotBetween').toUpperCase(),\n this.l10n.getConstant('IsNull').toUpperCase(), this.l10n.getConstant('IsNotNull').toUpperCase(),\n this.l10n.getConstant('IsEmpty').toUpperCase(), this.l10n.getConstant('IsNotEmpty').toUpperCase()];\n }\n else {\n subOp = ['IN', 'NOT IN', 'LIKE', 'NOT LIKE', 'BETWEEN', 'NOT BETWEEN', 'IS NULL', 'IS NOT NULL', 'IS EMPTY', 'IS NOT EMPTY'];\n }\n var regexStr;\n var regex;\n var matchValue;\n for (var i = 0, iLen = operators.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(operators[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + operators[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['Operators', operators[i].toLowerCase()]);\n return operators[i].length;\n }\n }\n var lastPasrser = this.parser[this.parser.length - 1];\n if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {\n for (var i = 0, iLen = conditions.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(conditions[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + conditions[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['Conditions', conditions[i].toLowerCase()]);\n return conditions[i].length;\n }\n }\n }\n for (var i = 0, iLen = subOp.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(subOp[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + subOp[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['SubOperators', subOp[i].toLowerCase()]);\n return subOp[i].length;\n }\n }\n if (/^\\(/.exec(sqlString)) {\n this.parser.push(['Left', '(']);\n return 1;\n }\n if (/^\\)/.exec(sqlString)) {\n this.parser.push(['Right', ')']);\n return 1;\n }\n if (/^(true|false)/.exec(sqlString)) {\n matchValue = /^(true|false)/.exec(sqlString)[0];\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n if (/^null/.exec(sqlString)) {\n matchValue = /^null/.exec(sqlString)[0];\n this.parser.push(['String', null]);\n return matchValue.length;\n }\n if (/^`?([a-z_][a-z0-9_.\\\\[\\]\\\\(\\\\)]{0,}(\\\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)) {\n matchValue = /^`?([a-z_][a-z0-9_.\\\\[\\]\\\\(\\\\)]{0,}(\\\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n if (this.checkLiteral() && /^'?([a-z_][a-z0-9 _.\\\\[\\]\\\\(\\\\)-]{0,}(\\\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)) {\n matchValue = /^'?([a-z_][a-z0-9 _.\\\\[\\]\\\\(\\\\)-]{0,}(\\\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length + 2;\n }\n if (this.checkNumberLiteral(sqlString, sqlLocale)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExValue = /^[0-9]+(\\.[0-9]+)$/.exec(sqlString);\n if (regExValue) {\n matchValue = regExValue[0];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n }\n var singleString = this.getSingleQuoteString(sqlString);\n if (singleString !== '') {\n matchValue = singleString;\n if (matchValue[matchValue.length - 2] === '(') {\n var isClosed = false;\n for (var j = matchValue.length; j < sqlString.length; j++) {\n matchValue += sqlString[j];\n if (sqlString[j] === ')') {\n isClosed = true;\n }\n if (isClosed && sqlString[j] === '\\'') {\n break;\n }\n }\n }\n else if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&\n !this.checkCondition(sqlString, matchValue)) {\n matchValue = this.combineSingleQuoteString(sqlString, matchValue);\n }\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n var doubleString = this.getDoubleQuoteString(sqlString);\n if (doubleString !== '') {\n matchValue = doubleString;\n this.parser.push(['DoubleString', matchValue]);\n return matchValue.length;\n }\n if (/^\\d*\\.?\\d+/.exec(sqlString)) {\n matchValue = /^\\d*\\.?\\d+/.exec(sqlString)[0];\n this.parser.push(['Number', matchValue]);\n return matchValue.length;\n }\n if (/^-?\\d*\\.?\\d+/.exec(sqlString)) {\n matchValue = /^-?\\d*\\.?\\d+/.exec(sqlString)[0];\n this.parser.push(['Number', matchValue]);\n return matchValue.length;\n }\n return 1;\n };\n QueryBuilder.prototype.getDoubleQuoteString = function (sqlString) {\n var start = sqlString.indexOf('\"');\n if (start === 0) {\n var end = sqlString.indexOf('\"', start + 1);\n if (end !== -1) {\n return sqlString.substring(start, end + 1);\n }\n }\n return '';\n };\n QueryBuilder.prototype.checkCondition = function (sqlString, matchValue) {\n if (sqlString.slice(matchValue.length + 1, matchValue.length + 4) === 'AND' ||\n sqlString.slice(matchValue.length + 1, matchValue.length + 3) === 'OR') {\n return true;\n }\n return false;\n };\n QueryBuilder.prototype.getSingleQuoteString = function (sqlString, isBetween) {\n var start = sqlString.indexOf('\\'');\n if ((start !== -1 && isBetween) || (start === 0 && !isBetween)) {\n var end = sqlString.indexOf('\\'', start + 1);\n if (end !== -1) {\n return sqlString.substring(start, end + 1);\n }\n }\n return '';\n };\n QueryBuilder.prototype.combineSingleQuoteString = function (sqlString, matchValue) {\n if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&\n !this.checkCondition(sqlString, matchValue) && sqlString[matchValue.length] !== ',') {\n var tempMatchValue = matchValue.substring(0, matchValue.length - 1);\n var tempStr = sqlString.replace(tempMatchValue, '');\n var singleString = this.getSingleQuoteString(tempStr, true);\n if (singleString !== '') {\n var parsedValue = singleString.substring(1, singleString.length);\n matchValue += parsedValue;\n matchValue = this.combineSingleQuoteString(sqlString, matchValue);\n }\n }\n return matchValue;\n };\n QueryBuilder.prototype.checkLiteral = function () {\n var lastParser = this.parser[this.parser.length - 1];\n if (!lastParser) {\n return true;\n }\n else {\n var secParser = this.parser[this.parser.length - 2];\n var betweenParser = this.parser[this.parser.length - 3];\n if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {\n return true;\n }\n var betweenOperator = 'between';\n if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf(betweenOperator) < 0)) {\n return true;\n }\n }\n return false;\n };\n QueryBuilder.prototype.checkNumberLiteral = function (sqlString, sqlLocale) {\n var lastParser = this.parser[this.parser.length - 1];\n if (!lastParser) {\n return true;\n }\n else {\n if (/^[0-9]+(?:\\.[0-9]+)$/.exec(sqlString)) {\n var secParser = this.parser[this.parser.length - 2];\n var betweenParser = this.parser[this.parser.length - 3];\n if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {\n return true;\n }\n var betweenOperator = sqlLocale ? this.l10n.getConstant('Between').toLowerCase() : 'between';\n if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf(betweenOperator) < 0)) {\n return true;\n }\n }\n }\n return false;\n };\n QueryBuilder.prototype.getOperator = function (value, operator, sqlLocale) {\n var operators = {\n '=': 'equal', '!=': 'notequal', '<': 'lessthan', '>': 'greaterthan', '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal', 'in': 'in', 'not in': 'notin', 'between': 'between', 'not between': 'notbetween',\n 'is empty': 'isempty', 'is null': 'isnull', 'is not null': 'isnotnull', 'is not empty': 'isnotempty'\n };\n if (sqlLocale) {\n var localeOperator = Object.keys(this.sqlOperators);\n for (var i = 0; i < localeOperator.length; i++) {\n if (this.sqlOperators[localeOperator[i]] === operator.toUpperCase()) {\n if (value && value.indexOf('%') === 0 && value[value.length - 1] === '%') {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notcontains' : 'contains';\n }\n else if (value && value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notstartswith' : 'startswith';\n }\n else if (value && value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notendswith' : 'endswith';\n }\n return localeOperator[i];\n }\n }\n return null;\n }\n if (value) {\n if (value.indexOf('%') === 0 && value[value.length - 1] === '%') {\n return (operator === 'not like') ? 'notcontains' : 'contains';\n }\n else if (value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {\n return (operator === 'not like') ? 'notstartswith' : 'startswith';\n }\n else if (value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {\n return (operator === 'not like') ? 'notendswith' : 'endswith';\n }\n }\n else {\n if (operator === 'not like') {\n return 'notequal';\n }\n else if (operator === 'like') {\n return 'equal';\n }\n }\n return operators[\"\" + operator];\n };\n QueryBuilder.prototype.getTypeFromColumn = function (rules) {\n var columnData = this.getColumn(rules.field);\n if (!isNullOrUndefined(columnData)) {\n return columnData.type;\n }\n return null;\n };\n QueryBuilder.prototype.getLabelFromColumn = function (field) {\n var label = '';\n var l = 0;\n if (this.separator !== '') {\n var fieldColl = field.split(this.separator);\n for (var i = 0; i < fieldColl.length; i++) {\n label += this.getLabelFromField(fieldColl, i + 1);\n l++;\n if (l < fieldColl.length) {\n label += this.separator;\n }\n }\n return label;\n }\n else {\n var labelItem = this.getColumn(field).label;\n return labelItem;\n }\n };\n QueryBuilder.prototype.getLabelFromField = function (field, startIdx) {\n var fieldName = '';\n var j = 0;\n for (var k = 0; k < startIdx; k++) {\n fieldName += field[k];\n j++;\n if (j < startIdx) {\n fieldName += this.separator;\n }\n }\n return this.getColumn(fieldName) ? this.getColumn(fieldName).label : '';\n };\n QueryBuilder.prototype.processParser = function (parser, rules, levelColl, sqlLocale) {\n var j;\n var jLen;\n var rule;\n var subRules;\n var numVal = [];\n var strVal = [];\n var k;\n var kLen;\n var l;\n var lLen;\n var grpCount;\n var operator;\n var isLeftOpened = false;\n var isNotOpened = false;\n for (var i = 0, iLen = parser.length; i < iLen; i++) {\n if (parser[i][0] === 'Literal') {\n var column = this.getColumn(parser[i][1]);\n rule = { label: (column && column.label) ? column.label : parser[i][1], field: parser[i][1] };\n if (parser[i + 1][0] === 'SubOperators') {\n if (parser[i + 1][1].indexOf('null') > -1 || parser[i + 1][1].indexOf('empty') > -1) {\n rule.operator = this.getOperator(' ', parser[i + 1][1], sqlLocale);\n rule.value = null;\n rule.type = this.getTypeFromColumn(rule);\n }\n else {\n if (parser.length === 3 && parser[2][0] === 'String' && (parser[2][1]).indexOf('%') !== -1) {\n var oper = parser[i + 2][1] ? parser[i + 2][1].replace(/'/g, '') : parser[i + 2][1];\n rule.operator = this.getOperator(oper, parser[i + 1][1], sqlLocale);\n }\n else {\n var oper = parser[i + 3][1] ? parser[i + 3][1].replace(/'/g, '') : parser[i + 3][1];\n rule.operator = this.getOperator(oper, parser[i + 1][1], sqlLocale);\n }\n }\n operator = parser[i + 1][1];\n i++;\n j = i + 1;\n jLen = iLen;\n if (sqlLocale && rule.operator === 'contains' || rule.operator === 'startswith' || rule.operator === 'endswith') {\n operator = 'like';\n }\n else if (sqlLocale && rule.operator === 'notcontains' || rule.operator === 'notstartswith' || rule.operator === 'notendswith') {\n operator = 'not like';\n }\n else if (sqlLocale) {\n operator = rule.operator;\n }\n for (j = i + 1; j < jLen; j++) {\n if (operator.indexOf('between') < 0 && parser[j][0] === 'Left') {\n isLeftOpened = true;\n }\n else if (parser[j][0] === 'Right' && isLeftOpened) {\n i = j;\n isLeftOpened = false;\n break;\n }\n else {\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n break;\n }\n if (operator.indexOf('like') > -1 && parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n val = val ? val.replace(/%/g, '') : parser[j][1];\n rule.value = val;\n rule.type = 'string';\n }\n else if (operator.indexOf('between') > -1) {\n if (parser[j][0] === 'Literal' || parser[j][0] === 'Left') {\n break;\n }\n if (parser[j][0] === 'Number') {\n numVal.push(Number(parser[j][1]));\n }\n else if (parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n strVal.push(val);\n }\n }\n else {\n if (parser[j][0] === 'Number') {\n numVal.push(Number(parser[j][1]));\n }\n else if (parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n strVal.push(val);\n }\n }\n rule.type = this.getTypeFromColumn(rule);\n }\n }\n if (operator.indexOf('like') < 0) {\n if (parser[j - 1][0] === 'Number') {\n rule.value = numVal;\n rule.type = 'number';\n }\n else if (parser[j - 1][0] === 'String') {\n rule.value = strVal;\n rule.type = 'string';\n }\n else if (operator.indexOf('between') > -1 && parser[j - 1][0] === 'Conditions') {\n if (strVal.length !== 0) {\n rule.value = strVal;\n rule.type = 'string';\n }\n else {\n rule.value = numVal;\n rule.type = 'number';\n }\n }\n numVal = [];\n strVal = [];\n rule.type = this.getTypeFromColumn(rule);\n }\n if (this.enableSeparateConnector && parser[i + 1][0] === 'Conditions') {\n rule.condition = parser[i + 1][1];\n }\n }\n else if (parser[i + 1][0] === 'Operators') {\n rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);\n if (rule.operator === 'equal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\\'\\'') {\n rule.operator = 'isempty';\n }\n else if (rule.operator === 'notequal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\\'\\'') {\n rule.operator = 'isnotempty';\n }\n if (parser[i + 2][0] === 'Number') {\n rule.type = 'number';\n rule.value = Number(parser[i + 2][1]);\n }\n else {\n rule.type = 'string';\n var val = parser[i + 2][1];\n if (val && val[0] === '\\'') {\n val = val.substring(1, val.length - 1);\n }\n rule.value = val;\n }\n if (this.enableSeparateConnector && parser[i + 3][0] === 'Conditions') {\n rule.condition = parser[i + 3][1];\n }\n rule.type = this.getTypeFromColumn(rule);\n }\n rules.rules.push(rule);\n }\n else if (parser[i][0] === 'Left') {\n if (!(parser[0][0] === 'Left') && (parser[i - 1][1] === 'not' || sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i - 1][1])) {\n isNotOpened = true;\n continue;\n }\n this.parser = parser.splice(i + 1, iLen - (i + 1));\n if (this.enableNotCondition) {\n subRules = { condition: 'and', rules: [], not: false };\n }\n else {\n subRules = { condition: 'and', rules: [] };\n }\n grpCount = 0;\n kLen = rules.rules.length;\n for (k = 0; k < kLen; k++) { //To get the group position\n if (rules.rules[k].rules) {\n grpCount++;\n }\n }\n levelColl.push(grpCount);\n rules.rules.push(subRules);\n subRules = this.processParser(this.parser, subRules, levelColl, sqlLocale);\n return rules;\n }\n else if (parser[i][0] === 'Conditions' && !this.enableSeparateConnector) {\n if (parser[i][1] === 'not' || (sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i][1])) {\n rules.not = true;\n }\n else {\n rules.condition = parser[i][1];\n }\n }\n else if (parser[i][0] === 'Right') {\n if (isNotOpened && parser[i + 1][0] === 'Right') {\n isNotOpened = false;\n continue;\n }\n this.parser = parser.splice(i + 1, iLen - (i + 1));\n levelColl.pop(); //To get the parent Group\n rules = this.rule;\n lLen = levelColl.length;\n for (l = 0; l < lLen; l++) {\n rules = this.findGroupByIdx(levelColl[l], rules, l === 0);\n }\n return this.processParser(this.parser, rules, levelColl, sqlLocale);\n }\n }\n return rules;\n };\n /**\n * Clone the Group\n *\n * @param {Element | string} target - 'target' to be passed to clone the group.\n * @returns {void}\n */\n QueryBuilder.prototype.groupClone = function (target) {\n var groupElem = target.closest('.e-rule-list').closest('.e-group-container');\n var targetGrpId = target.id.replace(this.element.id + '_', '');\n var groupId = groupElem.id.replace(this.element.id + '_', '');\n var group = this.getGroup(targetGrpId);\n this.groupIndex = Array.prototype.indexOf.call(target.closest('.e-rule-list').children, target.closest('.e-group-container'));\n this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupId);\n this.groupIndex = -1;\n };\n QueryBuilder.prototype.ruleClone = function (target) {\n var ruleElem = closest(target, '.e-rule-container');\n var groupElem = target.closest('.e-rule-list').closest('.e-group-container');\n var getRule = this.getRule(target);\n var groupId = groupElem.id.replace(this.element.id + '_', '');\n var ruleElemColl = groupElem.querySelectorAll('.e-rule-container');\n for (var i = 0, iLen = ruleElemColl.length; i < iLen; i++) {\n if (ruleElem.id === ruleElemColl[i].id) {\n this.ruleIndex = i;\n }\n }\n if (this.enableSeparateConnector) {\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition\n }], groupId);\n }\n else {\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value\n }], groupId);\n }\n this.ruleIndex = -1;\n };\n QueryBuilder.prototype.ruleLock = function (target) {\n var ruleElem = closest(target, '.e-rule-container');\n var rule = this.getRule(ruleElem.id.replace(this.element.id + '_', ''));\n if (ruleElem.classList.contains('e-disable')) {\n rule.isLocked = false;\n this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== ruleElem.id; });\n ruleElem.classList.remove('e-disable');\n this.disableRuleControls(target, ruleElem, false);\n target.children[0].classList.add('e-unlock');\n target.children[0].classList.remove('e-lock');\n target.setAttribute('title', this.l10n.getConstant('LockRule'));\n }\n else {\n rule.isLocked = true;\n if (this.lockItems.indexOf(ruleElem.id) < 0) {\n this.lockItems.splice(this.lockItems.length - 1, 0, ruleElem.id);\n }\n ruleElem.classList.add('e-disable');\n this.disableRuleControls(target, ruleElem, true);\n target.children[0].classList.add('e-lock');\n target.children[0].classList.remove('e-unlock');\n target.setAttribute('title', this.l10n.getConstant('UnlockRule'));\n }\n };\n QueryBuilder.prototype.groupLock = function (target) {\n var groupElem = closest(target, '.e-group-container');\n var group = this.getGroup(groupElem.id.replace(this.element.id + '_', ''));\n var isRoot = groupElem.id.indexOf('group0') > -1;\n if (groupElem.classList.contains('e-disable')) {\n if (isRoot) {\n var newGroup = {};\n newGroup.condition = group.condition;\n newGroup.not = group.not;\n newGroup.isLocked = false;\n this.setProperties({ rule: newGroup }, true);\n }\n else {\n group.isLocked = false;\n }\n this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== groupElem.id; });\n groupElem.classList.remove('e-disable');\n this.disableHeaderControls(target, groupElem, false);\n target.children[0].classList.add('e-unlock');\n target.children[0].classList.remove('e-lock');\n target.setAttribute('title', this.l10n.getConstant('LockGroup'));\n this.updateLockItems();\n }\n else {\n if (isRoot) {\n var newGroup = {};\n newGroup.condition = group.condition;\n newGroup.not = group.not;\n newGroup.isLocked = true;\n this.setProperties({ rule: newGroup }, true);\n }\n else {\n group.isLocked = true;\n }\n if (this.lockItems.indexOf(groupElem.id) < 0) {\n this.lockItems.splice(this.lockItems.length - 1, 0, groupElem.id);\n }\n groupElem.classList.add('e-disable');\n this.disableHeaderControls(target, groupElem, true);\n target.children[0].classList.add('e-lock');\n target.children[0].classList.remove('e-unlock');\n target.setAttribute('title', this.l10n.getConstant('UnlockGroup'));\n }\n };\n QueryBuilder.prototype.updateLockItems = function () {\n for (var i = 0; i < this.lockItems.length; i++) {\n var idColl = this.lockItems[i].split('_');\n if (idColl.length > 2) {\n var ruleElem = this.element.querySelector('#' + this.lockItems[i]);\n var target = ruleElem.querySelector('.e-lock-rule-btn');\n ruleElem = closest(target, '.e-rule-container');\n if (!ruleElem.classList.contains('e-disable')) {\n this.ruleLock(target);\n }\n }\n else {\n var groupElem = this.element.querySelector('#' + this.lockItems[i]);\n var target = groupElem.querySelector('.e-lock-grp-btn');\n groupElem = closest(target, '.e-group-container');\n if (!groupElem.classList.contains('e-disable')) {\n this.groupLock(target);\n }\n }\n }\n };\n QueryBuilder.prototype.disableHeaderControls = function (target, groupElem, isDisabled) {\n var andElem = groupElem.querySelectorAll('.e-btngroup-and');\n var orElem = groupElem.querySelectorAll('.e-btngroup-or');\n var notElem = groupElem.querySelectorAll('.e-qb-toggle');\n var addElem = groupElem.querySelectorAll('.e-add-btn');\n var deleteGrpElem = groupElem.querySelectorAll('.e-deletegroup');\n var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');\n var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');\n var groupContElem = groupElem.querySelectorAll('.e-group-container');\n var addCondition = groupElem.querySelectorAll('.e-add-condition-btn');\n var addGroup = groupElem.querySelectorAll('.e-add-group-btn');\n for (var i = 0; i < andElem.length; i++) {\n if (isDisabled) {\n if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {\n groupContElem[i].classList.add('e-disable');\n }\n andElem[i].disabled = true;\n orElem[i].disabled = true;\n if (addElem[i]) {\n addElem[i].disabled = true;\n }\n if (addCondition[i]) {\n addCondition[i].disabled = true;\n }\n if (addGroup[i]) {\n addGroup[i].disabled = true;\n }\n if (notElem[i]) {\n notElem[i].disabled = true;\n }\n if (deleteGrpElem[i]) {\n deleteGrpElem[i].disabled = true;\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = true;\n }\n andElem[i].parentElement.classList.add('e-disabled');\n if (lockElem[i] && lockElem[i] !== target) {\n lockElem[i].disabled = true;\n lockElem[i].children[0].classList.remove('e-unlock');\n lockElem[i].children[0].classList.add('e-lock');\n }\n }\n else {\n if (groupContElem[i]) {\n groupContElem[i].classList.remove('e-disable');\n }\n andElem[i].disabled = false;\n orElem[i].disabled = false;\n if (addElem[i]) {\n addElem[i].disabled = false;\n }\n if (addCondition[i]) {\n addCondition[i].disabled = false;\n }\n if (addGroup[i]) {\n addGroup[i].disabled = false;\n }\n if (lockElem[i]) {\n lockElem[i].disabled = false;\n }\n if (notElem[i]) {\n notElem[i].disabled = false;\n }\n if (deleteGrpElem[i]) {\n deleteGrpElem[i].disabled = false;\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = false;\n }\n andElem[i].parentElement.classList.remove('e-disabled');\n if (lockElem[i]) {\n lockElem[i].children[0].classList.remove('e-lock');\n }\n if (lockElem[i]) {\n lockElem[i].children[0].classList.add('e-unlock');\n }\n }\n }\n this.disableRuleControls(target, groupElem, isDisabled);\n };\n QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {\n var disableComponents = function (elements, componentGetter, isDisabled) {\n elements.forEach(function (element) {\n var component = componentGetter(element);\n if ('enabled' in component) {\n component.enabled = !isDisabled;\n }\n else if ('disabled' in component) {\n component.disabled = isDisabled;\n }\n });\n };\n var elements = {\n ddl: groupElem.querySelectorAll('.e-control.e-dropdownlist'),\n numeric: groupElem.querySelectorAll('.e-control.e-numerictextbox'),\n text: groupElem.querySelectorAll('.e-control.e-textbox'),\n date: groupElem.querySelectorAll('.e-control.e-datepicker'),\n checkbox: groupElem.querySelectorAll('.e-control.e-checkbox'),\n radio: groupElem.querySelectorAll('.e-control.e-radio'),\n multiSelect: groupElem.querySelectorAll('.e-control.e-multiselect'),\n deleteElem: groupElem.querySelectorAll('.e-rule-delete'),\n lockElem: groupElem.querySelectorAll('.e-lock-rule'),\n cloneElem: groupElem.querySelectorAll('.e-clone-rule'),\n ruleElem: groupElem.querySelectorAll('.e-rule-container')\n };\n elements.deleteElem.forEach(function (elem, i) {\n if (isDisabled) {\n if (elements.ruleElem[i] && elements.ruleElem[i].classList.contains('e-disable')) {\n elements.ruleElem[i].classList.add('e-disable');\n }\n elements.deleteElem[i].disabled = true;\n if (elements.cloneElem[i]) {\n elements.cloneElem[i].disabled = true;\n }\n if (elements.lockElem[i] !== target) {\n elements.lockElem[i].disabled = true;\n elements.lockElem[i].children[0].classList.remove('e-unlock');\n elements.lockElem[i].children[0].classList.add('e-lock');\n }\n }\n else {\n if (elements.ruleElem[i]) {\n elements.ruleElem[i].classList.remove('e-disable');\n }\n if (elements.cloneElem[i]) {\n elements.cloneElem[i].disabled = false;\n }\n elements.deleteElem[i].disabled = false;\n elements.lockElem[i].disabled = false;\n elements.lockElem[i].children[0].classList.remove('e-lock');\n elements.lockElem[i].children[0].classList.add('e-unlock');\n }\n });\n disableComponents(elements.ddl, function (elem) { return getComponent(elem, 'dropdownlist'); }, isDisabled);\n disableComponents(elements.numeric, function (elem) { return getComponent(elem, 'numerictextbox'); }, isDisabled);\n disableComponents(elements.text, function (elem) { return getComponent(elem, 'textbox'); }, isDisabled);\n disableComponents(elements.date, function (elem) { return getComponent(elem, 'datepicker'); }, isDisabled);\n disableComponents(elements.checkbox, function (elem) { return getComponent(elem, 'checkbox'); }, isDisabled);\n disableComponents(elements.radio, function (elem) { return getComponent(elem, 'radio'); }, isDisabled);\n disableComponents(elements.multiSelect, function (elem) { return getComponent(elem, 'multiselect'); }, isDisabled);\n };\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"beforeChange\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"ruleChange\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"drop\", void 0);\n __decorate([\n Complex({}, ShowButtons)\n ], QueryBuilder.prototype, \"showButtons\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"summaryView\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"allowValidation\", void 0);\n __decorate([\n Property('Default')\n ], QueryBuilder.prototype, \"fieldMode\", void 0);\n __decorate([\n Property([])\n ], QueryBuilder.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"fieldModel\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"operatorModel\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"valueModel\", void 0);\n __decorate([\n Property()\n ], QueryBuilder.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], QueryBuilder.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], QueryBuilder.prototype, \"dataSource\", void 0);\n __decorate([\n Property('Horizontal')\n ], QueryBuilder.prototype, \"displayMode\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('Default')\n ], QueryBuilder.prototype, \"sortDirection\", void 0);\n __decorate([\n Property(5)\n ], QueryBuilder.prototype, \"maxGroupCount\", void 0);\n __decorate([\n Property('auto')\n ], QueryBuilder.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], QueryBuilder.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"matchCase\", void 0);\n __decorate([\n Property(0)\n ], QueryBuilder.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enableNotCondition\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], QueryBuilder.prototype, \"addRuleToNewGroups\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"autoSelectField\", void 0);\n __decorate([\n Property(true)\n ], QueryBuilder.prototype, \"autoSelectOperator\", void 0);\n __decorate([\n Property('')\n ], QueryBuilder.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enableSeparateConnector\", void 0);\n __decorate([\n Complex({ condition: 'and', rules: [] }, Rule)\n ], QueryBuilder.prototype, \"rule\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"allowDragAndDrop\", void 0);\n QueryBuilder = __decorate([\n NotifyPropertyChanges\n ], QueryBuilder);\n return QueryBuilder;\n}(Component));\nexport { QueryBuilder };\nvar LevelColl = /** @class */ (function () {\n function LevelColl() {\n }\n return LevelColl;\n}());\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar QueryLibrary = /** @class */ (function () {\n function QueryLibrary(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n QueryLibrary.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n QueryLibrary.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('query-library', this.queryLibrary, this);\n this.parent.on('destroyed', this.destroy, this);\n };\n QueryLibrary.prototype.removeEventListener = function () {\n this.parent.off('query-library', this.queryLibrary);\n this.parent.off('destroyed', this.destroy);\n };\n QueryLibrary.prototype.queryLibrary = function (args) {\n switch (args.prop) {\n case 'getMongoFromRules':\n args.value['obj']['mongoQuery'] = this.getMongoFromRules(args.value['rule'], args.value['mongoQuery']);\n break;\n case 'mongoParser':\n this.mongoParser(args.value['mongoQuery'], args.value['rule'], args.value['mongoLocale']);\n break;\n case 'getParameterSql':\n args.value['obj']['sql'] = this.getParameterSql(args.value['rule']);\n break;\n case 'getNamedParameterSql':\n args.value['obj']['sql'] = this.getNamedParameterSql(args.value['rule']);\n break;\n case 'convertParamSqlToSql':\n args.value['obj']['sql'] = this.convertParamSqlToSql(args.value['sql']);\n break;\n case 'convertNamedParamSqlToSql':\n args.value['obj']['sql'] = this.convertNamedParamSqlToSql(args.value['sql']);\n break;\n }\n };\n QueryLibrary.prototype.getMongoFromRules = function (rule, mongoQuery) {\n mongoQuery = '{';\n if (rule.condition === 'or') {\n mongoQuery += '\"$or\":[';\n mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';\n }\n else {\n mongoQuery += '\"$and\":[';\n mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';\n }\n mongoQuery += '}';\n return mongoQuery;\n };\n QueryLibrary.prototype.getOperatorFromMongoOperator = function (operator) {\n var operatorValue;\n switch (operator) {\n case '$ne':\n operatorValue = 'notequal';\n break;\n case '$gt':\n operatorValue = 'greaterthan';\n break;\n case '$gte':\n operatorValue = 'greaterthanorequal';\n break;\n case '$lt':\n operatorValue = 'lessthan';\n break;\n case '$lte':\n operatorValue = 'lessthanorequal';\n break;\n case '$nin':\n operatorValue = 'notin';\n break;\n }\n return operatorValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n QueryLibrary.prototype.convertMongoQuery = function (rules, mongoQuery) {\n var _this = this;\n var i = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.forEach(function (item) {\n i++;\n mongoQuery += '{';\n if (item.rules !== undefined) {\n if (item.condition === 'or') {\n mongoQuery += ' \"$or\":[';\n mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';\n }\n else {\n mongoQuery += ' \"$and\":[';\n mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';\n }\n }\n var itVal = item.type === 'string' && item.operator !== 'in' && item.operator !== 'notin' && item.value && item.value.trim() !== '' ? item.value.replace(/'/g, '\\\\') : '';\n if (item.type === 'string' && (item.operator === 'in' || item.operator === 'notin') && item.value && item.value.length === 1) {\n itVal = item.value[0].replace(/'/g, '\\\\');\n }\n var field = item.field ? item.field.substring(0) : '';\n switch (item.operator) {\n case 'contains':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"' + itVal + '\"}';\n break;\n case 'notcontains':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"' + item.value + '\"}}';\n break;\n case 'startswith':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"^' + itVal + '\"}';\n break;\n case 'notstartswith':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"^' + item.value + '\"}}';\n break;\n case 'endswith':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"' + itVal + '$\"}';\n break;\n case 'notendswith':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"' + item.value + '$\"}}';\n break;\n case 'isnull':\n mongoQuery += '\"' + field + '\": null';\n break;\n case 'isnotnull':\n mongoQuery += '\"' + field + '\":{\"$ne\": null}';\n break;\n case 'isempty':\n mongoQuery += '\"' + field + '\": \"\"';\n break;\n case 'isnotempty':\n mongoQuery += '\"' + field + '\":{\"$ne\": \"\"}';\n break;\n case 'equal':\n if (item.type === 'string') {\n mongoQuery += '\"' + field + '\":\"' + itVal + '\"';\n }\n else if (item.type === 'date') {\n mongoQuery += '\"' + field + '\":\"' + item.value + '\"';\n }\n else if (item.type === 'boolean') {\n mongoQuery += '\"' + field + '\":' + item.value + '';\n }\n else {\n mongoQuery += '\"' + field + '\":' + item.value + '';\n }\n break;\n case 'notequal':\n if (item.type === 'string') {\n mongoQuery += '\"' + field + '\":{\"$ne\":\"' + itVal + '\"}';\n }\n else if (item.type === 'date') {\n mongoQuery += '\"' + field + '\":{\"$ne\":\"' + item.value + '\"}';\n }\n else {\n mongoQuery += '\"' + field + '\":{\"$ne\":' + item.value + '}';\n }\n break;\n case 'in':\n if (item.type === 'string') {\n if (item.value.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var s = item.value.map(function (x, j) { return (j < item.value.length ? \"\\\"\" + x + \"\\\"\" : ''); }).toString();\n s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;\n mongoQuery += '\"' + field + '\": { \"$in\": [' + s + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$in\": [\"' + itVal + '\"]}';\n }\n }\n else if (item.type === 'number') {\n if (item.value.length > 1) {\n mongoQuery += '\"' + field + '\": { \"$in\": [' + item.value.toString() + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$in\": [' + item.value + ']}';\n }\n }\n break;\n case 'notin':\n if (item.type === 'string') {\n if (item.value.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var s = item.value.map(function (x, j) { return (j < item.value.length ? \"\\\"\" + x + \"\\\"\" : ''); }).toString();\n s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + s + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$nin\": [\"' + itVal + '\"]}';\n }\n }\n else if (item.type === 'number') {\n if (item.value.length > 1) {\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + item.value.toString() + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + item.value + ']}';\n }\n }\n break;\n case 'greaterthan':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$gt\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$gt\": \"' + item.value + '\"}';\n }\n break;\n case 'greaterthanorequal':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$gte\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$gte\": \"' + item.value + '\"}';\n }\n break;\n case 'between':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": {\"$gte\":' + item.value[0] + ', \"$lte\":' + item.value[1] + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": {\"$gte\": \"' + item.value[0] + '\", \"$lte\": \"' + item.value[1] + '\"}';\n }\n break;\n case 'notbetween':\n if (item.type === 'number') {\n mongoQuery += '\"$or\":[{\"' + field + '\": {\"$lt\":' + item.value[0] + '}}, {\"' + field + '\": {\"$gt\":' + item.value[1] + '}}]';\n }\n else {\n mongoQuery += '\"$or\":[{\"' + field + '\": {\"$lt\": \"' + item.value[0] + '\"}}, {\"' + field + '\": {\"$gt\": \"' + item.value[1] + '\"}}]';\n }\n break;\n case 'lessthan':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$lt\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$lt\": \"' + item.value + '\"}';\n }\n break;\n case 'lessthanorequal':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$lte\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$lte\": \"' + item.value + '\"}';\n }\n break;\n }\n mongoQuery += '}';\n if (rules.length !== i) {\n mongoQuery += ',';\n }\n });\n return mongoQuery;\n };\n QueryLibrary.prototype.mongoParser = function (mongoQuery, rule, mongoLocale) {\n var mongoList;\n if (Object.keys(mongoQuery).indexOf('$and') > -1) {\n mongoList = mongoQuery['$and'];\n rule.condition = 'and';\n }\n else if (Object.keys(mongoQuery).indexOf('$or') > -1) {\n mongoList = mongoQuery['$or'];\n rule.condition = 'or';\n }\n rule.rules = [];\n this.mongoRecursion(mongoList, rule.rules, mongoLocale);\n };\n QueryLibrary.prototype.mongoRecursion = function (mongoList, rules, mongoLocale) {\n var operatorValue;\n var type;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var stringValue;\n var key;\n var betweenValue;\n var fieldType;\n var condition;\n var value;\n var subRules;\n var rule;\n var keyObj;\n var ruleValue;\n for (var i = 0, len = mongoList.length; i < len; i++) {\n var betweenOperatorArray = [];\n var inOperatorArray = [];\n condition = Object.keys(mongoList[i])[0];\n value = mongoList[i][condition];\n if (condition === '$and') {\n if (this.parent.enableNotCondition) {\n subRules = { condition: condition.replace('$', ''), rules: [], not: false };\n }\n else {\n subRules = { condition: condition.replace('$', ''), rules: [] };\n }\n rules.push(subRules);\n this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);\n }\n else if (condition === '$or') {\n var notBetween = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var innerObject = [];\n var keys = [];\n var firstKey = [];\n var secondKey = [];\n var innerKeys = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var firstValue = [];\n var secondValue = [];\n var innerFirstValue = [];\n var innerSecondValue = [];\n if (Array.isArray(value) && value.length === 2) {\n keys = Object.keys(value);\n innerFirstValue = value[keys[0]];\n innerSecondValue = value[keys[1]];\n if (typeof innerFirstValue === 'object') {\n innerObject = Object.keys(innerFirstValue)[0];\n innerKeys = Object.keys(innerFirstValue[Object.keys(innerFirstValue)[0]]);\n firstKey = innerKeys[0];\n secondKey = Object.keys(innerSecondValue[Object.keys(innerSecondValue)[0]])[0];\n if (firstKey === '$lt' && secondKey === '$gt') {\n operatorValue = 'notbetween';\n // eslint-disable-next-line security/detect-object-injection\n firstValue = innerFirstValue[innerObject][firstKey];\n // eslint-disable-next-line security/detect-object-injection\n secondValue = innerSecondValue[innerObject][secondKey];\n type = typeof firstValue === 'number' ? 'number' : 'date';\n ruleValue = [firstValue, secondValue];\n rule = { field: innerObject, label: innerObject, value: ruleValue, operator: operatorValue, type: type };\n rules.push(rule);\n notBetween = true;\n }\n }\n }\n if (!notBetween) {\n if (this.parent.enableNotCondition) {\n subRules = { condition: condition.replace('$', ''), rules: [], not: false };\n }\n else {\n subRules = { condition: condition.replace('$', ''), rules: [] };\n }\n rules.push(subRules);\n this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);\n }\n }\n else {\n value = mongoList[i][condition];\n if (value === null) { // isnull operator\n operatorValue = 'isnull';\n }\n if (typeof value === 'boolean') { // boolean type values\n operatorValue = 'equal';\n type = 'boolean';\n ruleValue = value;\n }\n if (typeof (value) === 'number') {\n ruleValue = value;\n type = 'number';\n operatorValue = 'equal';\n }\n else if (typeof (value) === 'object' && value !== null) {\n keyObj = Object.keys(value);\n for (var i_1 = 0; i_1 < keyObj.length; i_1++) {\n key = keyObj[i_1];\n stringValue = (value)[keyObj[i_1]];\n if (key === '$ne' && isNullOrUndefined(stringValue)) { // not null operator\n operatorValue = 'isnotnull';\n ruleValue = null;\n }\n if (key === '$ne' && typeof stringValue === 'boolean') { // not equal operator for boolean\n operatorValue = 'notequal';\n ruleValue = stringValue;\n type = 'boolean';\n }\n if (keyObj.length >= 2 && keyObj[i_1]) {\n if (typeof (stringValue) == 'object') { // between and notbetween operators\n operatorValue = 'notbetween';\n condition = Object.keys(stringValue)[0];\n betweenValue = [Object.keys(stringValue[condition])[0]];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n betweenOperatorArray.push(stringValue[condition][betweenValue]);\n type = 'number';\n }\n else {\n operatorValue = 'between';\n betweenOperatorArray.push(stringValue);\n }\n if (typeof (stringValue) === 'number') {\n type = 'number';\n }\n }\n else if (typeof (stringValue) === 'object' && stringValue !== null) { // \"in\" and \"notin\" operator\n if (key === '$not' && Object.keys(stringValue)[0] === '$regex') {\n if (stringValue['$regex'].indexOf('^') > -1) {\n operatorValue = 'notstartswith';\n ruleValue = stringValue['$regex'].replace('^', '');\n }\n else if (stringValue['$regex'].indexOf('$') > -1) {\n operatorValue = 'notendswith';\n ruleValue = stringValue['$regex'].replace('$', '');\n }\n else {\n operatorValue = 'notcontains';\n ruleValue = stringValue['$regex'];\n }\n }\n else {\n operatorValue = key === '$in' ? 'in' : 'notin';\n inOperatorArray = stringValue;\n type = typeof (stringValue[0]) === 'number' ? 'number' : 'string';\n }\n }\n else if (typeof (stringValue) === 'number') { // number type values\n operatorValue = this.getOperatorFromMongoOperator(key);\n type = 'number';\n ruleValue = stringValue;\n }\n if (typeof (stringValue) === 'string') { // string type values\n if (key === '$regex') {\n operatorValue = 'contains';\n ruleValue = stringValue;\n type = 'string';\n }\n if (key === '$ne') { // not equal\n if (stringValue !== null && stringValue.length > 0 && isNaN(Date.parse(stringValue))) {\n operatorValue = 'notequal';\n ruleValue = stringValue;\n }\n else if (isNullOrUndefined(stringValue)) { // is not null operator\n operatorValue = 'isnotnull';\n ruleValue = stringValue;\n }\n else if (stringValue === '') { // is not empty operator\n operatorValue = 'isnotempty';\n ruleValue = stringValue;\n }\n type = 'string';\n }\n if (stringValue.indexOf('^') > -1) {\n operatorValue = 'startswith';\n ruleValue = stringValue.replace('^', '');\n type = 'string';\n }\n if (stringValue.indexOf('$') > -1 && key !== '$not') {\n operatorValue = 'endswith';\n ruleValue = stringValue.replace('$', '');\n type = 'string';\n }\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n if (column.field === condition) {\n fieldType = column.type;\n break;\n }\n }\n if (!isNaN(Date.parse(stringValue)) || fieldType === 'date') { // Date type operators\n operatorValue = operatorValue || this.getOperatorFromMongoOperator(key);\n type = 'date';\n ruleValue = stringValue;\n }\n }\n }\n }\n else if (value && typeof (value) === 'string' && !isNaN(Date.parse(value))) {\n operatorValue = 'equal';\n ruleValue = value;\n type = 'date';\n }\n else if (typeof (value) === 'string' && value !== '' && value !== 'true' && value !== 'false') {\n operatorValue = 'equal';\n ruleValue = value;\n type = 'string';\n }\n else if (typeof (value) === 'string' && value === '') {\n operatorValue = 'isempty';\n ruleValue = value;\n type = 'string';\n }\n if (betweenOperatorArray && betweenOperatorArray.length > 1) { // between opertor value\n rule = { field: condition, label: condition, value: betweenOperatorArray, operator: operatorValue, type: type };\n }\n else if (inOperatorArray && inOperatorArray.length > 1) { // in operator value\n rule = { field: condition, label: condition, value: inOperatorArray, operator: operatorValue, type: type };\n }\n else {\n rule = { field: condition, label: condition, value: ruleValue, operator: operatorValue, type: type };\n }\n rules.push(rule);\n operatorValue = '';\n }\n }\n };\n QueryLibrary.prototype.convertParamSqlToSql = function (sql) {\n var paramSql = sql.sql;\n var paramValues = sql.params;\n var parts = paramSql.split('?');\n var normalSql = parts[0];\n for (var i = 0; i < paramValues.length; i++) {\n normalSql += (typeof (paramValues[i]) === 'string' ? \"'\" + paramValues[i] + \"'\" + parts[i + 1] : paramValues[i] + parts[i + 1]);\n }\n if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {\n normalSql = normalSql.slice(1, -1);\n }\n normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');\n return normalSql;\n };\n QueryLibrary.prototype.convertNamedParamSqlToSql = function (sql) {\n var namedParamSql = sql.sql;\n var params = sql.params;\n var normalSql = namedParamSql;\n Object.keys(params).forEach(function (paramName) {\n var paramValue = params[paramName];\n paramName = ':' + paramName;\n normalSql = normalSql.replace(paramName, typeof (paramValue) === 'string' ? \"'\" + paramValue + \"'\" : String(paramValue));\n });\n if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {\n normalSql = normalSql.slice(1, -1);\n }\n normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');\n return normalSql;\n };\n QueryLibrary.prototype.getParameterSql = function (qbrule) {\n var qbRule = extend({}, qbrule, null, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateRuleValue(qbRule, false);\n return this.getParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['ruleVal']);\n };\n QueryLibrary.prototype.getNamedParameterSql = function (qbrule) {\n var qbRule = extend({}, qbrule, null, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateRuleValue(qbRule, true);\n return this.getNamedParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['namedRuleVal']);\n };\n QueryLibrary.prototype.getParameterSQLVal = function (content, ruleValue) {\n var replacedString = content.replace(/[%']/g, '');\n return { sql: '(' + replacedString + ')', params: ruleValue };\n };\n QueryLibrary.prototype.getNamedParameterSQLVal = function (content, ruleValue) {\n var replacedString = content.replace(/[%']/g, '');\n return { sql: '(' + replacedString + ')', params: ruleValue };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n QueryLibrary.prototype.updateRuleValue = function (rule, isNamedParameter) {\n var ruleVal = [];\n var namedRuleVal = {};\n var namedParameters = [];\n return this.updateValue(rule.rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);\n };\n QueryLibrary.prototype.updateValue = function (rules, isNamedParameter, ruleVal, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal, namedParameters) {\n if (isNullOrUndefined(rules)) {\n return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };\n }\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].rules) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateValue(rules[i].rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);\n ruleVal = value['ruleVal'];\n namedRuleVal = value['namedRuleVal'];\n }\n else {\n var namedField = void 0;\n if (rules[i].value instanceof Array) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var j = 0; j < (rules[i].value).length; j++) {\n if (isNamedParameter) {\n namedField = this.getNamedParameter(rules[i].field, namedParameters);\n }\n if (!isNullOrUndefined(rules[i].value[j])) {\n if (rules[i].type === 'string' || rules[i].type === 'date') {\n if (isNamedParameter) {\n namedRuleVal[namedField] = rules[i].value[j];\n }\n else {\n ruleVal.push(rules[i].value[j]);\n }\n }\n else {\n if (isNamedParameter) {\n namedRuleVal[namedField] = rules[i].value[j];\n }\n else {\n ruleVal.push(rules[i].value[j]);\n }\n }\n }\n if (isNamedParameter) {\n rules[i].value[j] = ':' + namedField;\n }\n else {\n rules[i].value[j] = '?';\n }\n }\n }\n else {\n if (isNamedParameter) {\n namedField = this.getNamedParameter(rules[i].field, namedParameters);\n }\n if (rules[i].operator.indexOf('null') < 1) {\n if (rules[i].type !== 'string' || (rules[i].type === 'string' && (rules[i].value !== '' || rules[i].value === 0))) {\n if (rules[i].type === 'string' || rules[i].type === 'date') {\n if (rules[i].operator.indexOf('empty') < 1) {\n var value = rules[i].value.toString();\n switch (rules[i].operator) {\n case 'startswith':\n case 'notstartswith':\n value = value + '%';\n break;\n case 'endswith':\n case 'notendswith':\n value = '%' + value;\n break;\n case 'contains':\n case 'notcontains':\n value = '%' + value + '%';\n break;\n }\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = value;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push(value);\n }\n }\n else {\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = '';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push('');\n }\n if (rules[i].operator === 'isempty') {\n rules[i].operator = 'equal';\n }\n else {\n rules[i].operator = 'notequal';\n }\n }\n }\n else {\n if (!isNullOrUndefined(rules[i].value)) {\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = rules[i].value;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push(rules[i].value);\n }\n }\n }\n if (isNamedParameter) {\n rules[i].value = ':' + namedField;\n }\n else {\n rules[i].value = '?';\n }\n }\n }\n }\n }\n }\n return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };\n };\n QueryLibrary.prototype.getNamedParameter = function (field, namedParameters) {\n var newField = null;\n if (namedParameters.length > 0) {\n for (var i = namedParameters.length - 1; i >= 0; i--) {\n var currField = namedParameters[i];\n if (currField.indexOf(field) > -1) {\n var idx = parseInt(currField.split('_')[1], 10) + 1;\n newField = field + '_' + idx;\n namedParameters.push(newField);\n break;\n }\n }\n }\n if (!newField) {\n newField = field + '_1';\n namedParameters.push(newField);\n }\n return newField;\n };\n QueryLibrary.prototype.getModuleName = function () {\n return 'query-library';\n };\n return QueryLibrary;\n}());\nexport { QueryLibrary };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Columns","ChildProperty","Property","isRequired","min","max","Number","MAX_VALUE","Rule","Collection","Value","ShowButtons","Component","QueryBuilder","getPersistData","addOnPersist","reset","isImportRules","fragment","grpContainer","grpHeader","grpBody","bodyElem","element","querySelector","inputElements","querySelectorAll","batchSize","currentIndex","processBatch","endIndex","Math","tooltip","className","indexOf","getComponent","destroy","parentElement","e","console","warn","requestAnimationFrame","textContent","document","createDocumentFragment","createElement","attrs","class","appendChild","headerTemplate","isRoot","enableNotCondition","toggleElements","removeClass","levelColl","id","setProperties","rule","condition","not","rules","disableRuleCondition","getWrapper","getModuleName","requiredModules","modules","push","member","args","GetRootColumnName","field","isNullOrUndefined","separator","split","initialize","_this","dataColl","type_1","value_1","columnKeys_1","keys","cols","categories_1","groupBy_1","isDate_1","validateObj_1","columns","columnSort","forEach","column","updateCustomOperator","type","isNaN","Date","parse","getTime","validation","category","l10n","getConstant","operators","isLocale","isCustomOprCols","customOperators","fields","text","value","groupBy","updateSubFieldsFromColumns","len","label","updateSubFields","sortDirection","processColumnsInBatches","setTimeout","trigger","endIdx","processedCount","col","updateSubFieldsLarge","processNextBatch","colLength","j","data","columnKeys","compField","result","resData","sampCol","from","this_1","_loop_1","operator_1","values","sqlIdx","operColl","map","join","valueIdx","focusEventHandler","event","clickEventHandler","forIdValue","group","ariaChecked","targetValue","tagName","animation","Animation","duration","delay","renderSummary","txtareaElem","summaryElem","getElementById","animate","name","groupElem","style","display","getSqlFromRules","height","scrollHeight","mRules","actionButton","deleteRule","cloneRuleBtnClick","ruleClone","ruleLock","groupLock","cloneGrpBtnClick","groupClone","closest","deleteGroup","addGroupElement","extend","setGroupRules","renderSummaryCollapse","getAttribute","enableSeparateConnector","classList","contains","groupID","replace","getGroup","toggleElem","getElementsByClassName","addClass","cancel","toLowerCase","beforeSuccessCallBack","observedChangeArgs","beforeRules","andElem","orElem","getValidRules","getParentGroup","previousElementSibling","getRule","ruleID","filterRules","checked","selectBtn","showButtons","groupInsert","maxGroupCount","enableRtl","children","addRuleElement","appendRuleElem","parentId","action","ruleElem","elem","ruleListElem","select","setAttribute","ruleIdCounter","cloneRule","ruleIndex","index","tempRuleIndex","insertBefore","ruleTemplate","requestType","ruleTemplateFn","templateParser","templateID","getOperators","operatorFields","isReact","isAngular","templateColl","nodeType","isVue3","append","cloneNode","lockGroup","lockRule","cloneGroup","ruleDelete","allowDragAndDrop","renderReactTemplates","isRuleTemplate","isInitialLoad","prvtEvtTgrDaD","addRuleSuccessCallBack","trgt","act","pId","isRlTmp","ddlField","ddlValue","ddlVal","getColumn","newRule","operator","selectedColumn","passedRule","args_1","displayMode","spanElement","add","previousRuleElem","ruleContainer","prevRule","headerTemplateFn","prevRuleContainer","prevElem","prevRule_1","updateAddedRule","fieldMode","autoSelectField","dataSource","placeholder","popupHeight","close","fieldClose","bind","change","changeField","open","popupOpen","cssClass","fieldModel","dropDownList","DropDownList","appendTo","getDataByValue","changeRule","itemData","dummyDropdownTreeDs","updateDropdowntreeDS","child","expanded","selectable","showClearButton","changeOnBlur","treeSettings","expandOn","filtering","dropdownTreeFiltering","dropdownTreeClose","dropdowntree","DropDownTree","getLabelFromColumn","isLocked","lockRuleTarget","args_2","notCondition","undefined","prevElem_1","ruleContainer_1","args_3","setMultiConnector","proxy","srcElement","ruleElemID","hierarchicalData","ddTree","changeDataSource","matchedDataSource","nestedChildFilter","filter","filteredChild","treeObj","expandAll","refresh","node","matchedChildren","isMatchedNode","checkValue","parseInt","toString","template","isNewRuleAdded","enableSeparateCondition","custom","splice","changeRuleTemplate","parentGroup","previousColumn","detach","clearQBTemplate","operVal","renderToolTip","Tooltip","content","isSticky","position","afterClose","beforeOpen","tooltipCloseElement","validateFields","dropDownTreeObj","isValid","allowValidation","excludeOprs","fieldElem","indexElem","valArray","dropDownObj","tempElem","ruleElemCln","validateRule","separateCondition","valElem","jLen","refreshLevelColl","refreshLevel","groupElement","level","obj","childElem","ruleList","iLen","groupCount","slice","groupTemplate","isConnector","inputElem","groupBtn","groupHdrElem","grpBodyElem","rulesElem","dragClsName","spanDragElement","aria-label","title","glueElem","role","labelElem","innerHTML","grpActElem","filterElem","cloneRuleBtnElem","cloneClsName","lockClsName","cloneLockBtnElem","clsName","delBtnElem","isGroup","isBtnClick","addGroupSuccess","eventTarget","conditionBtn_1","groupBtn_1","btnObj","dltGroupBtn","groupIdCounter","andInpElem","orInpElem","andLblElem","orLblElem","btnGroupId","groupDelete","Button","iconCss","rippleEffect","selector","childElems","grpLen","groupIndex","isLastGroup","tempGroupIndex","idx","parentNode","isMiddleGroup","lockBtnElem","isAddSuccess","addGroups","addRuleToNewGroups","cloneBtnElem","lockSpanElement","notElem","CheckBox","updatedRule","nextSibling","btnGroup","childNodes","newAndElem","newOrElem","nextElementSibling","args_4","onclick","DropDownButton","items","grpId","chgrpId","childGroupID","btnGroupElem","addHeaderDiv","disabled","isInitialRule","groupHdr","getRuleCollection","headerFn","enableSeparateConnectorInitialRule","nodeName","notifyChange","grpElement","ruleElement","format","getFormat","intl","formatDate","templateChange","isNotified","updateRules","grpElem","validateValue","prevOper","arrOper","grpEle","destroyControls","eventsArgs","changeValue","numericTextBoxObj","decimalSeparator","isNumInput","currentTarget","dateElement","rbValue","getInstance","NumericTextBox","getValue","getNumericObject","locale","getNumberParser","immediateModeDelay","window","clearInterval","timer","setInterval","filterValue","grID","rlID","ele","changeValueSuccessCallBack","customArgs","isFieldChange","isDestroy","isFieldClose","item","ddl","popupObj","getItemData","isInteracted","previousItemData","prevItemData","previousItem","previousValue","ddtElem","ddt","oldValue","dataBind","destroySubFields","subFieldElem","isNotValueChange","ddlArgs","ddlObj","changeFilter","flt","dl","rl","tmpRl","dArg","operatorElem","selectedField","fieldChangeSuccess","changeOperator","opr","selectedIndex","operatorChangeSuccess","changeRuleValues","tempRule","tooltipElem","createSubFields","remove","subFieldValue","subFilterCounter","ruleId","subField","parentElem","currOper","prevValue","operatorList","operator_2","ddlIdx","ddlOperator","childElementCount","fieldObj","renderValues","oprElem","autoSelectOperator","operatorModel","isField","popup","inputElement","divElement","templateDestroy","templateElement","elemId","temp","templateElements","elementId","elements","getValues","original","fieldColl","fieldStr","dataObj","createNestedObject","lastIndex","k","getDistinctValues","nest","isNested","this_2","_loop_2","renderMultiSelect","selectedValue","ds","isFetched","isValues","multiSelectObj","isGetNestedData","multiSelectValue","dataManager","query","Query","selectedRule","mode","width","closePopup","actionBegin","multiSelectOpen","valueModel","multiSelectModel","MultiSelect","DataManager","bindMultiSelectData","getMultiSelectData","dummyData","deferred","Deferred","executeQuery","multiselectObj","hideSpinner","createSpinner","showSpinner","then","actual","catch","reject","spinnerElem","Browser","isDevice","ms","processTemplate","container","tempElements","write","parentFieldObj","subFieldObjList","lastSubFieldObj","setDefaultValue","isArryValue","isNumber","renderStringValue","ruleValElem","selectedVal","columnData","isTemplate","isPublic","txtBox","input","textBoxModel","inputobj","TextBox","minWidth","renderNumberValue","numericTxt","selVal","txtInp","step","numericTextBoxModel","numeric","oninput","processValueString","numArr","strArr","kLen","parseDate","dParser","getDateParser","skeleton","formatOpt","renderControls","isRendered","length_1","processBoolValues","datePicker","place","formatObj","getLocale","datePickerModel","DatePicker","orgValue","isCheck","radiobutton","radioBtn","radioButtonModel","RadioButton","getOperatorIndex","getPreviousItemData","isRender","filtElem","getElementsByTagName","filtObj","isTempRendered","setColumnTemplate","inputLen","renderTemplate","observedActionArgs","actionBeginSuccessCallBack","Element","columnTemplateFn","valElemColl","updateValues","selectedDate","textboxValue","controlName","some","op","val","trim","radioBtnObj","isNotTrigger","valueContainer","elementCln","i_1","i_2","ruleValueUpdate","beforeRule","afterRule","JSON","stringify","previousRule","oper","arrOperator","dupSelectedValue","parseFloat","isObject","formatOptions","findGroupByIdx","groupIdx","ruleColl","dupRuleColl","unWireEvents","portals","popupElement","addRules","groups","importRules","initWrapper","innerWidth","isPropChange","summaryView","isRefreshed","notGroupRtl","readonly","enableReadonly","button","buttons","contentElem","textElem","styles","editElem","divElem","collapseElem","executeLocal","sortByDesc","sortBy","onChangeNotGroup","checkNotGroup","orgRule","onPropertyChanged","newProp","oldProp","properties","_i","properties_1","enablePersistence","setRules","Internationalization","isReadonly","preRender","getUniqueID","defaultLocale","StartsWith","DoesNotStartWith","EndsWith","DoesNotEndWith","Contains","DoesNotContain","NotLike","Like","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","Between","NotBetween","In","NotIn","Remove","SelectField","SelectOperator","DeleteRule","DeleteGroup","AddGroup","AddCondition","Edit","ValidationMessage","SummaryViewTitle","OtherFields","AND","OR","NOT","SelectValue","IsEmpty","IsNotEmpty","IsNull","IsNotNull","True","False","AddButton","CloneGroup","LockGroup","CloneRule","LockRule","UnlockRule","UnlockGroup","L10n","parser","stringOperator","dateOperator","booleanOperator","numberOperator","equal","notequal","greaterthan","greaterthanorequal","lessthan","in","notin","lessthanorequal","startswith","endswith","between","notbetween","isnull","isnotnull","isempty","isnotempty","notstartswith","notendswith","notcontains","sqlOperators","toUpperCase","render","stringOper","numberOper","concat","executeDataManager","take","initControl","renderComplete","initializeDrag","draggable","Draggable","dragTarget","distance","helper","dragStart","dragStartHandler","drag","dragHandler","dragStop","dragStopHandler","isReplaceDragEle","isPreventSelect","abort","isDragScroll","visualElement","cloneElement","currentStateTarget","offsetWidth","removeAttribute","draggedRule","isDragEventPrevent","body","dragElement","dragEventArgs","dragRuleID","dragGroupID","targetElem","rect","mouseY","distanceToBottom","threshold","getBoundingClientRect","distanceToTop","clientY","changedTouches","top","bottom","isPreventelem","dropEventArgs","groupId_2","groupId","targetGroup","tgrt","targetGrp","dropRuleID","dropGroupID","groupId_1","groupRule","ruleElems","ruleIds","dropInd","deleteRules","borderLineElem","templateCompiler","compile","error","wireEvents","wrapper","EventHandler","keyBoardHandler","addEventListener","windowResizeHandler","removeEventListener","isParent","groupLevel","deleteGroupSuccessCallBack","nextElem","removeString","remRule","ruleElemColl","isTemplateRendered","isPlatformTemplate","deleteRuleSuccessCallBack","clnruleElem","previousElem","nextElem_1","err","i_3","lockGrpTarget","dragElemnet","keyCode","code","preventDefault","clearTemplate","isNewGroup","count","andGroup","orGroup","currentRule","isValueEmpty","ruleCondtion","getRules","isValidRule","notValue","customObj","isQuestion","lockedRule","isArray","HTMLElement","deleteGroups","groupIdColl","getFilteredRecords","predicate","getPredicate","dataManagerQuery","where","ruleIdColl","getDataManagerQuery","pred","ruleValue","ignoreCase","isDateFilter","dateOperColl","pred2","and","or","matchCase","getDate","isTime","datePredicate","arrayPredicate","Predicate","localeString","cldrData","fieldParts","rootField","substring","setTime","date","isStart","setHours","startDate","endDate","nullValue","gte","currDate","setMinutes","setSeconds","isReset","renderGroup","tglBtnElem","renderRule","cloneElem","radioButtonObj","deleteGroupElems","addRuleGroupElems","removeRuleElems","elems","enableBtnGroup","isDateFunction","dateFunc","getSqlString","enableEscape","queryStr","sqlLocale","notPrefix","reduce","valueStr","custOper","ruleStr","ruleOpertor","ruleCondition","fieldName","isCustom","setRulesFromSql","sqlString","ruleModel","getRulesFromSql","sqlParser","processParser","allowEscape","getParameterizedSql","moduleLoader","loadedModules","notify","prop","onPropertyChange","sql","setParameterizedSql","sqlQuery","getParameterizedNamedSql","setParameterizedNamedSql","setMongoQuery","mongoQuery","mongoLocale","getMongoQuery","isCloneRule","parentGroupID","isCloneGroup","str","st","parseSqlStrings","matchValue","conditions","subOp","regexStr","test","RegExp","exec","lastPasrser","checkLiteral","checkNumberLiteral","regExValue","singleString","getSingleQuoteString","isClosed","checkCondition","combineSingleQuoteString","doubleString","getDoubleQuoteString","start","end","isBetween","parsedValue","tempMatchValue","tempStr","secParser","betweenParser","lastParser","betweenOperator","getOperator","localeOperator","=","!=","<",">","<=",">=","not in","not between","is empty","is null","is not null","is not empty","getTypeFromColumn","l","getLabelFromField","startIdx","lLen","grpCount","numVal","strVal","isLeftOpened","isNotOpened","subRules","pop","targetGrpId","lockItems","lockItem","disableRuleControls","newGroup","disableHeaderControls","updateLockItems","isDisabled","addElem","deleteGrpElem","lockElem","groupContElem","addCondition","addGroup","disableComponents","componentGetter","component","enabled","checkbox","radio","multiSelect","deleteElem","Event","Complex","NotifyPropertyChanges","options","groupCounter","Inject","CheckBoxSelection","QueryLibrary","parent","isDestroyed","on","queryLibrary","off","getMongoFromRules","mongoParser","getParameterSql","getNamedParameterSql","convertParamSqlToSql","convertNamedParamSqlToSql","convertMongoQuery","getOperatorFromMongoOperator","operatorValue","itVal","x","endsWith","mongoList","mongoRecursion","stringValue","betweenValue","fieldType","betweenOperatorArray","inOperatorArray","innerObject","secondKey","secondValue","innerFirstValue","innerSecondValue","notBetween","firstKey","firstValue","keyObj","_a","paramSql","paramValues","params","parts","normalSql","namedParamSql","paramName","paramValue","String","qbrule","qbRule","updateRuleValue","getParameterSQLVal","getNamedParameterSQLVal","isNamedParameter","updateValue","ruleVal","namedRuleVal","namedParameters","namedField","getNamedParameter","newField","currField"],"mappings":"kyBACQA,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,EAkD+BS,EAnDnCC,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,EAAsC,WAStC,OARAA,EAAWb,OAAOc,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,CAAC,GAE7C,IAAK,IAAIb,KADTY,EAAIG,UAAUF,GACOjB,OAAOW,UAAUN,eAAegB,KAAKL,EAAGZ,CAAC,IAC1DW,EAAEX,GAAKY,EAAEZ,IAEjB,OAAOW,IAEKO,MAAMb,KAAMU,SAAS,CACzC,EACII,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2H7B,EAAvH8B,EAAIT,UAAUC,OAAQS,EAAID,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAO3B,OAAO8B,yBAAyBL,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOI,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIV,EAAIO,EAAWJ,OAAS,EAAQ,GAALH,EAAQA,CAAC,IAAQnB,EAAI0B,EAAWP,MAAIY,GAAKD,EAAI,EAAI9B,EAAE+B,CAAC,EAAQ,EAAJD,EAAQ9B,EAAE2B,EAAQC,EAAKG,CAAC,EAAI/B,EAAE2B,EAAQC,CAAG,IAAMG,GAChJ,OAAW,EAAJD,GAASC,GAAK7B,OAAOiC,eAAeR,EAAQC,EAAKG,CAAC,EAAGA,CAChE,EAsBIK,GAAmC5B,EA6CrC6B,gBA5CE5B,EAAU2B,EAAS5B,CAAM,EAIzBiB,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,QAAS,KAAA,CAAM,EACrCY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,QAAS,KAAA,CAAM,EACrCY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,OAAQ,KAAA,CAAM,EACpCY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,SAAU,KAAA,CAAM,EACtCY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,YAAa,KAAA,CAAM,EACzCY,EAAW,CACPa,cACDF,EAAQvB,UAAW,eAAgB,KAAA,CAAM,EAC5CY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,WAAY,KAAA,CAAM,EACxCY,EAAW,CACPa,WAAS,CAAEC,WAAY,CAAA,EAAMC,IAAK,EAAGC,IAAKC,OAAOC,UAAW,GAC7DP,EAAQvB,UAAW,aAAc,KAAA,CAAM,EAC1CY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,SAAU,KAAA,CAAM,EACtCY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,OAAQ,KAAA,CAAM,EACpCY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,QAAS,KAAA,CAAM,EACrCY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,WAAY,KAAA,CAAM,EACxCY,EAAW,CACPa,WAAS,IAAI,GACdF,EAAQvB,UAAW,UAAW,KAAA,CAAM,EAChCuB,GA1CP,SAASA,IACL,OAAkB,OAAX5B,GAAmBA,EAAOgB,MAAMb,KAAMU,SAAS,GAAKV,KA+C/BH,EAiClC6B,gBAhCE5B,EAAUmC,EAAMpC,CAAM,EAItBiB,EAAW,CACPa,WAAS,IAAI,GACdM,EAAK/B,UAAW,YAAa,KAAA,CAAM,EACtCY,EAAW,CACPoB,aAAW,GAAID,CAAI,GACpBA,EAAK/B,UAAW,QAAS,KAAA,CAAM,EAClCY,EAAW,CACPa,WAAS,IAAI,GACdM,EAAK/B,UAAW,QAAS,KAAA,CAAM,EAClCY,EAAW,CACPa,WAAS,IAAI,GACdM,EAAK/B,UAAW,QAAS,KAAA,CAAM,EAClCY,EAAW,CACPa,WAAS,IAAI,GACdM,EAAK/B,UAAW,OAAQ,KAAA,CAAM,EACjCY,EAAW,CACPa,WAAS,IAAI,GACdM,EAAK/B,UAAW,WAAY,KAAA,CAAM,EACrCY,EAAW,CACPa,WAAS,IAAI,GACdM,EAAK/B,UAAW,QAAS,KAAA,CAAM,EAClCY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfM,EAAK/B,UAAW,MAAO,KAAA,CAAM,EAChCY,EAAW,CACPa,WAAS,IAAI,GACdM,EAAK/B,UAAW,WAAY,KAAA,CAAM,MA/BLL,EAAhCoC,EAgCOA,EA9BP,SAASA,IACL,OAAkB,OAAXpC,GAAmBA,EAAOgB,MAAMb,KAAMU,SAAS,GAAKV,KAmC9BH,EAqBnC6B,gBApBE5B,EAAUqC,EAAOtC,CAAM,EAIvBiB,EAAW,CACPa,WAAS,IAAI,GACdQ,EAAMjC,UAAW,sBAAuB,KAAA,CAAM,EACjDY,EAAW,CACPa,WAAS,IAAI,GACdQ,EAAMjC,UAAW,mBAAoB,KAAA,CAAM,EAC9CY,EAAW,CACPa,WAAS,IAAI,GACdQ,EAAMjC,UAAW,kBAAmB,KAAA,CAAM,EAC7CY,EAAW,CACPa,WAAS,IAAI,GACdQ,EAAMjC,UAAW,eAAgB,KAAA,CAAM,EAC1CY,EAAW,CACPa,WAAS,IAAI,GACdQ,EAAMjC,UAAW,mBAAoB,KAAA,CAAM,MAnBbL,EAAjCsC,EAoBOA,EAlBP,SAASA,IACL,OAAkB,OAAXtC,GAAmBA,EAAOgB,MAAMb,KAAMU,SAAS,GAAKV,KAuBxBH,EA2BzC6B,gBA1BE5B,EAAUsC,EAAavC,CAAM,EAI7BiB,EAAW,CACPa,WAAS,CAAA,CAAK,GACfS,EAAYlC,UAAW,YAAa,KAAA,CAAM,EAC7CY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfS,EAAYlC,UAAW,aAAc,KAAA,CAAM,EAC9CY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfS,EAAYlC,UAAW,WAAY,KAAA,CAAM,EAC5CY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfS,EAAYlC,UAAW,YAAa,KAAA,CAAM,EAC7CY,EAAW,CACPa,WAAS,CAAA,CAAI,GACdS,EAAYlC,UAAW,aAAc,KAAA,CAAM,EAC9CY,EAAW,CACPa,WAAS,CAAA,CAAI,GACdS,EAAYlC,UAAW,cAAe,KAAA,CAAM,EAC/CY,EAAW,CACPa,WAAS,CAAA,CAAI,GACdS,EAAYlC,UAAW,cAAe,KAAA,CAAM,MAzBRL,EAAvCuC,EA0BOA,EAxBP,SAASA,IACL,OAAkB,OAAXvC,GAAmBA,EAAOgB,MAAMb,KAAMU,SAAS,GAAKV,KA0BvBH,EA0qO1CwC,YAzqOEvC,EAAUwC,EAAczC,CAAM,EA6B9ByC,EAAapC,UAAUqC,eAAiB,WACpC,OAAOvC,KAAKwC,aAAa,CAAC,OAAO,GAOrCF,EAAapC,UAAUuC,MAAQ,WAC3BzC,KAAK0C,cAAgB,CAAA,EACrB,IAsCQC,EACAC,EACAC,EACAC,EAzCJC,EAAW/C,KAAKgD,QAAQC,cAAc,eAAe,EACrDC,EAAgBlD,KAAKgD,QAAQG,iBAAiB,iBAAiB,EAC/DC,EAAY,GACZC,EAAe,EACfC,EAAe,WAEf,IADA,IAAIC,EAAWC,KAAK3B,IAAIwB,EAAeD,EAAWF,EAAcvC,MAAM,EAC7DH,EAAI6C,EAAc7C,EAAI+C,EAAU/C,CAAC,GAAI,CAC1C,IASYiD,EATRT,EAAUE,EAAc1C,GAC5B,IACiD,CAAC,EAA1CwC,EAAQU,UAAUC,QAAQ,WAAW,GAEjCF,EADUG,eAAaZ,EAAS,SAAS,IAEzCS,EAAQI,UAGPb,EAAQc,eAAwE,CAAC,EAAxDd,EAAQc,cAAcJ,UAAUC,QAAQ,WAAW,IAE7EF,EADUG,eAAaZ,EAAQc,cAAe,SAAS,IAEvDL,EAAQI,UAIpB,MAAOE,GACHC,QAAQC,KAAK,4BAA6BF,CAAC,IAGnDV,EAAeE,GACIL,EAAcvC,QAC7BuD,sBAAsBZ,CAAY,GAwB1C,GArB2B,EAAvBJ,EAAcvC,QACd2C,IAEAP,EACAA,EAASoB,YAAc,IAGnBxB,EAAWyB,SAASC,yBACpBzB,EAAe5C,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,qBAAuB,EAClF3B,EAAY7C,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,kBAAoB,EAC5E1B,EAAU9C,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,gBAAkB,EAC5E5B,EAAa6B,YAAY5B,CAAS,EAClCD,EAAa6B,YAAY3B,CAAO,EAChCH,EAAS8B,YAAY7B,CAAY,EACjC5C,KAAKgD,QAAQyB,YAAY9B,CAAQ,EACjCI,EAAW/C,KAAKgD,QAAQC,cAAc,eAAe,GAErDjD,KAAK0E,gBAAkB1E,KAAK2E,SAC5B3E,KAAKgD,QAAQmB,YAAc,GAC3BnE,KAAK2E,OAAS,CAAA,GAEd3E,KAAK4E,mBAEL,IADA,IAAIC,EAAiB7E,KAAKgD,QAAQG,iBAAiB,cAAc,EACxD3C,EAAI,EAAGA,EAAIqE,EAAelE,OAAQH,CAAC,GACxCsE,cAAY,CAACD,EAAerE,IAAK,iBAAiB,EAGtDuC,GACAA,EAAS0B,YAAYzE,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,eAAiB,CAAC,EAEvFxE,KAAK+E,UAAU/E,KAAKgD,QAAQgC,GAAK,WAAa,CAAC,GAC/ChF,KAAKiF,cAAc,CAAEC,KAAM,CAAEC,UAAW,MAAOC,IAAK,CAAA,EAAOC,MAAO,KAAQ,CAAA,CAAI,EAC1EtC,GAAYA,EAASe,eACrB9D,KAAKsF,qBAAqBvC,EAASe,aAAa,GAGxDxB,EAAapC,UAAUqF,WAAa,WAChC,OAAOvF,KAAKgD,SAEhBV,EAAapC,UAAUsF,cAAgB,WACnC,MAAO,iBAEXlD,EAAapC,UAAUuF,gBAAkB,WACrC,IAAIC,EAAU,GAKd,OAJAA,EAAQC,KAAK,CACTC,OAAQ,gBACRC,KAAM,CAAC7F,MACV,EACM0F,GAEXpD,EAAapC,UAAU4F,kBAAoB,SAAUC,GACjD,OAAKC,oBAAkBD,CAAK,EAGrB,GAFI/F,KAAKiG,UAAYF,EAAMG,MAAMlG,KAAKiG,SAAS,EAAE,GAAKF,GAIjEzD,EAAapC,UAAUiG,WAAa,WAChC,IAAIC,EAAQpG,KACZ,GAAIA,KAAKqG,SAAS1F,OAAQ,CACtB,IAGI2F,EAGAC,EANAC,EAAejH,OAAOkH,KAAKzG,KAAKqG,SAAS,EAAE,EAC3CK,EAAO,GACPC,EAAe,GAEfC,EAAY,CAAA,EACZC,EAAW,CAAA,EAEXC,EAAgB,CAAElF,WAAY,CAAA,EAAMC,IAAK,EAAGC,IAAKC,OAAOC,WAC5D,GAAIhC,KAAK+G,QAAQpG,OACbX,KAAKgH,aACShH,KAAK+G,QACXE,QAAQ,SAAUC,GACtBd,EAAMe,qBAAqBD,EAAQ,SAAS,EACvCA,EAAOE,OACiC,CAAC,EAAtCZ,EAAa7C,QAAQuD,EAAOnB,KAAK,IACjCQ,EAAUH,EAAMC,SAAS,GAAGa,EAAOnB,OAEpB,YADfO,EAAS,OAAOC,GAEZM,EAAW,CAACQ,MAAMC,KAAKC,MAAMhB,CAAO,CAAC,EAErB,WAAXD,IACLO,EAAWN,aAAmBe,MAAQ,CAACD,MAAMd,EAAQiB,SAAS,EAC9DlB,EAAS,UAEbY,EAAOE,KAAOd,EACdO,EAAW,CAAA,GAEfP,EAAS,UAERY,EAAOO,aACRP,EAAOO,WAAaX,GAEpBI,EAAOQ,SACPd,EAAY,CAAA,EAGZM,EAAOQ,SAAWtB,EAAMuB,KAAKC,YAAY,aAAa,EAEtDjB,EAAahD,QAAQuD,EAAOQ,QAAQ,EAAI,GACxCf,EAAahB,KAAKuB,EAAOQ,QAAQ,GAEjC,CAACR,EAAOW,WACPzB,EAAM0B,UAA4D,CAAC,IAAjD1B,EAAM2B,gBAAgBpE,QAAQuD,EAAOnB,KAAK,KAC7DmB,EAAOW,UAAYzB,EAAM4B,gBAAgBd,EAAOE,KAAO,aAE9D,EACGR,IAAoC,EAAtBD,EAAahG,QAAcgG,EAAa,KAAO3G,KAAK2H,KAAKC,YAAY,aAAa,KAChG5H,KAAKiI,OAAS,CAAEC,KAAM,QAASC,MAAO,QAASC,QAAS,aAE5DpI,KAAKqI,2BAA2BrI,KAAK+G,OAAO,MAE3C,CACD,IAAK,IAAIvG,EAAI,EAAG8H,EAAM9B,EAAa7F,OAAQH,EAAI8H,EAAK9H,CAAC,GACjD+F,EAAUvG,KAAKqG,SAAS,GAAGG,EAAahG,IAEzB,YADf8F,EAAS,OAAOC,GAEZM,EAAW,CAACQ,MAAMC,KAAKC,MAAMhB,CAAO,CAAC,EAErB,WAAXD,GAAwB/G,OAAOkH,KAAKF,CAAO,EAAE5F,SAClDkG,EAAWN,aAAmBe,MAAQ,CAACD,MAAMd,EAAQiB,SAAS,EAC9DlB,EAAS,UAEbI,EAAKlG,GAAK,CACNuF,MAASS,EAAahG,GAAI+H,MAAS/B,EAAahG,GAAI4G,KAAQP,EAAW,OAASP,EAChFmB,WAAcX,GAElBD,EAAW,CAAA,EACXH,EAAKlG,GAAGqH,UAAY7H,KAAKgI,gBAAgBtB,EAAKlG,GAAG4G,KAAO,YACzC,WAAXd,GACAtG,KAAKwI,gBAAgBjC,EAASG,EAAKlG,EAAE,EAG7CR,KAAK+G,QAAUL,QAGd1G,KAAK+G,SAAW/G,KAAK+G,QAAQpG,SACP,YAAvBX,KAAKyI,eACLzI,KAAKgH,aAEThH,KAAK0I,0BACqB,GAAtB1I,KAAK+G,QAAQpG,OACbgI,WAAW,WACPvC,EAAMiC,2BAA2BjC,EAAMW,OAAO,GAC/C,CAAC,EAGJ/G,KAAKqI,2BAA2BrI,KAAK+G,OAAO,GAGpD/G,KAAK4I,QAAQ,YAAa,CAAExB,KAAM,YAAa,GAEnD9E,EAAapC,UAAUwI,wBAA0B,WAK1B,SAAfpF,IAEA,IADA,IAAIuF,EAASrF,KAAK3B,IAAIiH,EAHV,GAGsC/B,EAAQpG,MAAM,EACvDH,EAAIsI,EAAgBtI,EAAIqI,EAAQrI,CAAC,GAClCuG,EAAQvG,GAAGkH,UAAYX,EAAQvG,GAAGkH,WAAatB,EAAMuB,KAAKC,YAAY,aAAa,EACnFxB,EAAM6B,OAAS,CAAEC,KAAM,QAASC,MAAO,QAASC,QAAS,YAGzDrB,EAAQvG,GAAGkH,SAAWtB,EAAMuB,KAAKC,YAAY,aAAa,EAE9DxB,EAAMe,qBAAqBJ,EAAQvG,GAAI,SAAS,GAC5C,CAACuG,EAAQvG,GAAGqH,WACXzB,EAAM0B,UAAgE,CAAC,IAArD1B,EAAM2B,gBAAgBpE,QAAQoD,EAAQvG,GAAGuF,KAAK,KACjEgB,EAAQvG,GAAGqH,UAAYzB,EAAM4B,gBAAgBjB,EAAQvG,GAAG4G,KAAO,cAGvE0B,EAAiBD,GACI9B,EAAQpG,QACzBuD,sBAAsBZ,CAAY,EArB1C,IAAI8C,EAAQpG,KACR+G,EAAU/G,KAAK+G,QAEf+B,EAAiB,EAqBrBxF,KAEJhB,EAAapC,UAAUmI,2BAA6B,SAAUU,EAAKhD,GAC/D,GAAiB,GAAbgD,EAAIpI,OACJX,KAAKgJ,qBAAqBD,EAAKhD,CAAK,OAGxC,IAAK,IAAIvF,EAAI,EAAGA,EAAIuI,EAAIpI,OAAQH,CAAC,GACN,KAAnBR,KAAKiG,WAAoB8C,EAAIvI,GAAGuF,MAAMpC,QAAQ3D,KAAKiG,SAAS,EAAI,IAChE8C,EAAIvI,GAAGuF,MAAQA,EAAQA,EAAQ/F,KAAKiG,UAAY8C,EAAIvI,GAAGuF,MAAQgD,EAAIvI,GAAGuF,OAEtEgD,EAAIvI,GAAGqH,UACP7H,KAAKmH,qBAAqB4B,EAAIvI,EAAE,EAE3BuI,EAAIvI,GAAG4G,MAAwB,WAAhB2B,EAAIvI,GAAG4G,OAC3B2B,EAAIvI,GAAGqH,UAAY7H,KAAKgI,gBAAgBe,EAAIvI,GAAG4G,KAAO,aAEtD2B,EAAIvI,GAAGuG,UACPgC,EAAIvI,GAAG4G,KAAO,SACdpH,KAAKqI,2BAA2BU,EAAIvI,GAAGuG,QAASgC,EAAIvI,GAAGuF,KAAK,IAIxEzD,EAAapC,UAAU8I,qBAAuB,SAAUD,EAAKhD,GAIlC,SAAnBkD,IAEA,IADA,IAAIJ,EAASrF,KAAK3B,IAAIrB,EAAI,GAAI0I,CAAS,EAChC1I,EAAIqI,EAAQrI,CAAC,GACQ,KAApB4F,EAAMH,WAAoB8C,EAAIvI,GAAGuF,MAAMpC,QAAQyC,EAAMH,SAAS,EAAI,IAClE8C,EAAIvI,GAAGuF,MAAQA,EAAQA,EAAQK,EAAMH,UAAY8C,EAAIvI,GAAGuF,MAAQgD,EAAIvI,GAAGuF,OAEvEgD,EAAIvI,GAAGqH,UACPzB,EAAMe,qBAAqB4B,EAAIvI,EAAE,EAE5BuI,EAAIvI,GAAG4G,MAAwB,WAAhB2B,EAAIvI,GAAG4G,OAC3B2B,EAAIvI,GAAGqH,UAAYzB,EAAM4B,gBAAgBe,EAAIvI,GAAG4G,KAAO,aAG3D5G,EAAI0I,EACJhF,sBAAsB+E,CAAgB,EAGtCN,WAAW,WACP,IAAK,IAAIQ,EAAI,EAAGA,EAAID,EAAWC,CAAC,GACxBJ,EAAII,GAAGpC,UACPgC,EAAII,GAAG/B,KAAO,SACdhB,EAAMiC,2BAA2BU,EAAII,GAAGpC,QAASgC,EAAII,GAAGpD,KAAK,IAGtE,CAAC,EA3BZ,IAAIK,EAAQpG,KACRQ,EAAI,EACJ0I,EAAYH,EAAIpI,OA4BpBsI,KAEJ3G,EAAapC,UAAUsI,gBAAkB,SAAUL,EAAOY,EAAKK,GAE3DL,EAAIhC,QAAU,GADd,IAEIsC,EAAa9J,OAAOkH,KAAK0B,CAAK,EAKlCiB,EAAOA,GAAcpJ,KAAKqG,SAAS,GACnC,IAAK,IAAI7F,EAAI,EAAG8H,EAAMe,EAAW1I,OAAQH,EAAI8H,EAAK9H,CAAC,GAAI,CACnD,IAQA4G,EARIkC,EAAYP,EAAIhD,MAAMG,MAAM,GAAG,EAE/BqD,GADAH,EACSA,EAAKE,EAAUA,EAAU3I,OAAS,IAGlCX,KAAKqG,SAAS,GAAG0C,EAAIhD,QAHiBsD,EAAW7I,IAK1DgJ,EAAUJ,EAAKL,EAAIhD,MAAMG,MAAMlG,KAAKiG,SAAS,EAAE8C,EAAIhD,MAAMG,MAAMlG,KAAKiG,SAAS,EAAEtF,OAAS,IAK5F8I,EAAU,CAAE1D,MAHJgD,EAAIhD,MAAQ/F,KAAKiG,UAAYoD,EAAW7I,GAGtB+H,MAFlBc,EAAW7I,GAEqB4G,KADxCA,EAAiB,WAATA,EAHD,OAAOmC,IAGgBlC,MAAMC,KAAKC,MAAMgC,CAAM,CAAC,EAAcnC,EAAT,QAE9C,UAATA,IACAqC,EAAQ5B,UAAY7H,KAAKgI,gBAAgBZ,EAAO,aAEpD2B,EAAIhC,QAAQpB,KAAK8D,CAAO,EACX,UAATrC,GACApH,KAAKwI,gBAAgBe,EAAQE,EAASD,CAAO,IAIzDlH,EAAapC,UAAUiH,qBAAuB,SAAUD,EAAQwC,GAC5D,GAAIxC,EAAOW,UAAW,CACb7H,KAAK8H,UAAqB,YAAT4B,GAAuB1D,oBAAkBhG,KAAK+H,eAAe,GAC/E/H,KAAK+H,gBAAgBpC,KAAKuB,EAAOnB,KAAK,EAa1C,IAXA,IAUI4D,EAAS3J,KACJmJ,EAAI,EAAGA,EAAIjC,EAAOW,UAAUlH,OAAQwI,CAAC,GAC1CS,CAZU,SAAUT,GACpB,IAEQU,EAEAC,EAJJC,EAASxK,OAAOkH,KAAKS,EAAOW,UAAUsB,EAAE,EAAExF,QAAQ,aAAa,EACtD,CAAC,EAAVoG,IACIF,EAAa3C,EAAOW,UAAUsB,GAE9BW,GADAE,EAAWzK,OAAOkH,KAAKoD,CAAU,GACfI,IAAI,SAAUhJ,GAAO,OAAO4I,EAAW,GAAK5I,GAAO,EAAEiJ,KAAK,GAAG,EAAEhE,MAAM,GAAG,EAC1FiE,EAAWH,EAASrG,QAAQ,OAAO,EACvCgG,EAAO9B,UAAUiC,EAAOK,IAAaL,EAAOC,KAKxCZ,CAAC,IAIrB7G,EAAapC,UAAUkK,kBAAoB,SAAUC,GACjDrK,KAAKgB,OAASqJ,EAAMrJ,QAExBsB,EAAapC,UAAUoK,kBAAoB,SAAUD,GACjD,IA0EYE,EAiBAC,EAOQC,EAMJC,EAxGZtE,EAAQpG,KACRgB,EAASqJ,EAAMrJ,OAqBnB,GAnBAhB,KAAK0C,cAAgB,CAAA,EAKW,UAA5B,OAFA1B,EADmB,SAAnBA,EAAO2J,QACE3J,EAAO8C,cAET9C,GAAO0C,WAAwE,CAAC,EAA/C1C,EAAO0C,UAAUC,QAAQ,iBAAiB,IAC9EiH,EAAY,IAAIC,YAAU,CAAEC,SAAU,IAAMC,MAAO,EAAG,EACtD/K,KAAKgD,QAAQG,iBAAiB,oBAAoB,EAAExC,OAAS,GAC7DX,KAAKgL,gBAGLC,GADAC,EAAc9G,SAAS+G,eAAenL,KAAKgD,QAAQgC,GAAK,kBAAkB,GAChD/B,cAAc,iBAAiB,EAC7D2H,EAAUQ,QAAQ,mBAAoB,CAAEC,KAAM,cAAe,GAE7DC,EADgBtL,KAAKgD,QAAQC,cAAc,oBAAoB,GACrDsI,MAAMC,QAAU,OAC1BP,EAAY9G,YAAcnE,KAAKyL,gBAAgBzL,KAAKkF,IAAI,EACxDgG,EAAYK,MAAMC,QAAU,QAC5BP,EAAYM,MAAMG,OAAST,EAAYU,aAAe,MAEnC,WAAnB3K,EAAO2J,SAAoD,UAA5B,OAAO3J,EAAO0C,WAA0B1C,EAAO0C,UAAUC,QAAQ,aAAa,EAAI,EAAG,CACpH,IAiCgBiI,EAKAN,EAtCZV,EAAY,IAAIC,YAAU,CAAEC,SAAU,IAAMC,MAAO,EAAG,EAC1D,OAAQ,CAAA,GACJ,IAAgD,CAAC,EAA5C/J,EAAO0C,UAAUC,QAAQ,cAAc,EACxC3D,KAAK6L,aAAe7K,EACpBhB,KAAK8L,WAAW9K,CAAM,EACtB,MACJ,IAAoD,CAAC,EAAhDA,EAAO0C,UAAUC,QAAQ,kBAAkB,EAC5C3D,KAAK6L,aAAe7K,EACpBhB,KAAK+L,kBAAoB,CAAA,EACzB/L,KAAKgM,UAAUhL,CAAM,EACrB,MACJ,IAAmD,CAAC,EAA/CA,EAAO0C,UAAUC,QAAQ,iBAAiB,EAC3C3D,KAAK6L,aAAe7K,EACpBhB,KAAKiM,SAASjL,CAAM,EACpB,MACJ,IAAkD,CAAC,EAA9CA,EAAO0C,UAAUC,QAAQ,gBAAgB,EAC1C3D,KAAK6L,aAAe7K,EACpBhB,KAAKkM,UAAUlL,CAAM,EACrB,MACJ,IAAmD,CAAC,EAA/CA,EAAO0C,UAAUC,QAAQ,iBAAiB,EAC3C3D,KAAK6L,aAAe7K,EACpBhB,KAAKmM,iBAAmB,CAAA,EACxBnM,KAAKoM,WAAWC,UAAQrL,EAAQ,oBAAoB,CAAC,EACrD,MACJ,IAAiD,CAAC,EAA7CA,EAAO0C,UAAUC,QAAQ,eAAe,EACzC3D,KAAK6L,aAAe7K,EACpBhB,KAAKsM,YAAYD,UAAQrL,EAAQ,oBAAoB,CAAC,EACtD,MACJ,IAA+C,CAAC,EAA3CA,EAAO0C,UAAUC,QAAQ,aAAa,EACvCiH,EAAUQ,QAAQ,mBAAoB,CAAEC,KAAM,cAAe,EAC7DjH,SAAS+G,eAAenL,KAAKgD,QAAQgC,GAAK,kBAAkB,EAAEuG,MAAMC,QAAU,OAC1ExL,KAAKgD,QAAQG,iBAAiB,oBAAoB,EAAExC,OAAS,GAC7DX,KAAKuM,gBAAgB,CAAA,EAAOvM,KAAKgD,QAAShD,KAAKkF,KAAKC,UAAW,CAAA,EAAOnF,KAAKkF,KAAKE,GAAG,EAC/EwG,EAASY,SAAO,GAAIxM,KAAKkF,KAAM,GAAI,CAAA,CAAI,EAC3ClF,KAAKyM,cAAcb,CAAM,EACzB5L,KAAK0M,2BAIDpB,EADYtL,KAAKgD,QAAQC,cAAc,oBAAoB,GACjDE,iBAAiB,kBAAkB,EAAExC,OAAS,GACxDX,KAAK0M,wBAETpB,EAAUC,MAAMC,QAAU,eAKb,UAAnBxK,EAAO2J,SAA+E,CAAC,EAAzD3J,EAAO8C,cAAcJ,UAAUC,QAAQ,aAAa,GAC3D,UAA5B,OAAO3C,EAAO0C,WAAoE,CAAC,EAA3C1C,EAAO0C,UAAUC,QAAQ,aAAa,KAC3EX,EAAUqJ,UAAQrL,EAAQ,oBAAoB,EAC7ChB,KAAK0E,iBAEFgG,EAAc,KAAA,GADdH,EAAavJ,EAAO2L,aAAa,KAAK,GAGtCjC,EAActG,SAAS+G,eAAeZ,CAAU,EAAEoC,aAAa,OAAO,EAEjE3M,KAAK4M,0BAENlC,EADA1J,EAAO6L,UAAUC,SAAS,mBAAmB,EAC/B,KAET9L,EAAO6L,UAAUC,SAAS,oBAAoB,EACrC,MAGA9L,EAAOmD,aAG7B4I,EAAU/J,EAAQgC,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAClDwF,EAAQxK,KAAKiN,SAASF,CAAO,EAC7BtC,EAAc,KAAA,EACdzK,KAAK4E,qBACyC,CAAC,EAA3C5D,EAAO0C,UAAUC,QAAQ,aAAa,GAIlC8G,EAFkD,CAAC,GADnDyC,EAAalK,EAAQmK,uBAAuB,aAAa,EAAE,IAChDzJ,UAAUC,QAAQ,iBAAiB,GAC9CmB,cAAY,CAACoI,GAAa,iBAAiB,EAC7B,CAAA,IAGdE,WAAS,CAACF,GAAa,iBAAiB,EAC1B,CAAA,GAElBxC,EAAcF,EAAMrF,WAGpBsF,EAAcD,EAAMpF,KAG5BS,EAAO,CAAEkH,QAASA,EAASM,OAAQ,CAAA,EAAOjG,KAAM,YAAae,MAAOuC,EAAY4C,eAC5EtN,KAAK4E,qBACLiB,EAAO,CACHkH,QAASA,EAASM,OAAQ,CAAA,EAAOjG,KAAM,YAAae,MAAOuC,EAAY4C,cACvElI,IAAOqF,KAIdzK,KAAK0C,cAMN1C,KAAKuN,sBAAsB1H,EAAM7E,CAAM,EALvChB,KAAK4I,QAAQ,eAAgB/C,EAAM,SAAU2H,GACzCpH,EAAMmH,sBAAsBC,EAAoBxM,CAAM,EACzD,EAKLhB,KAAKgB,OAASA,IAGtBsB,EAAapC,UAAUqN,sBAAwB,SAAU1H,EAAM7E,GAC3D,IAEQ+L,EACAU,EACAvI,EAqCIwI,EACAC,EA1CR9H,GAAQ,CAACA,EAAKwH,SAEVN,GADA/J,EAAUqJ,UAAQrL,EAAQ,oBAAoB,GAC5BgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACtDyI,EAAczN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAC1CA,EAAOlF,KAAK6N,eAAe7K,CAAO,EAClChD,KAAK4M,yBASD5H,GAAKhC,EARLgD,oBAAkBqG,UAAQrL,EAAQ,mBAAmB,CAAC,GACtDgC,EAAQ6J,UAAUC,SAAS,mBAAmB,EACY,OAAhD9L,EAAO8C,cAAcgK,uBAC3B9M,EAAO8C,cAAcgK,uBAAyB9K,EAGxCqJ,UAAQrL,EAAQ,mBAAmB,GAEhCgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACjDhC,EAAQ6J,UAAUC,SAAS,kBAAkB,GAC7C5H,EAAOlF,KAAK+N,QAAQ/K,CAAO,GACtBmC,UAAYU,EAAKsC,MAEjBnF,EAAQ6J,UAAUC,SAAS,mBAAmB,KACnD5H,EAAOlF,KAAKiN,SAASjK,CAAO,GACvBmC,UAAYU,EAAKsC,OAEtBnI,KAAK4E,qBACLM,EAAKE,IAAMS,EAAKT,KAEfpF,KAAK0C,eACN1C,KAAK4I,QAAQ,SAAU,CAAEmE,QAASA,EAASiB,OAAQhJ,EAAIoC,KAAM,YAAae,MAAOjD,EAAKC,UAAW,IAIrGD,EAAKC,UAAYU,EAAKsC,MAClBnI,KAAK4E,qBACLM,EAAKE,IAAMS,EAAKT,KAEfpF,KAAK0C,eACN1C,KAAK4I,QAAQ,SAAU,CAAEmE,QAASA,EAAS3F,KAAM,YAAae,MAAOjD,EAAKC,UAAW,GAG7FnF,KAAKiO,YAAYR,EAAazN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAAG,WAAW,EACpElF,KAAK4M,2BACDc,EAAU1M,EAAO8C,cAAcb,cAAc,iBAAiB,EAC9D0K,EAAS3M,EAAO8C,cAAcb,cAAc,gBAAgB,EAC5DyK,IAAWC,IACQ,QAAf9H,EAAKsC,OACLuF,EAAQQ,QAAU,CAAA,EAClBP,EAAOO,QAAU,CAAA,GAEG,OAAfrI,EAAKsC,QACVwF,EAAOO,QAAU,CAAA,EACjBR,EAAQQ,QAAU,CAAA,KAMtC5L,EAAapC,UAAUiO,UAAY,SAAUnN,EAAQqJ,GAC9B,eAAfA,EAAMgB,KACFrL,KAAKoO,YAAYC,aAAerI,oBAAkBhG,KAAKoO,YAAYC,WAAW,GAC1ErO,KAAKgD,QAAQG,iBAAiB,oBAAoB,EAAExC,QAAUX,KAAKsO,cAAgB,EACnFlB,WAAS,CAAC/C,EAAMrH,QAAQC,cAAc,oBAAoB,EAAEa,eAAgB,eAAe,EAG3FgB,cAAY,CAACuF,EAAMrH,QAAQC,cAAc,oBAAoB,EAAEa,eAAgB,eAAe,EAE9F9D,KAAKuO,WACLnB,WAAS,CAAC/C,EAAMrH,QAAQC,cAAc,IAAI,EAAEa,eAAgB,OAAO,GAIvEsJ,WAAS,CAAC/C,EAAMrH,QAAQC,cAAc,oBAAoB,EAAEa,eAAgB,eAAe,EAG/B,CAAC,EAA5DuG,EAAMrH,QAAQwL,SAAS,GAAG9K,UAAUC,QAAQ,WAAW,EAC5D3D,KAAKyO,eAAepC,UAAQrL,EAAQ,oBAAoB,EAAG,EAAE,EAEI,CAAC,EAA7DqJ,EAAMrH,QAAQwL,SAAS,GAAG9K,UAAUC,QAAQ,YAAY,GAC7D3D,KAAKuM,gBAAgB,CAAA,EAAMF,UAAQrL,EAAQ,oBAAoB,EAAG,GAAI,CAAA,CAAI,GAGlFsB,EAAapC,UAAUwO,eAAiB,SAAU1N,EAAQkG,EAAQE,EAAMuH,EAAUC,EAAQ1J,GACtF,IAAI2J,EAgEIC,EA9DJC,EAAe/N,GAAUA,EAAOiC,cAAc,cAAc,EAEhE,GAAa,WAATmE,EACAyH,EAAWG,SAAO,IAAML,EAAU3N,CAAM,MAEvC,CAGD,IAFA6N,EAAW7O,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,oBAAsB,GACpEyK,aAAa,KAAMjO,EAAOgE,GAAK,QAAUhF,KAAKkP,aAAa,EAChElP,KAAKoO,YAAYe,WAAanP,KAAK+L,kBAAmB,CACtD,GAAI/L,KAAKoP,UAAY,EACjBL,EAAatK,YAAYoK,CAAQ,OAGjC,GAAI7O,KAAK4M,wBAAyB,CAG9B,IAFA,IAAIyC,EAAQ,CAAC,EACTC,EAAgBtP,KAAKoP,UAAY,EAC5B5O,EAAI,EAAGA,EAAI8O,GACZ9O,IAAMuO,EAAaP,SAAS7N,OADDH,CAAC,GAI5BuO,EAAaP,SAAShO,GAAGqM,UAAUC,SAAS,kBAAkB,IAC9DwC,CAAa,GACbD,CAAK,IAGbN,EAAaQ,aAAaV,EAAUE,EAAaP,SAASxO,KAAKoP,UAAYC,EAAQ,EAAE,OAGrFN,EAAaQ,aAAaV,EAAUE,EAAaP,SAASxO,KAAKoP,UAAY,EAAE,EAGrFpP,KAAK+L,kBAAoB,CAAA,OAGzBgD,EAAatK,YAAYoK,CAAQ,EAErC7O,KAAKkP,aAAa,GAwEtB,OAtEIhI,GAAUA,EAAOsI,cAAgBtK,GACjCW,EAAO,CAAE4J,YAAa,sBAAuBzB,OAAQa,EAAS7J,GAAI4J,OAAQA,EAAQ3G,OAAQjI,KAAKiI,OAAQ/C,KAAMA,GAC7GlF,KAAK4I,QAAQ,cAAe/C,CAAI,EAChC7F,KAAK0P,eAAiB1P,KAAK2P,eAAezI,EAAOsI,YAAY,EACzDI,EAAa5P,KAAKgD,QAAQgC,GAAKkC,EAAOnB,MAE1CF,EAAKoC,OAASjI,KAAKiI,OACnBpC,EAAKkB,QAAU/G,KAAK+G,QACD,KAAf7B,EAAKa,QACLb,EAAKa,MAAQmB,EAAOnB,OAExBF,EAAKgC,UAAY7H,KAAK6P,aAAa3K,EAAKa,KAAK,EAC7CF,EAAKiK,eAAiB,CAAE5H,KAAM,MAAOC,MAAO,SAExCnI,KAAK+P,UAELjB,EADW9O,KAAK0P,eAAe7J,EAAM7F,KAAM6O,EAAS7J,GAAI4K,CAAU,EAAE,IAE/DlM,WAAa,gBAClBmL,EAASpK,YAAYqK,CAAI,GAGpB9O,KAAKgQ,YAIVlB,EAFyC,KADrCmB,EAAejQ,KAAK0P,eAAe7J,EAAM7F,KAAM6O,EAAS7J,GAAI4K,CAAU,GACjD,GAAGM,SAAkBD,EAAa,GAAKA,EAAa,IAExEvM,WAAa,gBAClBmL,EAASpK,YAAYqK,CAAI,GAGpB9O,KAAKmQ,QAEVrB,EADW9O,KAAK0P,eAAe7J,EAAM7F,KAAM,WAAY4P,CAAU,EAGjEQ,SAAOtB,EAAMD,CAAQ,EACjBA,EAASL,SAAS7N,SAClBkO,EAASL,SAASK,EAASL,SAAS7N,OAAS,GAAG+C,WAAa,oBAKjEoL,EADW9O,KAAK0P,eAAe7J,EAAM7F,KAAM,WAAY4P,CAAU,EAAE,IAE9DlM,WAAa,gBAClBmL,EAASpK,YAAYqK,CAAI,KAI7BA,EAAO9O,KAAK6O,SAAS5L,cAAc,eAAe,EAAEoN,UAAU,CAAA,CAAI,EAClExB,EAASpK,YAAYqK,CAAI,GAEzB9O,KAAKoO,YAAYkC,WACjBxL,cAAY+J,EAAS1L,iBAAiB,iBAAiB,EAAG,eAAe,EAEzEnD,KAAKoO,YAAYmC,UACjBzL,cAAY+J,EAAS1L,iBAAiB,kBAAkB,EAAG,eAAe,EAE1EnD,KAAKoO,YAAYoC,YACjB1L,cAAY+J,EAAS1L,iBAAiB,kBAAkB,EAAG,eAAe,EAE1EnD,KAAKoO,YAAYe,WACjBrK,cAAY+J,EAAS1L,iBAAiB,mBAAmB,EAAG,eAAe,EAE3EnD,KAAKoO,YAAYqC,YACjB3L,cAAY+J,EAAS1L,iBAAiB,iBAAiB,EAAG,eAAe,EAEzEnD,KAAK0Q,kBACL5L,cAAY+J,EAAS1L,iBAAiB,iBAAiB,EAAG,UAAU,EAEpE+D,GAAUA,EAAOsI,cAAgBtK,GACjClF,KAAK2Q,uBAEF9B,GAEXvM,EAAapC,UAAUuO,eAAiB,SAAUzN,EAAQkE,EAAMgC,EAAQ0H,EAAQD,EAAUiC,GACtF,IAII/K,EAJAO,EAAQpG,KACPgB,IAGD6E,EAAO,CAAEkH,QAAS/L,EAAOgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAAGqI,OAAQ,CAAA,EAAOjG,KAAM,cACpFpH,KAAK0C,eAAkB1C,KAAK6Q,eAAkB7Q,KAAK8Q,eAMpD9Q,KAAK6Q,cAAgB,CAAA,EACrB7Q,KAAK+Q,uBAAuBlL,EAAM7E,EAAQkE,EAAMgC,EAAQ0H,EAAQD,EAAUiC,CAAc,GANxF5Q,KAAK4I,QAAQ,eAAgB/C,EAAM,SAAU2H,GACzCpH,EAAM2K,uBAAuBvD,EAAoBxM,EAAQkE,EAAMgC,EAAQ0H,EAAQD,EAAUiC,CAAc,EAC1G,IAOTtO,EAAapC,UAAU6Q,uBAAyB,SAAUlL,EAAMmL,EAAM9L,EAAM6D,EAAKkI,EAAKC,EAAKC,GACvF,IAaQtC,EAwHQuC,EACAC,EAsBAC,EA5JZ5F,EAAuD,CAAC,EAA9C1L,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,EAAU,QAAU,QAEvEuD,EAAUhC,GAAQA,EAAKa,MAAS/F,KAAKuR,UAAUrM,EAAKa,KAAK,EAAIgD,GAAY/I,KAAK+G,QAAQ,GAItFyK,EAAU,CAAEjJ,MAAS,GAAIxC,MAAS,GAAIqB,KAAQ,GAAIqK,SAAY,IA4KlE,GA3KK5L,EAAKwH,SACFnG,GAAUA,EAAOsI,cAAgBtK,EAAKa,OACtC/F,KAAK0R,eAAiBxK,EACtBW,EAAY7H,KAAK0R,eAAe7J,UAChC2J,EAAU,CAAEjJ,MAASrB,EAAOqB,MAAOxC,MAASmB,EAAOnB,MAAOqB,KAAQF,EAAOE,KAAMqK,SAAY5J,EAAU,GAAGM,OACpGwJ,EAAapS,OAAOkH,KAAKvB,CAAI,EAAEvE,OAASuE,EAAOsM,EAE/CI,EAAS,CAAEnC,YAAa,kBAAmBb,OAAQ,cAAeZ,QAAQa,EADnE7O,KAAK0O,eAAesC,EAAM9J,EAAQ+J,EAAKC,EAAK,QAASS,CAAU,GACa3M,GACnFiD,OAAQjI,KAAKiI,OAAQ/C,KAAMyM,GAC/B3R,KAAK4I,QAAQ,cAAegJ,CAAM,KAGlC/C,EAAW7O,KAAK0O,eAAesC,EAAM9J,EAAQ+J,EAAKC,EAAK,OAAO,GACrDjO,cAAc,iBAAiB,EAAEgM,aAAa,KAAMJ,EAAS7J,GAAK,YAAY,EACnFhC,EAAU6L,EAAS5L,cAAc,gBAAgB,EACJ,CAAC,EAA9CjD,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,GAA+B,aAArB3D,KAAK6R,aACxD7O,EAAQmB,YAAcnE,KAAK2H,KAAKC,YAAY,QAAQ,EACpDwF,WAAS,CAACpK,GAAU,QAAQ,EAC5BoK,WAAS,CAACpK,GAAU,WAAW,IAG/BoK,WAAS,CAACpK,GAAU,SAAS,EAC7BoK,WAAS,CAACpK,GAAU,YAAY,EAChCA,EAAQiM,aAAa,QAASjP,KAAK2H,KAAKC,YAAY,YAAY,CAAC,EAC7DkK,EAAc9R,KAAKsE,cAAc,OAAQ,CAAEC,MAAO,CAAEC,MAAO,oCAAsC,EACrGqK,EAAS5L,cAAc,gBAAgB,EAAEwB,YAAYqN,CAAW,GAE/D9R,KAAKoO,YAAYqC,YAClBzN,EAAQ6J,UAAUkF,IAAI,eAAe,GAGpB,aAArB/R,KAAK6R,aAA2E,CAAC,EAA9C7R,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,EAC5EkL,EAASnL,UAAY,mCAGrBmL,EAASnL,UAAY,qCAErBsO,EAAmBnD,EAASf,uBAC5B9N,KAAK4M,yBAEDqF,EADAC,EAAW,KAAA,GAIXF,EAFAA,GAAoBA,EAAiBnF,UAAUC,SAAS,mBAAmB,GAC3EmF,EAAgBD,EAAiB7O,iBAAiB,mBAAmB,GACpC8O,EAActR,OAAS,GAExDqR,IAAoBA,EAAiBnF,UAAUC,SAAS,kBAAkB,IAC1EoF,EAAWlS,KAAK+N,QAAQiE,CAAgB,GAExChS,KAAK0E,gBAAkBsN,GAAoBE,EAC3ClS,KAAKmS,iBAAiBH,EAAkB,CAAA,EAAOE,EAAS/M,UAAW+M,EAAUF,EAAiBhN,EAAE,EAE3FgB,oBAAkBgM,CAAgB,GAAKnD,EAAS7J,KAAOhF,KAAKgD,QAAQgC,GAAK,mBAE1EwF,EADQqE,EAASxC,QAAQ,oBAAoB,IACpC7B,EAAMsD,wBAEXsE,GAAoBC,EADT7H,EAAMsD,wBACY3K,iBAAiB,mBAAmB,GAEjEkP,EADAA,EAASxF,UAAUC,SAAS,mBAAmB,EACpCsF,EAAkBA,EAAkBzR,OAAS,GAExD0R,GAASxF,UAAUC,SAAS,kBAAkB,IAC1CwF,EAAatS,KAAK+N,QAAQsE,CAAQ,EACtCrS,KAAKmS,iBAAiBE,EAAU,CAAA,EAAOC,EAAWnN,UAAWmN,EAAYD,EAASrN,GAAI,CAAA,CAAI,IAI9FhF,KAAKmS,iBAAiBtD,EAAU,CAAA,EAAO3J,EAAKC,UAAWD,EAAM2J,EAAS7J,GAAI,CAAA,CAAI,IAKlFgN,GAA6E,CAAC,EAA1DA,EAAiBtO,UAAUC,QAAQ,kBAAkB,IACrEkL,EAASnL,UAAUC,QAAQ,eAAe,EAAI,IAC9CkL,EAASnL,WAAa,kBAEtBsO,EAAiBtO,UAAUC,QAAQ,oBAAoB,EAAI,KAC3DqO,EAAiBtO,WAAa,uBAItCsO,GAA8E,CAAC,EAA3DA,EAAiBtO,UAAUC,QAAQ,mBAAmB,GAC1EkL,EAASnL,UAAUC,QAAQ,iBAAiB,EAAI,IAChDkL,EAASnL,WAAa,oBAErB1D,KAAK0C,eACN1C,KAAKuS,gBAAgBvB,EAAM9L,EAAMsM,EAASL,EAASD,EAAKlR,CAAAA,CAAAA,KAAK4M,yBAAiC,IAAI,EAEjG1F,GAAsBA,EAAOsI,cAAkBtK,EAAKa,QAC9B,YAAnB/F,KAAKwS,WAEDnB,EADAD,EAAW,KAAA,EAGXC,EADArR,KAAKiG,WAAaf,EAAKa,OAGlB/F,KAAKyS,iBAICzS,KAAK0C,cAAgB1C,KAAK8F,kBAAkBZ,EAAKa,KAAK,EAAIb,EAAKa,MAE9EqL,EAAW,CACPsB,WAAY1S,KAAK+G,QACjBkB,OAAQjI,KAAKiI,OAAQ0K,YAAa3S,KAAK2H,KAAKC,YAAY,aAAa,EACrEgL,YAAqC,EAAtB5S,KAAK+G,QAAQpG,OAAc+K,EAAS,OAASmH,MAAO7S,KAAK8S,WAAWC,KAAK/S,KAAM6O,EAAS7J,GAAK,YAAY,EACxHgO,OAAQhT,KAAKiT,YAAYF,KAAK/S,IAAI,EAAGmI,MAAOjD,EAAOmM,EAAW,KAAM6B,KAAMlT,KAAKmT,UAAUJ,KAAK/S,KAAM,CAAA,CAAI,EAAGoT,SAAU,mBAErHpT,KAAKqT,aACLjC,EAAWhR,EAAS,GAAIgR,EAAUpR,KAAKqT,UAAU,GAIjD/B,EApBJ,KAkBAgC,EAAe,IAAIC,eAAanC,CAAQ,GAC3BoC,SAAS,IAAM3E,EAAS7J,GAAK,YAAY,EAGlDsM,EADAtR,KAAKiG,WAAaf,EAAKa,OAId/F,KAAK0C,cAAgB1C,KAAK8F,kBAAkBZ,EAAKa,KAAK,EAC3DuN,EAAanL,MAErBnI,KAAK0R,eAAiB4B,EAAaG,eAAenC,CAAM,EACpD/R,OAAOkH,KAAKvB,CAAI,EAAEvE,QAClBX,KAAK0T,WAAWxO,EAAM,CAClBlC,QAASsQ,EAAatQ,QAAS2Q,SAAU3T,KAAK0R,eACjD,IAKU1R,KAAK0C,cAAhB2O,EAAgCnM,EAAKa,MACzC/F,KAAK4T,oBAAsBpH,SAAO,GAAIxM,KAAK+G,QAAS,GAAI,EAFpDqK,EAAW,KAAA,EAE6C,EAC5DpR,KAAK6T,qBAAqB7T,KAAK4T,mBAAmB,EAClDxC,EAAW,CACPnJ,OAAQ,CAAEyK,WAAY1S,KAAK4T,oBACvBzL,MAAO,QAASD,KAAM,QAAS4L,MAAO,UAAWC,SAAU,WAAYC,WAAY,cACvFrB,YAAa3S,KAAK2H,KAAKC,YAAY,aAAa,EAAGqM,gBAAiB,CAAA,EACpErB,YAAqC,EAAtB5S,KAAK+G,QAAQpG,OAAc+K,EAAS,OAASwI,aAAc,CAAA,EAC1ElB,OAAQhT,KAAKiT,YAAYF,KAAK/S,IAAI,EAAGmI,MAAQnC,oBAAkBqL,CAAQ,EAAiB,KAAb,CAACA,GAC5E6B,KAAMlT,KAAKmT,UAAUJ,KAAK/S,KAAM,CAAA,CAAK,EAAGmU,aAAc,CAAEC,SAAU,SAClEhB,SAAU,WAAYiB,UAAWrU,KAAKsU,sBAAsBvB,KAAK/S,IAAI,EAAG6S,MAAO7S,KAAKuU,kBAAkBxB,KAAK/S,IAAI,GAE/GA,KAAKqT,aACLjC,EAAWhR,EAAS,GAAIgR,EAAUpR,KAAKqT,UAAU,IAEjDmB,EAAe,IAAIC,eAAarD,CAAQ,GAC/BoC,SAAS,IAAM3E,EAAS7J,GAAK,YAAY,EACjDgB,oBAAkBwO,EAAarM,KAAK,IACjCA,EAAQnI,KAAK0U,mBAAmBF,EAAarM,MAAM,EAAE,EACzDqM,EAAaxR,QAAQmF,MAAQA,GAG7BmJ,EAAUtL,oBAAkBd,EAAKa,KAAK,EACDyO,EAAarM,MAAlDnI,KAAK8F,kBAAkBZ,EAAKa,KAAK,EACrC/F,KAAK0R,eAAiB1R,KAAKuR,UAAUD,CAAM,EACvC/R,OAAOkH,KAAKvB,CAAI,EAAEvE,QAClBX,KAAK0T,WAAWxO,EAAM,CAClBlC,QAASwR,EAAaxR,QAAS2Q,SAAU3T,KAAK0R,eACjD,IAIb1D,EAASa,EAAS7J,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAClDE,GAAQA,EAAKyP,WACTC,EAAiB/F,EAAS5L,cAAc,kBAAkB,EAC9DjD,KAAKiM,SAAS2I,CAAc,GAE3B5U,KAAK0C,gBAAkB1C,KAAK8Q,eAC7B9Q,KAAK4I,QAAQ,SAAU,CAAEmE,QAASiE,EAAKhM,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAAGgJ,OAAQA,EAAQ5G,KAAM,aAAc,EAGtHpH,KAAK4M,yBAA2B5G,oBAAkBd,EAAKC,SAAS,GAAK6I,IACrE9I,EAAOlF,KAAK+N,QAAQC,CAAM,GAE1BhO,KAAK4M,wBAAyB,CAG9B,IAFA,IAiBQpC,EAQQ0H,EAzBZG,EAAWxD,EAASf,uBACpBmE,EAAgB,KAAA,EACbI,GAAY,CAACA,EAASxF,UAAUC,SAAS,kBAAkB,GAAG,CACjE,GAAIuF,EAASxF,UAAUC,SAAS,mBAAmB,EAAG,CAElDuF,GADAJ,EAAgBI,EAASlP,iBAAiB,mBAAmB,GACpC8O,EAActR,OAAS,GAChD,MAEJ0R,EAAWA,EAASvE,uBAEpB9N,KAAK0E,gBAAkB2N,GACnBH,EAAWlS,KAAK+N,QAAQsE,CAAQ,EAChCwC,EAAS,CAAEpF,YAAa,uBAAwBzB,OAAQqE,EAASrN,GAAIG,UAAW+M,EAAS/M,UACzF2P,aAAc9U,CAAAA,CAAAA,KAAK4E,oBAA4BmQ,KAAAA,GACnD/U,KAAK4I,QAAQ,cAAeiM,CAAM,GAE7B7O,oBAAkBqM,CAAQ,GAAKxD,EAAS7J,KAAOhF,KAAKgD,QAAQgC,GAAK,kBAElEwF,EADQqE,EAASxC,QAAQ,oBAAoB,IACpC7B,EAAMsD,wBAA0BtD,EAAMsD,uBAAuBA,yBAIlEkH,GAHAA,EAAaxK,EAAMsD,uBAAuBA,wBAC/BjB,UAAUC,SAAS,mBAAmB,GAC7CmI,EAAkBD,EAAW7R,iBAAiB,mBAAmB,GACxC8R,EAAgBtU,OAAS,GAEtDqU,GAAWnI,UAAUC,SAAS,kBAAkB,IAC5CoF,EAAWlS,KAAK+N,QAAQiH,CAAU,EAClCE,EAAS,CAAEzF,YAAa,uBAAwBzB,OAAQgH,EAAWhQ,GACnEG,UAAW+M,EAAS/M,UAAW2P,aAAc9U,CAAAA,CAAAA,KAAK4E,oBAA4BmQ,KAAAA,GAClF/U,KAAK4I,QAAQ,cAAesM,CAAM,GAI9ClV,KAAKmV,kBAAkBtG,CAAQ,IAGvCvM,EAAapC,UAAUoU,sBAAwB,SAAUzO,GACrD,IAAIO,EAAQpG,KAERoV,EAAQpV,KAERqV,EAAaxP,EAAKwE,MAAMgL,WAG5BC,GAFkBD,EAAWxI,UAAUC,SAAS,cAAc,EAChCuI,EAAWvR,cAAcb,cAAc,YAAY,EAAIoS,GAC9DrQ,GAAGkB,MAAM,YAAY,EAAE,GAC1C2I,EAAWzK,SAAS+G,eAAemK,CAAU,EAE7CC,GADJvV,KAAKwV,OAAS5R,eAAaiL,EAAS5L,cAAc,sBAAsB,EAAG,cAAc,EAClEuJ,SAAO,GAAIxM,KAAK+G,QAAS,GAAI,CAAA,CAAI,GACxDlB,EAAKwH,OAAS,CAAA,EACI,KAAdxH,EAAKqC,KACLlI,KAAKyV,iBAAiBF,CAAgB,GAGlCG,EAAoBH,EACnBtL,IAAI,SAAUb,GAAQ,OAAOhD,EAAMuP,kBAAkB9P,EAAKqC,KAAMkB,CAAI,EAAI,EACxEwM,OAAO,SAAUC,GAAiB,OAAyB,OAAlBA,EAAyB,EACvE7V,KAAKyV,iBAAiBC,CAAiB,EACvC/M,WAAW,WACF3C,oBAAkBoP,EAAMI,MAAM,GAAMxP,oBAAkBoP,EAAMI,OAAOM,OAAO,GAC3EV,EAAMI,OAAOM,QAAQC,aAE1B,GAAG,IAGdzT,EAAapC,UAAUuV,iBAAmB,SAAUrM,GAChDpJ,KAAK6T,qBAAqBzK,CAAI,EAC9BpJ,KAAKwV,OAAOM,QAAQ7N,OAAS,CACzByK,WAAYtJ,EACZjB,MAAO,QACPD,KAAM,QACN4L,MAAO,UACPC,SAAU,YAEd/T,KAAKwV,OAAOM,QAAQE,WAExB1T,EAAapC,UAAUyV,kBAAoB,SAAUxN,EAAO8N,GACxD,IAKIC,EALA9P,EAAQpG,KACRwO,EAAWyH,EAAKjW,KAAKwV,OAAOvN,OAAO6L,OACvC,OAAKtF,GAGD0H,EAAkB1H,EACjBvE,IAAI,SAAU6J,GAAS,OAAO1N,EAAMuP,kBAAkBxN,EAAO2L,CAAK,EAAI,EACtE8B,OAAO,SAAUC,GAAiB,OAAyB,OAAlBA,EAAyB,GACnDlV,QAChBsV,EAAKjW,KAAKwV,OAAOvN,OAAO6L,OAASoC,EAC1BD,IAGPA,EAAKjW,KAAKwV,OAAOvN,OAAO6L,OAAStF,EAC1BxO,KAAKmW,cAAchO,EAAO8N,CAAI,EAAIA,EAAO,MAXzCjW,KAAKmW,cAAchO,EAAO8N,CAAI,EAAIA,EAAO,MAcxD3T,EAAapC,UAAUiW,cAAgB,SAAUhO,EAAO8N,GAChDG,EAAaH,EAAKjW,KAAKwV,OAAOvN,OAAOC,MAAMoF,cAE/C,OADAnF,EAAQA,EAAQA,EAAMmF,cAAgB,GACD,CAAC,IAA/B8I,EAAWzS,QAAQwE,CAAK,GAEnC7F,EAAapC,UAAUqU,kBAAoB,WACnCvU,KAAKwV,QACLxV,KAAKyV,iBAAiBjJ,SAAO,GAAIxM,KAAK+G,QAAS,GAAI,CAAA,CAAI,CAAC,EAE5D/G,KAAKwV,OAAS,MAElBlT,EAAapC,UAAU2T,qBAAuB,SAAU9M,GACpD,IAAK,IAAIvG,EAAI,EAAGA,EAAIuG,EAAQpG,OAAQH,CAAC,GACgB,WAA7CuG,EAAQsP,SAAS7V,EAAE8V,WAAY,EAAE,GAAGlP,MAEhCpH,KAAKgQ,WAAajJ,EAAQsP,SAAS7V,EAAE8V,WAAY,EAAE,GAAGC,UACtD,OAAOxP,EAAQsP,SAAS7V,EAAE8V,WAAY,EAAE,GAAGC,SAE/CxP,EAAQsP,SAAS7V,EAAE8V,WAAY,EAAE,GAAGtC,WAAa,CAAA,EACjDhU,KAAK6T,qBAAqB9M,EAAQsP,SAAS7V,EAAE8V,WAAY,EAAE,GAAGvP,OAAO,GAGhE/G,KAAKgQ,WAAajJ,EAAQsP,SAAS7V,EAAE8V,WAAY,EAAE,GAAGC,UAC3D,OAAOxP,EAAQsP,SAAS7V,EAAE8V,WAAY,EAAE,GAAGC,UAIvDjU,EAAapC,UAAUqS,gBAAkB,SAAUvR,EAAQkE,EAAMsM,EAASZ,EAAgBM,EAAKsF,GAC3F,IACInH,EAAQ,EAGZ,GAAIuB,EAAgB,CAIhB,IAHA/B,EAAWG,SAAO,IAAMkC,EAAKlQ,CAAM,EACnCsK,EAAYe,UAAQrL,EAAQ,oBAAoB,EAChDqE,EAAQrF,KAAK6N,eAAevC,CAAS,EAC9BuD,GAAgD,OAApCA,EAASf,wBAAiC,CAEzD,IADAe,EAAWA,EAASf,uBAChB2I,EAA0BzW,KAAK4M,0BAA6B,CAAC5M,KAAK0E,gBAAkB,CAACmK,EAAShC,UAAUC,SAAS,aAAa,GAC7H9M,KAAK0E,iBAAmBmK,EAAShC,UAAUC,SAAS,kBAAkB,GACnE+B,EAAShC,UAAUC,SAAS,mBAAmB,IAClD9M,KAAK4M,yBAA2B6J,CAAAA,GACjCpH,CAAK,GAGbhK,EAAMA,MAAMgK,GAASnK,MAEpB,CAID,IAHAoG,EAAYe,UAAQrL,EAAQ,oBAAoB,EAChDqE,EAAQrF,KAAK6N,eAAevC,CAAS,EAEjCoL,EAASxR,EAAKwR,OACdnX,OAAOkH,KAAKvB,CAAI,EAAEvE,OACdX,KAAKoP,UAAY,GACjB/J,EAAMA,MAAMM,KAAK,CACbI,MAASb,EAAKa,MAAOqB,KAAQlC,EAAKkC,KAAMmB,MAASrD,EAAKqD,MAAOkJ,SAAYvM,EAAKuM,SAAUtJ,MAAOjD,EAAKiD,MACvG,EACGuO,IAEArR,EAAMA,MAAMA,EAAMA,MAAM1E,OAAS,GAAG+V,OAASA,GAE7C1W,KAAK4M,0BACLvH,EAAMA,MAAMA,EAAMA,MAAM1E,OAAS,GAAGwE,UAAYD,EAAKC,WAA6BqM,EAAQrM,aAI9FE,EAAMA,MAAMsR,OAAO3W,KAAKoP,UAAY,EAAG,EAAG,CACtCrJ,MAASb,EAAKa,MAAOqB,KAAQlC,EAAKkC,KAAMmB,MAASrD,EAAKqD,MAAOkJ,SAAYvM,EAAKuM,SAAUtJ,MAAOjD,EAAKiD,MACvG,EACGuO,IAEArR,EAAMA,MAAMrF,KAAKoP,UAAY,GAAGsH,OAASA,GAEzC1W,KAAK4M,0BACLvH,EAAMA,MAAMrF,KAAKoP,UAAY,GAAGjK,UAAYD,EAAKC,WAA6BqM,EAAQrM,aAK1FuR,IAEAlF,EAAQkF,OAASA,GAEjB1W,KAAKyS,kBACLvN,EAAKa,MAAQyL,EAAQzL,MAAQ/F,KAAKkF,KAAKG,MAAM,GAAGU,OAEpDV,EAAMA,MAAMM,KAAK6L,CAAO,GAGhCxR,KAAKsF,qBAAqBtE,EAAQqE,EAAOmR,CAAc,GAE3DlU,EAAapC,UAAU0W,mBAAqB,SAAU1P,EAAQlE,GAC1D,IAIQ6T,EACAlI,EAWIzJ,EAhBRgC,GAAUA,EAAOsI,eAIbqH,EAAcxK,UAAQrJ,EAAS,oBAAoB,EACnD2L,EAAWtC,UAAQrJ,EAAS,mBAAmB,EAAEgC,GACjDhF,KAAK8W,gBAAkB9W,KAAK8W,eAAetH,eAC3CuH,SAAO/T,EAAQqJ,QAAQ,QAAUsC,EAAW,IAAI,EAAE1L,cAAc,eAAe,CAAC,EAChFjD,KAAKgX,gBAAgB,CAACrI,EAAS,GAE/BzH,GACI+P,EAAUjX,KAAK0R,eAAe7J,UAC9B3C,EAAO,CAAEa,MAAOmB,EAAOnB,MAAOwC,MAAOrB,EAAOqB,MAAOkJ,SAAUwF,EAAQ,GAAG9O,MAAOA,MAAO,IAC1FnI,KAAKyO,eAAeoI,EAAa3R,EAAMgC,EAAQ,SAAUyH,EAAU,CAAA,CAAI,GAIvE3O,KAAKyO,eAAeoI,EADhB3R,EAAO,CAAEa,MAAO,GAAIwC,MAAO,GAAIkJ,SAAU,GAAItJ,MAAO,IACjBjB,EAAQ,SAAUyH,EAAU,CAAA,CAAI,IAInFrM,EAAapC,UAAUgX,cAAgB,SAAUlU,GAC7C,IAAIS,EAAU,IAAI0T,UAAQ,CACtBC,QAASpX,KAAK2H,KAAKC,YAAY,mBAAmB,EAAGyP,SAAU,CAAA,EAC/DC,SAAU,eAAgBlE,SAAU,uBAAwBmE,WAAY,WACpE9T,EAAQI,WACT2T,WAAY,SAAU3R,GACjB4R,EAAsB5R,EAAK7C,QAAQC,cAAc,kBAAkB,EACnEwU,IACAA,EAAoBlM,MAAMC,QAAU,SAG/C,EACD/H,EAAQ+P,SAASxQ,CAAO,EACxBS,EAAQyP,KAAKlQ,CAAO,GAOxBV,EAAapC,UAAUwX,eAAiB,WACpC,IACIC,EADAC,EAAU,CAAA,EAEd,GAAI5X,KAAK6X,gBAaL,IAZA,IAAIC,EAAc,CAAC,SAAU,YAAa,UAAW,cACjDtX,EAAI,KAAA,EAEJuX,EAAY,KAAA,EACZC,EAAY,KAAA,EACZC,EAAW,GAEX5I,EAAQ,KAAA,EACR6I,EAAc,KAAA,EACdC,EAAW,KAAA,EACXjT,EAAO,KAAA,EACPkT,EAAcpY,KAAKgD,QAAQG,iBAAiB,mBAAmB,EAC9D3C,EAAI,EAAG8H,EAAM8P,EAAYzX,OAAQH,EAAI8H,EAAK9H,CAAC,GAAI,CAChD,IAAI6X,EAAe,KAAA,EACnB/M,EAAYe,UAAQ+L,EAAY5X,GAAI,oBAAoB,EACxD0E,EAAOlF,KAAK6N,eAAevC,CAAS,EACpC+D,EAAQ,EAiBR,GAhBA2I,EAAYG,EAAWC,EAAY5X,GACZ,iBAAnBR,KAAKwS,WACLmF,EAAkB/T,eAAawU,EAAY5X,GAAGyC,cAAc,qCAAqC,EAAG,cAAc,IAC3F0U,EAAgBxP,OAASwP,EAAgBxP,MAAMxH,SAClEX,KAAK0R,eAAiB1R,KAAKuR,UAAUoG,EAAgBxP,MAAM,EAAE,EAC7DkQ,EAAerY,KAAK0R,eAAejK,aAIvCyQ,EAActU,eAAawU,EAAY5X,GAAGyC,cAAc,qCAAqC,EAAG,cAAc,IAC3FiV,EAAY/P,QAC3BnI,KAAK0R,eAAiBwG,EAAYzE,eAAeyE,EAAY/P,KAAK,EAClEkQ,EAAe,CAACrS,oBAAkBkS,EAAY/P,KAAK,GAAKnI,KAAK0R,eAAejK,YAGpFsQ,EAAYI,EAASlV,cAAc,+BAA+B,EAC9DoV,GAAgBA,EAAazW,WAAY,CACzC,KAAOoW,GAAkD,OAArCA,EAAUlK,wBAAiC,CAE3D,IADAkK,EAAYA,EAAUlK,uBAClBwK,EAAoBtY,KAAK4M,0BAA6B,CAAC5M,KAAK0E,gBAAkB,CAACsT,EAAUnL,UAAUC,SAAS,aAAa,GACxH9M,KAAK0E,iBAAmBsT,EAAUnL,UAAUC,SAAS,kBAAkB,GAAKkL,EAAUnL,UAAUC,SAAS,mBAAmB,IAC5H9M,KAAK4M,yBAA2B0L,CAAAA,GACjCjJ,CAAK,GAab,GAVA0I,EAAYI,EAASlV,cAAc,6BAA6B,EAC3DiC,EAAKG,MAAMgK,GAAOoC,WACfsG,EAAUjU,cAAcJ,UAAUC,QAAQ,WAAW,EAAI,GAAKoU,EAAUrU,UAAUC,QAAQ,WAAW,EAAI,GACzG3D,KAAKkX,cAAca,EAAUjU,aAAa,EAE9C8T,EAAU,CAAA,GAEV1S,EAAKG,MAAMgK,GAAOlH,iBAAiBzI,QACnCuY,EAAW/S,EAAKG,MAAMgK,GAAOlH,OAE7B2P,EAAYnU,QAAQuB,EAAKG,MAAMgK,GAAOoC,QAAQ,EAAI,CAAC,GAClDzL,oBAAkBd,EAAKG,MAAMgK,GAAOlH,KAAK,GACX,SAA3BjD,EAAKG,MAAMgK,GAAOjI,MAAgD,KAA5BlC,EAAKG,MAAMgK,GAAOlH,OAA4C,OAA5BjD,EAAKG,MAAMgK,GAAOlH,OAC7FjD,EAAKG,MAAMgK,GAAOlH,iBAAiBzI,OAASuY,EAAStX,OAAS,EAAI,CACnE,IAAI4X,EAAUJ,EAAShV,iBAAiB,0BAA0B,EAC9D2U,EAAYnU,QAAQuB,EAAKG,MAAMgK,GAAOoC,QAAQ,EAAI,IAClDmG,EAAU,CAAA,GAEd,IAAK,IAAIzO,EAAI,EAAGqP,EAAOD,EAAQ5X,OAAQwI,EAAIqP,EAAMrP,CAAC,GAAI,CAClD,IAAInG,EAAUuV,EAAQpP,GAClB2F,EAAO,KAAA,EACiD,CAAC,EAAzD9L,EAAQc,cAAcJ,UAAUC,QAAQ,YAAY,GACpDmL,EAAOzC,UAAQrJ,EAAS,yBAAyB,GACxCU,UAAUC,QAAQ,WAAW,EAAI,GACtC3D,KAAKkX,cAAcpI,CAAI,EAGtByJ,EAAQpP,GAAGrF,cAAcJ,UAAUC,QAAQ,WAAW,EAAI,GAAK4U,EAAQpP,GAAGzF,UAAUC,QAAQ,WAAW,EAAI,GAChH3D,KAAKkX,cAAcqB,EAAQpP,GAAGrF,aAAa,EAE/CqF,CAAC,SAIJ,GAA+B,SAA3BjE,EAAKG,MAAMgK,GAAOjI,OAAgD,OAA5BlC,EAAKG,MAAMgK,GAAOlH,OAA0D,CAAC,EAAzCjD,EAAKG,MAAMgK,GAAOlH,MAAMxE,QAAQ,IAAI,GAAS,CACxH4U,EAAUJ,EAAShV,iBAAiB,0BAA0B,EAC9D2U,EAAYnU,QAAQuB,EAAKG,MAAMgK,GAAOoC,QAAQ,EAAI,IAClDmG,EAAU,CAAA,GAEd,IAASzO,EAAI,EAAGqP,EAAOD,EAAQ5X,OAAQwI,EAAIqP,EAAMrP,CAAC,GAC1CoP,EAAQpP,GAAGrF,cAAcJ,UAAUC,QAAQ,WAAW,EAAI,GAAK4U,EAAQpP,GAAGzF,UAAUC,QAAQ,WAAW,EAAI,IAAMqC,oBAAkBd,EAAKG,MAAMgK,GAAOlH,KAAK,GAAmC,MAA9BjD,EAAKG,MAAMgK,GAAOlH,MAAMgB,KACvLnJ,KAAKkX,cAAcqB,EAAQpP,GAAGrF,aAAa,QAKjDoU,GAAeA,EAAYlV,SAAWgD,oBAAkBkS,EAAY/P,KAAK,GAC9EwP,GAAmBA,EAAgB3U,UAAYgD,oBAAkB2R,EAAgBxP,KAAK,GACnFwP,EAAgBxP,MAAMxH,OAAS,MAC/BoX,EAAUjU,cAAcJ,UAAUC,QAAQ,WAAW,EAAI,GACzD3D,KAAKkX,cAAca,EAAUjU,aAAa,EAE9C8T,EAAU,CAAA,GAItB,OAAOA,GAEXtV,EAAapC,UAAUuY,iBAAmB,WACtCzY,KAAK+E,UAAY,GACjB,IAAIuG,EAAYtL,KAAKgD,QAAQC,cAAc,oBAAoB,EAC3DqI,IACAtL,KAAK+E,UAAUuG,EAAUtG,IAAM,CAAC,GAEhChF,KAAK0Y,aADK,CAAEC,aAAcrN,EAAWsN,MAAO,CAAC,GACxB,IAG7BtW,EAAapC,UAAUwY,aAAe,SAAUG,GAO5C,IANA,IACIC,EADAC,EAAWF,EAAIF,aAAa1V,cAAc,cAAc,EAAEuL,SAE1DlD,EAAYuN,EAAIF,aAEhBK,EAAOD,EAASpY,OAChBsY,EAAa,EACZzY,EAAI,EAAGA,EAAIwY,EAAMxY,CAAC,GAEoC,CAAC,GADxDsY,EAAYC,EAASvY,IACPkD,UAAUC,QAAQ,mBAAmB,IAC/CkV,EAAID,MAAMjT,KAAKsT,CAAU,EACzBjZ,KAAK+E,UAAU+T,EAAU9T,IAAM6T,EAAID,MAAMM,QACzCD,CAAU,GACVJ,EAAIF,aAAeG,EACnBD,EAAM7Y,KAAK0Y,aAAaG,CAAG,GAGnC,IAAI9J,EAAe1C,UAAQf,EAAW,cAAc,EAGpD,OAFAuN,EAAIF,aAAe5J,EAAe1C,UAAQ0C,EAAc,oBAAoB,EAAIzD,EAChFuN,EAAID,MAAQ5Y,KAAK+E,UAAU8T,EAAIF,aAAa3T,IAAIkU,QACzCL,GAEXvW,EAAapC,UAAUiZ,cAAgB,SAAUC,GAC7C,IACIC,EAIAC,EACAhO,EAAYtL,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,qBAAuB,EAC/E+U,EAAevZ,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,kBAAoB,EAC/EgV,EAAcxZ,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,gBAAkB,EAC5EiV,EAAYzZ,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,eAAiB,EA4D7E,OA3DA8G,EAAU7G,YAAY8U,CAAY,EAClCC,EAAY/U,YAAYgV,CAAS,EACjCnO,EAAU7G,YAAY+U,CAAW,EAC5BxZ,KAAK0E,iBAEFgV,EADA1Z,KAAK0Q,iBACS,yBAGA,kCAEdiJ,EAAkB3Z,KAAKsE,cAAc,OAAQ,CAC7CC,MAAO,CACHC,MAAOkV,EAAaE,aAAc,cAClCC,MAAO,eAEd,EACDN,EAAa9U,YAAYkV,CAAe,EACpCjW,EAAY1D,KAAK4M,yBAA2B,CAACwM,EAAc,oCAAsC,oBACrGU,EAAW9Z,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAOd,EAAWqW,KAAM,SAAW,EAC/E/Z,KAAK4M,yBACLkN,EAASjN,UAAUkF,IAAI,mBAAmB,EAE1C/R,KAAK4E,qBAEDyU,EADArZ,KAAK4M,wBACO5M,KAAKsE,cAAc,QAAS,CAAEC,MAAO,CAAE6C,KAAM,WAAY5C,MAAO,eAAiB,EAGjFxE,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAE6C,KAAM,SAAU5C,MAAO,eAAiB,EAEhGsV,EAASrV,YAAY4U,CAAS,GAElCA,EAAYrZ,KAAKsE,cAAc,QAAS,CAAEC,MAAO,CAAE6C,KAAM,QAAS5C,MAAO,iBAAkB2D,MAAO,OAAS,EAC3G2R,EAASrV,YAAY4U,CAAS,EAC9BW,EAAYha,KAAKsE,cAAc,QAAS,CACpCC,MAAO,CAAEC,MAAO,0CAChByV,UAAWja,KAAK2H,KAAKC,YAAY,KAAK,EACzC,EACDkS,EAASrV,YAAYuV,CAAS,EAC9BX,EAAYrZ,KAAKsE,cAAc,QAAS,CAAEC,MAAO,CAAE6C,KAAM,QAAS5C,MAAO,gBAAiB2D,MAAO,MAAQ,EACzG2R,EAASrV,YAAY4U,CAAS,EAC9BW,EAAYha,KAAKsE,cAAc,QAAS,CACpCC,MAAO,CAAEC,MAAO,yCAChByV,UAAWja,KAAK2H,KAAKC,YAAY,IAAI,EACxC,EACDkS,EAASrV,YAAYuV,CAAS,EAC9BT,EAAa9U,YAAYqV,CAAQ,EACjCI,EAAala,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,kBAAoB,EAIzE8U,EAHAtZ,KAAK4M,yBACL0M,EAAWtZ,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAE6C,KAAM,SAAU5C,MAAO,uBAAyB,EACnG0V,EAAWzV,YAAY6U,CAAQ,EACpBtZ,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAE6C,KAAM,SAAU5C,MAAO,mBAAqB,GAIpFxE,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAE6C,KAAM,SAAU5C,MAAO,aAAe,EACzF0V,EAAWzV,YAAY6U,CAAQ,EAEnCC,EAAa9U,YAAYyV,CAAU,GAEhC5O,GAEXhJ,EAAapC,UAAUsP,aAAe,WAClC,IAKIX,EAAW7O,KAAKsE,cAAc,KAAK,EACnCyT,EAAY/X,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,gBAAkB,EAC9E2T,EAAWnY,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,iBAAmB,EAEtEkV,EADA1Z,KAAK0Q,iBACS,yBAGA,kCAEdiJ,EAAkB3Z,KAAKsE,cAAc,OAAQ,CAC7CC,MAAO,CACHC,MAAOkV,EAAaE,aAAc,cAClCC,MAAO,eAEd,EAEGM,GADJpC,EAAUtT,YAAYkV,CAAe,EACpB3Z,KAAKsE,cAAc,QAAS,CAAEC,MAAO,CAAE6C,KAAM,OAAQ5C,MAAO,kBAAoB,GAoB7F4V,GAnBJjC,EAAS1T,YAAY0V,CAAU,EAC/BpC,EAAUtT,YAAY0T,CAAQ,EAC9BA,EAAWnY,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,mBAAqB,EAC5EuT,EAAUtT,YAAY0T,CAAQ,EAC9BA,EAAWnY,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,gBAAkB,EACzEuT,EAAUtT,YAAY0T,CAAQ,EAC9BA,EAAWnY,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,uBAAyB,EAE5E6V,EADAra,KAAKoO,YAAYe,UACF,uEAGA,qFAGfmL,EADAta,KAAKoO,YAAYmC,SACH,6EAGA,2FAEKvQ,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAEsV,MAAO7Z,KAAK2H,KAAKC,YAAY,WAAW,EAAGR,KAAM,SAAU5C,MAAO6V,GAAgB,GAC7IvI,EAAc9R,KAAKsE,cAAc,OAAQ,CAAEC,MAAO,CAAEC,MAAO,6BAA+B,EAE1F+V,GADJH,EAAiB3V,YAAYqN,CAAW,EACjB9R,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAEsV,MAAO7Z,KAAK2H,KAAKC,YAAY,UAAU,EAAGR,KAAM,SAAU5C,MAAO8V,GAAe,GAC/IxI,EAAc9R,KAAKsE,cAAc,OAAQ,CAAEC,MAAO,CAAEC,MAAO,+BAAiC,EAGxFgW,GAFJD,EAAiB9V,YAAYqN,CAAW,EACpC9R,KAAKoO,YAAYqC,YAAczK,oBAAkBhG,KAAKoO,YAAYqC,UAAU,EAClE,iDAGA,gEAEVgK,EAAaza,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAE6C,KAAM,SAAU5C,MAAOgW,GAAW,EAM3F,OALArC,EAAS1T,YAAY2V,CAAgB,EACrCjC,EAAS1T,YAAY8V,CAAgB,EACrCpC,EAAS1T,YAAYgW,CAAU,EAC/B1C,EAAUtT,YAAY0T,CAAQ,EAC9BtJ,EAASpK,YAAYsT,CAAS,EACvBlJ,GAEXvM,EAAapC,UAAUqM,gBAAkB,SAAUmO,EAAS1Z,EAAQmE,EAAWwV,EAAYvV,EAAKT,EAAQO,GACpG,IAAIkB,EAAQpG,KACR6F,EAAO,CAAEkH,QAAS/L,EAAOgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAAGqI,OAAQ,CAAA,EAAOjG,KAAM,eACpFpH,KAAK0C,eAAkB1C,KAAK6Q,eAAkB7Q,KAAK8Q,eAMpD9Q,KAAK6Q,cAAgB,CAAA,EACrB7Q,KAAK4a,gBAAgB/U,EAAM6U,EAAS1Z,EAAQmE,EAAWwV,EAAYvV,EAAKT,EAAQO,CAAI,GANpFlF,KAAK4I,QAAQ,eAAgB/C,EAAM,SAAU2H,GACzCpH,EAAMwU,gBAAgBpN,EAAoBkN,EAAS1Z,EAAQmE,EAAWwV,EAAYvV,EAAKT,EAAQO,CAAI,EACtG,GAOT5C,EAAapC,UAAU0a,gBAAkB,SAAU/U,EAAM6U,EAASG,EAAa1V,EAAWwV,EAAYvV,EAAKT,EAAQO,GAC/G,IAAIkB,EAAQpG,KACZ,GAAI,CAAC6F,EAAKwH,QAAWrN,KAAKgD,QAAQG,iBAAiB,oBAAoB,EAAExC,QAAUX,KAAKsO,cAAgB,CACpG,IAuOYwM,EAMAC,EASAC,EAtPRha,EAAS6Z,EACTI,EAAc,KAAA,EACdlO,EAAU,GAEVA,EADA/L,EAAO0C,UAAUC,QAAQ,mBAAmB,EAAI,EACtC3C,EAAOiC,cAAc,oBAAoB,GAAKjC,EAAOiC,cAAc,oBAAoB,EAAE+B,GAGzFhE,EAAOgE,GAKjBsG,GAHAtL,KAAK4M,0BACL5M,KAAKsL,UAAYtL,KAAKmZ,iBAEVnZ,KAAKsL,UAAU+E,UAAU,CAAA,CAAI,GAiC7C,GAhCA/E,EAAU2D,aAAa,KAAMjP,KAAKgD,QAAQgC,GAAK,SAAWhF,KAAKkb,cAAc,EACjD,IAAxBlb,KAAKkb,gBAAwBlb,KAAK0Q,kBAAoBpF,EAAUrI,cAAc,iBAAiB,IAC3FqI,GAAaA,EAAUkD,SAAS,IAChClD,EAAUkD,SAAS,GAAG3B,UAAUkF,IAAI,iBAAiB,EAEzD3E,WAAS,CAAC9B,EAAUrI,cAAc,iBAAiB,GAAI,UAAU,GAEjEjD,KAAK0E,iBACDC,GACA+V,EAAU,CAAA,EACVpP,EAAU2D,aAAa,KAAMjP,KAAKgD,QAAQgC,GAAK,SAAS,EACxDhF,KAAKmS,iBAAiB7G,EAAWlG,EAAKD,EAAWD,EAAM6H,CAAO,EAC9D/M,KAAKkb,eAAiB,GAGtBlb,KAAKmS,iBAAiB7G,EAAWlG,EAAKD,EAAWD,EAAM6H,CAAO,GAGtE/M,KAAKkb,cAAc,GACdlb,KAAK0E,iBACFyW,EAAa7P,EAAUrI,cAAc,iBAAiB,EACtDmY,EAAY9P,EAAUrI,cAAc,gBAAgB,EACpDoY,EAAa/P,EAAUrI,cAAc,qBAAqB,EAC1DqY,EAAYhQ,EAAUrI,cAAc,oBAAoB,EAC5DkY,EAAWlM,aAAa,KAAMjP,KAAKgD,QAAQgC,GAAK,OAAShF,KAAKub,UAAU,EACxEH,EAAUnM,aAAa,KAAMjP,KAAKgD,QAAQgC,GAAK,MAAQhF,KAAKub,UAAU,EACtEJ,EAAWlM,aAAa,OAAQjP,KAAKgD,QAAQgC,GAAK,OAAShF,KAAKub,UAAU,EAC1EH,EAAUnM,aAAa,OAAQjP,KAAKgD,QAAQgC,GAAK,OAAShF,KAAKub,UAAU,EACzEF,EAAWpM,aAAa,MAAOjP,KAAKgD,QAAQgC,GAAK,OAAShF,KAAKub,UAAU,EACzED,EAAUrM,aAAa,MAAOjP,KAAKgD,QAAQgC,GAAK,MAAQhF,KAAKub,UAAU,EACvEvb,KAAKub,UAAU,IAEfb,EAAS,CAgBT,IAfA,IAAIF,EAAU,KAAA,EAEVA,EADAxa,KAAKoO,YAAYoN,aAAexV,oBAAkBhG,KAAKoO,YAAYoN,WAAW,EACpE,gBAGA,8BAEdP,EAAcjb,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAE6C,KAAM,SAAU5C,MAAOgW,GAAW,EAKpFzB,GAJS,IAAI0C,SAAO,CAAEC,QAAS,wBAAyBtI,SAAU,kBAAmB,EAClFI,SAASyH,CAAW,EAC3BA,EAAYhM,aAAa,QAASjP,KAAK2H,KAAKC,YAAY,aAAa,CAAC,EACtE+T,eAAaV,EAAa,CAAEW,SAAU,eAAgB,EACvC5a,EAAOiC,cAAc,cAAc,GAC9C4Y,EAAa9C,EAASvK,SACtBsN,EAAS,EACJ3S,EAAI,EAAGqP,EAAOqD,EAAWlb,OAAQwI,EAAIqP,EAAMrP,CAAC,GACU,CAAC,EAAxD0S,EAAW1S,GAAGzF,UAAUC,QAAQ,mBAAmB,IACnDmY,GAAU,GAGlB,GAAI9b,KAAKoO,YAAYoC,YAAcxQ,KAAKmM,iBACpC,GAAInM,KAAK+b,aAAgBF,EAAWlb,OAAS,EACzCoY,EAAStU,YAAY6G,CAAS,EAC9BtL,KAAKgc,YAAc,CAAA,MAElB,CACD,GAAIhc,KAAK4M,wBAAyB,CAG9B,IAFA,IAAIyC,EAAQ,EACR4M,EAAiBjc,KAAK+b,WAAa,EAC9Bvb,EAAI,EAAGA,EAAIyb,EAAgBzb,CAAC,GAC7Bqb,EAAWrb,GAAGqM,UAAUC,SAAS,kBAAkB,IACnDmP,CAAc,GACd5M,CAAK,IAGD,EAARA,GACAA,CAAK,GAGTwM,EAAWK,EADDlc,KAAK+b,WAAa1M,EAAQ,GACpB8M,WAAW5M,aAAajE,EAAWuQ,EAAWK,EAAI,OAIlEL,EAAWK,EADDlc,KAAK+b,WAAa,GACZI,WAAW5M,aAAajE,EAAWuQ,EAAWK,EAAI,EAEtElc,KAAKoc,cAAgB,CAAA,OAIzBrD,EAAStU,YAAY6G,CAAS,EAElC,IAeQgP,EAQAxI,EASAuK,EAhCJzD,EAAQ5Y,KAAK+E,UAAU/D,EAAOgE,IAAIkU,MAAM,CAAC,EAC7CN,EAAMjT,KAAKmW,CAAM,EACjB9b,KAAK+E,UAAUuG,EAAUtG,IAAM4T,EACT,CAAC,EAAnB5Y,KAAK+b,YACL/b,KAAKyY,mBAEJzY,KAAK0C,gBACN1C,KAAKsc,aAAe,CAAA,EACpBtc,KAAKuc,UAAU,GAAIvb,EAAOgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,CAAC,EAC/DhF,KAAKsc,aAAe,CAAA,EAChB3B,GAAc3a,KAAKwc,oBACnBxc,KAAKyO,eAAenD,EAAW,EAAE,GAGpCtL,KAAK0E,iBACF4V,EAAc,GAEdA,EADAta,KAAKoO,YAAYoC,WACH,iEAGA,+EAEdiM,EAAezc,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAEsV,MAAO7Z,KAAK2H,KAAKC,YAAY,YAAY,EAAGR,KAAM,SAAU5C,MAAO8V,GAAe,EACzIxI,EAAc9R,KAAKsE,cAAc,OAAQ,CAAEC,MAAO,CAAEC,MAAO,6BAA+B,EAC9FiY,EAAahY,YAAYqN,CAAW,EACpCxG,EAAUrI,cAAc,iBAAiB,EAAEwB,YAAYgY,CAAY,EAE/DnC,EADAta,KAAKoO,YAAYkC,UACH,gEAGA,8EAEd+L,EAAcrc,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAEsV,MAAO7Z,KAAK2H,KAAKC,YAAY,WAAW,EAAGR,KAAM,SAAU5C,MAAO8V,GAAe,EACvIoC,EAAkB1c,KAAKsE,cAAc,OAAQ,CAAEC,MAAO,CAAEC,MAAO,+BAAiC,EACpG6X,EAAY5X,YAAYiY,CAAe,EACvCpR,EAAUrI,cAAc,iBAAiB,EAAEwB,YAAY4X,CAAW,EAClE/Q,EAAUrI,cAAc,iBAAiB,EAAEwB,YAAYwW,CAAW,QAIjEjb,KAAK0E,iBACF4V,EAAc,GAEdA,EADAta,KAAKoO,YAAYkC,UACH,gEAGA,8EAEd+L,EAAcrc,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAEsV,MAAO7Z,KAAK2H,KAAKC,YAAY,WAAW,EAAGR,KAAM,SAAU5C,MAAO8V,GAAe,EACvIxI,EAAc9R,KAAKsE,cAAc,OAAQ,CAAEC,MAAO,CAAEC,MAAO,+BAAiC,EAChG6X,EAAY5X,YAAYqN,CAAW,EACnCxG,EAAUrI,cAAc,iBAAiB,EAAEwB,YAAY4X,CAAW,GAEtErb,EAAOyD,YAAY6G,CAAS,EAC5BtL,KAAK+E,UAAUuG,EAAUtG,IAAM,CAAC,GAoBpC,GAlBIhF,KAAK4E,oBACA5E,CAAAA,KAAK0E,iBACFiY,EAAUrR,EAAUrI,cAAc,cAAc,GAGhDjD,KAAK4M,wBACI,IAAIgQ,WAAS,CAAErU,MAAOvI,KAAK2H,KAAKC,YAAY,KAAK,EAAGwL,SAAU,cAAe,EAG7E,IAAIqI,SAAO,CAAErE,QAASpX,KAAK2H,KAAKC,YAAY,KAAK,EAAGwL,SAAU,gBAAiB,GAErFI,SAASmJ,CAAO,EACvBrR,EAAUrI,cAAc,qBAAqB,EAAE4J,UAAUkF,IAAI,OAAO,EAChE/R,KAAK6c,cAAe7c,KAAK6c,YAAYzX,KACrCgI,WAAS,CAACuP,GAAU,iBAAiB,EAI7C3c,KAAK4M,yBAA2B,CAAC5M,KAAK0E,eAAgB,CAItD,IAHA,IAoBYiY,EAUIG,EA9BZpP,EAAUpC,EAAUrI,cAAc,iBAAiB,EACnD0K,EAASrC,EAAUrI,cAAc,gBAAgB,EACjD8Z,EAAWzR,EAAUrI,cAAc,cAAc,EAC5CzC,EAAI,EAAGA,EAAIuc,EAASC,WAAWrc,OAAQH,CAAC,GAC2C,QAApF8K,EAAUrI,cAAc,cAAc,EAAE+Z,WAAWxc,GAAG2D,YAAYmJ,eAC7DtN,KAAK4E,mBAINmY,EAASC,WAAWxc,GAAGqM,UAAUkF,IAAI,kBAAkB,EAI3DgL,EAASC,WAAWxc,GAAG+K,MAAMC,QAAU,OAG7BF,EAAUwC,yBAEpB9H,oBAAkBhG,KAAK0E,cAAc,IACrC4G,EAAUxH,cAAcyL,aAAavP,KAAKmZ,cAAc,CAAA,CAAI,EAAElW,cAAc,cAAc,EAAGqI,CAAS,GAElGqR,EADUrR,EAAUwC,uBAAuBkP,WAAW,IAC9CnQ,UAAUC,SAAS,aAAa,KACxC6P,EAAQpR,MAAMC,QAAU,QAG3BxL,KAAK0C,gBAEFua,GADAtE,EAAerN,EAAUwC,wBACC7K,cAAc,iBAAiB,EACzDia,EAAYvE,EAAa1V,cAAc,gBAAgB,EACtDyK,EAAQQ,SAAYP,EAAOO,QASvBlO,KAAK4M,0BACNc,EAAQQ,UACR+O,EAAW/O,QAAU,CAAA,GAErBP,EAAOO,WACPgP,EAAUhP,QAAU,CAAA,IAbpB4O,EAAcxR,EAAU6R,qBACTL,EAAYjQ,UAAUC,SAAS,aAAa,IAC3DY,EAAUoP,EAAY7Z,cAAc,iBAAiB,EACrD0K,EAASmP,EAAY7Z,cAAc,gBAAgB,EACnDga,EAAW/O,QAAUR,EAAQQ,QAC7BgP,EAAUhP,QAAUP,EAAOO,WAc/ClO,KAAK6c,YAAc,KACf7c,KAAK0E,gBACD0Y,EAAS,CACT3N,YAAa,yBAA0BzB,OAAQ1C,EAAUtG,GAAIG,UAAWA,EACxE2P,aAAc9U,KAAK4E,mBAAqBQ,EAAM2P,KAAAA,GAElD/U,KAAK4I,QAAQ,cAAewU,CAAM,GAG9Bpd,KAAK4M,yBACDkO,EAAiBxP,EAAUrI,cAAc,sBAAsB,GAEnE+X,EADa,IAAIS,SAAO,CAAErI,SAAUpT,KAAKgD,QAAQgC,GAAK,mBAAoBoS,QAASpX,KAAK2H,KAAKC,YAAY,cAAc,EAAG,GACnH4L,SAASsH,CAAc,EAC9BE,EAAOhY,QAAQqa,QAAU,WACrBjX,EAAMqI,eAAepC,UAAQyO,EAAgB,oBAAoB,EAAG,EAAE,GAEtEC,EAAazP,EAAUrI,cAAc,kBAAkB,GAC3D+X,EAAS,IAAIS,SAAO,CAAErI,SAAUpT,KAAKgD,QAAQgC,GAAK,eAAgBoS,QAASpX,KAAK2H,KAAKC,YAAY,UAAU,EAAG,GACvG4L,SAASuH,CAAU,EAC1BC,EAAOhY,QAAQqa,QAAU,WACrBjX,EAAMmG,gBAAgB,CAAA,EAAMF,UAAQ0O,EAAY,oBAAoB,EAAG,GAAI,CAAA,CAAI,KAI/EzB,EAAWhO,EAAUrI,cAAc,YAAY,GAQnD+X,EAPa,IAAIsC,iBAAe,CAC5BC,MAAOvd,KAAKud,MACZnK,SAAU,8CACVsI,QAAS,qBACTlE,WAAYxX,KAAKmO,UAAU4E,KAAK/S,KAAMsZ,CAAQ,EAC9CtK,OAAQhP,KAAKmO,UAAU4E,KAAK/S,KAAMsZ,CAAQ,EAC7C,GACM9F,SAAS8F,CAAQ,EACxBA,EAASrK,aAAa,QAASjP,KAAK2H,KAAKC,YAAY,WAAW,CAAC,GAGpE5H,KAAK0C,eAAkB1C,KAAK8Q,gBACzB0M,EAAQxc,EAAOgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACnDyY,EAAUnS,EAAUtG,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAC5DhF,KAAK4I,QAAQ,SAAU,CAAEmE,QAASyQ,EAAOpW,KAAM,cAAesW,aAAcD,EAAS,KAIjGnb,EAAapC,UAAUiV,kBAAoB,SAAUnE,GACjD,IAIY2L,EAJR3c,KAAK4M,yBAA2B,CAAC5M,KAAK0E,gBAAkBsM,EAAKlD,yBACzD6P,EAAe3d,KAAKmZ,cAAc,CAAA,CAAI,EAAElW,cAAc,cAAc,KAEpE+N,EAAKlN,cAAcyL,aAAaoO,EAAc3M,CAAI,GAC9C2L,EAAU3L,EAAKlD,uBAAuBkP,WAAW,IACzCnQ,UAAUC,SAAS,aAAa,IACxC6P,EAAQpR,MAAMC,QAAU,QAE5BxL,KAAK4d,aAAa5M,CAAI,IAIlC1O,EAAapC,UAAU0d,aAAe,SAAU9O,GAC5C,IAYQnB,EAXJ0E,EAAWvD,EAAKhB,uBAAuBA,uBACvCuE,IAEIH,EAD8B,CAAC,EAA/BG,EAASrN,GAAGrB,QAAQ,MAAM,EACf3D,KAAK+N,QAAQsE,CAAQ,EAGrBrS,KAAKiN,SAASoF,CAAQ,EAEjC,CAACrM,oBAAkBkM,CAAQ,GAAKlM,oBAAkBkM,EAAS/M,SAAS,IACpE+M,EAAS/M,UAAY,OAErBwI,EAASmB,EAAKhB,uBAAuB7K,cAAc,gBAAgB,EACnEyK,EAAUoB,EAAKhB,uBAAuB7K,cAAc,iBAAiB,EACzE0K,EAAOkQ,SAAW,CAAA,EAClBnQ,EAAQmQ,SAAW,CAAA,EACd7X,oBAAkBkM,CAAQ,GAA4B,OAAvBA,EAAS/M,UAIzCuI,EAAQQ,QAAU,CAAA,EAHlBP,EAAOO,QAAU,CAAA,IAO7B5L,EAAapC,UAAUiS,iBAAmB,SAAU7G,EAAWlG,EAAKD,EAAWD,EAAM6H,EAAS+Q,GAC1F,IACIlO,EAAa5P,KAAKgD,QAAQgC,GAAK,UAE/B+Y,EAAWzS,EAAUrI,cAAc,iBAAiB,EAIxD,GAHIjD,KAAK4M,yBAA4D,CAAC,IAAlCtB,EAAUtG,GAAGrB,QAAQ,MAAM,IAC3Doa,EAAWzS,GAEXtL,KAAK0E,eAAgB,CAYrB,GAXAmB,EAAO,CACH4J,YAAa,6BAA8BzB,OAAQ1C,EAAUtG,GAC7D8P,aAAc9U,KAAK4E,mBAAqBQ,EAAM2P,KAAAA,EAC9C5P,UAAWA,EAAWD,KAAMlF,KAAKge,kBAAkB9Y,EAAM,CAAA,CAAK,EAAG6H,QAASA,GAE9E/M,KAAK4I,QAAQ,cAAe/C,CAAI,EAC5B7F,KAAK4M,yBAA4D,CAAC,IAAlCtB,EAAUtG,GAAGrB,QAAQ,MAAM,IAC3DkC,EAAK4J,YAAc,wBAEvBzP,KAAKie,SAAWje,KAAK2P,eAAe3P,KAAK0E,cAAc,EAEnD1E,KAAK+P,QACLwG,EAAWvW,KAAKie,SAASpY,EAAM7F,KAAMsL,EAAUtG,GAAI4K,CAAU,EAAE,GAC3D5P,KAAK4M,yBAA2BkR,EAChC9d,KAAKke,mCAAmC5S,EAAWiL,CAAQ,EAEtDvW,KAAK4M,yBAA4D,CAAC,IAAlCtB,EAAUtG,GAAGrB,QAAQ,MAAM,EAChEoa,EAASja,cAAcyL,aAAagH,EAAUwH,EAASZ,kBAAkB,EAGzEY,EAAStZ,YAAY8R,CAAQ,OAIhC,GAAIvW,KAAKgQ,UAAW,CACrB,IAAIC,EAAejQ,KAAKie,SAASpY,EAAM7F,KAAMsL,EAAUtG,GAAI4K,CAAU,EACrE2G,EAAyC,IAA7BtG,EAAa,GAAGC,SAAkBD,EAAa,GAAKA,EAAa,GACzEjQ,KAAK4M,yBAA2BkR,EAChC9d,KAAKke,mCAAmC5S,EAAWiL,CAAQ,EAEtDvW,KAAK4M,yBAA4D,CAAC,IAAlCtB,EAAUtG,GAAGrB,QAAQ,MAAM,EAChEoa,EAASja,cAAcyL,aAAagH,EAAUwH,EAASZ,kBAAkB,EAGzEY,EAAStZ,YAAY8R,CAAQ,OAIhC,GAAIvW,KAAKmQ,OAAQ,CAElB,GADAoG,EAAWvW,KAAKie,SAASpY,EAAM7F,KAAMsL,EAAUtG,GAAI4K,CAAU,EACzD5P,KAAK4M,0BAA4BkR,GAAkD,CAAC,IAAlCxS,EAAUtG,GAAGrB,QAAQ,MAAM,GAE7E,IAAK,IAAInD,EAAI,EAAGA,EAAI+V,EAAS5V,OAAQH,CAAC,GAElC,GAA6B,QAAzB+V,EAAS/V,GAAG2d,SAAoB,CAEhC5H,EAAWA,EAAS/V,GACpB,MAIRR,KAAK4M,yBAA2BkR,EAChC9d,KAAKke,mCAAmC5S,EAAWiL,CAAQ,EAEtDvW,KAAK4M,yBAA4D,CAAC,IAAlCtB,EAAUtG,GAAGrB,QAAQ,MAAM,EAChEoa,EAASja,cAAcyL,aAAagH,EAAUwH,EAASZ,kBAAkB,EAIzE/M,SAAOmG,EAAUwH,CAAQ,OAI7BxH,EAAWvW,KAAKie,SAASpY,EAAM7F,KAAM,WAAY4P,CAAU,EAAE,GACzD5P,KAAK4M,yBAA2BkR,EAChC9d,KAAKke,mCAAmC5S,EAAWiL,CAAQ,EAEtDvW,KAAK4M,yBAA4D,CAAC,IAAlCtB,EAAUtG,GAAGrB,QAAQ,MAAM,EAChEoa,EAASja,cAAcyL,aAAagH,EAAUwH,EAASZ,kBAAkB,EAGzEY,EAAStZ,YAAY8R,CAAQ,EAGrCvW,KAAK2Q,uBAET,OAAOrF,GAEXhJ,EAAapC,UAAUge,mCAAqC,SAAU5S,EAAWiL,GAC7E,IACI/L,GADOc,EAAU6R,oBAAoD7R,GACxDe,QAAQ,oBAAoB,GACR7B,EAAhCc,EAAU6R,mBAGX3S,EAHiCA,IACzBA,EAAM2S,oBAAgD3S,KAG9DA,EAAM1G,cAAcyL,aAAagH,EAAU/L,CAAK,GAWxDlI,EAAapC,UAAUke,aAAe,SAAUjW,EAAOnF,EAASoE,GAC5D,IAAIiX,EAAahS,UAAQrJ,EAAS,oBAAoB,EAClDqC,EAAQrF,KAAK6N,eAAewQ,CAAU,EACtCC,EAAcjS,UAAQrJ,EAAS,mBAAmB,EAClDqM,EAAQ,EACZ,GAAa,QAATjI,EACA/B,EAAMD,IAAM+C,OAGhB,GAAa,cAATf,EACIpH,KAAK4M,yBAMDvH,GAHAiZ,GAFJA,EAActb,EAAQc,cAAcgK,yBACjBwQ,EAAYzR,UAAUC,SAAS,mBAAmB,EACnDwR,EAAYnb,iBAAiB,mBAAmB,EAAEmb,EAAYnb,iBAAiB,mBAAmB,EAAExC,OAAS,GAE3H2d,IAAeA,EAAYzR,UAAUC,SAAS,kBAAkB,EACxD9M,KAAK+N,QAAQuQ,CAAW,EAEpCjZ,GAAMF,UAAYgD,EAGlB9C,EAAMF,UAAYgD,MAZ1B,CAgBA,KAAOmW,GAAsD,OAAvCA,EAAYxQ,wBAC9BwQ,EAAcA,EAAYxQ,wBACtB,CAAC9N,KAAK4M,yBAA4B5M,KAAK4M,0BACrC,CAAC5M,KAAK0E,gBAAkB,CAAC4Z,EAAYzR,UAAUC,SAAS,aAAa,GACnE9M,KAAK0E,iBAAmB4Z,EAAYzR,UAAUC,SAAS,kBAAkB,GACrEwR,EAAYzR,UAAUC,SAAS,mBAAmB,MAC1DuC,CAAK,GAGb,IAAInK,EAAOG,EAAMA,MAAMgK,GACnBnI,EAASlH,KAAKuR,UAAUrM,EAAKa,KAAK,EAClCwY,EAASve,KAAKwe,UAAUtX,EAAOqX,MAAM,EACzC,GAAoB,SAAhBrX,EAAOE,KACP,GAAIe,aAAiBb,KACjBa,EAAQnI,KAAKye,KAAKC,WAAWvW,EAAOoW,CAAM,OAEzC,GAAIpW,aAAiBzI,MACtB,IAAK,IAAIc,EAAI,EAAGA,EAAI2H,EAAMxH,OAAQH,CAAC,GAC3B2H,EAAM3H,IAAM2H,EAAM3H,aAAc8G,OAChCa,EAAM3H,GAAKR,KAAKye,KAAKC,WAAWvW,EAAM3H,GAAI+d,CAAM,GAK5DrX,EAAOsI,aACPxP,KAAK2e,eAAe3b,EAASmF,EAAOf,CAAI,GAGxCpH,KAAK4e,WAAa,CAAA,EAClB5e,KAAK6e,YAAY7b,EAASmF,CAAK,EAC/BnI,KAAK4e,WAAa,CAAA,KAG1Btc,EAAapC,UAAUye,eAAiB,SAAU3b,EAASmF,EAAOf,GAC9D,IAAI0X,EAAUzS,UAAQrJ,EAAS,oBAAoB,EAE/CqC,EAAQyZ,GAAW9e,KAAK6N,eAAeiR,CAAO,EAC9CjQ,EAAWxC,UAAQrJ,EAAS,mBAAmB,EAC/CqM,EAAQ,EAIZ,IAHIrP,KAAK6X,iBACL7X,KAAK+e,cAAc1Z,EAAOwJ,CAAQ,EAE/BA,GAAgD,OAApCA,EAASf,wBACxBe,EAAWA,EAASf,wBAChB,CAAC9N,KAAK4M,yBAA4B5M,KAAK4M,0BACrC,CAAC5M,KAAK0E,gBAAkB,CAACmK,EAAShC,UAAUC,SAAS,aAAa,GAChE9M,KAAK0E,iBAAmBmK,EAAShC,UAAUC,SAAS,kBAAkB,GAClE+B,EAAShC,UAAUC,SAAS,mBAAmB,MACvDuC,CAAK,GAGb,IAOI4H,EAYA+H,EAnBA9Z,EAAOG,GAASA,EAAMA,MAAMgK,GAS5B5B,GARS,UAATrG,EACApH,KAAK0R,eAAiB1R,KAAKuR,UAAUpJ,CAAK,EAErCjD,IACLlF,KAAK0R,eAAiB1R,KAAKuR,UAAUrM,EAAKa,KAAK,GAGnD/F,KAAK8W,eAAiB5R,GAAQlF,KAAKuR,UAAUrM,EAAKa,KAAK,EACrC/F,KAAK4N,cAAc5N,KAAKkF,IAAI,GAS1C+Z,GARAjf,KAAK0R,iBAEDuF,EADAjX,KAAK0R,eAAe7J,WAIV7H,KAAKgI,gBAAgBhI,KAAK0R,eAAetK,KAAO,aAGpD,CAAC,KAAM,QAAS,UAAW,eAEzC,OAAQA,GACJ,IAAK,QACD,GAAIpB,oBAAkBmC,CAAK,EAAG,CAC1B,GAAKnC,oBAAkBd,CAAI,EAQvB,OAPAA,EAAKa,MAAQ,GACbb,EAAKqD,MAAQ,GACbrD,EAAKkC,KAAO,GACZlC,EAAKiD,MAAQ,GACbjD,EAAKuM,SAAW,QAOpBvM,EAAKa,MAAQoC,EACbjD,EAAKqD,MAAQvI,KAAK0R,eAAenJ,MACjCrD,EAAKkC,KAAOpH,KAAK0R,eAAetK,KAChClC,EAAKiD,MAAQ,GACbjD,EAAKuM,SAAWwF,EAAQ,GAAG9O,MAE/B,MACJ,IAAK,WACD6W,EAAW9Z,EAAKuM,SAChBvM,EAAKuM,SAAWtJ,EACqB,CAAC,EAAlC8W,EAAQtb,QAAQuB,EAAKuM,QAAQ,EAC7BvM,EAAKiD,MAAQ,GAEoB,CAAC,EAA7B8W,EAAQtb,QAAQqb,CAAQ,IAC7B9Z,EAAKiD,MAAQ,IAEjB,MACJ,IAAK,QACDjD,EAAKiD,MAAQA,EAErBnI,KAAK4W,mBAAmB5W,KAAK0R,eAAgB1O,CAAO,EACpDhD,KAAKiO,YAAYR,EAAazN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAAGkC,CAAI,EAC7DpH,KAAK0R,gBAAkB1R,KAAK0R,eAAelC,eAC9B,UAATpI,GAA6B,aAATA,IAChB8X,EAAS7S,UAAQrJ,EAAS,mBAAmB,EACjDhD,KAAKmf,gBAAgBD,EAAQ,CAAA,CAAI,EACjCnI,SAAOmI,EAAOjc,cAAc,eAAe,CAAC,EACxCqb,EAActe,KAAK0O,eAAerC,UAAQ6S,EAAQ,oBAAoB,EAAGlf,KAAK0R,eAAgB,SAAUwN,EAAOla,GAAIoC,EAAMlC,CAAI,EACxG,aAArBlF,KAAK6R,aAA2E,CAAC,EAA9C7R,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,EAC5E2a,EAAY5a,UAAY,mCAGxB4a,EAAY5a,UAAY,qCAEvB1D,KAAK4M,yBACF0R,EAAYxQ,wBAAqG,CAAC,EAA5EwQ,EAAYxQ,uBAAuBpK,UAAUC,QAAQ,kBAAkB,IACzG2a,EAAY5a,UAAUC,QAAQ,eAAe,EAAI,IACjD2a,EAAY5a,WAAa,kBAEzB4a,EAAYxQ,uBAAuBpK,UAAUC,QAAQ,oBAAoB,EAAI,KAC7E2a,EAAYxQ,uBAAuBpK,WAAa,uBAIxD4a,EAAYxQ,wBAAsG,CAAC,EAA7EwQ,EAAYxQ,uBAAuBpK,UAAUC,QAAQ,mBAAmB,GAC9G2a,EAAY5a,UAAUC,QAAQ,iBAAiB,EAAI,IACnD2a,EAAY5a,WAAa,oBAEzBmC,EAAO,CACP4J,YAAa,kBAAmBb,OAAQxH,EAAM4G,OAAQkR,EAAOla,GAC7DiD,OAAQjI,KAAKiI,OAAQ/C,KAAMA,GAE/Bka,EAAa,CACTrS,QAAS+R,EAAQ9Z,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAAGgJ,OAAQkR,EAAOla,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAC3GmD,MAAOjD,EAAKa,MAAOqB,KAAM,SAE7BpH,KAAK4I,QAAQ,cAAe/C,CAAI,EAChC7F,KAAK4I,QAAQ,SAAUwW,CAAU,KAI7C9c,EAAapC,UAAUmf,YAAc,SAAU7e,EAAGqF,GAC9C,IAWI7C,EAuBA+J,EACAiB,EAmCI7F,EAaI2G,EACAwQ,EACAC,EArFRnZ,EAAQpG,KAGPA,KAAKwf,YAAoC,UAAtB,OAAO3Z,EAAKsC,OAAsC,UAAdtC,EAAKuB,MAAoBvB,EAAK7E,QAAU6E,EAAK7E,OAAO6L,UAAUC,SAAS,kBAAkB,GAC7I9M,KAAK0R,eAAejK,aAAezH,KAAK0R,eAAejK,WAAW3F,MAAQC,OAAOC,WAAkD,EAArChC,KAAK0R,eAAejK,WAAW5F,KACjI7B,KAAKwf,WAAa,CAAA,GAMlBxc,EAFA6C,EAAK7C,SAAW6C,EAAK7C,QAAQ6J,UAAUC,SAAS,eAAe,EACzCjH,EACI7C,QAErB6C,EAAKwE,MACAxE,EAAKwE,MAAMrJ,OAGF,UAAd6E,EAAKuB,MAAoBvB,EAAK7E,QAAU6E,EAAK7E,OAAO6L,UAAUC,SAAS,kBAAkB,EAEpFjH,EAAK4Z,cAIL5Z,EAAK7C,YAKsB,CAAC,EAAtCA,EAAQU,UAAUC,QAAQ,OAAO,GAAiD,CAAC,EAAxCX,EAAQU,UAAUC,QAAQ,SAAS,GAAgD,CAAC,EAAvCX,EAAQU,UAAUC,QAAQ,QAAQ,KAE1HX,EADmB6C,EACI7C,SAEvBsI,EAAYe,UAAQrJ,EAAS,oBAAoB,EACjD6L,EAAWxC,UAAQrJ,EAAS,mBAAmB,EAC/C+J,EAAUzB,GAAaA,EAAUtG,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACrEgJ,EAASa,EAAS7J,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,GACtD0a,EAAc7Z,GAEF7C,SAAmE,CAAC,EAAzD0c,EAAY1c,QAAQU,UAAUC,QAAQ,cAAc,IAC3EX,EAAU0c,EAAY1c,SACtBkV,EAActU,eAAayI,UAAQrJ,EAAS,mBAAmB,EAAEC,cAAc,iBAAiB,EAAG,cAAc,KAE7GjD,KAAK0R,eAAiBwG,EAAYzE,eAAeyE,EAAY/P,KAAK,GAEtE+P,EAActU,eAAayI,UAAQrJ,EAAS,mBAAmB,EAAEC,cAAc,iBAAiB,EAAG,cAAc,KAE7GjD,KAAK0R,eAAiB1R,KAAKuR,UAAU2G,EAAY/P,MAAM,EAAE,GAKtB,CAAC,EAAxCnF,EAAQU,UAAUC,QAAQ,SAAS,GACnCgc,EAAUtJ,SAASrT,EAAQgC,GAAGkB,MAAM,UAAU,EAAE,GAAI,EAAE,EAC/B,YAAnBlG,KAAKwS,WACL0F,EAActU,eAAayI,UAAQrJ,EAAS,mBAAmB,EAAEC,cAAc,iBAAiB,EAAG,cAAc,EACjHjD,KAAK0R,eAAiBwG,EAAYzE,eAAeyE,EAAY/P,KAAK,EAC9DnI,KAAK0R,eAAe3K,UACpBmR,EAActU,eAAayI,UAAQrJ,EAAS,mBAAmB,EAAEC,cAAc,oCAAoC,EAAG,cAAc,EACpIjD,KAAK0R,eAAiB1R,KAAKuR,UAAU2G,EAAY/P,KAAK,KAI1D+P,EAActU,eAAayI,UAAQrJ,EAAS,mBAAmB,EAAEC,cAAc,iBAAiB,EAAG,cAAc,EACjHjD,KAAK0R,eAAiB1R,KAAKuR,UAAU2G,EAAY/P,MAAM,EAAE,GAGzDA,GADAnI,KAAK0R,eAAe5H,QAIN,CAAC,CAAA,EAAM,CAAA,IAHc6V,IAOW,CAAC,EAA9C3c,EAAQU,UAAUC,QAAQ,eAAe,EAC9CwE,EAAQvE,eAAaZ,EAAS,aAAa,EAAEmF,OAG7CA,EAAQtC,EAAKsC,MAEK,UAAdtC,EAAKuB,MAAoBvB,EAAK7E,QAAU6E,EAAK7E,OAAO6L,UAAUC,SAAS,kBAAkB,IAEzF3E,EAAQpG,OAAO8D,EAAK4Z,cAActX,KAAK,EAEnC2G,EAAOjJ,EAAK4Z,cACZH,EAAoBM,cAAY9Q,EAAM+Q,gBAAc,EACpDN,EAAmBO,WAAS,UAAWC,mBAAiB/f,KAAKggB,MAAM,CAAC,EACpE3Y,MAAMc,CAAK,GAA8C,CAAC,IAA1C2G,EAAK3G,MAAMxE,QAAQ4b,CAAgB,IACnDpX,EAAQnI,KAAKye,KAAKwB,gBAAgB,CAAE1B,OAAQ,IAAK,EAAEzP,EAAK3G,KAAK,GAE5Dd,MAAMc,CAAK,IACZmX,EAAkBnX,MAAQA,GAE9BnI,KAAKwf,WAAa,CAAA,IAGR,UAAd3Z,EAAKwF,MAAoBrL,KAAKkgB,oBAC9BC,OAAOC,cAAcpgB,KAAKqgB,KAAK,EAC/BrgB,KAAKqgB,MAAQF,OAAOG,YAAY,WAAcla,EAAMma,YAAYxT,EAASiB,EAAQ7F,EAAO3H,EAAGwC,CAAO,GAAMhD,KAAKkgB,kBAAkB,GAG/HlgB,KAAKugB,YAAYxT,EAASiB,EAAQ7F,EAAO3H,EAAGwC,CAAO,IAG3DV,EAAapC,UAAUqgB,YAAc,SAAUC,EAAMC,EAAMtY,EAAO3H,EAAGkgB,GACjE,IAAIta,EAAQpG,KACRof,EAAa,CAAErS,QAASyT,EAAMxS,OAAQyS,EAAMtY,MAAOA,EAAOkF,OAAQ,CAAA,EAAOjG,KAAM,SACnF+Y,OAAOC,cAAcpgB,KAAKqgB,KAAK,EAC1BrgB,KAAK0C,cAMN1C,KAAK2gB,2BAA2BvB,EAAYsB,EAAKlgB,EAAGggB,EAAMC,CAAI,EAL9DzgB,KAAK4I,QAAQ,eAAgBwW,EAAY,SAAU5R,GAC/CpH,EAAMua,2BAA2BnT,EAAoBkT,EAAKlgB,EAAGggB,EAAMC,CAAI,EAC1E,GAMTne,EAAapC,UAAUygB,2BAA6B,SAAU9a,EAAM7C,EAASxC,EAAGuM,EAASiB,GAChFnI,EAAKwH,SACNrN,KAAK6e,YAAY7b,EAAS6C,EAAKsC,MAAO3H,CAAC,EAClCR,KAAK0C,gBACN1C,KAAK4I,QAAQ,SAAU,CAAEmE,QAASA,EAASiB,OAAQA,EAAQ7F,MAAOtC,EAAKsC,MAAOkF,OAAQ,CAAA,EAAOjG,KAAM,QAAS,GAIxH9E,EAAapC,UAAU4S,WAAa,SAAU9N,GAC1C,IAOI2O,EAEAiN,EATA5gB,KAAK6gB,eAAiB7gB,KAAK8gB,YAG/B9gB,KAAK+gB,aAAe,CAAA,EAGhBC,GADAC,EAAMrd,eAAaoB,EAAI,cAAc,GAC1Bkc,UAAYD,EAAIC,SAASle,QAAQC,cAAc,WAAW,EACrE0Q,EAAWsN,EAAIE,cACnBF,EAAI9Y,MAAQwL,EAASxL,MACjByY,EAAa,CACb5d,QAASie,EAAIje,QAASmF,MAAOwL,EAASxL,MAAOiZ,aAAc,CAAA,EAC3DC,iBAAkBrhB,KAAKshB,aAAcC,aAAc,KAAMP,KAAMA,EAAMrN,SAAUA,EAAUtJ,MAAO,KAAMtG,EAAG,MAEzGkd,EAAIO,gBAAkBP,EAAI9Y,OAC1BnI,KAAKiT,YAAY2N,CAAU,EAE/B5gB,KAAK6gB,cAAgB,CAAA,IAEzBve,EAAapC,UAAU+S,YAAc,SAAUpN,GAC3C,GAAIA,EAAKub,cACDpb,CAAAA,oBAAkBH,EAAKsC,KAAK,EAAhC,CAGAnI,KAAK6gB,cAAgB,CAAA,EACrB7gB,KAAKshB,aAAezb,EAAK8N,SACzB,IAAIoE,EAAY1L,UAAQxG,EAAK7C,QAAS,gBAAgB,GAAKqJ,UAAQxG,EAAK7C,QAAS,oBAAoB,EACjGkE,EAA4B,iBAAnBlH,KAAKwS,UAA+BxS,KAAKuR,UAAU1L,EAAKsC,MAAM,EAAE,EAAInI,KAAKuR,UAAU1L,EAAKsC,KAAK,EAC1G,GAAuB,iBAAnBnI,KAAKwS,WAA8C,OAAduF,EAAoB,CACzD,IAuBgBxO,EAvBZkY,EAAU1J,EAAU9U,cAAc,2BAA2B,EAC7Dye,EAAM9d,eAAa6d,EAAS,cAAc,EAC9C,GAAIva,CAAAA,EA2BA,OA1BA,GAAoB,WAAhBA,EAAOE,KAaP,OAXAsa,EAAIvZ,MAAQtC,EAAK8b,SACjBD,EAAIE,WADJF,KAGI1b,oBAAkBH,EAAK8b,QAAQ,EAC/BF,EAAQtZ,MAAQ,IAIZoB,EAASvJ,KAAK0U,mBAAmB7O,EAAK8b,SAAS,EAAE,EACrDF,EAAQtZ,MAAQoB,IAKfvD,oBAAkBH,EAAKsC,MAAM,EAAE,IAEhCuZ,EAAIvZ,MAAQtC,EAAKsC,MAAM,GACvBuZ,EAAIE,WACArY,EAASvJ,KAAK0U,mBAAmB7O,EAAKsC,MAAM,EAAE,EAClDsZ,EAAQtZ,MAAQoB,GAWhC,GAHAvJ,KAAK6hB,iBAAiB9J,CAAS,EAC/B/X,KAAK8hB,aAAe,KACpB9hB,KAAK+hB,iBAAmB,CAAA,EACpB7a,GAAUA,EAAOsI,aACjBxP,KAAK2e,eAAe9Y,EAAK7C,QAASkE,EAAOnB,MAAO,OAAO,OAEtD,GAAImB,GAAUA,EAAOH,SAAWG,EAAOH,QAAQ,GAAGyI,aACnDxP,KAAK2e,eAAe9Y,EAAK7C,QAASkE,EAAOH,QAAQ,GAAGhB,MAAO,OAAO,MAEjE,CAKD,IAJA,IAAIuF,EAAYe,UAAQxG,EAAK7C,QAAS,oBAAoB,EACtDqC,EAAQrF,KAAK6N,eAAevC,CAAS,EACrCuD,EAAWxC,UAAQxG,EAAK7C,QAAS,mBAAmB,EACpDqM,EAAQ,EACLR,GAAgD,OAApCA,EAASf,wBACxBe,EAAWA,EAASf,wBAChB,CAAC9N,KAAK4M,yBAA4B5M,KAAK4M,0BACrC,CAAC5M,KAAK0E,gBAAkB,CAACmK,EAAShC,UAAUC,SAAS,aAAa,GAChE9M,KAAK0E,iBAAmBmK,EAAShC,UAAUC,SAAS,kBAAkB,GAClE+B,EAAShC,UAAUC,SAAS,mBAAmB,MACvDuC,CAAK,GAGbhK,EAAMA,MAAMgK,GAAOlH,MAAQ,GAC3BnI,KAAK0T,WAAWrO,EAAMA,MAAMgK,GAAQxJ,CAAI,KAIpDvD,EAAapC,UAAUwT,WAAa,SAAUxO,EAAM8c,GAChD,GAAI,CAACA,EAAQrO,SAAU,CACnB,GAAuB,iBAAnB3T,KAAKwS,UAOL,OALA,GAAiB,MADP5O,eAAaoe,EAAQhf,QAAS,cAAc,EAC9CmF,MACJ,OAOZ,IAEAgS,EADiB9N,UAAQ2V,EAAQhf,QAAS,gBAAgB,GACnBqJ,UAAQ2V,EAAQhf,QAAS,oBAAoB,EAChFif,EAASre,eAAaoe,EAAQhf,QAAS,cAAc,EAClC,iBAAnBhD,KAAKwS,WAA+C,OAAf2H,IACrC8H,EAASre,eAAaoe,EAAQhf,QAAS,cAAc,GALzD,IAQI+J,EADUV,UAAQ2V,EAAQhf,QAAS,oBAAoB,EACrCgC,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAC1DhF,KAAKkiB,aAAa/H,EAAY8H,EAAQlV,EAAS7H,EAThC,GASgD8c,CAAO,GAE1E1f,EAAapC,UAAUgiB,aAAe,SAAUC,EAAKC,EAAI5B,EAAM6B,EAAIC,EAAOC,GACtE,IA2BQC,EA3BJpc,EAAQpG,KACRmiB,GAEI9Q,EAAW,KAAA,EAEXA,EADmB,iBAAnBrR,KAAKwS,UACO4P,EAAGja,MAAM,GAGVnI,KAAK0C,cAAgB1C,KAAK8F,kBAAkBsc,EAAGja,KAAK,EAAIia,EAAGja,MAE1EnI,KAAK0R,eAAiB1R,KAAKuR,UAAUF,CAAQ,EAGzC+N,EAAa,CACbrS,QAASyT,EAAMxS,OAHJ3B,UAAQ8V,EAAK,mBAAmB,EACzBnd,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAEvByd,cAAkC,iBAAnBziB,KAAKwS,UAC/C4P,EAAGja,MAAM,GAAKia,EAAGja,MAAOkF,OAAQ,CAAA,EAAOjG,KAAM,SAEhDpH,KAAK0C,eAAkB1C,KAAK8Q,cAM7B9Q,KAAK0iB,mBAAmBtD,EAAYkD,EAAOH,EAAKE,EAAIE,CAAI,EALxDviB,KAAK4I,QAAQ,eAAgBwW,EAAY,SAAU5R,GAC/CpH,EAAMsc,mBAAmBlV,EAAoB8U,EAAOH,EAAKE,EAAIE,CAAI,EACpE,IAODC,EAAenW,UAAQkW,EAAKvf,QAAS,kBAAkB,EAC3DhD,KAAK2iB,eAAeR,EAAKK,EAAcJ,EAAI5B,EAAM6B,EAAIC,EAAOC,CAAI,IAGxEjgB,EAAapC,UAAUyiB,eAAiB,SAExCR,EAAKS,EAAKR,EAAI5B,EAAM6B,EAAIC,EAAOC,GAC3B,IAAInc,EAAQpG,KAIR4iB,GAGAxD,EAAa,CAAErS,QAASyT,EAAMxS,OAFnB3B,UAAQuW,EAAK,mBAAmB,EACzB5d,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACR6d,cAAeT,EAAG/S,MAAOhC,OAAQ,CAAA,EAAOjG,KAAM,YACvFpH,KAAK0C,cAMN1C,KAAK8iB,sBAAsB1D,EAAY+C,EAAKG,EAAOD,EAAIE,CAAI,EAL3DviB,KAAK4I,QAAQ,eAAgBwW,EAAY,SAAU5R,GAC/CpH,EAAM0c,sBAAsBtV,EAAoB2U,EAAKG,EAAOD,EAAIE,CAAI,EACvE,GAOLviB,KAAK+iB,iBAAiBZ,EAAKE,EAAIC,EAAOC,CAAI,GAGlDjgB,EAAapC,UAAUwiB,mBAAqB,SAAU7c,EAAMmd,EAAU7I,EAAYjV,EAAM8c,GAOpF,IANA,IAAInT,EAAWxC,UAAQ8N,EAAY,mBAAmB,EAClDqI,EAAenW,UAAQ2V,EAAQhf,QAAS,kBAAkB,EAE1D+J,EADUV,UAAQ2V,EAAQhf,QAAS,oBAAoB,EACrCgC,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACtDid,EAASre,eAAaoe,EAAQhf,QAAS,cAAc,EACrDigB,EAAcpU,EAAS1L,iBAAiB,0BAA0B,EAC7D3C,EAAI,EAAGA,EAAIyiB,EAAYtiB,OAAQH,CAAC,GACrCoD,eAAaqf,EAAYziB,GAAI,SAAS,EAAEqD,UAE5C,GAAKgC,EAAKwH,OAoBNrN,KAAK2iB,eAAexI,EAAYqI,EAAcP,EAAQlV,EAAS7H,EAAM8d,EAAUhB,CAAO,OAnBtF,GAAIhc,CAAAA,oBAAkBhG,KAAK0R,cAAc,EAOzC,GAJAsR,EAAS5b,KAAOpH,KAAK0R,eAAetK,KAChCyH,EAAS5L,cAAc,aAAa,IACpCiC,EAAKiD,MAAQ,IAEgB,WAA7BnI,KAAK0R,eAAetK,MAAwC,YAAnBpH,KAAKwS,UAE9C,IADAwQ,EAAS5b,KAAOpH,KAAK0R,eAAe3K,QAAQ,GAAGK,KACxCpH,KAAK0R,eAAe3K,SACvB/G,KAAKkjB,gBAAgB/I,EAAYjV,EAAM8d,EAAUhB,CAAO,OAI5DhiB,KAAK6hB,iBAAiB1H,CAAU,EAChCna,KAAK2iB,eAAexI,EAAYqI,EAAcP,EAAQlV,EAAS7H,EAAM8d,EAAUhB,CAAO,GAOlG1f,EAAapC,UAAU2hB,iBAAmB,SAAU1H,GAChD,KAAOA,GAAcA,EAAWgD,mBAAmBtQ,UAAUC,SAAS,mBAAmB,GACrF9M,KAAKmf,gBAAgBhF,CAAU,EAC/BA,EAAWgD,mBAAmBgG,UAGtC7gB,EAAapC,UAAUgjB,gBAAkB,SAAU/I,EAAYjV,EAAM8d,EAAUhB,GAC3E,IAAIoB,EAAgB,CAAA,EAChBrL,EAAY1L,UAAQ8N,EAAY,eAAe,EAC/ChC,EAAWnY,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,oBAAqBQ,GAAI,YAAchF,KAAKqjB,kBAAoB,EAEvHC,GADJvL,EAAUxI,aAAa4I,EAAUJ,EAAU9U,cAAc,kBAAkB,CAAC,EAC/DoJ,UAAQ8L,EAAU,mBAAmB,EAAEnT,IAChD8c,EAAe9hB,KAAKsE,cAAc,QAAS,CAAEC,MAAO,CAAE6C,KAAM,OAAQpC,GAAIse,EAAS,gBAAkBtjB,KAAKqjB,kBAAoB,EAE5H3X,GADJyM,EAAS1T,YAAYqd,CAAY,EAC0B,CAAC,EAA9C9hB,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,EAAU,QAAU,SAE3EyN,EAAW,CACPsB,WAAY1S,KAAK0R,eAAe3K,QAChCkB,OAAQjI,KAAKiI,OACb0K,YAAa3S,KAAK2H,KAAKC,YAAY,aAAa,EAChDgL,YAAoD,EAArC5S,KAAK0R,eAAe3K,QAAQpG,OAAc+K,EAAS,OAClEsH,OAAQhT,KAAKiT,YAAYF,KAAK/S,IAAI,EAClCqP,MAAO,EACP6D,KAAMlT,KAAKmT,UAAUJ,KAAK/S,KAAM,CAAA,CAAK,GAKrCsT,GAHAtT,KAAKqT,aACLjC,EAAWhR,EAAS,GAAIgR,EAAUpR,KAAKqT,UAAU,GAElC,IAAIE,eAAanC,CAAQ,GAE5C,GADAkC,EAAaE,SAAS,IAAM8P,EAAS,gBAAkBtjB,KAAKqjB,gBAAgB,EACxErjB,KAAK0C,eAAkB1C,KAAK8W,gBAAkB9W,KAAK8W,eAAetH,cAClExP,KAAK8F,kBAAkBZ,EAAKa,KAAK,IAAM/F,KAAK8F,kBAAkB9F,KAAK8W,eAAe/Q,KAAK,EAEvF,IADA,IAAIwd,EAAWvjB,KAAK0R,eAAe3K,QAC1BvG,EAAI,EAAGA,EAAI+iB,EAAS5iB,OAAQH,CAAC,GAClC,GAAI0E,EAAKa,QAAUwd,EAAS/iB,GAAGuF,OAAkE,CAAC,EAA1Db,EAAKa,MAAMpC,QAAQ4f,EAAS/iB,GAAGuF,MAAQ/F,KAAKiG,SAAS,EAAQ,CACjGqN,EAAanL,MAAQob,EAAS/iB,GAAGuF,MACjC/F,KAAK0R,eAAiB6R,EAAS/iB,GAC/B4iB,EAAgB,CAAA,EAChB,MAIZpjB,KAAKqjB,gBAAgB,GACrBrjB,KAAK8hB,aAAeA,EAEpBE,EAAQrO,SAAWqO,EAAQrO,SACvB,CAACyP,GAAiBpjB,KAAK0R,eAAe3K,UAClC,CAACqc,GAAiBpjB,KAAK0C,gBACvB4Q,EAAanL,MAAQ,MAEzBnI,KAAK0R,eAAiB1R,KAAK0R,eAAe3K,QAAQ,IAEtD/G,KAAK8W,eAAiB9W,KAAK0R,eACtB1R,KAAK0R,eAAe3K,SACrB/G,KAAK+iB,iBAAiB5K,EAAUjT,EAAM8d,EAAUhB,CAAO,GAG/D1f,EAAapC,UAAU4iB,sBAAwB,SAAU1D,EAAYjF,EAAY6I,EAAU9d,EAAM8c,GAC7F,IAEQzJ,EAEAyG,EA2BIwE,EACAP,EAhCP7D,EAAW/R,SAERkL,GADAiK,EAAenW,UAAQ2V,EAAQhf,QAAS,kBAAkB,GACnCma,mBACvBjF,EAActU,eAAaoe,EAAQhf,QAAS,cAAc,EAC1Dgc,EAAW9Z,EAAKuM,SAAWvM,EAAKuM,SAAS6E,WAAWhJ,cAAgB,GACxE0V,EAASvR,SAAWyG,EAAY/P,MAAMmO,WAClCmN,EAAWT,EAASvR,SAASnE,cACwB,CAAC,EAAtD0V,EAASvR,SAASnE,cAAc3J,QAAQ,SAAS,GAA2D,CAAC,EAAjDqf,EAASvR,SAASnE,cAAc3J,QAAQ,IAAI,GACrGqf,EAASvR,SAASnE,cAAc3J,QAAQ,UAAU,EAAI,GACzDwW,EAAaqI,EAAa1U,uBAC1BkV,EAAS5b,KAAOlC,EAAKkC,MACjB4b,EAASvR,SAASnE,cAAc3J,QAAQ,IAAI,EAAI,GAAKqb,EAASrb,QAAQ,IAAI,EAAI,KAC9EuB,EAAKiD,MAAQ,KAGU,UAAtB,OAAOjD,EAAKiD,OAAqC,OAAfjD,EAAKiD,QAC5CjD,EAAKiD,MAA4B,EAApBjD,EAAKiD,MAAMxH,OAAauE,EAAKiD,MAAM,GAAmB,WAAdjD,EAAKkC,KAAoB,EAAI,IAElF4a,EAAQX,mBAE4B,CAAC,GADjCqC,EAAY1B,EAAQX,iBAAiBlZ,MAAMmO,WAAWhJ,eAC3C3J,QAAQ,SAAS,IAAqC,CAAC,EAA3B+f,EAAU/f,QAAQ,IAAI,GAAuC,CAAC,EAA7B+f,EAAU/f,QAAQ,MAAM,GAC/D,CAAC,EAA9B+f,EAAU/f,QAAQ,OAAO,IAAY+f,EAAU/f,QAAQ,UAAU,EAAI,KACzEwW,EAAaqI,EAAa1U,uBAC1BkV,EAAS5b,KAAOlC,EAAKkC,MAGC,CAAC,EAA1B4X,EAASrb,QAAQ,IAAI,GAAUqb,EAASrb,QAAQ,IAAI,EAAI,GAAgC,CAAC,EAA1B8f,EAAS9f,QAAQ,IAAI,GAClF8f,EAAS9f,QAAQ,IAAI,EAAI,IAC5BwW,EAAa,OAEuB,CAAC,EAArC6I,EAASvR,SAAS9N,QAAQ,MAAM,GAAgD,CAAC,EAAtCqf,EAASvR,SAAS9N,QAAQ,OAAO,OAExEsf,GADAO,EAAahB,EAAa1e,cAAcb,cAAc,eAAe,GAC5CA,cAAc,0BAA0B,IAInC,CAAC,EAA1B+b,EAASrb,QAAQ,IAAI,IAC1Bsf,EAAcO,EAAWvgB,cAAc,YAAY,KAE/CW,eAAaqf,EAAa,SAAS,EAAEpf,UAG7CiB,cAAY,CAAC0e,GAAa,QAAQ,EAClCpW,WAAS,CAACoW,GAAa,QAAQ,GAE/BjL,GAAWvY,KAAKuR,UAAUrM,EAAKa,KAAK,EAAEwQ,WACtC4D,EAAaqI,EAAa1U,wBAEE,IAA5ByK,EAAQ/J,SAAS7N,SACjBwZ,EAAaqI,EAAa1U,wBAE9B9N,KAAK+iB,iBAAiB5I,EAAYjV,EAAM8d,EAAUhB,CAAO,IAGjE1f,EAAapC,UAAU6iB,iBAAmB,SAAU5I,EAAYjV,EAAM8d,EAAUhB,GAC5E,IAGI2B,EA4BQL,EAUAM,EAQAzb,EACA0b,EASJC,EA3DJtB,EAAenW,UAAQ2V,EAAQhf,QAAS,kBAAkB,EAK1DmX,IACAqI,EAAerI,EAAWgD,mBACtBhD,EAAWtN,UAAUC,SAAS,mBAAmB,IACjDkW,EAAS5b,KAAOpH,KAAK0R,eAAetK,KAEpCob,EADQA,EAAa3V,UAAUC,SAAS,mBAAmB,EACpC0V,EAAarF,mBAAqBqF,GAE7DpV,WAAS,CAACoV,GAAe,YAAY,EACjCA,EAAauB,mBACb9B,EAASre,eAAa4e,EAAavf,cAAc,iBAAiB,EAAG,cAAc,EACnF+f,EAASvR,SAAWwQ,EAAO9Z,MACvB6b,EAAW,KAAA,EAEXA,EADmB,iBAAnBhkB,KAAKwS,UACM5O,eAAauW,EAAWlX,cAAc,iBAAiB,EAAG,cAAc,EAGxEW,eAAauW,EAAWlX,cAAc,iBAAiB,EAAG,cAAc,EAEvF+f,EAAS5b,MAA0B,iBAAnBpH,KAAKwS,UAA+BxS,KAAKuR,UAAUyS,EAAS7b,MAAM,EAAE,EAChFnI,KAAKuR,UAAUyS,EAAS7b,KAAK,GADqDf,KAElFuM,EAAWqO,EAAQrO,SACF,KAAjBsO,EAAO9Z,OACPnI,KAAKikB,aAAazB,EAAc7O,EAAUqO,EAAQX,iBAAkB,CAAA,EAAMnc,EAAM8d,EAAUhB,EAAQhf,OAAO,IAIzGsgB,EAASjX,UAAQmW,EAAc,mBAAmB,EAAExd,GACxDkf,EAAUlkB,KAAKsE,cAAc,QAAS,CAAEC,MAAO,CAAE6C,KAAM,OAAQpC,GAAIse,EAAS,gBAAkB,EAC9Fd,EAAa/d,YAAYyf,CAAO,EAC5BlkB,KAAK0R,eAAe7J,UACpB8b,EAAe3jB,KAAK0R,eAAe7J,UAE9Bma,EAAQrO,WACbgQ,EAAe3jB,KAAKgI,gBAAgBhI,KAAK0R,eAAetK,KAAO,aAE/DsE,EAAuD,CAAC,EAA9C1L,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,EAAU,QAAU,QAEvEuB,EAAKuM,UACLkS,EAAa1c,QAAQ,SAAU4R,GACvB,UAAWA,GAA4B,UAArB,OAAOA,EAAI1Q,OAAsB0Q,EAAI1Q,MAAMmF,gBAAkBpI,EAAKuM,SAASnE,gBAC7FsW,EAAa/K,EAAI1Q,OAExB,EAEDA,EAAQyb,GAA0BD,EAAa,GAAGxb,MAClD0b,EAAS,EACR7jB,KAAKmkB,qBACNhc,EAAQ,GACR0b,EAAS,CAAC,GAKVC,EAPJ,MAII9jB,KAAK0C,eAAmC,CAAC,EAAlB1C,KAAKoP,WAAoC,CAAC,EAAnBpP,KAAK+b,YAAmB/b,KAAK8Q,iBAC3E3I,EAAQjD,GAAQA,EAAKuM,UAAoCtJ,IAG7D2b,EAAc,CACVpR,WAAYiR,EACZ1b,OAAQ,CAAEC,KAAM,MAAOC,MAAO,SAC9BwK,YAAa3S,KAAK2H,KAAKC,YAAY,gBAAgB,EACnDgL,YAAqC,EAAtB+Q,EAAahjB,OAAc+K,EAAS,OACnDsH,OAAQhT,KAAKiT,YAAYF,KAAK/S,IAAI,EAClCqP,MAAOwU,EACP1b,MAAOA,EACP+K,KAAMlT,KAAKmT,UAAUJ,KAAK/S,KAAM,CAAA,CAAK,GAErCA,KAAKokB,gBACLN,EAAc1jB,EAAS,GAAI0jB,EAAa9jB,KAAKokB,aAAa,GAE3C,IAAI7Q,eAAauQ,CAAW,EAClCtQ,SAAS,IAAM8P,EAAS,cAAc,EACnDN,EAASvR,SAAYvM,GAA0B,KAAlBA,EAAKuM,UAAmB,CAACzL,oBAAkBd,EAAKuM,QAAQ,EAAKvM,EAAKuM,SAAWkS,EAAa,GAAGxb,MACtHnI,KAAK0C,gBACLsgB,EAAS5b,KAAOpH,KAAK0R,eAAetK,KACpC4b,EAASvR,SAAWvM,EAAKuM,WAExBzL,CAAAA,oBAAkBmC,CAAK,GAAe,KAAVA,GAGxBnI,KAAKyS,iBAAmBzS,KAAKmkB,qBAFlCnkB,KAAKikB,aAAazB,EAAcxiB,KAAK0R,eAAgBsQ,EAAQX,iBAAkB,CAAA,EAAOnc,EAAM8d,EAAUhB,EAAQhf,OAAO,IAO5HhD,KAAK0C,eACN1C,KAAK6e,YAAYmD,EAAQhf,QAASgf,EAAQhB,IAAI,GAGtD1e,EAAapC,UAAUiT,UAAY,SAAUkR,EAASxe,GAC9C7F,KAAKuO,WACLnB,WAAS,CAACvH,EAAKye,MAAMthB,SAAU,OAAO,EAEtCqhB,IACArkB,KAAK+gB,aAAe,CAAA,IAG5Bze,EAAapC,UAAUif,gBAAkB,SAAUne,EAAQ4P,GAKvD,IAJA,IAAI5N,EAAU4N,EAAiB5P,EAASA,EAAOmc,mBAC3CoH,EAAevhB,EAAQG,iBAAiB,iBAAiB,EACzDqhB,EAAaxhB,EAAQG,iBAAiB,8BAA8B,EACpE4D,EAAU/G,KAAK+G,QACVvG,EAAI,EAAG8H,EAAMic,EAAa5jB,OAAQH,EAAI8H,EAAK9H,CAAC,GAAI,CACrD,GAAI+jB,EAAa/jB,GAAGqM,UAAUC,SAAS,WAAW,EAC9ClJ,eAAa2gB,EAAa/jB,GAAI,SAAS,EAAEqD,UACzCkT,SAAO/H,SAAO,SAAWuV,EAAa/jB,GAAGwE,GAAIhC,CAAO,CAAC,OAEpD,GAAIuhB,EAAa/jB,GAAGqM,UAAUC,SAAS,gBAAgB,EACpD9M,KAAK6X,iBAAkF,CAAC,EAAhE0M,EAAa/jB,GAAGsD,cAAcJ,UAAUC,QAAQ,WAAW,GACnFC,eAAa2gB,EAAa/jB,GAAGsD,cAAe,SAAS,EAAED,UAE3DD,eAAa2gB,EAAa/jB,GAAI,cAAc,EAAEqD,eAE7C,GAAI0gB,EAAa/jB,GAAGqM,UAAUC,SAAS,SAAS,EACjDlJ,eAAa2gB,EAAa/jB,GAAI,OAAO,EAAEqD,eAEtC,GAAI0gB,EAAa/jB,GAAGqM,UAAUC,SAAS,kBAAkB,EAC1DlJ,eAAa2gB,EAAa/jB,GAAI,gBAAgB,EAAEqD,UAChDkT,SAAO/H,SAAO,SAAWuV,EAAa/jB,GAAGwE,GAAIhC,CAAO,CAAC,OAEpD,GAAIuhB,EAAa/jB,GAAGqM,UAAUC,SAAS,cAAc,EACtDlJ,eAAa2gB,EAAa/jB,GAAI,YAAY,EAAEqD,eAE3C,GAAI0gB,EAAa/jB,GAAGqM,UAAUC,SAAS,eAAe,EACvDlJ,eAAa2gB,EAAa/jB,GAAI,aAAa,EAAEqD,eAE5C,GAAsD,CAAC,EAAnD0gB,EAAa/jB,GAAGkD,UAAUC,QAAQ,YAAY,EAEnD,IADA,IAAI6W,EAAU+J,EAAa/jB,GAAGkD,UACrByF,EAAI,EAAGqP,EAAOzR,EAAQpG,OAAQwI,EAAIqP,EAAMrP,CAAC,GAC9C,GAAIpC,EAAQoC,GAAGoN,UAAgD,CAAC,EAArCiE,EAAQ7W,QAAQoD,EAAQoC,GAAGpD,KAAK,EAAQ,CAC/D/F,KAAKykB,gBAAgB1d,EAAQoC,GAAIob,EAAa/jB,GAAGwE,EAAE,EACnD,MAIRZ,SAAS+G,eAAeoZ,EAAa/jB,GAAGwE,EAAE,GAC1C+R,SAAOwN,EAAa/jB,EAAE,EAG9B,IAASA,EAAI,EAAG8H,EAAMkc,EAAW7jB,OAAQH,EAAI8H,EAAK9H,CAAC,GAAI,CACnD,GAAoD,CAAC,EAAjDgkB,EAAWhkB,GAAGkD,UAAUC,QAAQ,YAAY,EAE5C,IADI6W,EAAUgK,EAAWhkB,GAAGkD,UACnByF,EAAI,EAAGqP,EAAOzR,EAAQpG,OAAQwI,EAAIqP,EAAMrP,CAAC,GAC9C,GAAIpC,EAAQoC,GAAGoN,UAAgD,CAAC,EAArCiE,EAAQ7W,QAAQoD,EAAQoC,GAAGpD,KAAK,EAAQ,CAC/D/F,KAAKykB,gBAAgB1d,EAAQoC,GAAIqb,EAAWhkB,GAAGwE,EAAE,EACjD,MAIZ+R,SAAOyN,EAAWhkB,EAAE,EAGxB,IADA,IAAIkkB,EAAkB1hB,EAAQG,iBAAiB,6BAA6B,EACnE3C,EAAI,EAAG8H,EAAMoc,EAAgB/jB,OAAQH,EAAI8H,EAAK9H,CAAC,GACpDuW,SAAO2N,EAAgBlkB,EAAE,GAGjC8B,EAAapC,UAAUukB,gBAAkB,SAAUvd,EAAQyd,GACvD,IAEIpO,EAKAqO,EAEIC,EARuB,UAA3B,OAAO3d,EAAOqP,UAAqDxB,KAAAA,IAA5B7N,EAAOqP,SAAS1S,UAMvD+gB,GAAOrO,EALIrP,EAAOqP,UAKF1S,QAChB0S,EAAS1S,UACLghB,EAAmB,KAAA,EACnBzgB,SAAS+G,eAAewZ,CAAM,IAC9BE,EAAmBxY,UAAQjI,SAAS+G,eAAewZ,CAAM,EAAG,eAAe,EAAExhB,iBAAiB,aAAa,GAE3F,UAAhB,OAAOyhB,GACPA,EAAO9E,WAAS8E,EAAMzE,MAAM,GACvB,CAAEpa,MAAOmB,EAAOnB,MAAO+e,UAAWH,EAAQI,SAAUF,EAAkB,EAG3EtO,EAAS1S,QAAQ,CAAEkC,MAAOmB,EAAOnB,MAAO+e,UAAWH,EAAQI,SAAUF,EAAkB,KAUnGviB,EAAapC,UAAU8kB,UAAY,SAAUjf,GACzC,IAEIoC,EAFA8c,EAAW,GACX1b,EAAS,GAET2b,EAAY,GAIZxS,GAHwB,EAAxB1S,KAAKiG,UAAUtF,SACfukB,EAAYnf,EAAMG,MAAMlG,KAAKiG,SAAS,GAEzBjG,KAAKqG,UACtB,GAAIrG,KAAKqG,SAAS,GACd,IAAK,IAAI7F,EAAI,EAAGwY,EAAOtG,EAAW/R,OAAQH,EAAIwY,EAAMxY,CAAC,GAAI,CACrD,IAAI4I,EAAO,GACX,GAAuB,EAAnB8b,EAAUvkB,OAGV,IAFA,IACIwkB,EADAC,EAAU1S,EAAWlS,GAEhB2I,EAAI,EAAGqP,EAAO0M,EAAUvkB,OAAQwI,EAAIqP,EAAMrP,CAAC,GAChDgc,EAAWD,EAAU/b,GACjB+b,EAAUvkB,SAAYwI,EAAI,GAC1BhB,EAAQid,EAAQ,GAAKD,GACjBpjB,OAAOqjB,EAAQ,GAAKD,EAAS,IAAMC,EAAQ,GAAKD,IAAaC,EAAQ,GAAKD,GAAY,GAAM,IAC5Fhd,EAAQid,EAAQ,GAAKD,GAAU7O,aAInC8O,EAAUA,EAAQ,GAAKD,QAK/Bhd,EAAQuK,EAAWlS,GAAG,GAAKuF,GACvBhE,OAAO2Q,EAAWlS,GAAG,GAAKuF,EAAM,IAAM2M,EAAWlS,GAAG,GAAKuF,IAAU2M,EAAWlS,GAAG,GAAKuF,GAAS,GAAM,IACrGoC,EAAQuK,EAAWlS,GAAG,GAAKuF,GAAOuQ,YAGpCnO,KAAS8c,KACXA,EAAS,GAAK9c,GAAS,GACnB+c,EAAUvkB,OACVX,KAAKqlB,mBAAmBjc,EAAM8b,EAAW/c,CAAK,EAG9CiB,EAAK,GAAKrD,GAASoC,EAEvBoB,EAAO5D,KAAKyD,CAAI,GAI5B,OAAOG,GAEXjH,EAAapC,UAAUmlB,mBAAqB,SAAUxM,EAAKqM,EAAW/c,GAGlE,IAFA,IAAIlH,EACAqkB,EAAYJ,EAAUvkB,OAAS,EAC1B4kB,EAAI,EAAGA,EAAID,EAAW,EAAEC,GAC7BtkB,EAAMikB,EAAUK,MACH1M,IACTA,EAAI,GAAK5X,GAAO,IAEpB4X,EAAMA,EAAI,GAAK5X,GAEnB4X,EAAIqM,EAAUI,IAAcnd,GAEhC7F,EAAapC,UAAUslB,kBAAoB,SAAU9S,EAAY3M,GAuC7D,IAtCA,IAAIkf,EAAW,GACX1b,EAAS,GACTkc,EAAO,GACPtd,EAAQ,GACRud,EAAW3f,EAAMpC,QAAQ3D,KAAKiG,SAAS,EAiCvC0f,EAAS3lB,KACJQ,EAAI,EAAGwY,EAAOtG,EAAW/R,OAAQH,EAAIwY,EAAMxY,CAAC,GACjDolB,CAlCU,SAAUplB,GACpB2H,EAAQ,GACS,IAAbud,EACAvd,EAAQuK,EAAWlS,GAAG,GAAKuF,IAG3B0f,EAAO1f,EAAMG,MAAMyf,EAAO1f,SAAS,GAE9BgB,QAAQ,SAAUjE,GAEfmF,GADAA,GAIQuK,EAAWlS,IAHL,GAAKwC,GAK1B,EAKL,IAAIoG,EAAO,IAFPjB,EADApG,OAAO2Q,EAAWlS,GAAG,GAAKuF,EAAM,IAAM2M,EAAWlS,GAAG,GAAKuF,IAAU2M,EAAWlS,GAAG,GAAKuF,GAAS,GAAM,EAC7F2M,EAAWlS,GAAG,GAAKuF,GAAOuQ,WAGhCnO,KAAS8c,IACXA,EAAS,GAAK9c,GAAS,EACN,IAAbud,EACAtc,EAAK,GAAKrD,GAASoC,EAGnBiB,EAAKqc,EAAKA,EAAK9kB,OAAS,IAAMwH,EAElCoB,EAAO5D,KAAKyD,CAAI,IAKZ5I,CAAO,EAEnB,OAAO+I,GAEXjH,EAAapC,UAAU2lB,kBAAoB,SAAU3gB,EAAMyJ,EAAUnO,EAAGslB,EAAehc,GACnF,IACIic,EADAC,EAAY,CAAA,EAEZC,EAAW,CAAA,EA6BXC,GA5BJlmB,KAAKmmB,gBAAkB,CAAA,EACnBnmB,KAAKqG,SAAS,IAC0C,CAAC,EAArD9G,OAAOkH,KAAKzG,KAAKqG,SAAS,EAAE,EAAE1C,QAAQuB,EAAKa,KAAK,IAChDigB,EAAY,CAAA,EACZD,EAAK/lB,KAAKwlB,kBAAkBxlB,KAAKqG,SAAUnB,EAAKa,KAAK,GAG7DigB,EAAY9gB,CAAAA,EAAK6B,SAAkBif,EAKnCI,EAAmB,CACf1T,YAJAuT,EADA,CAACjmB,KAAKqG,SAAS1F,QAAUmJ,EAAOnJ,OACrB,CAAA,EAICslB,GAAWnc,EAAUkc,EAAYD,EAAK/lB,KAAKqmB,YACvDC,MAAO,IAAIC,QAAM,CAACrhB,EAAKa,MAAM,EAC7BkC,OAAQ,CAAEC,KAAMlI,KAAKwmB,aAAazgB,MAAOoC,MAAOnI,KAAKwmB,aAAazgB,OAClE4M,YAAa3S,KAAK2H,KAAKC,YAAY,aAAa,EAChDO,MAAO2d,EACPW,KAAM,WACNC,MAAO,OACP1T,OAAQhT,KAAKqf,YAAYtM,KAAK/S,KAAMQ,CAAC,EACrCqS,MAAO7S,KAAK2mB,WAAW5T,KAAK/S,KAAMQ,CAAC,EACnComB,YAAa5mB,KAAK6mB,gBAAgB9T,KAAK/S,KAAM2O,EAAW,YAAcnO,CAAC,EACvE0S,KAAMlT,KAAKmT,UAAUJ,KAAK/S,KAAM,CAAA,CAAK,GAErCA,KAAK8mB,YAAc9mB,KAAK8mB,WAAWC,mBACnCX,EAAmBhmB,EAAS,GAAIgmB,EAAkBpmB,KAAK8mB,WAAWC,gBAAgB,GAEjE,IAAIC,cAAYZ,CAAgB,GACrDF,EAAe1S,SAAS,IAAM7E,EAAW,YAAcnO,CAAC,EACxDR,KAAK6e,YAAYqH,EAAeljB,QAAS8iB,EAAe,CAAC,GAE7DxjB,EAAapC,UAAU2mB,gBAAkB,SAAUlY,EAAU9I,GACzD,IASQsC,EACA6d,EAVJhmB,KAAK0S,sBAAsBuU,gBACvBjkB,EAAUoB,SAAS+G,eAAewD,CAAQ,EAC1CuJ,EAActU,eAAayI,UAAQrJ,EAAS,mBAAmB,EAAEC,cAAc,iBAAiB,EAAsB,iBAAnBjD,KAAKwS,UAA+B,eAAiB,cAAc,EACnJ,iBAAnBxS,KAAKwS,UACLxS,KAAK0R,eAAiB1R,KAAKuR,UAAU2G,EAAY/P,MAAM,EAAE,EAGzDnI,KAAK0R,eAAiBwG,EAAYzE,eAAeyE,EAAY/P,KAAK,EAElEA,EAAQnI,KAAK0R,eAAe3L,MAC5BigB,EAAY,CAAA,GAORA,EANJhmB,KAAKqG,SAAS,KACqC,CAAC,EAAhD9G,OAAOkH,KAAKzG,KAAKqG,SAAS,EAAE,EAAE1C,QAAQwE,CAAK,IAC3C6d,EAAY,CAAA,GAGD,IADF7d,EAAMxE,QAAQ3D,KAAKiG,SAAS,IACrBjG,KAAKmmB,gBACT,CAAA,EAGfH,KACDngB,EAAKwH,OAAS,CAAA,EACdrN,KAAKknB,oBAAoBlkB,EAASmF,CAAK,KAInD7F,EAAapC,UAAUgnB,oBAAsB,SAAUlkB,EAASmF,GAC5DnI,KAAKmnB,mBAAmBnkB,EAASmF,CAAK,GAE1C7F,EAAapC,UAAUinB,mBAAqB,SAAUnkB,EAASmF,GAC3D,IACIif,EADAhhB,EAAQpG,KAERqnB,EAAW,IAAIC,WACfle,EAAOpJ,KAAKqmB,YAAYkB,cAAa,IAAIhB,SAAQvX,OAAO7G,CAAK,CAAC,EAC9Dqf,EAAiB5jB,eAAaZ,EAAS,aAAa,EACxDwkB,EAAeC,cACfznB,KAAK0nB,cAAcrb,UAAQrJ,EAAS,yBAAyB,EAAEc,aAAa,EAC5E6jB,cAAYtb,UAAQrJ,EAAS,yBAAyB,EAAEc,aAAa,EACrEsF,EAAKwe,KAAK,SAAU7jB,GAEZqjB,GADArjB,EAAE8jB,QAAU9jB,EAAE8jB,OAAOte,OACTxF,EAAE8jB,OAGF9jB,GAHSwF,OAKzBnD,EAAMC,SAAWmG,SAAOpG,EAAMC,SAAU+gB,EAAW,GAAI,CAAA,CAAI,EAC3DI,EAAe9U,WAAatM,EAAMof,kBAAkBpf,EAAMC,SAAU8B,CAAK,EACzE/B,EAAM+f,gBAAkB,CAAA,EACxBsB,cAAYpb,UAAQrJ,EAAS,yBAAyB,EAAEc,aAAa,EACxE,EAAEgkB,MAAM,SAAU/jB,GACfsjB,EAASU,OAAOhkB,CAAC,EACpB,GAELzB,EAAapC,UAAUwnB,cAAgB,SAAU1kB,GAC7C,IAAIglB,EAAchoB,KAAKsE,cAAc,OAAQ,CAAEC,MAAO,CAAEC,MAAO,gBAAkB,EACjFxB,EAAQyB,YAAYujB,CAAW,EAC/BN,gBAAc,CAAE1mB,OAAQgnB,EAAatB,MAAOuB,UAAQC,SAAW,OAAS,OAAQ,GAEpF5lB,EAAapC,UAAUymB,WAAa,SAAUnmB,EAAGqF,GAC7C,IAIYsC,EAJRnF,EAAUoB,SAAS+G,eAAetF,EAAKye,MAAMthB,QAAQgC,GAAGgI,QAAQ,SAAU,EAAE,CAAC,EAC7EhK,IACImlB,EAAKvkB,eAAaZ,EAAS,aAAa,KAEpCmF,EAAQggB,EAAGhgB,MACfnI,KAAK6e,YAAY7b,EAASmF,EAAO3H,CAAC,IAI9C8B,EAAapC,UAAUkoB,gBAAkB,SAAUpnB,EAAQ2S,EAAUzO,EAAM8d,GACvE,IAAIqF,EAAYhc,UAAQrL,EAAQ,mBAAmB,EAC/CsnB,EAAeD,EAAUllB,iBAAiB,aAAa,EACvDgX,EAAakO,EAAUplB,cAAc,gCAAgC,EACrEgf,EAA4B,iBAAnBjiB,KAAKwS,UAA+B5O,eAAauW,EAAY,cAAc,EAClFvW,eAAaykB,EAAUplB,cAAc,gCAAgC,EAAG,cAAc,EACxFiE,EAA4B,iBAAnBlH,KAAKwS,UAA+BxS,KAAKuR,UAAU0Q,EAAO9Z,MAAM,EAAE,EAAInI,KAAKuR,UAAU0Q,EAAO9Z,KAAK,EAC7E,UAA7B,OAAOwL,EAAS4C,UAAqDxB,KAAAA,IAA5BpB,EAAS4C,SAASgS,OACvD1iB,EAAO,CACPX,KAAMA,EAAM8I,OAAQqa,EAAUrjB,GAAIyM,SAAUuR,EAASvR,SAAU1L,MAAOmB,EAAOnB,MAC7E0J,YAAa,yBAEjBzP,KAAK4I,QAAQ,cAAe/C,CAAI,GAIF,UAA1B,OADA0Q,EAAW5C,EAAS4C,UACJgS,MAChBzI,WAASvJ,EAASgS,MAAOpI,MAAM,EAAE,CAC7B4E,SAAgC,EAAtBuD,EAAa3nB,OAAa2nB,EAAeA,EAAa,GAAIxe,OAAQ5E,EAAKiD,MACjFsJ,SAAUuR,EAASvR,SAAU1L,MAAOmB,EAAOnB,MAAO2M,WAAYxL,EAAO4C,OACxE,EAEiC,YAA7B,OAAO6J,EAAS4C,UACrB5C,EAAS4C,SAASgS,MAAM,CACpBxD,SAAgC,EAAtBuD,EAAa3nB,OAAa2nB,EAAeA,EAAa,GAChExe,OAAQ5E,EAAKiD,MAAOsJ,SAAUuR,EAASvR,SAAU1L,MAAOmB,EAAOnB,MAAO2M,WAAYxL,EAAO4C,OAC5F,GAIbxH,EAAapC,UAAUihB,YAAc,SAAUxS,GAC3C,IAAIqV,EAAWpgB,eAAaQ,SAAS+G,eAAewD,EAAW,YAAY,EAAG,cAAc,EACxF6Z,EAAiBxoB,KAAKgD,QAAQC,cAAc,IAAM0L,CAAQ,EAW9D,MAVuB,iBAAnB3O,KAAKwS,UACLwR,EAAWpgB,eAAaQ,SAAS+G,eAAewD,EAAW,YAAY,EAAG,cAAc,EAEnF6Z,GAEwB,GADzBC,EAAkBD,EAAerlB,iBAAiB,oBAAoB,GACtDxC,SACZ+nB,EAAkBD,EAAgBA,EAAgB9nB,OAAS,GAAGsC,cAAc,iBAAiB,EACjG+gB,EAAWpgB,eAAa8kB,EAAiB,cAAc,GAGrC,iBAAnB1oB,KAAKwS,UAA+BxS,KAAKuR,UAAUyS,EAAS7b,MAAM,EAAE,EAAInI,KAAKuR,UAAUyS,EAAS7b,KAAK,GAEhH7F,EAAapC,UAAUyoB,gBAAkB,SAAUha,EAAUia,EAAaC,GAClElV,EAAW3T,KAAKmhB,YAAYxS,CAAQ,EACxC,GAAI3I,oBAAkB2N,EAASxL,KAAK,EAChC,OAAO0gB,EAAWD,EAAc,CAAC,EAAG,GAAK,EAAIA,EAAc,GAAK,GAEpE,GAAIA,GACA,GAAI,EAAEjV,EAASxL,iBAAiBzI,OAC5B,MAAO,CAACiU,EAASxL,YAIrB,GAAIwL,EAASxL,iBAAiBzI,MAC1B,OAAOiU,EAASxL,MAAM,GAG9B,OAAOwL,EAASxL,OAEpB7F,EAAapC,UAAU4oB,kBAAoB,SAAUna,EAAUzJ,EAAMuM,EAAUyK,EAAK6M,GAChF,IAAIC,EACAC,EAAajpB,KAAKmhB,YAAYxS,CAAQ,EAEtCua,EAA6C,UAA/B,OAAOD,EAAW1S,SAEhCuP,EADA9lB,KAAK0C,eAAkC,CAAC,EAAlB1C,KAAKoP,WAAoC,CAAC,EAAnBpP,KAAK+b,YAAmB/b,KAAKmpB,UAAYD,GAA6B,KAAfhkB,EAAKiD,MACzFjD,EAAKiD,MAGLnI,KAAK2oB,gBAAgBha,EAAU,CAAA,EAAO,CAAA,CAAK,EAE7C,OAAb8C,GAAkC,UAAbA,GAA0BzR,CAAAA,KAAKqG,SAAS1F,QAAUsoB,CAAAA,EAAWnf,QAalE,OAAb2H,GAAkC,UAAbA,IAGrBqU,GAFAkD,EAAehpB,KAAK0C,eAAkC,CAAC,EAAlB1C,KAAKoP,WAAoC,CAAC,EAAnBpP,KAAK+b,WAAmB7W,EAAKiD,MACrFnI,KAAK2oB,gBAAgBha,EAAU,CAAA,EAAM,CAAA,CAAK,GAClBzE,KAAK,GAAG,GAEvB,YAAbuH,GAAuC,eAAbA,GACC,EAAvBqU,EAAcnlB,SACdmlB,EAAgBA,EAAc5J,IAGlCkN,EAAS,KAAA,EACbA,EAAS,CACLzW,YAAa3S,KAAK2H,KAAKC,YAAY,aAAa,EAChDyhB,MAAOrpB,KAAKqf,YAAYtM,KAAK/S,KAAMkc,CAAG,GAEtClc,KAAK8mB,YAAc9mB,KAAK8mB,WAAWwC,eACnCF,EAAShpB,EAAS,GAAIgpB,EAAQppB,KAAK8mB,WAAWwC,YAAY,IAE1DC,EAAW,IAAIC,UAAQJ,CAAM,GACxB5V,SAAS,IAAM7E,EAAW,YAAcuN,CAAG,EACpDqN,EAASphB,MAAQ2d,EACjByD,EAAS3H,aAjCToH,EAAehpB,KAAK0C,eAAkC,CAAC,EAAlB1C,KAAKoP,WAAoC,CAAC,EAAnBpP,KAAK+b,YAAmB/b,KAAKmpB,SAAYjkB,EAAKiD,MACtGnI,KAAK2oB,gBAAgBha,EAAU,CAAA,EAAM,CAAA,CAAK,EAC9C3O,KAAK6lB,kBAAkBoD,EAAYta,EAAUuN,EAAK8M,EAAaC,EAAWnf,MAAM,EACvD,aAArB9J,KAAK6R,aAA2E,CAAC,EAA9C7R,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,EAC5EolB,EAAYxd,MAAMmb,MAAQ,QAG1BqC,EAAYxd,MAAMmb,MAAQ,KAC1BqC,EAAYxd,MAAMke,SAAW,WA4BzCnnB,EAAapC,UAAUwpB,kBAAoB,SAAU/a,EAAUzJ,EAAMuM,EAAUyK,EAAK6M,EAAapV,EAAUhT,GACvG,IAoCQmB,EACAyc,EAKJoL,EA1CAV,EAAajpB,KAAKmhB,YAAYxS,CAAQ,EACtCua,EAA6C,UAA/B,OAAOD,EAAW1S,SAChCyS,EAAehpB,KAAK0C,eAAkC,CAAC,EAAlB1C,KAAKoP,WAAoC,CAAC,EAAnBpP,KAAK+b,YAAmB/b,KAAKmpB,UAAYD,GAC/E,UAAtB,OAAOhkB,EAAKiD,MAAsBjD,EAAKiD,MAAQnI,KAAK2oB,gBAAgBha,EAAU,CAAA,EAAO,CAAA,CAAI,EAC3E,OAAb8C,GAAkC,UAAbA,GAA0BzR,CAAAA,KAAKqG,SAAS1F,QAAUsoB,CAAAA,EAAWnf,OAYjE,OAAb2H,GAAkC,UAAbA,GAGtBmY,GAASZ,EAFEhpB,KAAK0C,eAAkC,CAAC,EAAlB1C,KAAKoP,WAAoC,CAAC,EAAnBpP,KAAK+b,WAAmB7W,EAAKiD,MACrFnI,KAAK2oB,gBAAgBha,EAAU,CAAA,EAAM,CAAA,CAAK,GACrBzE,KAAK,GAAG,EAC7B2f,EAAS,KAAA,EACbA,EAAS,CACLlX,YAAa3S,KAAK2H,KAAKC,YAAY,aAAa,EAChDyhB,MAAOrpB,KAAKqf,YAAYtM,KAAK/S,KAAMkc,CAAG,GAEtClc,KAAK8mB,YAAc9mB,KAAK8mB,WAAWwC,eACnCO,EAASzpB,EAAS,GAAIypB,EAAQ7pB,KAAK8mB,WAAWwC,YAAY,IAE1DD,EAAQ,IAAIG,UAAQK,CAAM,GACxBrW,SAAS,IAAM7E,EAAW,YAAcuN,CAAG,EACjDmN,EAAMlhB,MAAQyhB,EACdP,EAAMzH,aAIF/f,GADJ8R,EAAWsV,GACSxhB,YAAckM,EAASlM,WAAW5F,IAAO8R,EAASlM,WAAW5F,IAAM,EACnFC,EAAO6R,EAASlM,YAAckM,EAASlM,WAAW3F,IAAO6R,EAASlM,WAAW3F,IAAMC,OAAOC,UAC1Fuc,EAAS5K,EAAS4K,QAA2B,IAI7CoL,EAAa,KAAA,EACjBA,EAAa,CACTxhB,OAJA6gB,EADS,EAATroB,GAAcuE,EACAA,EAAKiD,MAAM+T,IAAyBlc,KAAK2oB,gBAAgBha,EAAU,CAAA,EAAM,CAAA,CAAI,EAInFqa,aAAuBtpB,MAASspB,EAAY9M,GAAO8M,EAC3DzK,OAAQA,EAAQ1c,IAAKA,EAAKC,IAAKA,EAAK4kB,MAAO,OAC3CoD,KAAMnW,EAASmW,MAAuB,EACtC9W,OAAQhT,KAAKqf,YAAYtM,KAAK/S,KAAMkc,CAAG,GAEvClc,KAAK8mB,YAAc9mB,KAAK8mB,WAAWiD,sBACnCJ,EAAavpB,EAAS,GAAIupB,EAAY3pB,KAAK8mB,WAAWiD,mBAAmB,IAEzEC,EAAU,IAAInK,iBAAe8J,CAAU,GACnCnW,SAAS,IAAM7E,EAAW,YAAcuN,CAAG,EACnD8N,EAAQhnB,QAAQiM,aAAa,aAAc0E,EAASpL,MAAc,QAAO,EACzEyhB,EAAQhnB,QAAQinB,QAAUjqB,KAAKqf,YAAYtM,KAAK/S,KAAMkc,CAAG,IAjDzD8M,EAAehpB,KAAK0C,eAAkC,CAAC,EAAlB1C,KAAKoP,WAAoC,CAAC,EAAnBpP,KAAK+b,YAAmB/b,KAAKmpB,SAAYjkB,EAAKiD,MACtGnI,KAAK2oB,gBAAgBha,EAAU,CAAA,EAAM,CAAA,CAAK,EAC9C3O,KAAK6lB,kBAAkBoD,EAAYta,EAAUuN,EAAK8M,EAAaC,EAAWnf,MAAM,EAC/B,CAAC,EAA9C9J,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,GAA+B,aAArB3D,KAAK6R,YACxDkX,EAAYxd,MAAMmb,MAAQ,QAG1BqC,EAAYxd,MAAMke,SAAW,QAC7BV,EAAYxd,MAAMmb,MAAQ,QA4CtCpkB,EAAapC,UAAUgqB,mBAAqB,SAAU/hB,EAAOf,GACzD,IAAI+iB,EAAS,GACTC,EAASjiB,EAAMjC,MAAM,GAAG,EAC5B,GAAa,WAATkB,EACA,OAAOgjB,EAGP,IAAK,IAAI7E,EAAI,EAAG8E,EAAOD,EAAOzpB,OAAQ4kB,EAAI8E,EAAM9E,CAAC,GAC7C4E,EAAOxkB,KAAK5D,OAAOqoB,EAAO7E,EAAE,CAAC,EAEjC,OAAO4E,GAGf7nB,EAAapC,UAAUoqB,UAAY,SAAUniB,EAAOoW,GAChD,IAKIuH,EAQJ,OAXIvH,GACIgM,EAAUvqB,KAAKye,KAAK+L,cAAc,CAAEC,SAAU,OAAQrjB,KAAM,WAAY,EAC5EsjB,EAAY1qB,KAAKwe,UAAUD,CAAM,EACjCuH,EAAgByE,EAAQpiB,CAAK,EACzBnC,oBAAkB8f,CAAa,IAC/BA,EAAgB9lB,KAAKye,KAAK6L,UAAUniB,EAAOuiB,CAAS,IAIxD5E,EAAgB,IAAIxe,KAAKa,CAAK,EAE3B2d,GAEXxjB,EAAapC,UAAUyqB,eAAiB,SAAU3pB,EAAQ2S,EAAUzO,EAAM8d,EAAU4H,GAIhF,GAHAxd,WAAS,CAACpM,EAAO8C,cAAcb,cAAc,eAAe,GAAI,SAAS,EACzE6B,cAAY,CAAC9D,EAAO8C,cAAcb,cAAc,eAAe,GAAI,QAAQ,EAC3EmK,WAAS,CAACpM,EAAO8C,cAAcb,cAAc,eAAe,GAAI,QAAQ,EACpE0Q,EAAS4C,WAAa5C,EAAS4C,SAASpW,QAAUyqB,GAClD5qB,KAAKooB,gBAAgBpnB,EAAQ2S,EAAUzO,EAAM8d,CAAQ,MAEpD,CACD,IAEI6H,EADkB,YAAlB7H,EAAS5b,KACEpH,KAAK0R,eAAe5H,OAAS9J,KAAK0R,eAAe5H,OAAOnJ,OAAS,EAGjEqiB,EAASvR,UAA4E,CAAC,EAAjEuR,EAASvR,SAAS6E,WAAWhJ,cAAc3J,QAAQ,SAAS,EAAS,EAAI,EAEzGgL,EAAWtC,UAAQrL,EAAQ,mBAAmB,EAAEgE,GAChD+jB,EAAc,KAAA,EACdtX,EAAWuR,EAASvR,SAAS6E,WACjC,GAAkD,CAAC,EAA/CtV,EAAO0C,UAAUC,QAAQ,iBAAiB,GAAsD,CAAC,EAA7C3C,EAAO0C,UAAUC,QAAQ,eAAe,EAAQ,CACpGolB,EAAc/nB,EAAO8C,cAAcb,cAAc,eAAe,EACf,CAAC,EAA9CjD,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,GAA+B,aAArB3D,KAAK6R,YACxDkX,EAAYxd,MAAMmb,MAAQ,OAGT,OAAbjV,GAAkC,UAAbA,EACrBrE,WAAS,CAAC2b,GAAc,gBAAgB,EAGxCjkB,cAAY,CAACikB,GAAc,gBAAgB,EAGnD,IAAK,IAAIvoB,EAAI,EAAGA,EAAIqqB,EAAUrqB,CAAC,GAC3B,OAAQwiB,EAAS5b,MACb,IAAK,SAEGpH,KAAK8oB,kBAAkBna,EAAUzJ,EAAMuM,EAAUjR,EAAGuoB,CAAW,EAEnE,MACJ,IAAK,SAEG/oB,KAAK0pB,kBAAkB/a,EAAUzJ,EAAMuM,EAAUjR,EAAGuoB,EAAapV,EAAUkX,CAAQ,EAEvF,MACJ,IAAK,UACD7qB,KAAK8qB,kBAAkBnX,EAAUzO,EAAMyJ,EAAUnO,CAAC,EAClD,MACJ,IAAK,OAEG,IAAIslB,EAAgB,IAAIxe,KACpBsiB,EAAS,KAAA,EACT1iB,EAAS,KAAA,EACTqX,EAAS5K,EAAS4K,OAElBwM,EAAa,KAAA,EACbC,EAAQhrB,KAAK2H,KAAKC,YAAY,aAAa,EAC3CshB,EAA2C,UAA7B,OAAOvV,EAAS4C,SAC9BrR,EAAKiD,OAAS,CAACnC,oBAAkBuY,CAAM,IACvCqL,EAAqB,EAAXiB,EAAgB3lB,EAAKiD,MAAM3H,GAAK0E,EAAKiD,MAC/C2d,EAAgB9lB,KAAKsqB,UAAUV,EAAQrL,CAAM,GAAK,IAAIjX,MAGrDqM,EAAS5N,OAAU4N,EAAS1S,KAAO0S,CAAAA,EAASxL,QAEzC2d,EADAnS,EAASxL,iBAAiBb,KACVqM,EAASxL,MAGTnI,KAAKsqB,UAAU3W,EAASxL,MAAOwL,EAAS4K,MAAM,GAGlE,CAAC5K,EAAS4K,QAAUrZ,GAAuB,KAAfA,EAAKa,QAEjCwY,GADArX,EAASlH,KAAKuR,UAAUrM,EAAKa,KAAK,GAClBwY,SAEfve,KAAK0C,eAAiB1C,KAAKmpB,UAAYD,IAAehkB,IAEvDqZ,GADArX,EAASlH,KAAKuR,UAAUrM,EAAKa,KAAK,GAClBwY,OAGZuH,EAFA5gB,EAAKiD,QACLyhB,EAAqB,EAAXiB,EAAgB3lB,EAAKiD,MAAM3H,GAAK0E,EAAKiD,MAC/BnI,KAAKsqB,UAAUV,EAAQ1iB,EAAOqX,MAAM,IASpDwM,EAHJxM,GACI0M,EAAYjrB,KAAKwe,UAAUD,CAAM,GACvBkM,SACG,CACTzK,OAAQhgB,KAAKkrB,YAAa/iB,MAAO2d,EACjCnT,YAAaqY,EAAOzM,OAAQ0M,EAAWjY,OAAQhT,KAAKqf,YAAYtM,KAAK/S,KAAMQ,CAAC,GAQnE,CACT2H,MAAO2d,EAAe9F,OAAQhgB,KAAKkrB,YAAavY,YAAaqY,EAC7DzM,OAAQ0M,EAAU1M,OAAQvL,OAAQhT,KAAKqf,YAAYtM,KAAK/S,KAAMQ,CAAC,GAS1D,CACTwf,OAAQhgB,KAAKkrB,YAAa/iB,MAAO2d,EACjCnT,YAAaqY,EAAOhY,OAAQhT,KAAKqf,YAAYtM,KAAK/S,KAAMQ,CAAC,GAEzDR,KAAK8mB,YAAc9mB,KAAK8mB,WAAWqE,kBACnCJ,EAAa3qB,EAAS,GAAI2qB,EAAY/qB,KAAK8mB,WAAWqE,eAAe,GAE9D,IAAIC,aAAWL,CAAU,EAE/BvX,SAAS,IAAM7E,EAAW,YAAcnO,CAAC,EAC7C0E,EAAKiD,QACF2G,EAAO1K,SAAS+G,eAAewD,EAAW,YAAcnO,CAAC,EAC7DR,KAAK6e,YAAY/P,EAAMgX,EAAe,KAAM9lB,KAAK+hB,gBAAgB,EACjE/hB,KAAK+hB,iBAAmB,CAAA,OASxDzf,EAAapC,UAAU4qB,kBAAoB,SAAUnX,EAAUzO,EAAMyJ,EAAUnO,GAC3E,IACI2H,EACAkjB,EAIA9iB,EAeIuB,EArBJwhB,EAAU,CAAA,EAmDVC,GAhDAvlB,oBAAkBd,EAAKkC,IAAI,GAAKuM,IAChCzO,EAAKkC,KAAOuM,EAASvM,MAGrBuM,EAAS7J,QACLA,EAAS6J,EAAS7J,OACJ,YAAd5E,EAAKkC,MAAuBpB,oBAAkBd,EAAKiD,KAAK,EAGnDwL,EAASxL,MACdmjB,EAAUxhB,EAAOtJ,GAAG8M,gBAAkBqG,EAASxL,MAAMmO,WAAWhJ,cAErD,IAAN9M,IACL8qB,EAAU,CAAA,GANVA,EAAUxhB,EAAOtJ,GAAG8M,gBAAkBpI,EAAKiD,MAAMmO,WAAWhJ,cAQhE+d,EAAWljB,EAAQI,EAAQuB,EAAOtJ,KAG9BsJ,EAAS,CAAC,CAAA,EAAM,CAAA,GACF,YAAd5E,EAAKkC,MAAuBpB,oBAAkBd,EAAKiD,KAAK,EAGnDwL,EAASxL,MACdmjB,EAAUxhB,EAAOtJ,GAAG8V,WAAWhJ,gBAAkBqG,EAASxL,MAAMmO,WAAWhJ,cAEhE,IAAN9M,IAED8qB,EADsB,WAAtB,OAAOpmB,EAAKiD,OACFjD,CAAAA,CAAAA,EAAKiD,OAPnBmjB,EAAUxhB,EAAOtJ,GAAG8V,WAAWhJ,gBAAkBpI,EAAKiD,MAAMmO,WAAWhJ,cAajD,WAAtB,OAAOpI,EAAKiD,OAA6B,IAAN3H,IACnC8qB,EAAWpmB,CAAAA,EAAKiD,OAEpBA,EAAQ2B,EAAOtJ,GAAG8V,WAClB+U,EAAWvhB,EAAOtJ,GAClB+H,EAAQvI,KAAK2H,KAAKC,YAAY,CAAC,OAAQ,SAASpH,EAAE,GAGtDgrB,EAAW,CACPjjB,MAAOA,EAAO8C,KAAMsD,EAAW,UAAWT,QAASod,EAASnjB,MAAOA,EACnE6K,OAAQhT,KAAKqf,YAAYtM,KAAK/S,KAAMQ,CAAC,GAErCR,KAAK8mB,YAAc9mB,KAAK8mB,WAAW2E,mBACnCD,EAAWprB,EAAS,GAAIorB,EAAUxrB,KAAK8mB,WAAW2E,gBAAgB,GAEpD,IAAIC,cAAYF,CAAQ,GAC1CD,EAAY/X,SAAS,IAAM7E,EAAW,YAAcnO,CAAC,EACjD8qB,GACAtrB,KAAK6e,YAAY0M,EAAYvoB,QAASqoB,EAAU,EAAG,CAAA,CAAI,GAG/D/oB,EAAapC,UAAUyrB,iBAAmB,SAAU1J,EAAQ/c,GAIxD,IAHA,IAEIoD,EADa2Z,EAAOvP,WACH/R,OAChBH,EAAI,EAAGA,EAAI8H,EAAK9H,CAAC,GAClB,GAAI0E,EAAKuM,WAAawQ,EAAOvP,WAAWlS,GAAG2H,MACvC,OAAO3H,EAGf,OAAO,GAEX8B,EAAapC,UAAU0rB,oBAAsB,SAAUtK,EAAcpa,GAQjE,OAPIlH,KAAK+gB,eAAgBO,EAAAA,GAENthB,KAAKuR,UAAU+P,EAAanZ,OAA6BmZ,EAAavb,KAAK,GAE1FmB,GAAUA,EAAOqP,UAAY+K,GAAgB/hB,OAAOkH,KAAK6a,CAAY,EAAE3gB,OAAS,IAChF2gB,EAAa/K,SAAWrP,EAAOqP,UAE5B+K,GAEXhf,EAAapC,UAAU+jB,aAAe,SAAUjjB,EAAQ2S,EAAU2N,EAAcuK,EAAU3mB,EAAM8d,EAAUhgB,GACtG,IACI8oB,EADa9qB,EAAO8M,uBACEie,qBAAqB,OAAO,EAAE,GACpDC,EAA6B,iBAAnBhsB,KAAKwS,UAA+B5O,eAAakoB,EAAU,cAAc,EACjFloB,eAAakoB,EAAU,cAAc,EACvC5kB,EAA4B,iBAAnBlH,KAAKwS,UAA+BxS,KAAKuR,UAAUya,EAAQ7jB,MAAM,EAAE,EAE1EnI,KAAKuR,UAAUya,EAAQ7jB,KAAK,EAE9B8Z,GADJjiB,KAAKwmB,aAAetf,EACPtD,eAAa5C,EAAOiC,cAAc,OAAO,EAAG,cAAc,GAkBnEwO,GAjBAoa,IACAlY,EAA4C,CAAC,EAAlC3Q,EAAQgC,GAAGrB,QAAQ,UAAU,EAASgQ,EAAW3T,KAAKwmB,cACpD3e,YACToa,EAAO9Z,MAAQ,KACf8Z,EAAOL,WACPK,EAAOvP,WAAaiB,EAAS9L,UAC7Boa,EAAO5S,MAAQrP,KAAK2rB,iBAAiB1J,EAAQ/c,CAAI,EACjD+c,EAAO9Z,MAAQ6a,EAASvR,SAAWwQ,EAAOvP,WAAWuP,EAAO5S,OAAOlH,MAC9DnI,KAAKmkB,mBAKNlC,EAAOL,YAJPK,EAAO5S,MAAQ,CAAC,EAChB2T,EAASvR,SAAWwQ,EAAO9Z,MAAQ,KAOhC6a,EAASvR,SAAS6E,YAC7B2V,EAAiB,CAAA,EACrB,GAAiC,CAAC,EAA5Bxa,EAAS9N,QAAQ,MAAM,GAAwC,CAAC,EAA/B8N,EAAS9N,QAAQ,SAAS,GAA2C,CAAC,EAAlC8N,EAAS9N,QAAQ,YAAY,GA0EhG6f,EADaxiB,EAAO8C,cAAcb,cAAc,eAAe,KAE/D6B,cAAY,CAAC0e,GAAa,QAAQ,EAClCpW,WAAS,CAACoW,GAAa,QAAQ,OA5E0E,CAC7G,IAYQ1U,EAZJH,EAAWtC,UAAQrL,EAAQ,mBAAmB,EAAEgE,GA+BpD,IA9BAsc,EAAethB,KAAK4rB,oBAAoBtK,EAAcpa,CAAM,IACd6N,KAAAA,IAA1BuM,EAAa/K,SACzB+K,EAAava,UACbua,EAAethB,KAAKuR,UAAUrM,EAAKa,KAAK,GAGpB,iBAAnB/F,KAAKwS,WAAiDuC,KAAAA,IAAjBuM,IAC1CA,EAAethB,KAAKuR,UAAUrM,EAAKa,KAAK,GAExCub,GAAgBA,EAAa/K,WAC7BvW,KAAKykB,gBAAgBnD,EAAc3S,EAAW,YAAY,GACtDG,EAAOE,SAAO,IAAML,EAAW,aAAc3N,EAAOmc,kBAAkB,IAC9D,CAACrO,EAAKjC,UAAUC,SAAS,WAAW,GAC5CiK,SAAO/H,SAAO,IAAML,EAAW,aAAc3N,EAAOmc,kBAAkB,CAAC,EAEtC,UAAjC,OAAOmE,EAAa/K,UAA0DxB,KAAAA,IAAjCuM,EAAa/K,SAASpW,SAC/Da,EAAOmc,mBAAmBtQ,UAAUC,SAAS,kBAAkB,GAC/D9M,KAAKgX,gBAAgB,CAACrI,EAAS,EAEnC3N,EAAOmc,mBAAmBlD,UAAY,IAGtCja,KAAKgQ,YAAa,CAAChK,oBAAkBsb,EAAargB,GAAG,GAAwB,iBAAnBjB,KAAKwS,WAC/D,OAAO8O,EAAa/K,SAGxBsV,IACA7rB,KAAK+e,cAAc7Z,EAAMmH,UAAQrL,EAAQ,mBAAmB,CAAC,EAC7DhB,KAAKmf,gBAAgBne,CAAM,GAE3BhB,KAAK0C,eAAkBuf,GAA2B,KAAjBA,EAAO9Z,MAAe,CAUvD,GATIjB,IACAyM,EAAS4C,SAAWrP,EAAOqP,UAE3B5C,EAAS4C,WACTnJ,WAAS,CAACpM,EAAOmc,oBAAqB,kBAAkB,EACxDxJ,EAAS4C,SAAWrP,EAAOqP,SAC3B0V,EAAiBjsB,KAAKksB,kBAAkBvY,EAAUhF,EAAUzH,EAAOnB,MAAO4N,EAASxL,OAC/EsJ,EAAUzQ,EAAQkE,CAAI,GAE1B+mB,EAAgB,CAChB,IAAIzI,EAAaxiB,EAAO8C,cAAcb,cAAc,eAAe,EAClB,CAAC,EAA9CjD,KAAKgD,QAAQU,UAAUC,QAAQ,UAAU,GAA+B,aAArB3D,KAAK6R,YACxD2R,EAAWjY,MAAMmb,MAAQ,OAGzBlD,EAAWjY,MAAMmb,MAAQ,YAG5B,CACD5hB,cAAY,CAAC9D,EAAOmc,oBAAqB,kBAAkB,EAQ3D,IAPA,IAAIgP,EAAW,EAEXA,EADkB,YAAlBnJ,EAAS5b,KACEpH,KAAK0R,eAAe5H,OAAS9J,KAAK0R,eAAe5H,OAAOnJ,OAAS,EAGhE8Q,GAAwD,CAAC,EAA7CA,EAASnE,cAAc3J,QAAQ,SAAS,EAAU,EAAI,EAEzEnD,EAAI,EAAGA,EAAI2rB,EAAU3rB,CAAC,GAAI,CAC/B,IAAI+X,EAAUvY,KAAKsE,cAAc,QAAS,CAAEC,MAAO,CAAE6C,KAAM,OAAQpC,GAAI2J,EAAW,YAAcnO,GAAK,EACrGQ,EAAOmc,mBAAmB1Y,YAAY8T,CAAO,GAGrDvY,KAAK2qB,eAAe3pB,EAAQ2S,EAAUzO,EAAM8d,EAAUiJ,CAAc,EAEhEjsB,KAAKgQ,WAAa,CAAChK,oBAAkB2N,EAAS1S,GAAG,GAAK0S,EAAS4C,UAA+B,iBAAnBvW,KAAKwS,WAChF,OAAOmB,EAAS4C,YAYhCjU,EAAapC,UAAUgsB,kBAAoB,SAAUvY,EAAU3F,EAAQjI,EAAO0L,EAAUzQ,EAAQkE,GAC5F,IAAIkB,EAAQpG,KAER4qB,EAAa,CAAA,EACjB,GAAKjX,EAAS4C,SAAd,CAII,GAAiC,UAA7B,OAAO5C,EAAS4C,UAAsDxB,KAAAA,IAA7BpB,EAAS4C,SAASpW,OAQ3D,OAHAH,KAAK4I,QAAQ,cAJN,CACH6G,YAAa,4BAA6BzB,OAAQA,EAAQjI,MAAOA,EAAO0L,SAAUA,EAAUvM,KAAMA,EAClGknB,eAAgB,CAAA,GAEc,SAAUC,GACxCzB,EAAaxkB,EAAMkmB,2BAA2BD,EAAoB1Y,EAAU3F,EAAQjI,EAAO/E,CAAM,EACpG,EACM4pB,EAGP,IAAIrS,EAAU,KAAA,EACVhC,EAAW5C,EAAS4C,SAOxB,IAAIgC,EAN2B,UAA3B,OAAOhC,EAASpW,OACN2f,WAASvJ,EAASpW,OAAQggB,MAAM,EAAE,CAAEpa,MAAOA,EAAO0L,SAAUA,EAAU,EAGtE8E,EAASpW,OAAO,CAAE4F,MAAOA,EAAO0L,SAAUA,EAAU,aAE3C8a,QACnBhU,EAAQvT,GAAKgJ,EAAS,aACtBZ,WAAS,CAACmL,GAAU,YAAY,EAChCvX,EAAOmc,mBAAmB1Y,YAAY8T,CAAO,EACzCxS,EAAMpC,QAAQ,GAAG,EAAI,GACrByJ,WAAS,CAACmL,GAAU,KAAOxS,CAAK,OAGnC,GAAIwS,aAAmB7Y,MAAO,CAC/B0N,WAASmL,EAAS,YAAY,EAC9B,IAAK,IAAI/X,EAAI,EAAGwY,EAAOT,EAAQ5X,OAAQH,EAAIwY,EAAMxY,CAAC,GAC9C+X,EAAQ/X,GAAGwE,GAAKgJ,EAAS,YAAcxN,EACvCQ,EAAOmc,mBAAmB1Y,YAAY8T,EAAQ/X,EAAE,EAGxD4M,WAAS,CAACpM,EAAOmc,oBAAqB,kBAAkB,EArC5D,MAAO,CAAA,GA0Cf7a,EAAapC,UAAUosB,2BAA6B,SAAUzmB,EAAM8N,EAAU3F,EAAQjI,EAAO/E,GACzF,IAWQuX,EAXR,MAAI1S,CAAAA,CAAAA,EAAKumB,iBACD7T,EAAU,KAAA,EACdvY,KAAKwsB,iBAAmBxsB,KAAK2P,gBAAsBgE,EAAS4C,SAA0B5C,EAAS4C,SAA4B,EACvH3G,EAAa5P,KAAKgD,QAAQgC,GAAKe,EAE/B/F,KAAK+P,SACLwI,EAAUvY,KAAKwsB,iBAAiB3mB,EAAM7F,KAAMgO,EAAQ4B,CAAU,EAAE,GAChE5O,EAAOmc,mBAAmB1Y,YAAY8T,CAAO,GAExCvY,KAAKgQ,WAEVuI,EAAuC,KADnCkU,EAAczsB,KAAKwsB,iBAAiB3mB,EAAM7F,KAAMgO,EAAQ4B,CAAU,GAC/C,GAAGM,SAAkBuc,EAAY,GAAKA,EAAY,GACzEzrB,EAAOmc,mBAAmB1Y,YAAY8T,CAAO,GAExCvY,KAAKmQ,QACVoI,EAAUvY,KAAKwsB,iBAAiB3mB,EAAM7F,KAAM,WAAY4P,CAAU,EAElEQ,SAAOmI,EAASvX,EAAOmc,kBAAkB,IAGzC5E,EAAUvY,KAAKwsB,iBAAiB3mB,EAAM7F,KAAM,WAAY4P,CAAU,EAAE,GACpE5O,EAAOmc,mBAAmB1Y,YAAY8T,CAAO,GAEjDnL,WAAS,CAACpM,EAAOmc,oBAAqB,kBAAkB,EACxDnd,KAAK2Q,uBACE,CAAA,IAMfrO,EAAapC,UAAUwsB,aAAe,SAAU1pB,EAASkC,GACrD,IAQIynB,EAIAC,EAZA1Q,EAAM,EAIN2Q,GAH0C,CAAC,EAA3C7pB,EAAQU,UAAUC,QAAQ,YAAY,IACtCuY,EAAM,GAEQlZ,EAAQU,UAAUwC,MAAM,KAAK,EAAEgW,IAC7C1b,EAAI6V,SAASrT,EAAQgC,GAAGkU,MAAM,CAAC,CAAC,EAAG,CAAC,EAQxC,OAAQ2T,GACJ,IAAK,WACD1kB,EAAQvE,eAAaZ,EAAS6pB,CAAW,EAAE1kB,MAC3CjD,EAAKiD,MAAmB,KAAVA,EAAgBA,EAAQ4M,KAAAA,EACtC,MACJ,IAAK,UACD6X,EAAehpB,eAAaZ,EAAS6pB,CAAW,EAAE1kB,MACX,CAAC,EAApCjD,EAAKuM,SAAS9N,QAAQ,SAAS,GACL,UAAtB,OAAOuB,EAAKiD,QACZjD,EAAKiD,MAAQ,IAEjBjD,EAAKiD,MAAM3H,GAAKosB,GAEX,CAAC,KAAM,SAASE,KAAK,SAAUC,GAAM,MAAqC,CAAC,IAA/B7nB,EAAKuM,SAAS9N,QAAQopB,CAAE,EAAW,GAC3C,CAAC,IAAvC7nB,EAAKuM,SAAS9N,QAAQ,UAAU,EACnCuB,EAAKiD,MAAQykB,EACM,WAAd1nB,EAAKkC,KAAoBwlB,EAAa1mB,MAAM,GAAG,EAAE+D,IAAI,SAAU+iB,GAAO,OAAOA,EAAIC,OAAS,EACvFL,EAAa1mB,MAAM,GAAG,EAAE+D,IAAIlI,MAAM,EAAK,GAG/CmD,EAAKiD,MAAQykB,EAEjB,MACJ,IAAK,eACD1nB,EAAKiD,MAAQvE,eAAaZ,EAAS6pB,CAAW,EAAE1kB,MAChD,MACJ,IAAK,SACD+kB,EAActpB,eAAaZ,EAAS6pB,CAAW,GAC/B3e,UACc,WAAtB,OAAOhJ,EAAKiD,OAIRnI,KAAKuR,UAAUrM,EAAKa,KAAK,EAAE+D,OAC3B5E,EAAKiD,MAAQ+kB,EAAY/kB,MAGzBjD,EAAKiD,MAA8B,SAAtB+kB,EAAY/kB,OAIrC+kB,EAAYlX,UACZ,MACJ,IAAK,iBACsC,CAAC,EAApC9Q,EAAKuM,SAAS9N,QAAQ,SAAS,GACL,UAAtB,OAAOuB,EAAKiD,QACZjD,EAAKiD,MAAQ,IAEjBjD,EAAKiD,MAAM3H,GAAKoD,eAAaZ,EAAS6pB,CAAW,EAAE1kB,OAGnDjD,EAAKiD,MAAQvE,eAAaZ,EAAS6pB,CAAW,EAAE1kB,MAEpD,MACJ,IAAK,aACDjB,EAASlH,KAAKuR,UAAUrM,EAAKa,KAAK,EAClCwY,EAASve,KAAKwe,UAAUtX,EAAOqX,MAAM,EACrCoO,EAAe/oB,eAAaZ,EAAS6pB,CAAW,EAAE1kB,MACX,CAAC,EAApCjD,EAAKuM,SAAS9N,QAAQ,SAAS,GACL,UAAtB,OAAOuB,EAAKiD,QACZjD,EAAKiD,MAAQ,IAEjBjD,EAAKiD,MAAM3H,GAAKR,KAAKye,KAAKC,WAAWiO,EAAcpO,CAAM,GAEpDvY,oBAAkBuY,EAAOA,MAAM,GAAKoO,EACzCznB,EAAKiD,MAAQnI,KAAKye,KAAKC,WAAWiO,CAAY,EAG9CznB,EAAKiD,MADAwkB,GACQ3sB,KAAKye,KAAKC,WAAWiO,EAAcpO,CAAM,EAK1D,MACJ,IAAK,cACDrZ,EAAKiD,MAAQvE,eAAaZ,EAAS6pB,CAAW,EAAE1kB,QAI5D7F,EAAapC,UAAU2e,YAAc,SAAU7d,EAAQ8kB,EAAetlB,EAAG2sB,GASrE,IARA,IAAI7hB,EAAYe,UAAQrL,EAAQ,oBAAoB,EAChDkE,EAAOlF,KAAK6N,eAAevC,CAAS,EACpCuD,EAAWxC,UAAQrL,EAAQ,mBAAmB,EAC9CqO,EAAQ,EAGRtC,EAAUzB,EAAUtG,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACxDyI,EAAczN,KAAK4N,cAAc5N,KAAKkF,IAAI,EACvC2J,GAAgD,OAApCA,EAASf,wBACxBe,EAAWA,EAASf,wBAChB,CAAC9N,KAAK4M,yBAA4B5M,KAAK4M,0BACrC,CAAC5M,KAAK0E,gBAAkB,CAACmK,EAAShC,UAAUC,SAAS,aAAa,GAChE9M,KAAK0E,iBAAmBmK,EAAShC,UAAUC,SAAS,kBAAkB,GAClE+B,EAAShC,UAAUC,SAAS,mBAAmB,MACvDuC,CAAK,GAGb,IAAIoC,EAAWvM,EAAKG,MAAMgK,GAAOoC,SAAWvM,EAAKG,MAAMgK,GAAOoC,SAAS6E,WAAa,GAEhFtI,GAASa,EADFxC,UAAQrL,EAAQ,mBAAmB,GACxBgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAC1D,GAAIqH,UAAQrL,EAAQ,gBAAgB,GAAKqL,UAAQrL,EAAQ,oBAAoB,EAAG,CACxEhB,KAAK8hB,eACL9gB,EAAShB,KAAK8hB,cAKlB,IAHA5J,EAAiC,iBAAnBlY,KAAKwS,UAA+B5O,eAAa5C,EAAQ,cAAc,EACjF4C,eAAa5C,EAAQ,cAAc,EAEnCkG,EAA4B,iBAAnBlH,KAAKwS,UAA+BxS,KAAKuR,UAAU2G,EAAY/P,MAAM,EAAE,EAE9EnI,KAAKuR,UAAU2G,EAAY/P,KAAK,EAYlCmW,GAXCte,KAAK0C,eAAiBwC,CAAAA,EAAKG,MAAMgK,GAAOtJ,OACzCb,EAAKG,MAAMgK,GAAOtJ,MAAMuH,gBAAkBpG,EAAOnB,MAAMuH,gBACnD,EAAEuB,EAAS1L,iBAAiB,aAAc,GAAkC,CAAC,EAA5BsO,EAAS9N,QAAQ,MAAM,IACxC,CAAC,EAA7B8N,EAAS9N,QAAQ,OAAO,KAC5BuB,EAAKG,MAAMgK,GAAOlH,MAAQ,IAGlCnI,KAAK0R,eAAiB1R,KAAKuR,UAAUvR,KAAK0R,eAAe3L,KAAK,EAC9Db,EAAKG,MAAMgK,GAAOtJ,MAAQ/F,KAAK0R,eAAe3L,MAC9Cb,EAAKG,MAAMgK,GAAOjI,KAAOpH,KAAK0R,eAAetK,KAC7ClC,EAAKG,MAAMgK,GAAO9G,MAAQvI,KAAK0R,eAAenJ,MAC5B8D,UAAQrL,EAAQ,gBAAgB,GAGlDgC,GADcsb,EADAA,GAA4BjS,UAAQrL,EAAQ,oBAAoB,GACpDmc,mBAAmBla,cAAc,iBAAiB,GAC9Cqb,EAAYnB,mBAAmBA,mBAAmBla,cAAc,iBAAiB,EAC/GwO,EAAW7N,eAAaZ,EAAS,cAAc,EAAEmF,MAAMmO,WAEnD8W,GADJloB,EAAKG,MAAMgK,GAAOoC,SAAWA,EACR6M,EAAYnB,mBAAmBA,oBAChDkQ,EAAaD,EAAejqB,iBAAiB,iBAAiB,GAE9DkqB,EADAA,EAAW1sB,OAAS,EACPysB,EAAejqB,iBAAiB,eAAe,EAE5DkqB,GAAW1sB,OAAS,IACpB0sB,EAAaD,EAAejqB,iBAAiB,aAAa,GAG9D,IAAK,IADLic,EAAa,CAAErS,QAASA,EAASiB,OAAQA,EAAQ7F,MAAOjD,EAAKG,MAAMgK,GAAOtJ,MAAOqB,KAAM,SAC9EkmB,EAAM,EAAGA,EAAMD,EAAW1sB,OAAQ2sB,CAAG,GACX,CAAC,EAA5B7b,EAAS9N,QAAQ,MAAM,GAAsC,CAAC,EAA7B8N,EAAS9N,QAAQ,OAAO,EACzDuB,EAAKG,MAAMgK,GAAOlH,MAAQ,KAG9BnI,KAAK0sB,aAAaW,EAAWC,GAAMpoB,EAAKG,MAAMgK,EAAM,EAEnDrP,KAAK0C,eAAkB1C,KAAK8Q,eAC7B9Q,KAAK4I,QAAQ,SAAUwW,CAAU,EAEjCpf,KAAK6X,iBAAmB3S,EAAKG,MAAMgK,GAAOtJ,OAA+D,CAAC,EAAvD/E,EAAO8C,cAAcJ,UAAUC,QAAQ,WAAW,GACrGC,eAAa5C,EAAO8C,cAAe,SAAS,EAAED,UAElD7D,KAAKiO,YAAYR,EAAazN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAAG,OAAO,OAEnE,GAAImH,UAAQrL,EAAQ,kBAAkB,EAAG,CAC1CkX,EAActU,eAAa5C,EAAQ,cAAc,EACjDkE,EAAKG,MAAMgK,GAAOoC,SAAWyG,EAAY/P,MAAMmO,WAC/C,IAAI+C,EAAYxK,EAAS1L,iBAAiB,+BAA+B,EACzEic,EAAa,CAAErS,QAASA,EAASiB,OAAQA,EAAQ7F,MAAO+P,EAAY/P,MAAOf,KAAM,YAC7EpH,KAAK6X,iBAAmB3S,EAAKG,MAAMgK,GAAOoC,UAAkE,CAAC,EAAvDzQ,EAAO8C,cAAcJ,UAAUC,QAAQ,WAAW,GACxGC,eAAa5C,EAAO8C,cAAe,SAAS,EAAED,UAE3B,EAAnBwV,EAAU1Y,QAAc,EAAiD,CAAC,EAAhD0Y,EAAU,GAAG3V,UAAUC,QAAQ,YAAY,KACrEuB,EAAKG,MAAMgK,GAAOlH,MAAQ,IAE9B,IAAK,IAAIolB,EAAM,EAAGA,EAAMlU,EAAU1Y,OAAQ4sB,CAAG,GACQ,CAAC,EAA9CroB,EAAKG,MAAMgK,GAAOoC,SAAS9N,QAAQ,MAAM,GAAwD,CAAC,EAA/CuB,EAAKG,MAAMgK,GAAOoC,SAAS9N,QAAQ,OAAO,EAC7FuB,EAAKG,MAAMgK,GAAOlH,MAAQ,KAGrBkR,EAAUkU,GAAK1gB,UAAUC,SAAS,YAAY,GAGvD9M,KAAK0sB,aAAarT,EAAUkU,GAAMroB,EAAKG,MAAMgK,EAAM,EAElDrP,KAAK0C,eACN1C,KAAK4I,QAAQ,SAAUwW,CAAU,EAErCpf,KAAKiO,YAAYR,EAAazN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAAG,UAAU,OAElEmH,UAAQrL,EAAQ,eAAe,IACpChB,KAAKwtB,gBAAgBxsB,EAAQ8kB,EAAe5gB,EAAMmK,EAAO/D,EAAWuD,EAAUrO,CAAC,EAC1E2sB,GACDntB,KAAKiO,YAAYR,EAAazN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAAG,OAAO,IAIhF5C,EAAapC,UAAU+N,YAAc,SAAUwf,EAAYC,EAAWtmB,GAC9CumB,KAAKC,UAAU,CAAEzoB,UAAWsoB,EAAWtoB,UAAWC,IAAKqoB,EAAWroB,IAAKF,KAAMuoB,EAAWpoB,MAAO,IAChGsoB,KAAKC,UAAU,CAAEzoB,UAAWuoB,EAAUvoB,UAAWC,IAAKsoB,EAAUtoB,IAAKF,KAAMwoB,EAAUroB,MAAO,GAEtGrF,KAAK0C,eAAkB1C,KAAK8Q,eAC7B9Q,KAAK4I,QAAQ,aAAc,CAAEilB,aAAcJ,EAAYvoB,KAAMwoB,EAAWtmB,KAAMA,EAAM,GAIhG9E,EAAapC,UAAUstB,gBAAkB,SAAUxsB,EAAQ8kB,EAAe5gB,EAAMmK,EAAO/D,EAAWuD,EAAUrO,GACxG,IACIstB,EACAC,EAAc,CAAC,KAAM,UAAW,QAAS,cAI7C,GAHI7oB,EAAKG,MAAMgK,GAAOoC,WAClBqc,EAAO5oB,EAAKG,MAAMgK,GAAOoC,SAAS6E,WAAWhJ,eAE3B,OAAlBwY,EAAwB,CACxB,GAAgD,CAAC,EAA7C9kB,EAAO0C,UAAUC,QAAQ,eAAe,GAAqC,WAA3BuB,EAAKG,MAAMgK,GAAOjI,MACpE,CAACpH,KAAK4e,WAAY,CAGlB,IAFA,IAAIgL,EAAS,GACToE,EAAmBlI,EACdP,EAAI,EAAG8E,EAAO2D,EAAiBrtB,OAAQ4kB,EAAI8E,EAAM9E,CAAC,GACpB,UAA/B,OAAOyI,EAAiBzI,IACxBqE,EAAOjkB,KAAKsoB,WAAWD,EAAiBzI,EAAE,CAAC,EAG/CqE,EAAOjpB,SACPmlB,EAAgB8D,GAGpB5pB,KAAK4e,YACL1Z,EAAKG,MAAMgK,GAAOlH,MAAQ2d,EAC1B1G,EAAa,CAAErS,QAASzB,EAAUtG,GAAIgJ,OAAQa,EAAS7J,GAAImD,MAAOjD,EAAKG,MAAMgK,GAAOlH,MAAOf,KAAM,SAC5FpH,KAAK0C,eACN1C,KAAK4I,QAAQ,SAAUwW,CAAU,GAGK,CAAC,EAAtCpe,EAAO0C,UAAUC,QAAQ,QAAQ,GAAkD,CAAC,EAAzC3C,EAAO0C,UAAUC,QAAQ,WAAW,EACpD,CAAC,EAA7BoqB,EAAYpqB,QAAQmqB,CAAI,EACxB5oB,EAAKG,MAAMgK,GAAOlH,MAAM3H,GAAKslB,EAG7B5gB,EAAKG,MAAMgK,GAAOlH,MAAQ2d,EAGa,CAAC,EAAvC9kB,EAAO0C,UAAUC,QAAQ,SAAS,GAGU,CAAC,EAA7C3C,EAAO0C,UAAUC,QAAQ,eAAe,EAC7CuB,EAAKG,MAAMgK,GAAOlH,MAAQ2d,EAEmB,CAAC,EAAzC9kB,EAAO0C,UAAUC,QAAQ,WAAW,EAC5B,OAATmqB,GAA0B,UAATA,GACb5oB,EAAKG,MAAMgK,GAAOjI,KAClBlC,EAAKG,MAAMgK,GAAOlH,MAAQnI,KAAKkqB,mBAAmBpE,EAAe5gB,EAAKG,MAAMgK,GAAOjI,IAAI,GAM7E,YAAT0mB,GAA+B,eAATA,GACY,UAAnC,OAAO5oB,EAAKG,MAAMgK,GAAOlH,QACzBjD,EAAKG,MAAMgK,GAAOlH,MAAQ,IAE9BjD,EAAKG,MAAMgK,GAAOlH,MAAM3H,GAAKslB,GAG7B5gB,EAAKG,MAAMgK,GAAOlH,MAAQ2d,EAGkB,CAAC,EAA5C9kB,EAAO0C,UAAUC,QAAQ,cAAc,IACxC4a,EAASve,KAAKwe,UAAUxe,KAAKuR,UAAUvR,KAAK0R,eAAe3L,KAAK,EAAEwY,MAAM,GACjEnX,OACyB,CAAC,EAA7B2mB,EAAYpqB,QAAQmqB,CAAI,GACe,UAAnC,OAAO5oB,EAAKG,MAAMgK,GAAOlH,QACzBjD,EAAKG,MAAMgK,GAAOlH,MAAQ,IAE9BjD,EAAKG,MAAMgK,GAAOlH,MAAM3H,GAAKR,KAAKye,KAAKC,WAAWoH,EAAevH,CAAM,GAGvErZ,EAAKG,MAAMgK,GAAOlH,MAAQnI,KAAKye,KAAKC,WAAWoH,EAAevH,CAAM,GAIhFve,KAAK+e,cAAc7Z,EAAM2J,EAAUQ,CAAK,MAGO,CAAC,EAA5CrO,EAAO0C,UAAUC,QAAQ,cAAc,GACP,CAAC,EAA7BoqB,EAAYpqB,QAAQmqB,CAAI,GACe,UAAnC,OAAO5oB,EAAKG,MAAMgK,GAAOlH,QACzBjD,EAAKG,MAAMgK,GAAOlH,MAAQ,IAE9BjD,EAAKG,MAAMgK,GAAOlH,MAAM3H,GAAKslB,GAOjC5gB,EAAKG,MAAMgK,GAAOlH,MAAQ2d,GAItCxjB,EAAapC,UAAU6e,cAAgB,SAAU7Z,EAAM2J,EAAUQ,GAC7D,IAMI6e,EANAloB,oBAAkBd,CAAI,GAAKc,oBAAkB6I,CAAQ,IAMrDqf,EAAmC,UAAxB,OAFXhpB,EADCc,oBAAkBqJ,CAAK,EAGLnK,EAFZA,EAAKG,MAAMgK,IAEW,MAC7BrP,KAAK6X,kBAAoB7R,oBAAkBqJ,CAAK,IAAM6e,EAA+B,EAApBhpB,EAAKiD,MAAMxH,OAAauE,EAAKiD,SAEzE,GADjBoQ,EAAU1J,EAAS1L,iBAAiB,0BAA0B,GACtDxC,SACwC,CAAC,EAA7C4X,EAAQ,GAAG7U,UAAUC,QAAQ,WAAW,EACxCC,eAAa2U,EAAQ,GAAI,SAAS,EAAE1U,UAE2B,CAAC,EAA3D0U,EAAQ,GAAGzU,cAAcJ,UAAUC,QAAQ,WAAW,GAC3DC,eAAa2U,EAAQ,GAAGzU,cAAe,SAAS,EAAED,UAElD0U,EAAQ,IAAgE,CAAC,EAA3DA,EAAQ,GAAGzU,cAAcJ,UAAUC,QAAQ,WAAW,GACpEC,eAAa2U,EAAQ,GAAGzU,cAAe,SAAS,EAAED,UAElD0U,EAAQ,KAAgE,CAAC,EAA3DA,EAAQ,GAAGzU,cAAcJ,UAAUC,QAAQ,WAAW,GACpEC,eAAa2U,EAAQ,GAAGzU,cAAe,SAAS,EAAED,YAKlEvB,EAAapC,UAAUse,UAAY,SAAUD,GACzC,IAAI4P,EAmBJ,OAlBI5P,EACwB,UAApB,UACA4P,EAAgB,CAAE/mB,KAAM,YACT,UAAXmX,GAAiC,QAAXA,GACtB4P,EAAc/mB,KAAO,OACrB+mB,EAAc1D,SAAWlM,GAGzB4P,EAAc5P,OAASA,GAI3B4P,EAAgB,CAAE/mB,KAAM,WAAYqjB,SAAUlM,EAAOkM,UAIzD0D,EAAgB,CAAE/mB,KAAM,OAAQqjB,SAAU,OAEvC0D,GAEX7rB,EAAapC,UAAUkuB,eAAiB,SAAUC,EAAUnpB,EAAMP,GAC9D,IAAI2pB,EAAWppB,EAAKG,MAChBkpB,EAAc,GAClB,GAAK5pB,EASL,OAAOO,EARH,IAAK,IAAIiE,EAAI,EAAGqP,EAAO8V,EAAS3tB,OAAQwI,EAAIqP,EAAMrP,CAAC,IAC/CjE,EAAOopB,EAASnlB,IACP9D,OACLkpB,EAAY5oB,KAAKT,CAAI,EAG7B,OAAOqpB,EAAYF,IAW3B/rB,EAAapC,UAAU2D,QAAU,WAE7B,IAIIb,EACAxC,EACA8H,EACA7E,EANJ,GAFAzD,KAAK8gB,UAAY,CAAA,EACE9gB,KAAKgD,QACxB,CAUA,IAHAnD,EAAOK,UAAU2D,QAAQjD,KAAKZ,IAAI,EAElCsI,GADAtF,EAAUhD,KAAKgD,QAAQG,iBAAiB,iBAAiB,GAC3CxC,OACTH,EAAI,EAAGA,EAAI8H,EAAK9H,CAAC,GAClBoD,eAAaZ,EAAQxC,GAAI,cAAc,EAAEqD,UACzCkT,SAAO/T,EAAQxC,EAAE,EAGrB,IADAiD,EAAUzD,KAAKgD,QAAQG,iBAAiB,qCAAqC,EACxE3C,EAAI,EAAGA,EAAIiD,EAAQ9C,OAAQH,CAAC,GAC7BoD,eAAaH,EAAQjD,GAAI,SAAS,EAAEqD,UAIxC,IADAyE,GADAtF,EAAUhD,KAAKgD,QAAQG,iBAAiB,2CAA2C,GACrExC,OACTH,EAAI,EAAGA,EAAI8H,EAAK9H,CAAC,IACdoD,eAAaZ,EAAQxC,GAAI,cAAc,EACvCoD,eAAaZ,EAAQxC,GAAI,cAAc,EAGvCoD,eAAaZ,EAAQxC,GAAI,cAAc,GAHEqD,UAK7CkT,SAAO/T,EAAQxC,EAAE,EAGrB,IADAiD,EAAUzD,KAAKgD,QAAQG,iBAAiB,uCAAuC,EAC1E3C,EAAI,EAAGA,EAAIiD,EAAQ9C,OAAQH,CAAC,GAC7BoD,eAAaH,EAAQjD,GAAI,SAAS,EAAEqD,UAIxC,IADAyE,GADAtF,EAAUhD,KAAKgD,QAAQG,iBAAiB,6CAA6C,GACvExC,OACTH,EAAI,EAAGA,EAAI8H,EAAK9H,CAAC,GACdoD,eAAaZ,EAAQxC,GAAI,cAAc,IACvCoD,eAAaZ,EAAQxC,GAAI,cAAc,EAAEqD,UACzCkT,SAAO/T,EAAQxC,EAAE,GAIzB,IADAiD,EAAUzD,KAAKgD,QAAQG,iBAAiB,oCAAoC,EACvE3C,EAAI,EAAGA,EAAIiD,EAAQ9C,OAAQH,CAAC,GAC7BoD,eAAaH,EAAQjD,GAAI,SAAS,EAAEqD,UAExC7D,KAAK0C,cAAgB,CAAA,EACrB1C,KAAKwuB,eACLxuB,KAAK+E,UAAU/E,KAAKgD,QAAQgC,GAAK,WAAa,CAAC,GAC/ChF,KAAKgD,QAAQiX,UAAY,GAErBja,KAAKyuB,SAAWzuB,KAAKyuB,QAAQ9tB,QAC7BX,KAAKgX,kBAET,IAAI0X,EAAetqB,SAASjB,iBAAiB,0BAA0B,EACvE,GAAIurB,EACA,IAAKluB,EAAI,EAAGA,EAAIkuB,EAAa/tB,OAAQH,CAAC,GAClCkuB,EAAaluB,GAAG2iB,SAGxBtW,YAAU7M,KAAKgD,QAAS,GAAI,CAAC,QAAS,eAAgB,WAAW,EACjEhD,KAAK8gB,UAAY,CAAA,IASrBxe,EAAapC,UAAUyuB,SAAW,SAAUzpB,EAAM6H,GAC9CA,EAAU/M,KAAKgD,QAAQgC,GAAK,IAAM+H,EAClC/M,KAAKmpB,SAAW,CAAA,EAChB,IAAK,IAAI3oB,EAAI,EAAG8H,EAAMpD,EAAKvE,OAAQH,EAAI8H,EAAK9H,CAAC,GACzCR,KAAKyO,eAAerK,SAAS+G,eAAe4B,CAAO,EAAG7H,EAAK1E,EAAE,EAEjER,KAAKmpB,SAAW,CAAA,GASpB7mB,EAAapC,UAAUqc,UAAY,SAAUqS,EAAQ7hB,GACjD,GAAI/M,KAAKsc,cAAgBtc,KAAKgD,QAAQG,iBAAiB,oBAAoB,EAAExC,QAAUX,KAAKsO,cAAe,CACvGvB,EAAU/M,KAAKgD,QAAQgC,GAAK,IAAM+H,EAClC,IAAIzB,EAAYlH,SAAS+G,eAAe4B,CAAO,EAC3C7H,EAAOlF,KAAK6N,eAAevC,CAAS,EAExC,GADesjB,EAAOjuB,OACR,CACVX,KAAKmpB,SAAW,CAAA,EAChB,IAAK,IAAI3oB,EAAI,EAAG8H,EAAMsmB,EAAOjuB,OAAQH,EAAI8H,EAAK9H,CAAC,GAC3CR,KAAK6c,YAAc,CACflI,SAAUia,EAAOpuB,GAAGmU,SAAUxP,UAAWypB,EAAOpuB,GAAG2E,UACnDC,IAAKwpB,EAAOpuB,GAAG4E,KAEnBpF,KAAK6uB,YAAYD,EAAOpuB,GAAI8K,EAAW,CAAA,EAAOsjB,EAAOpuB,GAAG4E,GAAG,EAE/DpF,KAAKmpB,SAAW,CAAA,MAEf,CACD,IAAIhkB,EAAY,MACZC,EAAM,CAAA,EACNuP,EAAW,CAAA,EACX3U,KAAK6c,cACL1X,EAAYnF,KAAK6c,YAAY1X,UAC7BC,EAAMpF,KAAK6c,YAAYzX,IACvBuP,EAAW3U,KAAK6c,YAAYlI,UAE5B3U,KAAK+b,WAAa,EACd/b,KAAK4E,mBACLM,EAAKG,MAAMM,KAAK,CAAER,UAAaA,EAAWC,IAAOA,EAAKC,MAAO,GAAI,EAGjEH,EAAKG,MAAMM,KAAK,CAAER,UAAaA,EAAWE,MAAO,GAAI,EAIrDrF,KAAK4E,mBACLM,EAAKG,MAAMsR,OAAO3W,KAAK+b,WAAa,EAAG,EAAG,CAAE5W,UAAWA,EAAWC,IAAKA,EAAKC,MAAO,GAAIsP,SAAUA,EAAU,EAG3GzP,EAAKG,MAAMsR,OAAO3W,KAAK+b,WAAa,EAAG,EAAG,CAAE5W,UAAWA,EAAWE,MAAO,GAAIsP,SAAUA,EAAU,EAIxG3U,KAAK0E,gBACN1E,KAAKsF,qBAAqBgG,EAAWpG,EAAM,KAAMlF,CAAAA,CAAAA,KAAK4M,yBAAiC,IAAI,IAIvGtK,EAAapC,UAAU4uB,YAAc,WAmCjC,GAlCA9uB,KAAK6Q,cAAgB,CAAA,EACjB7Q,KAAKoT,UACLhG,WAAS,CAACpN,KAAKgD,SAAUhD,KAAKoT,SAASpG,QAAQ,OAAQ,GAAG,EAAEigB,OAAO/mB,MAAM,GAAG,CAAC,EAE7ElG,KAAK4M,yBACLQ,WAAS,CAACpN,KAAKgD,SAAU,mBAAmB,EAE5ChD,KAAKuO,WACLnB,WAAS,CAACpN,KAAKgD,SAAU,OAAO,EAEhChD,KAAK0mB,QACL1mB,KAAKgD,QAAQuI,MAAMmb,MAAQ1mB,KAAK0mB,OAEhC1mB,KAAK0L,SACL1L,KAAKgD,QAAQuI,MAAMG,OAAS1L,KAAK0L,QAEjC1L,KAAKkF,KAAKG,MAAM1E,OAChBX,KAAK0C,cAAgB,CAAA,EAGrB1C,KAAKuM,gBAAgB,CAAA,EAAOvM,KAAKgD,OAAO,EAExCilB,UAAQC,UAAa/H,OAAO4O,WAAa,KAAO,CAAC/uB,KAAKgvB,cAAsC,aAArBhvB,KAAK6R,cACxEoW,UAAQC,UAAY/H,OAAO4O,WAAa,OACxC/uB,KAAKgD,QAAQuI,MAAMmb,MAAQ,OAC3B1mB,KAAKgD,QAAQ6J,UAAUkF,IAAI,UAAU,GAEzCjN,cAAY9E,KAAKgD,QAAQG,iBAAiB,mBAAmB,EAAG,mBAAmB,EACnFiK,WAASpN,KAAKgD,QAAQG,iBAAiB,mBAAmB,EAAG,iBAAiB,EAC9EnD,KAAK6R,YAAc,YAGnB7R,KAAK6R,YAAc,aAEnB7R,KAAKivB,YACDjvB,KAAK0C,cACL1C,KAAKgL,gBAGLhL,KAAK0M,4BAIT,CAAI1M,KAAK+G,SAAW/G,KAAK+G,QAAQpG,QAAUX,KAAK0C,eAC5C1C,KAAKuM,gBAAgB,CAAA,EAAOvM,KAAKgD,QAAShD,KAAKkF,KAAKC,UAAW,CAAA,EAAOnF,KAAKkF,KAAKE,IAAK,CAAA,EAAOpF,KAAKkF,IAAI,EACjG0G,EAASY,SAAO,GAAIxM,KAAKkF,KAAM,GAAI,CAAA,CAAI,EAC3ClF,KAAKkvB,YAAc,CAAA,EACnBlvB,KAAKyM,cAAcb,CAAM,EACzB5L,KAAKkvB,YAAc,CAAA,GAEdlvB,KAAK+G,SAAW/G,KAAK+G,QAAQpG,QAClCX,KAAKyO,eAAezO,KAAKgD,QAAQC,cAAc,oBAAoB,EAAG,EAAE,EAE5EjD,KAAKmvB,cACDnvB,KAAKovB,UACLpvB,KAAKqvB,iBAIT,IAhBA,IAEQzjB,EAaJ0jB,EADAC,EAAUvvB,KAAKgD,QAAQG,iBAAiB,aAAa,EAEhD3C,EAAI,EAAGA,EAAI+uB,EAAQ5uB,OAAQH,CAAC,GACjC8uB,EAASC,EAAQvO,KAAKxgB,CAAC,EACvBmb,eAAa2T,EAAQ,CAAE1T,SAAU,SAAU,IAIvDtZ,EAAapC,UAAU8K,cAAgB,WACnC,IAAIwkB,EAAcxvB,KAAKsE,cAAc,MAAO,CACxCC,MAAO,CACHC,MAAO,oBACPQ,GAAIhF,KAAKgD,QAAQgC,GAAK,oBAE7B,EACGyqB,EAAWzvB,KAAKsE,cAAc,WAAY,CAAEC,MAAO,CAAEC,MAAO,iBAAkB4qB,SAAU,QAAUM,OAAQ,mBAAoB,EAC9HC,EAAW3vB,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAE6C,KAAM,SAAU5C,MAAO,oDAAsD,EAChIorB,EAAU5vB,KAAKsE,cAAc,MAAO,CAAEC,MAAO,CAAEC,MAAO,oBAAsB,EAChFgrB,EAAY/qB,YAAYgrB,CAAQ,EAChCA,EAAStrB,YAAcnE,KAAKyL,gBAAgBzL,KAAKkF,IAAI,EACrDyqB,EAASxrB,YAAcnE,KAAK2H,KAAKC,YAAY,MAAM,EACnDgoB,EAAQnrB,YAAYkrB,CAAQ,EAC5BH,EAAY/qB,YAAYmrB,CAAO,EAC/B5vB,KAAKgD,QAAQyB,YAAY+qB,CAAW,GAExCltB,EAAapC,UAAUwM,sBAAwB,WAC3C,IAAImjB,EAAe7vB,KAAKsE,cAAc,MAAO,CACzCC,MAAO,CACHC,MAAO,0BACPqV,MAAO7Z,KAAK2H,KAAKC,YAAY,kBAAkB,GAEtD,EACD5H,KAAKgD,QAAQC,cAAc,iBAAiB,EAAEwB,YAAYorB,CAAY,GAE1EvtB,EAAapC,UAAU8G,WAAa,WAC5BhH,KAAKyI,eAAsD,eAArCzI,KAAKyI,cAAc6E,cACzCtN,KAAK+G,QAAU,IAAIkgB,cAAYjnB,KAAK+G,OAAO,EAAE+oB,cAAa,IAAIvJ,SAAQwJ,WAAW,OAAO,CAAC,EAEpF/vB,KAAKyI,eAAsD,cAArCzI,KAAKyI,cAAc6E,gBAC9CtN,KAAK+G,QAAU,IAAIkgB,cAAYjnB,KAAK+G,OAAO,EAAE+oB,cAAa,IAAIvJ,SAAQyJ,OAAO,OAAO,CAAC,IAG7F1tB,EAAapC,UAAU+vB,iBAAmB,WAGtC,IAEY5W,EAJZrZ,KAAKgD,QAAQiX,UAAY,GACzBja,KAAKkb,eAAiB,EACjBlb,KAAK0E,iBACF1E,KAAK4E,oBACDyU,EAAYrZ,KAAKsE,cAAc,SAAU,CAAEC,MAAO,CAAE6C,KAAM,SAAU5C,MAAO,eAAiB,EAC5FxE,KAAKsL,UAAUrI,cAAc,cAAc,GAC3CjD,KAAKsL,UAAUrI,cAAc,cAAc,EAAEsM,aAAa8J,EAAWrZ,KAAKsL,UAAUrI,cAAc,iBAAiB,CAAC,GAIxHjD,KAAKsL,UAAUrI,cAAc,cAAc,EAAEkgB,UAGrDnjB,KAAKiF,cAAc,CAAEC,KAAMlF,KAAKkwB,cAAclwB,KAAKkF,IAAI,GAAK,CAAA,CAAI,EAChElF,KAAK8uB,eAETxsB,EAAapC,UAAUivB,YAAc,WAC7BnvB,KAAKuO,UACLnB,WAASpN,KAAKgD,QAAQG,iBAAiB,cAAc,EAAG,OAAO,EAG/D2B,cAAY9E,KAAKgD,QAAQG,iBAAiB,cAAc,EAAG,OAAO,GAG1Eb,EAAapC,UAAUgwB,cAAgB,SAAUhrB,GAC7C,IAAIirB,EACJ,GAAIjrB,EAAKG,MACL,IAAK,IAAI7E,EAAI,EAAGA,EAAI0E,EAAKG,MAAM1E,OAAQH,CAAC,GACpC2vB,EAAUjrB,EAAKG,MAAM7E,GACrB2vB,EAAUnwB,KAAKkwB,cAAcC,CAAO,EACpCjrB,EAAKG,MAAM7E,GAAK2vB,EAYxB,OATKnqB,oBAAkBd,EAAKE,GAAG,EAMtBpF,KAAK4E,oBAAsB,CAACoB,oBAAkBd,EAAKC,SAAS,IACjED,EAAKE,IAAM,CAAA,IANPpF,KAAK4E,qBACLM,EAAKE,IAAM,CAAA,GAEf,OAAOF,EAAKE,KAKTF,GAEX5C,EAAapC,UAAUkwB,kBAAoB,SAAUC,EAASC,GAK1D,IAJA,IAAIC,EAAahxB,OAAOkH,KAAK4pB,CAAO,EAEhC/kB,GADJtL,KAAKgvB,aAAe,CAAA,EACJhvB,KAAKgD,QAAQC,cAAc,oBAAoB,GAC3DiI,EAAclL,KAAKgD,QAAQC,cAAc,oBAAoB,EACxDutB,EAAK,EAAGC,EAAeF,EAAYC,EAAKC,EAAa9vB,OAAQ6vB,CAAE,GAEpE,OADWC,EAAaD,IAEpB,IAAK,cACGH,EAAQpB,aACR3jB,EAAUC,MAAMC,QAAU,OACtBxL,KAAKgD,QAAQG,iBAAiB,oBAAoB,EAAExC,OAAS,GAC7DX,KAAKgL,gBACLE,EAAclL,KAAKgD,QAAQC,cAAc,oBAAoB,GAG7DjD,KAAKgD,QAAQC,cAAc,iBAAiB,EAAEkB,YAAcnE,KAAKyL,gBAAgBzL,KAAKkF,IAAI,EAE9FgG,EAAYK,MAAMC,QAAU,UAGgC,CAAC,EAAzDF,EAAUnI,iBAAiB,kBAAkB,EAAExC,QAC/CX,KAAK0M,wBAETpB,EAAUC,MAAMC,QAAU,QAC1BN,EAAYK,MAAMC,QAAU,QAEhC,MACJ,IAAK,cACDxL,KAAKgW,UACL,MACJ,IAAK,cACIhQ,oBAAkBqqB,EAAQjiB,YAAYkC,SAAS,IAC5C+f,EAAQjiB,YAAYkC,UACpBxL,cAAY9E,KAAKgD,QAAQG,iBAAiB,iBAAiB,EAAG,eAAe,EAG7EiK,WAASpN,KAAKgD,QAAQG,iBAAiB,iBAAiB,EAAG,eAAe,GAG7E6C,oBAAkBqqB,EAAQjiB,YAAYmC,QAAQ,IAC3C8f,EAAQjiB,YAAYmC,SACpBzL,cAAY9E,KAAKgD,QAAQG,iBAAiB,kBAAkB,EAAG,eAAe,EAG9EiK,WAASpN,KAAKgD,QAAQG,iBAAiB,kBAAkB,EAAG,eAAe,GAG9E6C,oBAAkBqqB,EAAQjiB,YAAYoC,UAAU,IAC7C6f,EAAQjiB,YAAYoC,WACpB1L,cAAY9E,KAAKgD,QAAQG,iBAAiB,kBAAkB,EAAG,eAAe,EAG9EiK,WAASpN,KAAKgD,QAAQG,iBAAiB,kBAAkB,EAAG,eAAe,GAG9E6C,oBAAkBqqB,EAAQjiB,YAAYe,SAAS,IAC5CkhB,EAAQjiB,YAAYe,UACpBrK,cAAY9E,KAAKgD,QAAQG,iBAAiB,mBAAmB,EAAG,eAAe,EAG/EiK,WAASpN,KAAKgD,QAAQG,iBAAiB,mBAAmB,EAAG,eAAe,GAG/E6C,oBAAkBqqB,EAAQjiB,YAAYqC,UAAU,IAC7C4f,EAAQjiB,YAAYqC,WACpB3L,cAAY9E,KAAKgD,QAAQG,iBAAiB,gBAAgB,EAAG,eAAe,EAG5EiK,WAASpN,KAAKgD,QAAQG,iBAAiB,gBAAgB,EAAG,eAAe,GAG5E6C,oBAAkBqqB,EAAQjiB,YAAYoN,WAAW,IAC9C6U,EAAQjiB,YAAYoN,YACpB1W,cAAY9E,KAAKgD,QAAQG,iBAAiB,gBAAgB,EAAG,eAAe,EAG5EiK,WAASpN,KAAKgD,QAAQG,iBAAiB,gBAAgB,EAAG,eAAe,GAGjF,MACJ,IAAK,WACGmtB,EAAQld,UACRtO,cAAY,CAAC9E,KAAKgD,SAAUstB,EAAQld,SAASlN,MAAM,GAAG,CAAC,EAEvDmqB,EAAQjd,UACRhG,WAAS,CAACpN,KAAKgD,SAAUqtB,EAAQjd,SAASpG,QAAQ,OAAQ,GAAG,EAAEigB,OAAO/mB,MAAM,GAAG,CAAC,EAEpF,MACJ,IAAK,YACGmqB,EAAQ9hB,UACRnB,WAAS,CAACpN,KAAKgD,SAAU,OAAO,EAIhC8B,cAAY,CAAC9E,KAAKgD,SAAU,OAAO,EACnChD,KAAKmvB,cAET,MACJ,IAAK,oBACDnvB,KAAK0wB,kBAAoBL,EAAQK,kBACjC,MACJ,IAAK,aACD1wB,KAAK0S,WAAa2d,EAAQ3d,WAC1B1S,KAAKgW,UACL,MACJ,IAAK,UACDhW,KAAK+G,QAAUspB,EAAQtpB,QACvB/G,KAAKgH,aACLhH,KAAKqI,2BAA2BrI,KAAK+G,OAAO,EAC5C,MACJ,IAAK,gBACD/G,KAAKyI,cAAgB4nB,EAAQ5nB,cAC7BzI,KAAKgH,aACL,MACJ,IAAK,gBACDhH,KAAKsO,cAAgB+hB,EAAQ/hB,cAC7B,MACJ,IAAK,SACDtO,KAAK0L,OAAS2kB,EAAQ3kB,OACtB1L,KAAKgD,QAAQuI,MAAMG,OAAS1L,KAAK0L,OACjC,MACJ,IAAK,OAC8B,IAA3B1L,KAAKkF,KAAKG,MAAM1E,QAAiBqF,oBAAkBhG,KAAKkF,IAAI,GAC5DlF,KAAKyC,QAETzC,KAAKiF,cAAc,CAAEC,KAAMmrB,EAAQnrB,MAAQ,CAAA,CAAI,EAC/CmrB,EAAQnrB,KAAOlF,KAAKge,kBAAkBhe,KAAKkF,KAAM,CAAA,CAAK,EACtDlF,KAAK2wB,SAAS3wB,KAAKkF,IAAI,EACvB,MACJ,IAAK,QACDlF,KAAK0mB,MAAQ2J,EAAQ3J,MACrB1mB,KAAKgD,QAAQuI,MAAMmb,MAAQ1mB,KAAK0mB,MAChC,MACJ,IAAK,SACD1mB,KAAKggB,OAASqQ,EAAQrQ,OACtBhgB,KAAKye,KAAO,IAAImS,uBAAqB5wB,KAAKggB,MAAM,EAChDhgB,KAAK8H,SAAW,CAAA,EAChB9H,KAAKgW,UACLhW,KAAK8H,SAAW,CAAA,EAChB,MACJ,IAAK,qBACD9H,KAAKiwB,mBACL,MACJ,IAAK,WACDjwB,KAAK6wB,WAAaR,EAAQjB,SAC1BpvB,KAAKqvB,iBACL,MACJ,IAAK,mBACDrvB,KAAK0Q,iBAAmB2f,EAAQ3f,iBAChC1Q,KAAKgW,UACL,MACJ,IAAK,0BACDhW,KAAK4M,wBAA0ByjB,EAAQzjB,wBACvC5M,KAAKgW,UAIjBhW,KAAKgvB,aAAe,CAAA,GAExB1sB,EAAapC,UAAU4wB,UAAY,WAC/B9wB,KAAKgD,QAAQgC,GAAKhF,KAAKgD,QAAQgC,IAAM+rB,cAAY,kBAAkB,EACnE/wB,KAAKgxB,cAAgB,CACjBC,WAAY,cACZC,iBAAkB,sBAClBC,SAAU,YACVC,eAAgB,oBAChBC,SAAU,WACVC,eAAgB,mBAChBC,QAAS,WACTC,KAAM,OACNC,MAAO,QACPC,SAAU,YACVC,SAAU,YACVC,gBAAiB,qBACjBC,YAAa,eACbC,mBAAoB,wBACpBC,QAAS,UACTC,WAAY,cACZC,GAAI,KACJC,MAAO,SACPC,OAAQ,SACRC,YAAa,iBACbC,eAAgB,kBAChBC,WAAY,wBACZC,YAAa,eACbC,SAAU,YACVC,aAAc,gBACdC,KAAM,OACNC,kBAAmB,yBACnBC,iBAAkB,eAClBC,YAAa,eACbC,IAAK,MACLC,GAAI,KACJC,IAAK,MACLC,YAAa,cACbC,QAAS,WACTC,WAAY,eACZC,OAAQ,UACRC,UAAW,cACXC,KAAM,OACNC,MAAO,QACPC,UAAW,sBACXC,WAAY,cACZC,UAAW,aACXC,UAAW,aACXC,SAAU,YACVC,WAAY,cACZC,YAAa,gBAEjB9zB,KAAK2H,KAAO,IAAIosB,OAAK,eAAgB/zB,KAAKgxB,cAAehxB,KAAKggB,MAAM,EACpEhgB,KAAKye,KAAO,IAAImS,uBAAqB5wB,KAAKggB,MAAM,EAChDhgB,KAAKkb,eAAiB,EACtBlb,KAAKqjB,iBAAmB,EACxBrjB,KAAKkP,cAAgB,EACrBlP,KAAKub,WAAa,EAClBvb,KAAK0C,cAAgB,CAAA,EACrB1C,KAAKg0B,OAAS,GACdh0B,KAAKgI,gBAAkB,CACnBisB,eAAgB,CACZ,CAAE9rB,MAAO,aAAclH,IAAKjB,KAAK2H,KAAKC,YAAY,YAAY,GAC9D,CAAEO,MAAO,gBAAiBlH,IAAKjB,KAAK2H,KAAKC,YAAY,kBAAkB,GACvE,CAAEO,MAAO,WAAYlH,IAAKjB,KAAK2H,KAAKC,YAAY,UAAU,GAC1D,CAAEO,MAAO,cAAelH,IAAKjB,KAAK2H,KAAKC,YAAY,gBAAgB,GACnE,CAAEO,MAAO,WAAYlH,IAAKjB,KAAK2H,KAAKC,YAAY,UAAU,GAC1D,CAAEO,MAAO,cAAelH,IAAKjB,KAAK2H,KAAKC,YAAY,gBAAgB,GACnE,CAAEO,MAAO,QAASlH,IAAKjB,KAAK2H,KAAKC,YAAY,OAAO,GACpD,CAAEO,MAAO,WAAYlH,IAAKjB,KAAK2H,KAAKC,YAAY,UAAU,GAC1D,CAAEO,MAAO,KAAMlH,IAAKjB,KAAK2H,KAAKC,YAAY,IAAI,GAC9C,CAAEO,MAAO,QAASlH,IAAKjB,KAAK2H,KAAKC,YAAY,OAAO,GACpD,CAAEO,MAAO,UAAWlH,IAAKjB,KAAK2H,KAAKC,YAAY,SAAS,GACxD,CAAEO,MAAO,aAAclH,IAAKjB,KAAK2H,KAAKC,YAAY,YAAY,IAElEssB,aAAc,CACV,CAAE/rB,MAAO,QAASlH,IAAKjB,KAAK2H,KAAKC,YAAY,OAAO,GACpD,CAAEO,MAAO,cAAelH,IAAKjB,KAAK2H,KAAKC,YAAY,aAAa,GAChE,CAAEO,MAAO,qBAAsBlH,IAAKjB,KAAK2H,KAAKC,YAAY,oBAAoB,GAC9E,CAAEO,MAAO,WAAYlH,IAAKjB,KAAK2H,KAAKC,YAAY,UAAU,GAC1D,CAAEO,MAAO,kBAAmBlH,IAAKjB,KAAK2H,KAAKC,YAAY,iBAAiB,GACxE,CAAEO,MAAO,WAAYlH,IAAKjB,KAAK2H,KAAKC,YAAY,UAAU,GAC1D,CAAEO,MAAO,UAAWlH,IAAKjB,KAAK2H,KAAKC,YAAY,SAAS,GACxD,CAAEO,MAAO,aAAclH,IAAKjB,KAAK2H,KAAKC,YAAY,YAAY,IAElEusB,gBAAiB,CACb,CAAEhsB,MAAO,QAASlH,IAAKjB,KAAK2H,KAAKC,YAAY,OAAO,GACpD,CAAEO,MAAO,WAAYlH,IAAKjB,KAAK2H,KAAKC,YAAY,UAAU,IAE9DwsB,eAAgB,CACZ,CAAEjsB,MAAO,QAASlH,IAAKjB,KAAK2H,KAAKC,YAAY,OAAO,GACpD,CAAEO,MAAO,qBAAsBlH,IAAKjB,KAAK2H,KAAKC,YAAY,oBAAoB,GAC9E,CAAEO,MAAO,cAAelH,IAAKjB,KAAK2H,KAAKC,YAAY,aAAa,GAChE,CAAEO,MAAO,UAAWlH,IAAKjB,KAAK2H,KAAKC,YAAY,SAAS,GACxD,CAAEO,MAAO,WAAYlH,IAAKjB,KAAK2H,KAAKC,YAAY,UAAU,GAC1D,CAAEO,MAAO,aAAclH,IAAKjB,KAAK2H,KAAKC,YAAY,YAAY,GAC9D,CAAEO,MAAO,kBAAmBlH,IAAKjB,KAAK2H,KAAKC,YAAY,iBAAiB,GACxE,CAAEO,MAAO,WAAYlH,IAAKjB,KAAK2H,KAAKC,YAAY,UAAU,GAC1D,CAAEO,MAAO,KAAMlH,IAAKjB,KAAK2H,KAAKC,YAAY,IAAI,GAC9C,CAAEO,MAAO,QAASlH,IAAKjB,KAAK2H,KAAKC,YAAY,OAAO,KAG5D5H,KAAK6H,UAAY,CACbwsB,MAAO,IAAKC,SAAU,KAAMC,YAAa,IAAKC,mBAAoB,KAAMC,SAAU,IAAKC,GAAI,KAAMC,MAAO,SACxGC,gBAAiB,KAAMC,WAAY,OAAQC,SAAU,OAAQC,QAAS,UAAWC,WAAY,cAAeloB,SAAU,OACtHmoB,OAAQ,UAAWC,UAAW,cAAeC,QAAS,WAAYC,WAAY,eAAgBC,cAAe,WAC7GC,YAAa,WAAYC,YAAa,YAE1Cv1B,KAAKw1B,aAAe,CAChBnB,MAAO,IAAKC,SAAU,KAAMC,YAAa,IAAKC,mBAAoB,KAAMC,SAAU,IAAKC,GAAI10B,KAAK2H,KAAKC,YAAY,IAAI,EAAE6tB,cACvHd,MAAO30B,KAAK2H,KAAKC,YAAY,OAAO,EAAE6tB,cAAeb,gBAAiB,KAAMC,WAAY70B,KAAK2H,KAAKC,YAAY,MAAM,EAAE6tB,cACtHX,SAAU90B,KAAK2H,KAAKC,YAAY,MAAM,EAAE6tB,cAAeV,QAAS/0B,KAAK2H,KAAKC,YAAY,SAAS,EAAE6tB,cACjGT,WAAYh1B,KAAK2H,KAAKC,YAAY,YAAY,EAAE6tB,cAAe3oB,SAAU9M,KAAK2H,KAAKC,YAAY,MAAM,EAAE6tB,cACvGR,OAAQj1B,KAAK2H,KAAKC,YAAY,QAAQ,EAAE6tB,cAAeP,UAAWl1B,KAAK2H,KAAKC,YAAY,WAAW,EAAE6tB,cACrGN,QAASn1B,KAAK2H,KAAKC,YAAY,SAAS,EAAE6tB,cAAeL,WAAYp1B,KAAK2H,KAAKC,YAAY,YAAY,EAAE6tB,cACzGJ,cAAer1B,KAAK2H,KAAKC,YAAY,SAAS,EAAE6tB,cAAeH,YAAat1B,KAAK2H,KAAKC,YAAY,SAAS,EAAE6tB,cAC7GF,YAAav1B,KAAK2H,KAAKC,YAAY,SAAS,EAAE6tB,eAE7Cz1B,KAAKiI,SACNjI,KAAKiI,OAAS,CAAEC,KAAM,QAASC,MAAO,WAG9C7F,EAAapC,UAAUw1B,OAAS,WAC5B11B,KAAK+E,UAAY,GACjB/E,KAAKud,MAAQ,CACT,CACIrV,KAAMlI,KAAK2H,KAAKC,YAAY,UAAU,EACtC8T,QAAS,iCAEb,CACIxT,KAAMlI,KAAK2H,KAAKC,YAAY,cAAc,EAC1C8T,QAAS,iCAGjB1b,KAAK6O,SAAW7O,KAAKwP,eACrBxP,KAAKsL,UAAYtL,KAAKmZ,gBACtB,IAAIwc,EAAa,CACb,CAAExtB,MAAO,SAAUlH,IAAKjB,KAAK2H,KAAKC,YAAY,QAAQ,GACtD,CAAEO,MAAO,YAAalH,IAAKjB,KAAK2H,KAAKC,YAAY,WAAW,IAE5DguB,EAAa,CACb,CAAEztB,MAAO,SAAUlH,IAAKjB,KAAK2H,KAAKC,YAAY,QAAQ,GACtD,CAAEO,MAAO,YAAalH,IAAKjB,KAAK2H,KAAKC,YAAY,WAAW,IAEhE5H,KAAKgI,gBAAgC,eAAIhI,KAAKgI,gBAAgC,eAAE6tB,OAAOF,CAAU,EACjG31B,KAAKgI,gBAAgC,eAAIhI,KAAKgI,gBAAgC,eAAE6tB,OAAOD,CAAU,EAC7F51B,KAAK0S,sBAAsBuU,eAC3BjnB,KAAKqmB,YAAcrmB,KAAK0S,WACxB1S,KAAK81B,oBAAmB,IAAIvP,SAAQwP,KAAK,CAAC,CAAC,IAG3C/1B,KAAKqmB,YAAc,IAAIY,cAAYjnB,KAAK0S,UAAU,EAClD1S,KAAKqG,SAAWrG,KAAKqmB,YAAYyJ,aAAa,IAAIvJ,OAAO,EACzDvmB,KAAKg2B,eAETh2B,KAAKi2B,iBACDj2B,KAAK0Q,kBACL1Q,KAAKk2B,kBAGb5zB,EAAapC,UAAUg2B,eAAiB,WACpCl2B,KAAKm2B,UAAY,IAAIC,YAAUp2B,KAAKgD,QAAS,CACzCqzB,WAAY,kBACZC,SAAU,EACVC,OAAQv2B,KAAKu2B,OAAOxjB,KAAK/S,IAAI,EAC7Bw2B,UAAWx2B,KAAKy2B,iBAAiB1jB,KAAK/S,IAAI,EAC1C02B,KAAM12B,KAAK22B,YAAY5jB,KAAK/S,IAAI,EAChC42B,SAAU52B,KAAK62B,gBAAgB9jB,KAAK/S,IAAI,EACxC82B,iBAAkB,CAAA,EAClBC,gBAAiB,CAAA,EACjBC,MAAO,mBACPC,aAAc,CAAA,EACjB,GAGL30B,EAAapC,UAAUq2B,OAAS,SAAUxyB,GACtC,IAIImzB,EAWAC,EACI7Y,EAhBJtd,EAAShB,KAAKm2B,UAAUiB,mBAC5B,MAAI,EAAA,CAACp2B,EAAO6L,UAAUC,SAAS,gBAAgB,GAAM9L,EAAO6L,UAAUC,SAAS,gBAAgB,GAAKT,UAAQrL,EAAQ,YAAY,KAG5Hk2B,EAAgBl3B,KAAKsE,cAAc,MAAO,CAC1CZ,UAAW,8CACXgsB,OAAQ,mCAAqC1vB,KAAKgD,QAAQq0B,YAC7D,GAEGr3B,KAAKm2B,UAAUiB,mBAAmBtzB,cAAc+I,UAAUC,SAAS,gBAAgB,GACnFqqB,EAAe9qB,UAAQrL,EAAQ,oBAAoB,EAAEqP,UAAU,CAAA,CAAI,EACnEhE,UAAQrL,EAAQ,oBAAoB,IAGpCk2B,EAAcrqB,UAAUkF,IAAI,cAAc,EAC1ColB,EAAen3B,KAAKsE,cAAc,MAAO,CAAEZ,UAAW,mBAAoB,EACtE4a,EAAcjS,UAAQrL,EAAQ,eAAe,EAAEqP,UAAU,CAAA,CAAI,EACjE8mB,EAAa1yB,YAAY6Z,CAAW,EACpCjS,UAAQrL,EAAQ,eAAe,IAPO6L,UAAUkF,IAAI,oBAAoB,EAS5EmlB,EAAczyB,YAAY0yB,CAAY,EAClBD,EAAc/zB,iBAAiB,GAAG,EACxC8D,QAAQ,SAAU6M,GAC5BA,EAAMwjB,gBAAgB,IAAI,EAC7B,EACDt3B,KAAKgD,QAAQyB,YAAYyyB,CAAa,EAC/BA,IAEX50B,EAAapC,UAAUu2B,iBAAmB,SAAU1yB,GAChD/D,KAAKu3B,YAAcxzB,EAAE/C,OACrBhB,KAAKw3B,mBAAqB,CAAA,EAC1BpzB,SAASqzB,KAAK5qB,UAAUkF,IAAI,kBAAkB,EAE9C/R,KAAK03B,YAAc3zB,EAAE2zB,YACrB,IAAIxyB,EAAOmH,UAAQtI,EAAE/C,OAAQ,mBAAmB,EAC5CwJ,EAAQ6B,UAAQtI,EAAE/C,OAAQ,oBAAoB,EAC9C22B,EAAgB,CAAEC,YAAqB,OAAT1yB,EAAgBA,EAAUsF,GAALxF,GAAe6yB,YAAartB,EAAMxF,GAAIqI,OAAQ,CAAA,GACrGrN,KAAK4I,QAAQ,YAAa+uB,CAAa,EACvC33B,KAAKw3B,mBAAqBG,EAActqB,QAE5C/K,EAAapC,UAAUy2B,YAAc,SAAU5yB,GAC3C,IAsBI+zB,EAgCQC,EACAC,EACAC,EACAC,EAPHpZ,EAaL6Y,EA/DA33B,KAAKw3B,qBAGYx3B,KAAKgD,QAAQG,iBAAiB,0BAA0B,EAC9D8D,QAAQ,SAAUyZ,GAC7BA,EAAI7T,UAAUsW,OAAO,yBAAyB,EACjD,EACgBnjB,KAAKgD,QAAQG,iBAAiB,uBAAuB,EACvD8D,QAAQ,SAAUyZ,GAC7BA,EAAI7T,UAAUsW,OAAO,sBAAsB,EAC9C,EACGnd,oBAAkBjC,EAAE/C,MAAM,KAGJ,SAAtB+C,EAAE/C,OAAOmd,UAAuB9R,UAAQtI,EAAE/C,OAAQ,qBAAqB,GAAKqL,UAAQtI,EAAE/C,OAAQ,iBAAiB,GAC/G,CAACqL,UAAQtI,EAAE/C,OAAQ,IAAMhB,KAAKgD,QAAQgC,EAAE,GAAKqH,UAAQtI,EAAE/C,OAAQ,YAAY,GAAM+C,EAAE/C,OAAO8C,eAAiBC,EAAE/C,OAAO8C,cAAc+I,UAAUC,SAAS,aAAa,GAAK9M,KAAK4M,wBAC5K5M,KAAK03B,YAAY7qB,UAAUkF,IAAI,iBAAiB,GAIhD/R,KAAK03B,YAAY7qB,UAAUsW,OAAO,iBAAiB,EAEnD2U,EAAazrB,UAAQtI,EAAE/C,OAAQ,mBAAmB,EAClD8d,EAAUzS,UAAQtI,EAAE/C,OAAQ,oBAAoB,EAChD82B,GACIC,EAAOD,EAAWK,wBAElBC,GAAgBJ,EADPj0B,EAAEsG,MAAMguB,SAAWt0B,EAAEsG,MAAMiuB,eAAe,GAAGD,SAC7BN,EAAKQ,IAC9BN,EAAmBF,EAAKS,OAASR,EAEjCI,GAAgBF,EADJ,IAEZJ,EAAWjrB,UAAUkF,IAAI,sBAAsB,EAE1CkmB,EAAmBC,GACxBJ,EAAWjrB,UAAUkF,IAAI,yBAAyB,GAGjDhO,EAAE/C,OAAO6L,UAAUC,SAAS,aAAa,GAAkC,IAA7B/I,EAAE/C,OAAOwN,SAAS7N,OACrEoD,EAAE/C,OAAO6L,UAAUkF,IAAI,yBAAyB,EAE3ChO,EAAE/C,OAAO6L,UAAUC,SAAS,aAAa,GAAK/I,EAAE/C,OAAOwN,SAAS,GAAG3B,UAAUC,SAAS,mBAAmB,GAC1GirB,EAAOh0B,EAAE/C,OAAOwN,SAAS,GAAG2pB,yBAI5BC,GAFgBJ,EADPj0B,EAAEsG,MAAMguB,SAAWt0B,EAAEsG,MAAMiuB,eAAe,GAAGD,SAC7BN,EAAKQ,MAEdL,EADJ,KAEZn0B,EAAE/C,OAAO6L,UAAUkF,IAAI,sBAAsB,IAG5C1F,UAAQtI,EAAE/C,OAAQ,oBAAoB,GAAK+C,EAAE/C,OAAO6L,UAAUC,SAAS,mBAAmB,IAI5D,CAAC,GAAhCgS,EAHCA,GACS/a,EAAE/C,QAEJgE,GAAGrB,QAAQ,QAAQ,IACvBo0B,EAAOh0B,EAAE/C,OAAOm3B,wBAChBH,EAASj0B,EAAEsG,MAAMguB,SAAWt0B,EAAEsG,MAAMiuB,eAAe,GAAGD,SAGtDJ,EAFmBF,EAAKS,OAASR,IAEdE,EADP,MAEZn0B,EAAE/C,OAAO6L,UAAUkF,IAAI,yBAAyB,EAIxD4lB,EAAgB,CAChBC,WAA2B,OAAfE,EAAsBA,EAAW9yB,GAAiB,OAAZ8Z,EAAmBA,EAAQ9Z,GAAK,KAClF6yB,YAAyB,OAAZ/Y,EAAmBA,EAAQ9Z,GAAK,KAAMqI,OAAQ,CAAA,GAE/DrN,KAAK4I,QAAQ,OAAQ+uB,CAAa,EAClC33B,KAAKw3B,mBAAqBG,EAActqB,UAE5C/K,EAAapC,UAAU22B,gBAAkB,SAAU9yB,GAC/C,IAAIqC,EAAQpG,KACZ,GAAIA,CAAAA,KAAKw3B,mBAAT,CAGA,IAKIiB,EAOIC,EA0GAC,EA0DAC,EAhLJC,EAAcxsB,UAAQtI,EAAE/C,OAAQ,mBAAmB,EAuBnD83B,GAtBA9yB,oBAAkB6yB,CAAW,GAAK90B,EAAE/C,OAAO8C,eAC3CC,EAAE/C,OAAO8C,cAAc+I,UAAUC,SAAS,aAAa,GAAK9M,KAAK4M,0BACjEisB,EAAcxsB,UAAQtI,EAAE/C,OAAO8C,cAAcgK,uBAAwB,mBAAmB,IAIxF2qB,EADCzyB,oBAAkBjC,EAAEwyB,MAAM,EAI1BkC,EAHepsB,UAAQtI,EAAEwyB,OAAQ,kBAAkB,KAIhDwC,EAAY1sB,UAAQtI,EAAE/C,OAAQ,oBAAoB,EAClD03B,EAAgB,CAChBrrB,OAAQ,CAAA,EAAO2rB,WAA4B,OAAhBH,EAAuBA,EAAY7zB,GAC1C,OAAd+zB,EAAqBA,EAAU/zB,GAAK,KAAMi0B,YAA2B,OAAdF,EAAqBA,EAAU/zB,GAAK,MAErGhF,KAAK4I,QAAQ,OAAQ8vB,CAAa,EAC9BA,EAAcrrB,SACdorB,EAAgB,CAAA,GAEpBvmB,EAAWlS,KAAK4N,iBAEpB5N,KAAK8Q,cAAgB,CAAA,EACV9Q,KAAK4M,yBAA2B7I,EAAE/C,OAAO8C,eAChDC,EAAE/C,OAAO8C,cAAc+I,UAAUC,SAAS,aAAa,EAAI/I,EAAE/C,OAAO8C,cAAcgK,uBAAyB/J,EAAE/C,QACjH,GAAI63B,GAAe,CAACJ,EAAe,CAC/B,IAAIS,EAAYL,EAAY7zB,GAAGkB,MAAMlG,KAAKgD,QAAQgC,GAAK,GAAG,EAAE,GAAGkB,MAAM,GAAG,EAAE,GAC1E,GAAIlG,KAAKm2B,UAAUiB,mBAAmBtzB,cAAc+I,UAAUC,SAAS,cAAc,GACjF9M,KAAKm2B,UAAUiB,mBAAmBtzB,cAAc+I,UAAUC,SAAS,gBAAgB,EAAG,CACtF,IASIqsB,EATAj0B,EAAO,KAAA,EACPlF,KAAKm2B,UAAUiB,mBAAmBtzB,cAAc+I,UAAUC,SAAS,gBAAgB,GACnF5H,EAAOlF,KAAKiN,SAASjN,KAAKu3B,WAAW,EACrCv3B,KAAKsM,YAAYD,UAAQrM,KAAKu3B,YAAa,oBAAoB,CAAC,IAGhEryB,EAAOlF,KAAK+N,QAAQ/N,KAAKu3B,WAAW,EACpCv3B,KAAK8L,WAAW9L,KAAKu3B,WAAW,IAIhC4B,EAFY3sB,SAAO,GAAIxM,KAAKiN,SAAS4rB,CAAW,EAAG,GAAI,CAAA,CAAI,GAEjDtI,aACV4I,EAAYA,EAAU5I,aAGRjlB,EADFe,UAAQwsB,EAAa,oBAAoB,GAC7B11B,iBAAiB,oBAAoB,EACrD8D,QAAQ,SAAUyZ,GACtBta,EAAMpD,QAAQC,cAAc,IAAMyd,EAAI1b,EAAE,GACxCoB,EAAMkG,YAAYoU,CAAG,EAE5B,EAID,IAxBA,IAcIpV,EAOA8tB,EAAY9tB,EAAUnI,iBAAiB,mBAAmB,EAC1Dk2B,EAAU,GACVC,EAAU,KAAA,EACL94B,EAAI,EAAGA,EAAI44B,EAAUz4B,OAAQH,CAAC,IAC/B44B,EAAU54B,GAAGqM,UAAUC,SAAS,sBAAsB,GACtDssB,EAAU54B,GAAGqM,UAAUC,SAAS,yBAAyB,KACzDwsB,EAAU94B,GAEd64B,EAAQ1zB,KAAKyzB,EAAU54B,GAAGwE,GAAGkB,MAAMlG,KAAKgD,QAAQgC,GAAK,GAAG,EAAE,EAAE,EAEhEhF,KAAKu5B,YAAYF,CAAO,EACpBR,EAAYhsB,UAAUC,SAAS,sBAAsB,EACrDqsB,EAAU9zB,MAAMsR,OAAO2iB,EAAS,EAAGp0B,CAAI,EAGvCi0B,EAAU9zB,MAAMsR,OAAO2iB,EAAU,EAAG,EAAGp0B,CAAI,EAE/Ci0B,EAAU9zB,MAAM4B,QAAQ,SAAU/B,GAC1BkB,EAAMwG,wBACD1H,EAAKG,MAINe,EAAMmW,UAAU,CAACrX,GAAOg0B,CAAS,EAHjC9yB,EAAMuoB,SAAS,CAACzpB,GAAOg0B,CAAS,EAOhCh0B,EAAKC,UACLiB,EAAMmW,UAAU,CAACrX,GAAOg0B,CAAS,EAGjC9yB,EAAMuoB,SAAS,CAACzpB,GAAOg0B,CAAS,EAG3C,QAGAJ,EAAKjsB,UAAUC,SAAS,aAAa,GAA8B,IAAzBgsB,EAAKtqB,SAAS7N,QAAgB,CAAC83B,GAE1EG,GAAUttB,EADEe,UAAQysB,EAAM,oBAAoB,GAC1B9zB,GAAGkB,MAAMlG,KAAKgD,QAAQgC,GAAK,GAAG,EAAE,GAAGkB,MAAM,GAAG,EAAE,GAClEhB,EAAO,KAAA,EACPlF,KAAKm2B,UAAUiB,mBAAmBtzB,cAAc+I,UAAUC,SAAS,gBAAgB,GACnF5H,EAAOlF,KAAKiN,SAASjN,KAAKu3B,WAAW,EACrCv3B,KAAKsM,YAAYD,UAAQrM,KAAKu3B,YAAa,oBAAoB,CAAC,IAGhEryB,EAAOlF,KAAK+N,QAAQ/N,KAAKu3B,WAAW,EACpCv3B,KAAK8L,WAAW9L,KAAKu3B,WAAW,GAEhCv3B,KAAK4M,wBACA1H,EAAKG,MAINrF,KAAKuc,UAAU,CAACrX,GAAO0zB,CAAO,EAH9B54B,KAAK2uB,SAAS,CAACzpB,GAAO0zB,CAAO,EAO7B1zB,EAAKC,UACLnF,KAAKuc,UAAU,CAACrX,GAAO0zB,CAAO,EAG9B54B,KAAK2uB,SAAS,CAACzpB,GAAO0zB,CAAO,GAIhCE,EAAKjsB,UAAUC,SAAS,aAAa,GAAKgsB,EAAKtqB,SAAS,GAAG3B,UAAUC,SAAS,mBAAmB,GAAK,CAAC2rB,GAExGE,GAAYrtB,EADAe,UAAQysB,EAAM,oBAAoB,GACxB9zB,GAAGkB,MAAMlG,KAAKgD,QAAQgC,GAAK,GAAG,EAAE,GAAGkB,MAAM,GAAG,EAAE,GACpEhB,EAAO,KAAA,EACPlF,KAAKm2B,UAAUiB,mBAAmBtzB,cAAc+I,UAAUC,SAAS,gBAAgB,GACnF5H,EAAOlF,KAAKiN,SAASjN,KAAKu3B,WAAW,EACrCv3B,KAAKsM,YAAYD,UAAQrM,KAAKu3B,YAAa,oBAAoB,CAAC,IAGhEryB,EAAOlF,KAAK+N,QAAQ/N,KAAKu3B,WAAW,EACpCv3B,KAAK8L,WAAW9L,KAAKu3B,WAAW,IAIhC4B,EAFY3sB,SAAO,GAAIxM,KAAKiN,SAAS6rB,CAAI,EAAG,GAAI,CAAA,CAAI,GAE1CvI,aACV4I,EAAYA,EAAU5I,YAETuI,EAAK31B,iBAAiB,oBAAoB,EAChD8D,QAAQ,SAAUyZ,GACrBta,EAAMpD,QAAQC,cAAc,IAAMyd,EAAI1b,EAAE,GACxCoB,EAAMkG,YAAYoU,CAAG,EAE5B,GAED0Y,EADgB9tB,EAAUnI,iBAAiB,mBAAmB,GACpD8D,QAAQ,SAAUyZ,GACpBta,EAAMpD,QAAQC,cAAc,IAAMyd,EAAI1b,EAAE,GACxCoB,EAAM0F,WAAW4U,CAAG,EAE3B,EACG1gB,KAAKm2B,UAAUiB,mBAAmBtzB,cAAc+I,UAAUC,SAAS,gBAAgB,EACnF9M,KAAKuc,UAAU,CAACrX,GAAOyzB,CAAS,EAGhC34B,KAAK2uB,SAAS,CAACzpB,GAAOyzB,CAAS,EAEnCQ,EAAU9zB,MAAM4B,QAAQ,SAAU/B,GAC1BkB,EAAMwG,wBACD1H,EAAKG,MAINe,EAAMmW,UAAU,CAACrX,GAAOyzB,CAAS,EAHjCvyB,EAAMuoB,SAAS,CAACzpB,GAAOyzB,CAAS,EAOhCzzB,EAAKC,UACLiB,EAAMmW,UAAU,CAACrX,GAAOyzB,CAAS,EAGjCvyB,EAAMuoB,SAAS,CAACzpB,GAAOyzB,CAAS,EAG3C,GAEKtsB,CAAAA,UAAQtI,EAAE/C,OAAQ,oBAAoB,GAAK+C,CAAAA,EAAE/C,OAAO6L,UAAUC,SAAS,mBAAmB,GAAO2rB,IACnGvzB,EAAO,KAAA,EAMK,YAAZ0zB,GAHAC,EADA,EAACA,EADSxsB,UAAQtI,EAAE/C,OAAQ,oBAAoB,IAChC+C,EAAE/C,OAAO6L,UAAUC,SAAS,mBAAmB,EACjD/I,EAAE/C,OAEN63B,GAAY7zB,GAAGkB,MAAMlG,KAAKgD,QAAQgC,GAAK,GAAG,EAAE,GAAGkB,MAAM,GAAG,EAAE,MAEhElG,KAAKm2B,UAAUiB,mBAAmBtzB,cAAc+I,UAAUC,SAAS,gBAAgB,GACnF5H,EAAOlF,KAAKiN,SAASjN,KAAKu3B,WAAW,EACrCv3B,KAAKsM,YAAYD,UAAQrM,KAAKu3B,YAAa,oBAAoB,CAAC,IAGhEryB,EAAOlF,KAAK+N,QAAQ/N,KAAKu3B,WAAW,EACpCv3B,KAAK8L,WAAW9L,KAAKu3B,WAAW,GAEhCv3B,KAAK4M,wBACA1H,EAAKG,MAINrF,KAAKuc,UAAU,CAACrX,GAAO0zB,CAAO,EAH9B54B,KAAK2uB,SAAS,CAACzpB,GAAO0zB,CAAO,EAO7B1zB,EAAKC,UACLnF,KAAKuc,UAAU,CAACrX,GAAO0zB,CAAO,EAG9B54B,KAAK2uB,SAAS,CAACzpB,GAAO0zB,CAAO,IAKxCH,GACDz4B,KAAK4I,QAAQ,aAAc,CAAEilB,aAAc3b,EAAUhN,KAAMlF,KAAK4N,gBAAiBxG,KAAM,gBAAiB,EAE5GpH,KAAK8Q,cAAgB,CAAA,EACrB1M,SAASqzB,KAAK5qB,UAAUsW,OAAO,kBAAkB,EAC7CqW,EAAiBx5B,KAAKgD,QAAQG,iBAAiB,0BAA0B,EAC7Eq2B,EAAevyB,QAAQ,SAAUyZ,GAC7BA,EAAI7T,UAAUsW,OAAO,yBAAyB,EACjD,GACDqW,EAAiBx5B,KAAKgD,QAAQG,iBAAiB,uBAAuB,GACvD8D,QAAQ,SAAUyZ,GAC7BA,EAAI7T,UAAUsW,OAAO,sBAAsB,EAC9C,GACDqW,EAAiBx5B,KAAKgD,QAAQG,iBAAiB,qBAAqB,GACrD8D,QAAQ,SAAUyZ,GAC7BA,EAAI7T,UAAUsW,OAAO,oBAAoB,EAC5C,EACGpf,EAAEwyB,QAAUxyB,EAAEwyB,OAAO1pB,UAAUC,SAAS,mBAAmB,GAAK1I,SAASnB,cAAc,IAAMc,EAAEwyB,OAAO1pB,UAAU,EAAE,GAClHsW,SAAOpf,EAAEwyB,MAAM,EAEfv2B,KAAK4M,yBACL5M,KAAKgW,YAGb1T,EAAapC,UAAUyP,eAAiB,SAAU4G,GAC9C,GAAIA,EACA,IACI,MAAwB,YAApB,OAAOA,GAA2BnS,SAASjB,iBAAiBoT,CAAQ,EAAE5V,OAC/D84B,UAAiBr1B,SAASnB,cAAcsT,CAAQ,EAAE0D,UAAUgT,MAAM,EAGlEyM,UAAQnjB,CAAQ,EAG/B,MAAOojB,GACH,OAAOF,UAAiBljB,CAAQ,IAK5CjU,EAAapC,UAAU41B,mBAAqB,SAAUxP,GAClD,IAAIlgB,EAAQpG,KACRoJ,EAAOpJ,KAAKqmB,YAAYkB,aAAajB,CAAK,EAC1Ce,EAAW,IAAIC,WACnBle,EAAKwe,KAAK,SAAU7jB,GACZA,EAAE8jB,QAAU9jB,EAAE8jB,OAAOte,OACrBnD,EAAMC,SAAWtC,EAAE8jB,OAAOte,OAG1BnD,EAAMC,SAAWtC,EAAEwF,OAEvBnD,EAAM4vB,cACT,EAAElO,MAAM,SAAU/jB,GACfsjB,EAASU,OAAOhkB,CAAC,EACpB,GAELzB,EAAapC,UAAU81B,YAAc,WACjCh2B,KAAKmG,aACLnG,KAAK8uB,cACL9uB,KAAK45B,cAETt3B,EAAapC,UAAU05B,WAAa,WAChC,IAAIC,EAAU75B,KAAKuF,aACnBu0B,eAAa/nB,IAAI8nB,EAAS,QAAS75B,KAAKsK,kBAAmBtK,IAAI,EAC/D85B,eAAa/nB,IAAI8nB,EAAS,WAAY75B,KAAKoK,kBAAmBpK,IAAI,EAClE85B,eAAa/nB,IAAI8nB,EAAS,UAAW75B,KAAKoK,kBAAmBpK,IAAI,EACjE85B,eAAa/nB,IAAI/R,KAAKgD,QAAS,UAAWhD,KAAK+5B,gBAAiB/5B,IAAI,EAChEA,KAAK0Q,kBACLopB,eAAa/nB,IAAI3N,SAAU,UAAWpE,KAAK+5B,gBAAiB/5B,IAAI,EAEpEmgB,OAAO6Z,iBAAiB,SAAUh6B,KAAKi6B,oBAAoBlnB,KAAK/S,IAAI,CAAC,GAEzEsC,EAAapC,UAAUsuB,aAAe,WAClC,IAAIqL,EAAU75B,KAAKuF,aACnBu0B,eAAa3W,OAAO0W,EAAS,QAAS75B,KAAKsK,iBAAiB,EAC5DwvB,eAAa3W,OAAO0W,EAAS,WAAY75B,KAAKoK,iBAAiB,EAC/D0vB,eAAa3W,OAAO0W,EAAS,UAAW75B,KAAKoK,iBAAiB,EAC9D0vB,eAAa3W,OAAOnjB,KAAKgD,QAAS,UAAWhD,KAAK+5B,eAAe,EACjED,eAAa3W,OAAO/e,SAAU,UAAWpE,KAAK+5B,eAAe,EAC7D5Z,OAAO+Z,oBAAoB,SAAUl6B,KAAKi6B,mBAAmB,GAEjE33B,EAAapC,UAAU2N,eAAiB,SAAU7M,EAAQm5B,GAItD,IAHA,IAAIC,EAAcp5B,aAAkBurB,QAAWvsB,KAAK+E,UAAU/D,EAAOgE,IAAMhF,KAAK+E,UAAU,GAAK/D,GAC3FsH,EAAM6xB,EAAWC,EAAWz5B,OAAS,EAAIy5B,EAAWz5B,OACpDuE,EAAOlF,KAAKkF,KACP1E,EAAI,EAAGA,EAAI8H,EAAK9H,CAAC,GACtB0E,EAAOlF,KAAKouB,eAAegM,EAAW55B,GAAI0E,EAAY,IAAN1E,CAAO,EAE3D,OAAO0E,GAQX5C,EAAapC,UAAUoM,YAAc,SAAUtL,GAC3C,IAAIoF,EAAQpG,KACRsL,EAAYtK,EAKZ43B,GAHkB,UAAlB,OAAO53B,GACP43B,EAAU54B,KAAKgD,QAAQgC,GAAK,IAAMhE,EAClCA,EAASoD,SAAS+G,eAAeytB,CAAO,EAC9BA,GAGAttB,EAAUtG,IAHFgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAKvC,WAAZ4zB,GAAyB53B,IAGzB6E,EAAO,CAAEkH,QAAS6rB,EAASvrB,OAAQ,CAAA,EAAOjG,KAAM,eAC/CpH,KAAK0C,eAAkB1C,KAAK8Q,cAM7B9Q,KAAKq6B,2BAA2Bx0B,EAAM7E,CAAM,EAL5ChB,KAAK4I,QAAQ,eAAgB/C,EAAM,SAAU2H,GACzCpH,EAAMi0B,2BAA2B7sB,EAAoBxM,CAAM,EAC9D,IAMTsB,EAAapC,UAAUm6B,2BAA6B,SAAUx0B,EAAM7E,GAChE,GAAI,CAAC6E,EAAKwH,OAAQ,CAYd,IAXA,IAAI/B,EAAYtK,EACZkE,EAAOlF,KAAK6N,eAAevC,EAAW,CAAA,CAAI,EAC1C+D,EAAQ,EACR7O,EAAI,KAAA,EACJ8H,EAAM,KAAA,EACNmF,EAAczN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAC1Co1B,EAAWhvB,EAAU6R,mBACrB9K,EAAW/G,EAAUwC,uBACrB9K,EAAUsI,EAAUnI,iBAAiB,oBAAoB,EACzDoV,EAAUjN,EAAUnI,iBAAiB,YAAY,EACrDmF,EAAMiQ,EAAQ5X,OACTH,EAAI,EAAGA,EAAI8H,EAAK9H,CAAC,GAClBoD,eAAa2U,EAAQ/X,GAAI,SAAS,EAAEqD,UAExC,IAAKrD,EAAI,EAAG8H,EAAMtF,EAAQrC,OAAQH,EAAI8H,EAAK9H,CAAC,GACxC,OAAOR,KAAK+E,UAAU/B,EAAQxC,GAAGwE,IAErC,KAA4C,OAArCsG,EAAUwC,wBACbxC,EAAYA,EAAUwC,wBAClB,CAAC9N,KAAK4M,yBAA4B5M,KAAK4M,0BACrC,CAAC5M,KAAK0E,gBAAkB,CAAC4G,EAAUuB,UAAUC,SAAS,aAAa,GACjE9M,KAAK0E,iBAAmB4G,EAAUuB,UAAUC,SAAS,kBAAkB,GACnExB,EAAUuB,UAAUC,SAAS,mBAAmB,MACxDuC,CAAK,GAGRrP,KAAK4M,yBACF0tB,GAA4D,CAAC,EAAjDA,EAAS52B,UAAUC,QAAQ,iBAAiB,IACxDmB,cAAY,CAACw1B,GAAW,iBAAiB,EACzCltB,WAAS,CAACktB,GAAW,eAAe,EAChCjoB,IAA6D,CAAC,EAAlDA,EAAS3O,UAAUC,QAAQ,kBAAkB,GACzDyJ,WAAS,CAACiF,GAAW,oBAAoB,EAIrD,IAAIvD,EAAOxD,EAAUxH,cAAcA,cAAcA,cAC7Cy2B,EAAe,GAEnB,GAAIv6B,KAAK+P,SAAW/P,KAAKgQ,UAAW,CAChC,IAAIwqB,EAAUt1B,EAAKG,MAAMgK,GACrBorB,EAAez5B,EAAOmC,iBAAiB,mBAAmB,EAC9D,GAAIq3B,GAAWA,EAAQn1B,MACnB,IAAK,IAAIjE,EAAI,EAAGA,EAAIo5B,EAAQn1B,MAAM1E,OAAQS,CAAC,GAAI,CAC3C,IAEQs5B,EAFJxzB,EAASlH,KAAKuR,UAAUipB,EAAQn1B,MAAMjE,GAAG2E,KAAK,EAC9C00B,EAAar5B,KACTs5B,EAAqBD,EAAar5B,GAAG6B,cAAc,mBAAmB,EACtEiE,KAAWA,EAAOsI,cAAiBxP,KAAK26B,mBAAmBzzB,CAAM,GAAKwzB,IACtEH,EAAa50B,KAAK80B,EAAar5B,GAAG4D,EAAE,GAMxD+R,SAAO/V,CAAM,EACThB,KAAK0E,gBACL1E,KAAKgX,gBAAgB,CAAChW,EAAOgE,GAAG,EAEhCu1B,EAAa55B,QACbX,KAAKgX,gBAAgBujB,CAAY,EAErCr1B,EAAKG,MAAMsR,OAAOtH,EAAO,CAAC,EAC1B,OAAOrP,KAAK+E,UAAUc,EAAKkH,SAC3B/M,KAAKyY,mBACLzY,KAAKsF,qBAAqBwJ,EAAM5J,CAAI,EAChClF,KAAK4M,yBAA2ByF,IAAc,CAACrS,KAAK0E,gBAAkB2N,EAASxF,UAAUC,SAAS,aAAa,GAC9G9M,KAAK0E,gBAAkB2N,EAASxF,UAAUC,SAAS,oBAAoB,IACxEiK,SAAO1E,CAAQ,EAEdrS,KAAK0C,eAAkB1C,KAAK8Q,eAC7B9Q,KAAK4I,QAAQ,SAAU/C,CAAI,EAE/B7F,KAAKiO,YAAYR,EAAazN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAAG,aAAa,IAGlF5C,EAAapC,UAAUy6B,mBAAqB,SAAUzzB,GAGlD,OADSA,EAAOqP,WAAwC,UAA3B,OAAOrP,EAAOqP,UAAoDxB,KAAAA,IAA3B7N,EAAOqP,SAASpW,SAGxFmC,EAAapC,UAAU4L,WAAa,SAAU9K,GAC1C,IAAIoF,EAAQpG,KAIR6F,EAAO,CAAEkH,QAHGV,UAAQrL,EAAQ,oBAAoB,EAC5BgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAE7BgJ,OADlB3B,UAAQrL,EAAQ,mBAAmB,EAAEgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACvCqI,OAAQ,CAAA,EAAOjG,KAAM,cAC/DpH,KAAK0C,eAAkB1C,KAAK8Q,cAM7B9Q,KAAK46B,0BAA0B/0B,EAAM7E,CAAM,EAL3ChB,KAAK4I,QAAQ,eAAgB/C,EAAM,SAAU2H,GACzCpH,EAAMw0B,0BAA0BptB,EAAoBxM,CAAM,EAC7D,GAMTsB,EAAapC,UAAU06B,0BAA4B,SAAU/0B,EAAM7E,GAC/D,GAAI,CAAC6E,EAAKwH,OAAQ,CAYd,IAXA,IAAI/B,EAAYe,UAAQrL,EAAQ,oBAAoB,EAChDkE,EAAOlF,KAAK6N,eAAevC,CAAS,EACpCuD,EAAWxC,UAAQrL,EAAQ,mBAAmB,EAC9CyM,EAAczN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAC1CmN,EAAWxD,EAASf,uBACpBuB,EAAQ,EACRwrB,EAAchsB,EACdyrB,EAAWzrB,EAASsO,mBACpB5E,EAAU1J,EAAS1L,iBAAiB,YAAY,EAChD3C,EAAI,KAAA,EACJ8H,EAAMiQ,EAAQ5X,OACbH,EAAI,EAAGA,EAAI8H,EAAK9H,CAAC,GAClBoD,eAAa2U,EAAQ/X,GAAI,SAAS,EAAEqD,UAExC,KAA2C,OAApCgL,EAASf,wBACZe,EAAWA,EAASf,wBAChB,CAAC9N,KAAK4M,yBAA4B5M,KAAK4M,0BACrC,CAAC5M,KAAK0E,gBAAkB,CAACmK,EAAShC,UAAUC,SAAS,aAAa,GAChE9M,KAAK0E,iBAAmBmK,EAAShC,UAAUC,SAAS,kBAAkB,GAClE+B,EAAShC,UAAUC,SAAS,mBAAmB,MACvDuC,CAAK,GAGb,IAkBYyrB,EACAC,EAnBR7zB,EAASlH,KAAKuR,UAAUrM,EAAKG,MAAMgK,GAAOtJ,KAAK,EAc/C20B,GAbAxzB,GAAUA,EAAOqP,UAAYskB,EAAY53B,cAAc,aAAa,GACpEjD,KAAKykB,gBAAgBvd,EAAQ2zB,EAAY53B,cAAc,aAAa,EAAE+B,EAAE,GAExE,CAACqN,GAAYA,EAAS3O,UAAUC,QAAQ,kBAAkB,EAAI,IAC1D22B,GACAx1B,cAAY,CAACw1B,GAAW,eAAe,GAG3C,CAACA,GAAYA,EAAS52B,UAAUC,QAAQ,kBAAkB,EAAI,IAC1D0O,GACAvN,cAAY,CAACuN,GAAW,oBAAoB,EAG3BwoB,EAAY53B,cAAc,mBAAmB,GAEtE,IACQjD,KAAK4M,0BAA4BiuB,EAAY/sB,wBAA0B+sB,EAAY1d,sBAC/E2d,EAAeD,EAAY/sB,uBAC3BitB,EAAaF,EAAY1d,mBACzBnX,oBAAkB+0B,CAAU,IAAO,CAAC/6B,KAAK0E,gBAAkBo2B,EAAajuB,UAAUC,SAAS,aAAa,GACpG9M,KAAK0E,gBAAkBo2B,EAAajuB,UAAUC,SAAS,oBAAoB,IAC3EguB,GAAgBA,EAAahtB,wBAA0BgtB,EAAahtB,uBAAuBjB,UAAUC,SAAS,kBAAkB,IACnH9M,KAAK+N,QAAQ+sB,EAAahtB,sBAAsB,EACtD3I,UAAY,MAEvB4R,SAAO+jB,CAAY,IAEb,CAAC96B,KAAK0E,gBAAkBq2B,EAAWluB,UAAUC,SAAS,aAAa,GACrE9M,KAAK0E,gBAAkBq2B,EAAWluB,UAAUC,SAAS,oBAAoB,IAC7EiK,SAAOgkB,CAAU,GAGzBhkB,SAAO8jB,CAAW,EAEtB,MAAOG,GACH,OAEA9zB,GAAUA,EAAOsI,cACjBxP,KAAKgX,gBAAgB,CAAC6jB,EAAY71B,GAAG,EAErCkC,GAAUlH,KAAK26B,mBAAmBzzB,CAAM,GAAKwzB,GAC7C16B,KAAKgX,gBAAgB,CAAC6jB,EAAY71B,GAAG,EAEzCE,EAAKG,MAAMsR,OAAOtH,EAAO,CAAC,EACpBnK,EAAKG,MAAM,IAAMH,EAAKG,MAAM,GAAGA,OACjCrF,KAAKsF,qBAAqBgG,EAAWpG,EAAMlF,CAAAA,CAAAA,KAAK4M,uBAAsC,EAG1F,IADA,IAAIqW,EAAcjjB,KAAKgD,QAAQG,iBAAiB,YAAY,EACnD83B,EAAM,EAAGA,EAAMhY,EAAYtiB,OAAQs6B,CAAG,GAC3Cr3B,eAAaqf,EAAYgY,GAAM,SAAS,EAAEjlB,QAAQiN,EAAYgY,EAAI,EAEjEj7B,KAAK0C,eAAkB1C,KAAK8Q,eAC7B9Q,KAAK4I,QAAQ,SAAU/C,CAAI,EAE/B7F,KAAKiO,YAAYR,EAAazN,KAAK4N,cAAc5N,KAAKkF,IAAI,EAAG,YAAY,IAGjF5C,EAAapC,UAAUuM,cAAgB,SAAUvH,EAAMP,GAC/C3E,KAAK0E,gBAAkBC,IACvB3E,KAAK2E,OAAS,CAAA,GAElB3E,KAAKyC,QACLzC,KAAKkb,eAAiB,EACtBlb,KAAKkP,cAAgB,EACrBlP,KAAK0C,cAAgB,CAAA,EACrB1C,KAAKiF,cAAc,CAAEC,KAAMA,GAAQ,CAAA,CAAI,EACvCA,EAAOlF,KAAKge,kBAAkBhe,KAAKkF,KAAM,CAAA,CAAK,EAC9ClF,KAAK6uB,YAAY7uB,KAAKkF,KAAMlF,KAAKgD,QAAQC,cAAc,oBAAoB,EAAG,CAAA,EAAMjD,KAAKkF,KAAKE,IAAKT,CAAM,EACrGO,EAAKyP,WACDumB,EAAgBl7B,KAAKgD,QAAQC,cAAc,oBAAoB,EAAEA,cAAc,iBAAiB,EACpGjD,KAAKkM,UAAUgvB,CAAa,GAEhCl7B,KAAK0C,cAAgB,CAAA,GAEzBJ,EAAapC,UAAU65B,gBAAkB,SAAUh2B,GAC/C,IAkBQo3B,EAlBJp3B,EAAE0b,gBAAkBzf,KAAKgD,SAAWhD,CAAAA,KAAKovB,UAA2B,KAAdrrB,EAAEq3B,SAAgC,KAAdr3B,EAAEq3B,SAAgC,KAAdr3B,EAAEq3B,QAGhF,WAAXr3B,EAAEs3B,MAAqBr7B,KAAK0Q,mBACjC1Q,KAAKw3B,mBAAqB,CAAA,EAC1BpzB,SAASqzB,KAAK5qB,UAAUsW,OAAO,kBAAkB,EAC5BnjB,KAAKgD,QAAQG,iBAAiB,0BAA0B,EAC9D8D,QAAQ,SAAUyZ,GAC7BA,EAAI7T,UAAUsW,OAAO,yBAAyB,EACjD,EACgBnjB,KAAKgD,QAAQG,iBAAiB,uBAAuB,EACvD8D,QAAQ,SAAUyZ,GAC7BA,EAAI7T,UAAUsW,OAAO,sBAAsB,EAC9C,EACgBnjB,KAAKgD,QAAQG,iBAAiB,qBAAqB,EACrD8D,QAAQ,SAAUyZ,GAC7BA,EAAI7T,UAAUsW,OAAO,oBAAoB,EAC5C,GACGgY,EAAcn7B,KAAKgD,QAAQC,cAAc,oBAAoB,IAE7DkgB,SAAOgY,CAAW,EAElBn7B,KAAK4M,0BACL5M,KAAKgW,UAtBTjS,EAAEu3B,kBA0BVh5B,EAAapC,UAAU+5B,oBAAsB,WACrChS,UAAQC,UAAY/H,OAAO4O,WAAa,IACxC/uB,KAAK6R,YAAc,WAGnB7R,KAAK6R,YAAc,cAG3BvP,EAAapC,UAAU8W,gBAAkB,SAAUyjB,IAE3Cz6B,KAAK+P,SAAW/P,KAAKgQ,YACrBhQ,KAAKu7B,cAAcd,CAAY,GAGvCn4B,EAAapC,UAAUoF,qBAAuB,SAAUgG,EAAWjG,EAAOmR,EAAgBglB,GACtF,GAAI,CAACx7B,KAAK0E,gBACF1E,CAAAA,KAAKovB,SAAT,CAGA,IAAIqM,EAAQnwB,EAAUrI,cAAc,cAAc,EAAE8gB,kBAChDrW,EAAUpC,EAAUrI,cAAc,iBAAiB,EACnD0K,EAASrC,EAAUrI,cAAc,gBAAgB,EACrD,GAAY,EAARw4B,EAQA,GAPA/tB,EAAQmQ,SAAW,CAAA,EACnBlQ,EAAOkQ,SAAW,CAAA,GACdlQ,EAAOwP,mBAAmBtQ,UAAUC,SAAS,eAAe,GAC5DY,EAAQyP,mBAAmBtQ,UAAUC,SAAS,eAAe,KAC7Da,EAAOwP,mBAAmBtQ,UAAUsW,OAAO,eAAe,EAC1DzV,EAAQyP,mBAAmBtQ,UAAUsW,OAAO,eAAe,GAE3DnjB,KAAK4M,yBAA2B,CAAC4J,EAAgB,CAIjD,IAHA,IAAInH,EAAQ,EACRrM,EAAU,KAAA,IAED,CACT,IAAI04B,EAAWpwB,EAAUxH,cAAcX,iBAAiB,iBAAiB,EACrEw4B,EAAUrwB,EAAUxH,cAAcX,iBAAiB,gBAAgB,EACvEuK,EAAUguB,EAASA,EAAS/6B,QAAU,EAAI0O,IAC1C1B,EAASguB,EAAQA,EAAQh7B,QAAU,EAAI0O,IAEvC,GAAIrM,EADJA,EAAU04B,EAASA,EAAS/6B,QAAU,EAAI0O,MAC3BrM,CAAAA,EAAQc,eAAyD,SAAxCd,EAAQc,cAAcyH,MAAMC,QAIhE,MAHA6D,CAAK,GAOb,IADA,IAAIP,EAAOxD,EAAUwC,uBACdgB,GAAQ,CAACA,EAAKjC,UAAUC,SAAS,kBAAkB,GAAG,CACzD,GAAIgC,EAAKjC,UAAUC,SAAS,mBAAmB,EAAG,CAC9CgC,EAAOA,EAAK3L,iBAAiB,mBAAmB,EAAE2L,EAAK3L,iBAAiB,mBAAmB,EAAExC,OAAS,GACtG,MAEJmO,EAAOA,EAAKhB,uBAEZ0tB,GAAclwB,EAAUuB,UAAUC,SAAS,mBAAmB,EAGnC,OADZ9M,KAAKiN,SADpB6B,EAAOxD,CAC0B,EACpBnG,UACTwI,EAAOO,QAAU,CAAA,EAGjBR,EAAQQ,QAAU,CAAA,EAGjBY,GAAQA,EAAKjC,UAAUC,SAAS,kBAAkB,IACnDkB,EAASc,EAAK9J,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAE3B,OADZhF,KAAK+N,QAAQC,CAAM,EACrB7I,UACTwI,EAAOO,QAAU,CAAA,EAGjBR,EAAQQ,QAAU,CAAA,QAIpBsI,IACFnR,GAA6B,OAApBA,EAAMF,UACfwI,EAAOO,QAAU,CAAA,EAGjBR,EAAQQ,QAAU,CAAA,QAK1B,GAAIlO,KAAK4M,yBAA2B,CAAC4J,EAAgB,CAIjD,IAHInH,EAAQ,EACRrM,EAAU,KAAA,IAED,CACL04B,EAAWpwB,EAAUxH,cAAcX,iBAAiB,iBAAiB,EACrEw4B,EAAUrwB,EAAUxH,cAAcX,iBAAiB,gBAAgB,EAQvE,GAPAuK,EAAUguB,EAASA,EAAS/6B,QAAU,EAAI0O,IAC1C1B,EAASguB,EAAQA,EAAQh7B,QAAU,EAAI0O,IACnCrP,KAAK0C,gBACLgL,EAAUpC,EAAUxH,cAAcb,cAAc,gDAAgD,EAChG0K,EAASrC,EAAUxH,cAAcb,cAAc,+CAA+C,GAG9FD,EADJA,EAAU04B,EAASA,EAAS/6B,QAAU,EAAI0O,MAC3BrM,CAAAA,EAAQc,eAAyD,SAAxCd,EAAQc,cAAcyH,MAAMC,QAIhE,MAHA6D,CAAK,GAQb,IAFA,IA0BQrB,EA1BJc,EAAO,KAAA,EACPqJ,EAAW7M,EAAUwC,uBAClBqK,GAAU,CAIb,IAFIA,EADAA,EAAStL,UAAUC,SAAS,mBAAmB,EACpCqL,EAAShV,iBAAiB,mBAAmB,EAAEgV,EAAShV,iBAAiB,mBAAmB,EAAExC,OAAS,GAElHwX,GAAStL,UAAUC,SAAS,kBAAkB,EAAG,CACjDgC,EAAOqJ,EACP,MAEJA,EAAWA,EAASrK,uBAEpB9H,oBAAkB8I,CAAI,GAAKxD,EAAUnI,iBAAiB,mBAAmB,EAAEmI,EAAUnI,iBAAiB,mBAAmB,EAAExC,OAAS,KACpImO,EAAOxD,EAAUnI,iBAAiB,mBAAmB,EAAEmI,EAAUnI,iBAAiB,mBAAmB,EAAExC,OAAS,IAEhH66B,GAAclwB,EAAUuB,UAAUC,SAAS,mBAAmB,EAGnC,OADZ9M,KAAKiN,SADpB6B,EAAOxD,CAC0B,EACpBnG,UACTwI,EAAOO,QAAU,CAAA,EAGjBR,EAAQQ,QAAU,CAAA,EAGjBY,IACDd,EAASc,EAAK9J,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAE3B,OADZhF,KAAK+N,QAAQC,CAAM,EACrB7I,WAAsBwI,EAC/BA,EAAOO,QAAU,CAAA,EAEZR,IACLA,EAAQQ,QAAU,CAAA,SAIpBsI,GAAmBxQ,oBAAkB0H,CAAO,IAClDA,EAAQQ,QAAU,CAAA,EAClBR,EAAQmQ,SAAW,CAAA,EACnBlQ,EAAOO,QAAU,CAAA,EACjBP,EAAOkQ,SAAW,CAAA,EACdxY,IACAsI,EAAOwP,mBAAmBtQ,UAAUkF,IAAI,eAAe,EACvDrE,EAAQyP,mBAAmBtQ,UAAUkF,IAAI,eAAe,MAY5EzP,EAAapC,UAAU0N,cAAgB,SAAUguB,GAC7C57B,KAAK67B,aAAe,CAAA,EAIpB,IAAIC,GAHCF,EAAAA,GACa57B,KAAK+7B,YAEQ52B,UAC3B2P,EAAe8mB,EAAYx2B,IAC3BkpB,EAAW9hB,SAAO,GAAIovB,EAAYv2B,MAAO,GAAI,CAAA,CAAI,EACjDH,EAAQc,oBAAkB41B,EAAYjnB,QAAQ,EAE9C3U,KAAKge,kBAAkB,CAAE7Y,UAAW22B,EAAcz2B,MAAOipB,EAAUlpB,IAAK0P,GAAgB,CAAA,CAAI,EAD5F9U,KAAKge,kBAAkB,CAAE7Y,UAAW22B,EAAcz2B,MAAOipB,EAAUlpB,IAAK0P,EAAcH,SAAUinB,EAAYjnB,UAAY,CAAA,CAAI,EAGhI,OADA3U,KAAK67B,aAAe,CAAA,EACb32B,GAEX5C,EAAapC,UAAU8d,kBAAoB,SAAU9Y,EAAM82B,GACvD,GAAIh2B,oBAAkBd,CAAI,EACtB,OAAO,KAEX,IAAIirB,EACJ,GAAIjrB,EAAKG,OAASH,EAAKG,MAAM1E,SAA+C,EAApCpB,OAAOkH,KAAKvB,EAAKG,MAAM,EAAE,EAAE1E,QAAcq7B,GAE7E,IADA,IAAIxjB,EAAOtT,EAAKG,MAAM1E,OACbwI,EAAI,EAAGA,EAAIqP,EAAMrP,CAAC,GACvBgnB,EAAUjrB,EAAKG,MAAM8D,GACrBgnB,EAAUnwB,KAAKge,kBAAkBmS,EAAS6L,CAAW,EACrD92B,EAAKG,MAAM8D,GAAKgnB,EACZ5wB,OAAOkH,KAAK0pB,CAAO,EAAExvB,OAAS,GAAKq7B,IACnC92B,EAAKG,MAAMsR,OAAOxN,EAAG,CAAC,EACtBA,CAAC,GACDqP,CAAI,IAKhB,IAsDY7D,EAfAsnB,EAvCRC,EAAYh3B,EAAKwR,OAyErB,OAxEKxR,EAAKa,OAAwB,KAAfb,EAAKa,QAAkBC,oBAAkBk2B,CAAS,GAAMA,GAAiC,aAAnBA,EAAU90B,MAC5E,WAAnB80B,EAAU90B,OACNlC,EAAKuM,WAC0C,CAAC,EAA5CvM,EAAKuM,SAAS6E,WAAW3S,QAAQ,MAAM,GAAsD,CAAC,EAA7CuB,EAAKuM,SAAS6E,WAAW3S,QAAQ,OAAO,KACzFuB,EAAKiD,MAAQ,OAGhBnI,KAAKkvB,aAAelvB,KAAK0wB,mBAAsC,KAAfxrB,EAAKa,OAAkC,KAAlBb,EAAKuM,WAC1EzR,CAAAA,KAAK67B,cAA8B,KAAf32B,EAAKiD,QAA0D4M,KAAAA,IAAf7P,EAAKiD,OACzE+zB,GAAaA,EAAUC,cACpBh3B,EAAYD,EAAKC,UACjBi3B,EAAal3B,EAAKyP,SACtBzP,EAAO,CAAEqD,MAASrD,EAAKqD,MAAOxC,MAASb,EAAKa,MAAO0L,SAAYvM,EAAKuM,SAAUrK,KAAQlC,EAAKkC,KAAMe,MAASjD,EAAKiD,OAC1GnC,oBAAkBo2B,CAAU,IAC7Bl3B,EAAKyP,SAAWynB,GAEhBj3B,IACAD,EAAKC,UAAYA,GAEjB+2B,IAEAh3B,EAAKwR,OAASwlB,GAOK,aAHnBh3B,EADmB,OAAlBA,EAAKuM,UAAuC,UAAlBvM,EAAKuM,UAAyBvM,CAAAA,EAAKiD,OAA+B,IAAtBjD,EAAKiD,MAAMxH,OAIjFuE,EAHM,IAGDuM,UAA4C,eAAlBvM,EAAKuM,UAA8B/R,CAAAA,MAAM28B,QAAQn3B,EAAKiD,KAAK,KAAMjD,EAAKiD,MAAMxH,OAAS,GAAKuE,EAAKiD,MAAM2kB,KAAK,SAAUE,GAAO,MAAe,KAARA,GAAsB,OAARA,EAAe,MAKnM9nB,EAAO,KAIPg3B,CAAAA,GAAiC,aAAnBA,EAAU90B,MAA0C,WAAnB80B,EAAU90B,MAYnDpB,oBAAkBd,EAAKC,SAAU,GAAKa,oBAAkBd,EAAKG,KAAK,IAIpEsP,EAAWzP,EAAKyP,SAEhBzP,EADAlF,KAAK4E,mBACE,CAAEO,UAAaD,EAAKC,UAAWE,MAASH,EAAKG,MAAOD,IAAOF,EAAKE,KAGhE,CAAED,UAAaD,EAAKC,UAAWE,MAASH,EAAKG,OAEnDW,oBAAkB2O,CAAQ,IAC3BzP,EAAKyP,SAAWA,GAEhBunB,IAEAh3B,EAAKwR,OAASwlB,GAEdh3B,EAAKG,OAA+B,IAAtBH,EAAKG,MAAM1E,WACzBuE,EAAO,KA9BP+2B,EAAW/2B,EAAKE,KACpBF,EAAO,CACHqD,MAASrD,EAAKqD,MAAOxC,MAASb,EAAKa,MAAO0L,SAAYvM,EAAKuM,SAAUrK,KAAQlC,EAAKkC,KAAMe,MAASjD,EAAKiD,MACtGhD,UAAaD,EAAKC,UAAWE,MAASH,EAAKG,QAG1CqR,OAASwlB,EACVl8B,KAAK4E,qBACLM,EAAKE,IAAM62B,IA0BhB/2B,GAQX5C,EAAapC,UAAUywB,SAAW,SAAUzrB,GACpC0G,EAASY,SAAO,GAAItH,EAAM,GAAI,CAAA,CAAI,EAClClF,KAAK0E,eACL1E,KAAKyM,cAAcb,EAAQ,CAAA,CAAI,EAG/B5L,KAAKyM,cAAcb,CAAM,GAQjCtJ,EAAapC,UAAU67B,SAAW,WAC9B,IAEI72B,EADAlF,KAAK4E,mBACE,CAAEO,UAAWnF,KAAKkF,KAAKC,UAAWE,MAAOrF,KAAKkF,KAAKG,MAAOD,IAAKpF,KAAKkF,KAAKE,KAGzE,CAAED,UAAWnF,KAAKkF,KAAKC,UAAWE,MAAOrF,KAAKkF,KAAKG,OAU9D,OARKW,oBAAkBhG,KAAKkF,KAAKyP,QAAQ,IACrCzP,EAAKyP,SAAW3U,KAAKkF,KAAKyP,UAG1B3U,KAAKkF,KAAKwR,SAEVxR,EAAKwR,OAAS1W,KAAKkF,KAAKwR,QAErBxR,GAQX5C,EAAapC,UAAU6N,QAAU,SAAUe,GACvC,IAEIO,EAAQ,EAERR,EADAC,aAAgBwtB,YACLjwB,UAAQyC,EAAM,mBAAmB,GAG5CwU,EAAStjB,KAAKgD,QAAQgC,GAAK,IAAM8J,EACtB1K,SAAS+G,eAAemY,CAAM,GAE7C,GAAItd,oBAAkB6I,CAAQ,EAC1B,OAAO,KAIX,IAFIvD,EAAYe,UAAQwC,EAAU,oBAAoB,EAClD3J,EAAOlF,KAAK6N,eAAevC,CAAS,EACG,OAApCuD,EAASf,wBACZe,EAAWA,EAASf,wBAChB,CAAC9N,KAAK4M,yBAA4B5M,KAAK4M,0BACrC,CAAC5M,KAAK0E,gBAAkB,CAACmK,EAAShC,UAAUC,SAAS,aAAa,GAChE9M,KAAK0E,iBAAmBmK,EAAShC,UAAUC,SAAS,kBAAkB,GAClE+B,EAAShC,UAAUC,SAAS,mBAAmB,MACvDuC,CAAK,GAGb,OAAOnK,EAAKG,MAAMgK,IAQtB/M,EAAapC,UAAU+M,SAAW,SAAUjM,GAIpC43B,GAFA53B,EADAA,aAAkBurB,SAAWvrB,EAAO0C,UAAUC,QAAQ,mBAAmB,EAAI,EACpE0I,UAAQrL,EAAQ,oBAAoB,EAElCA,aAAkBurB,QAAWvrB,EAAOgE,GAAKhF,KAAKgD,QAAQgC,GAAK,IAAMhE,EAEhF,OADWhB,KAAK6N,eAAe+qB,CAAO,GAS1Ct2B,EAAapC,UAAUq8B,aAAe,SAAUC,GAI5C,IAHA,IAEIzvB,EADAzE,EAAMk0B,EAAY77B,OAEjBH,EAAI,EAAGA,EAAI8H,EAAK9H,CAAC,GACK,WAAnBg8B,EAAYh8B,KAGhBuM,EAAU/M,KAAKgD,QAAQgC,GAAK,IAAMw3B,EAAYh8B,GAC9CR,KAAKsM,YAAYlI,SAAS+G,eAAe4B,CAAO,CAAC,IASzDzK,EAAapC,UAAUu8B,mBAAqB,WACxC,IAAIC,EAAY18B,KAAK28B,aAAa38B,KAAK4N,cAAc5N,KAAKkF,IAAI,CAAC,EAC3D03B,EAAmB52B,oBAAkB02B,CAAS,EAAI,IAAInW,SAAU,IAAIA,SAAQsW,MAAMH,CAAS,EAC/F,OAAO18B,KAAKqmB,YAAYkB,aAAaqV,CAAgB,GAQzDt6B,EAAapC,UAAUq5B,YAAc,SAAUuD,GAI3C,IAHA,IAEI9uB,EADA1F,EAAMw0B,EAAWn8B,OAEhBH,EAAI,EAAGA,EAAI8H,EAAK9H,CAAC,GAClBwN,EAAShO,KAAKgD,QAAQgC,GAAK,IAAM83B,EAAWt8B,GAC5CR,KAAK8L,WAAW1H,SAAS+G,eAAe6C,CAAM,CAAC,GASvD1L,EAAapC,UAAU68B,oBAAsB,SAAU73B,GAInD,IAHA,IAAIw3B,EAAY18B,KAAK28B,aAAaz3B,CAAI,EAElC+C,EAAS,GACJzH,EAAI,EAAG8H,EAAM/I,OAAOkH,KAAKzG,KAAK+G,OAAO,EAAGvG,EAAI8H,EAAI3H,OAAQH,CAAC,GAC9DyH,EAAOtC,KAAK3F,KAAK+G,QAAQvG,GAAGuF,KAAK,EAQrC,OANIb,EAAKG,MAAM1E,QACH,IAAI4lB,SAAQvX,OAAO/G,CAAM,EAAE40B,MAAMH,CAAS,GAG1C,IAAInW,SAAQvX,OAAO/G,CAAM,GAUzC3F,EAAapC,UAAUy8B,aAAe,SAAUz3B,GAC5C,IACI83B,EAEAC,EAHA3O,EAAWppB,EAAKG,MAIhB63B,EAAa,CAAA,EAEjB,GAAK5O,EAAL,CAGA,IAAK,IAAI9tB,EAAI,EAAG8H,EAAMgmB,EAAS3tB,OAAQH,EAAI8H,EAAK9H,CAAC,GAAI,CACjD,IAAIiR,EAAW6c,EAAS9tB,GAAGiR,SACV,kBAAbA,EACAA,EAAW,mBAEO,gBAAbA,EACLA,EAAW,iBAEO,gBAAbA,IACLA,EAAW,kBARf,IA6BQqc,EACAqP,EACAC,EAYI7e,EA6CQpW,EA7EpB+0B,EAAa,CAAA,EACe,CAAC,EAFlB39B,OAAOkH,KAAK6nB,EAAS9tB,EAAE,EAEzBmD,QAAQ,OAAO,GAAU2qB,EAAS9tB,GAAG6E,OAC1Cg4B,EAAQr9B,KAAK28B,aAAarO,EAAS9tB,EAAE,KAIzBw8B,EAFJA,EACuB,QAAnB93B,EAAKC,UACE63B,EAAKM,IAAID,CAAK,EAGdL,EAAKO,GAAGF,CAAK,EAIjBA,GAITr3B,oBAAkByL,CAAQ,GAAMzL,oBAAkByL,EAAS9Q,MAAM,IACnEmtB,EAAOQ,EAAS9tB,GAAGiR,SAASnE,cAC5B6vB,EAAe,CAAA,EACfC,EAAe,CAAC,QAAS,WAAY,cAAe,qBAAsB,WAAY,mBACjE,WAArB9O,EAAS9tB,GAAG4G,OACZ81B,EAAal9B,CAAAA,KAAKw9B,WAEG,SAArBlP,EAAS9tB,GAAG4G,MAAgD,CAAC,EAA9Bg2B,EAAaz5B,QAAQmqB,CAAI,IACxDoP,EAAa,CAAA,GAEjBh2B,EAASlH,KAAKuR,UAAU+c,EAAS9tB,GAAGuF,KAAK,EACd,CAAC,EAAxB+nB,EAAKnqB,QAAQ,MAAM,GAAkC,CAAC,EAAzBmqB,EAAKnqB,QAAQ,OAAO,EACjD2qB,EAAS9tB,GAAG2H,MAAQ,KAEM,SAArBmmB,EAAS9tB,GAAG4G,MAAqBknB,EAAS9tB,GAAG2H,iBAAiBzI,MAanEu9B,EAAY3O,EAAS9tB,GAAG2H,OAZpBoW,EAASve,KAAKwe,UAAUtX,EAAOqX,MAAM,EACpCvY,oBAAkBsoB,EAAS9tB,GAAG2H,KAAK,EAOpC80B,EAAY,MANZA,EAAYj9B,KAAKy9B,QAAQnP,EAAS9tB,GAAG2H,MAAOoW,CAAM,EACjB,CAAC,EAA9B6e,EAAaz5B,QAAQmqB,CAAI,GAAU,CAAC9tB,KAAK09B,OAAOpP,EAAS9tB,GAAG2H,KAAK,IACjEg1B,EAAe,CAAA,KAUjB,IAAN38B,EACI28B,IAAsC,CAAC,EAAtBrP,EAAKnqB,QAAQ,IAAI,GAAoC,CAAC,EAA3BmqB,EAAKnqB,QAAQ,SAAS,GAAiC,CAAC,EAAxBmqB,EAAKnqB,QAAQ,MAAM,GACvE,CAAC,EAAzBmqB,EAAKnqB,QAAQ,OAAO,IAAYmqB,EAAKnqB,QAAQ,SAAS,EAAI,EAC1Dq5B,EAAOG,EAAen9B,KAAK29B,cAAcrP,EAAS9tB,GAAIy8B,CAAS,EAC3Dj9B,KAAK49B,eAAetP,EAAS9tB,EAAE,EAIrB,MAAV2H,EADQ80B,KAERD,EAAO,IAAIa,YAAUvP,EAAS9tB,GAAGuF,MAAO0L,EAAUwrB,EAAWC,CAAU,GAK3EC,IAAsC,CAAC,EAAtBrP,EAAKnqB,QAAQ,IAAI,GAAoC,CAAC,EAA3BmqB,EAAKnqB,QAAQ,SAAS,GAC3C,CAAC,EAAxBmqB,EAAKnqB,QAAQ,MAAM,GAAkC,CAAC,EAAzBmqB,EAAKnqB,QAAQ,OAAO,IAAWmqB,EAAKnqB,QAAQ,SAAS,EAAI,EACtFq5B,EAAOG,EAAen9B,KAAK29B,cAAcrP,EAAS9tB,GAAIy8B,EAAWD,EAAM93B,EAAKC,SAAS,EACjFnF,KAAK49B,eAAetP,EAAS9tB,GAAIw8B,EAAM93B,EAAKC,SAAS,EAGlC,QAAnBD,EAAKC,WACDgD,EAAQ80B,EACRD,GAAkB,KAAV70B,EACR60B,EACMA,EAAKM,IAAIhP,EAAS9tB,GAAGuF,MAAO0L,EAAUwrB,EAAWC,CAAU,EAElD,KAAV/0B,IACL60B,EAAO,IAAIa,YAAUvP,EAAS9tB,GAAGuF,MAAO0L,EAAUwrB,EAAWC,CAAU,KAIvE/0B,EAAQ80B,EACRD,GAAkB,KAAV70B,EACR60B,EAAOA,EAAKO,GAAGjP,EAAS9tB,GAAGuF,MAAO0L,EAAUwrB,EAAWC,CAAU,EAElD,KAAV/0B,IACL60B,EAAO,IAAIa,YAAUvP,EAAS9tB,GAAGuF,MAAO0L,EAAUwrB,EAAWC,CAAU,KAO3Fl9B,KAAK0S,sBAAsBuU,gBACtBjhB,oBAAkBg3B,CAAI,GAAwB,WAAlBA,EAAKvrB,UAA2C,cAAlBurB,EAAKvrB,WAChEurB,EAAKvrB,SAA6B,WAAlBurB,EAAKvrB,SAAwB,QAAU,aAG/D,OAAOurB,GAEX16B,EAAapC,UAAUgrB,UAAY,WAC/B,IACI4S,EAAe99B,KAAKggB,OAMxB,OAFI8d,EAFahe,WADH,QAC2B9f,KAAKggB,OAHxB,+CAGkD+d,UAAQ,EAIzED,EAFY,MAIvBx7B,EAAapC,UAAUqR,UAAY,SAAUxL,EAAOgD,GAMhD,IALA,IAAIhC,EAAU/G,KAAK+G,QAEnBA,EAAUgC,GAAYhC,EAClBi3B,EAAgC,KAAnBh+B,KAAKiG,UAAoBF,EAAQA,EAAMG,MAAMlG,KAAKiG,SAAS,EAAI,GAAM,CAACF,GACnFk4B,EAAYD,GAAkC,EAApBA,EAAWr9B,OAAaq9B,EAAW,GAAK,KAC7Dx9B,EAAI,EAAGA,EAAIuG,EAAQpG,OAAQH,CAAC,GACjC,GAAIuG,EAAQvG,GAAGuF,QAAUA,EAAO,CAC5BmB,EAASH,EAAQvG,GACjB,MAGR,GAAI,CAAC0G,GAA6B,KAAnBlH,KAAKiG,UAChB,IAAK,IAGWsd,EAEArc,EALP1G,EAAI,EAAGA,EAAIuG,EAAQpG,OAAQH,CAAC,GACjC,GAAIuG,EAAQvG,GAAGuF,QAAUk4B,EAAW,CAIxB/2B,EAHJH,EAAQvG,GAAGuG,UACPwc,EAAWxd,EAAMm4B,UAAUD,EAAUt9B,OAASX,KAAKiG,UAAUtF,MAAM,GAE1DX,KAAKuR,UAAUgS,EAAUxc,EAAQvG,GAAGuG,OAAO,EAO/CA,EAAQvG,GAErB,MAIZ,GAAI,CAAC0G,EACD,IAAS1G,EAAI,EAAGA,EAAIuG,EAAQpG,SACpBoG,CAAAA,EAAQvG,GAAGuG,SACXG,EAAAA,EAASlH,KAAKuR,UAAUxL,EAAOgB,EAAQvG,GAAGuG,OAAO,IAFrBvG,CAAC,IASzC,OAAO0G,GASX5E,EAAapC,UAAU2P,aAAe,SAAU9J,GAE5C,OADa/F,KAAKuR,UAAUxL,CAAK,EACnB8B,WAElBvF,EAAapC,UAAUi+B,QAAU,SAAUC,EAAMC,GAO7C,OANIA,EACAD,EAAKE,SAAS,EAAG,EAAG,CAAC,EAGrBF,EAAKE,SAAS,GAAI,GAAI,EAAE,EAErBF,GAEX97B,EAAapC,UAAUy9B,cAAgB,SAAUrP,EAAUnmB,EAAOu0B,EAAWv3B,GACzE,IAAI63B,EACAuB,EAAYv+B,KAAKm+B,QAAQ,IAAI72B,KAAKa,EAAMX,SAAS,EAAG,CAAA,CAAI,EACxDg3B,EAAUx+B,KAAKm+B,QAAQh2B,CAAK,EAChC,OAAQmmB,EAAS7c,UACb,IAAK,QAEDurB,GADAA,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,qBAAsBw4B,CAAS,GACxDjB,IAAIhP,EAASvoB,MAAO,kBAAmBy4B,CAAO,EAC1D,MACJ,IAAK,WAEDxB,GADAA,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,WAAYw4B,CAAS,GAC9ChB,GAAGjP,EAASvoB,MAAO,cAAey4B,CAAO,EACrD,MACJ,IAAK,cACDxB,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,cAAey4B,CAAO,EAC3D,MACJ,IAAK,qBACDxB,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,qBAAsBw4B,CAAS,EACpE,MACJ,IAAK,WACDvB,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,WAAYw4B,CAAS,EAC1D,MACJ,IAAK,kBACDvB,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,kBAAmBy4B,CAAO,EAgBvE,OAbIxB,IACIN,EACkB,QAAdv3B,EACAu3B,EAAYA,EAAUY,IAAIN,CAAI,EAEX,OAAd73B,IACLu3B,EAAYA,EAAUa,GAAGP,CAAI,GAIjCN,EAAYM,GAGbN,GAEXp6B,EAAapC,UAAU09B,eAAiB,SAAUtP,EAAUoO,EAAWv3B,GACnE,IAGI63B,EAHA70B,EAAQmmB,EAASnmB,MACjBsJ,EAAW6c,EAAS7c,SAAS6E,WAC7BmoB,EAAYnQ,EAASnmB,MAErBjB,EAASlH,KAAKuR,UAAU+c,EAASvoB,KAAK,EACtCwY,EAASve,KAAKwe,UAAUtX,EAAOqX,MAAM,EACzC,GAA+B,CAAC,EAA5B9M,EAAS9N,QAAQ,MAAM,GAAsC,CAAC,EAA7B8N,EAAS9N,QAAQ,OAAO,EACzD,OAAQ8N,GACJ,IAAK,SACDurB,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,SAAU04B,CAAS,EACxD,MACJ,IAAK,YACDzB,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,YAAa04B,CAAS,EAC3D,MACJ,IAAK,UACDzB,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,QAAS,EAAE,EAChD,MACJ,IAAK,aACDi3B,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,WAAY,EAAE,EAI/D,GAAI,EAA6B,CAAC,EAA5B0L,EAAS9N,QAAQ,MAAM,GAAsC,CAAC,EAA7B8N,EAAS9N,QAAQ,OAAO,GAC3D,IAAK,IAAIwF,EAAI,EAAGqP,EAAOrQ,EAAMxH,OAAQwI,EAAIqP,EAAMrP,CAAC,GAC5C,GAAiB,KAAbhB,EAAMgB,KAA4B,OAAbsI,GAAkC,UAAbA,IAAyC,WAAhBvK,EAAOE,KAC1E,GAAU,IAAN+B,EAAS,CACT,IAAIu1B,EAAM,qBACV,OAAQjtB,GACJ,IAAK,UAEGurB,EADgB,SAAhB91B,EAAOE,KACA,IAAIy2B,YAAUvP,EAASvoB,MAAO24B,EAAKv2B,EAAMgB,EAAE,EAG3C,IAAI00B,YAAUvP,EAASvoB,MAAO24B,EAAKv2B,EAAMgB,GAC3CnJ,KAAK09B,OAAOv1B,EAAMgB,EAAE,EAAInJ,KAAKy9B,QAAQt1B,EAAMgB,GAAIoV,CAAM,EAClDve,KAAKm+B,QAAQn+B,KAAKy9B,QAAQt1B,EAAMgB,GAAIoV,CAAM,EAAG,CAAA,CAAI,EAAK,IAAI,EAEtE,MACJ,IAAK,aAEGye,EADgB,SAAhB91B,EAAOE,KACA,IAAIy2B,YAAUvP,EAASvoB,MAAO,WAAYoC,EAAMgB,GAClDnJ,KAAK09B,OAAOv1B,EAAMgB,EAAE,EAAInJ,KAAKy9B,QAAQt1B,EAAMgB,GAAIoV,CAAM,EAClDve,KAAKm+B,QAAQn+B,KAAKy9B,QAAQt1B,EAAMgB,GAAIoV,CAAM,EAAG,CAAA,CAAI,EAAK,IAAI,EAG3D,IAAIsf,YAAUvP,EAASvoB,MAAO,WAAYoC,EAAMgB,EAAE,EAE7D,MACJ,IAAK,KACD6zB,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,QAASoC,EAAMgB,EAAE,EACtD,MACJ,IAAK,QACD6zB,EAAO,IAAIa,YAAUvP,EAASvoB,MAAO,WAAYoC,EAAMgB,EAAE,QAMjE,OAAQmlB,EAAS7c,UACb,IAAK,UAEGurB,EADgB,SAAhB91B,EAAOE,KACA41B,EAAKM,IAAIhP,EAASvoB,MAAO,kBAAmBoC,EAAMgB,KACpDnJ,KAAK09B,OAAOv1B,EAAMgB,EAAE,EAAInJ,KAAKy9B,QAAQt1B,EAAMgB,GAAIoV,CAAM,EAClDve,KAAKm+B,QAAQn+B,KAAKy9B,QAAQt1B,EAAMgB,GAAIoV,CAAM,CAAC,EAAa,EAGzDye,EAAKM,IAAIhP,EAASvoB,MAAO,kBAAmBoC,EAAMgB,EAAE,EAE/D,MACJ,IAAK,aAEG6zB,EADgB,SAAhB91B,EAAOE,KACA41B,EAAKO,GAAGjP,EAASvoB,MAd3B,cAcsCoC,EAAMgB,KACpCnJ,KAAK09B,OAAOv1B,EAAMgB,EAAE,EAAInJ,KAAKy9B,QAAQt1B,EAAMgB,GAAIoV,CAAM,EAClDve,KAAKm+B,QAAQn+B,KAAKy9B,QAAQt1B,EAAMgB,GAAIoV,CAAM,CAAC,EAAa,EAGzDye,EAAKO,GAAGjP,EAASvoB,MAAO,cAAeoC,EAAMgB,EAAE,EAE1D,MACJ,IAAK,KACD6zB,EAAOA,EAAKO,GAAGjP,EAASvoB,MAAO,QAASoC,EAAMgB,EAAE,EAChD,MACJ,IAAK,QACD6zB,EAAOA,EAAKM,IAAIhP,EAASvoB,MAAO,WAAYoC,EAAMgB,EAAE,EAoB5E,OAbI6zB,IACIN,EACkB,QAAdv3B,EACAu3B,EAAYA,EAAUY,IAAIN,CAAI,EAEX,OAAd73B,IACLu3B,EAAYA,EAAUa,GAAGP,CAAI,GAIjCN,EAAYM,GAGbN,GAEXp6B,EAAapC,UAAUu9B,QAAU,SAAUt1B,EAAOoW,GAC1CogB,EAAW3+B,KAAKye,KAAK6L,UAAUniB,EAAOoW,CAAM,EAUhD,MATyB,CAAC,EAAtBpW,EAAMxE,QAAQ,GAAG,GAAWwE,EAAMxE,QAAQ,GAAG,EAAI,GAAKwE,EAAMxE,QAAQ,GAAG,EAAI,GACxEwE,EAAMxE,QAAQ,GAAG,EAAI,KACxBg7B,EAAW,IAAIr3B,MACNg3B,SAASjoB,SAASlO,EAAMjC,MAAM,GAAG,EAAE,GAAI,EAAE,CAAC,EACnDy4B,EAASC,WAAWvoB,SAASlO,EAAMjC,MAAM,GAAG,EAAE,GAAI,EAAE,CAAC,EACjDiC,EAAMjC,MAAM,GAAG,EAAE,KACjBy4B,EAASE,WAAWxoB,SAASlO,EAAMjC,MAAM,GAAG,EAAE,GAAI,EAAE,CAAC,EAGtDy4B,GAEXr8B,EAAapC,UAAUw9B,OAAS,SAAUv1B,GACtC,MAAIA,CAAAA,EAAAA,GAA8B,CAAC,EAAtBA,EAAMxE,QAAQ,GAAG,IAKlCrB,EAAapC,UAAU2uB,YAAc,SAAU3pB,EAAMse,EAAYsb,EAAS15B,EAAKT,GAC3E,GAAKm6B,EAGA,CACD,GAAI55B,EAAKG,OAA6B,EAApBH,EAAKG,MAAM1E,QAAc,CAACX,KAAK0E,eAAgB,CAE7D,IAAIiJ,EAAS6V,EAAWvgB,cAAc,gBAAgB,EAClDyK,EAAU8V,EAAWvgB,cAAc,iBAAiB,EAOxD,GANIjD,KAAK4M,yBAA2B4W,EAAW1V,yBAC3CH,EAAS6V,EAAW1V,uBAAuB7K,cAAc,gBAAgB,EACzEyK,EAAU8V,EAAW1V,uBAAuB7K,cAAc,iBAAiB,GAE/E0K,EAAOkQ,SAAW,CAAA,EAClBnQ,EAAQmQ,SAAW,CAAA,EACf7d,KAAK4M,wBAAyB,CAE9B,IADA,IAAIkC,EAAO0U,EAAW1V,uBACfgB,GAAQ,CAACA,EAAKjC,UAAUC,SAAS,kBAAkB,GAAG,CACzD,GAAIgC,EAAKjC,UAAUC,SAAS,mBAAmB,EAAG,CAC9CgC,EAAOA,EAAK3L,iBAAiB,mBAAmB,EAAE2L,EAAK3L,iBAAiB,mBAAmB,EAAExC,OAAS,GACtG,MAEJmO,EAAOA,EAAKhB,uBAEZgB,GAAQA,EAAKjC,UAAUC,SAAS,kBAAkB,IAC9CkB,EAASc,EAAK9J,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAE3B,OADZhF,KAAK+N,QAAQC,CAAM,EACrB7I,UACTwI,EAAOO,QAAU,CAAA,EAGjBR,EAAQQ,QAAU,CAAA,OAKH,OAAnBhJ,EAAKC,UACLwI,EAAOO,QAAU,CAAA,EAGjBR,EAAQQ,QAAU,CAAA,OAM1BlO,KAAKsF,qBAAqBke,CAAU,EAEpCxjB,KAAK0E,gBAAkBC,IACvB6e,EAAaxjB,KAAK++B,YAAY75B,EAAMA,EAAKC,UAAWnF,KAAKgD,QAASkC,EAAKE,IAAKT,CAAM,GAElF3E,KAAK4E,oBAAsB,CAAC5E,KAAK0E,iBAC7Bs6B,EAAaxb,EAAWvgB,cAAc,cAAc,EACpDiC,EAAKE,KACLgI,WAAS,CAAC4xB,GAAa,iBAAiB,EACpCh/B,KAAK4M,0BACLhJ,eAAao7B,EAAW/7B,cAAc,aAAa,EAAG,UAAU,EAAEiL,QAAUhJ,EAAKE,MAIrFN,cAAY,CAACk6B,GAAa,iBAAiB,QA1DnDxb,EAAaxjB,KAAK++B,YAAY75B,EAAMA,EAAKC,UAAWqe,EAAYpe,CAAG,EA8DnEF,EAAKG,OAA+B,IAAtBH,EAAKG,MAAM1E,QAAgBX,KAAK0E,iBAC9CQ,EAAKG,MAAM,GAAK,CAAEkD,MAAS,GAAIxC,MAAS,GAAI0L,SAAY,GAAIrK,KAAQ,GAAIe,MAAS,KAErF,IAAImmB,EAAWppB,EAAKG,MACpB,GAAI,CAACW,oBAAkBsoB,CAAQ,EAC3B,IAAK,IAAI9tB,EAAI,EAAG8H,EAAMgmB,EAAS3tB,OAAQH,EAAI8H,EAAK9H,CAAC,GAAI,CACjD,IAAIiG,EAAOlH,OAAOkH,KAAK6nB,EAAS9tB,EAAE,EAClC,GAAI,CAACwF,oBAAkBsoB,EAAS9tB,GAAG6E,KAAK,GAA6B,CAAC,EAAzBoB,EAAK9C,QAAQ,OAAO,GAAwC,IAA7B2qB,EAAS9tB,GAAG6E,MAAM1E,OAAe,CACzG,GAAIX,KAAKgD,QAAQG,iBAAiB,oBAAoB,EAAExC,OAASX,KAAKsO,cAClE,OAAO,KAEXkV,EAAaxjB,KAAK++B,YAAYzQ,EAAS9tB,GAAI8tB,EAAS9tB,GAAG2E,UAAWqe,EAAY8K,EAAS9tB,GAAG4E,GAAG,EAC7Foe,EAAaxjB,KAAK6uB,YAAYP,EAAS9tB,GAAIgjB,EAAY,CAAA,CAAI,OAErDxd,oBAAkBsoB,EAAS9tB,GAAG6E,KAAK,EAQzCrF,KAAKi/B,WAAW3Q,EAAS9tB,GAAIgjB,CAAU,GANnC9V,GADJ8V,EAAaxjB,KAAK++B,YAAYzQ,EAAS9tB,GAAI8tB,EAAS9tB,GAAG2E,UAAWqe,EAAY8K,EAAS9tB,GAAG4E,GAAG,GACpEnC,cAAc,iBAAiB,EACpD0K,EAAS6V,EAAWvgB,cAAc,gBAAgB,EACtDyK,EAAQmQ,SAAW,CAAA,EACnBlQ,EAAOkQ,SAAW,CAAA,GAKlB,CAAC7X,oBAAkBsoB,EAAS9tB,GAAG6E,KAAK,GAAKipB,EAAS9tB,GAAGmU,WACjDumB,EAAgB1X,EAAWvgB,cAAc,cAAc,EAAEuL,SAAShO,GAAGyC,cAAc,iBAAiB,EACxGjD,KAAKkM,UAAUgvB,CAAa,GAUxC,OAHI1X,GAHAA,EAAAA,GACanX,UAAQmX,EAAY,cAAc,IAGlCnX,UAAQmX,EAAY,oBAAoB,GAI7DlhB,EAAapC,UAAU6+B,YAAc,SAAU75B,EAAMC,EAAWqe,EAAYpe,EAAKT,GAC7E3E,KAAKuM,gBAAgB,CAAA,EAAMiX,EAAYre,EAAW,CAAA,EAAOC,EAAKT,EAAQO,CAAI,EAC1E,IAAIlC,EAAUwgB,EAAWrgB,iBAAiB,oBAAoB,EAC1D+7B,EAAY1b,EAAWvgB,cAAc,cAAc,EAAEuL,SACzD,GAAIxO,KAAKoO,YAAYoC,YAAcxQ,KAAKmM,kBAAoBnM,KAAKoc,cAAe,CAC5Epc,KAAKoc,cAAgB,CAAA,EACrBpc,KAAKmM,iBAAmB,CAAA,EACxB,IAAIkD,EAAQ,EACR4M,EAAiBjc,KAAK+b,WAAa,EACvC,GAAI/b,KAAK4M,wBACL,IAAK,IAAIpM,EAAI,EAAGA,EAAIyb,EAAgBzb,CAAC,GAC7B0+B,EAAU1+B,GAAGqM,UAAUC,SAAS,kBAAkB,IAClDmP,CAAc,GACd5M,CAAK,IAIjB,OAAO6vB,EAAUl/B,KAAK+b,WAAa1M,EAAQ,GAE1C,OAAIrP,KAAKoO,YAAYoC,YAAcxQ,KAAKmM,kBAAoBnM,KAAKgc,aAClEhc,KAAKgc,YAAc,CAAA,EACnBhc,KAAKmM,iBAAmB,CAAA,EACjB+yB,EAAUA,EAAUv+B,OAAS,IAG7BqC,EAAQA,EAAQrC,OAAS,IAGxC2B,EAAapC,UAAU++B,WAAa,SAAU/5B,EAAMse,GACQ,CAAC,EAArDA,EAAW9f,UAAUC,QAAQ,mBAAmB,EAChD3D,KAAKyO,eAAe+U,EAAYte,CAAI,EAGpClF,KAAKyO,eAAe+U,EAAWvgB,cAAc,oBAAoB,EAAGiC,CAAI,GAGhF5C,EAAapC,UAAUmvB,eAAiB,WAGpC,IAFA,IACIvgB,EADS9O,KAAKgD,QACAG,iBAAiB,iHAAiH,EAC3I3C,EAAI,EAAGA,EAAIsO,EAAKnO,OAAQH,CAAC,GAC1BsO,EAAKtO,GAAGqM,UAAUC,SAAS,gBAAgB,EACzB8S,cAAY9Q,EAAKtO,GAAI+S,cAAY,EACvC6b,SAAWpvB,KAAK6wB,WAEvB/hB,EAAKtO,GAAGqM,UAAUC,SAAS,gBAAgB,EAC1BlJ,eAAakL,EAAKtO,GAAI,cAAc,EAC1C4uB,SAAWpvB,KAAK6wB,WAE3B/hB,EAAKtO,GAAGqM,UAAUC,SAAS,kBAAkB,EAC1B8S,cAAY9Q,EAAKtO,GAAIqf,gBAAc,EACzCuP,SAAWpvB,KAAK6wB,WAE7B/hB,EAAKtO,GAAGqM,UAAUC,SAAS,WAAW,EAC1B8S,cAAY9Q,EAAKtO,GAAIgpB,SAAO,EAClC4F,SAAWpvB,KAAK6wB,WAEtB/hB,EAAKtO,GAAGqM,UAAUC,SAAS,cAAc,EAC1B8S,cAAY9Q,EAAKtO,GAAI4qB,YAAU,EACrCgE,SAAWpvB,KAAK6wB,WAEzB/hB,EAAKtO,GAAGqM,UAAUC,SAAS,eAAe,EAC1B8S,cAAY9Q,EAAKtO,GAAIwmB,aAAW,EACtCoI,SAAWpvB,KAAK6wB,WAE1B/hB,EAAKtO,GAAGqM,UAAUC,SAAS,SAAS,GAEpCqyB,CADgBvf,cAAY9Q,EAAKtO,GAAIkrB,aAAW,EACjCxd,UACZlO,KAAK6wB,WACL/hB,EAAKtO,GAAGsD,cAAcyH,MAAMC,QAAU,OAGtCsD,EAAKtO,GAAGsD,cAAcyH,MAAMC,QAAU,WAYtD,IAPA,IAAI4zB,EAAmBp/B,KAAKgD,QAAQG,iBAAiB,gBAAgB,EACjEk8B,EAAoBr/B,KAAKgD,QAAQG,iBAAiB,iBAAiB,EACnEm8B,EAAkBt/B,KAAKgD,QAAQG,iBAAiB,eAAe,EAI/Do8B,GAHA,CAACv/B,KAAK6wB,YAAc7wB,KAAK6O,SAAShC,UAAUC,SAAS,YAAY,GACjE9M,KAAK6O,SAAShC,UAAUsW,OAAO,YAAY,EAEnC,CAACic,EAAkBC,EAAmBC,IACzC9+B,EAAI,EAAGA,EAAI++B,EAAM5+B,OAAQH,CAAC,GAC/B++B,EAAM/+B,GAAGyG,QAAQ,SAAU6H,GACnBA,EAAKjC,UAAUC,SAAS,YAAY,EACpCgC,EAAKjC,UAAUsW,OAAO,YAAY,EAGlCrU,EAAKjC,UAAUkF,IAAI,YAAY,EAEtC,EAEL/R,KAAKw/B,kBAETl9B,EAAapC,UAAUs/B,eAAiB,WACpC,IAAIp5B,EAAQpG,KACRu/B,EAAQv/B,KAAKgD,QAAQG,iBAAiB,uDAAuD,EAC7FiC,EAAM,CAAA,EACVm6B,EAAMt4B,QAAQ,SAAU6H,GAChBA,CAAAA,EAAKjC,UAAUC,SAAS,aAAa,GAAMgC,EAAKjC,UAAUC,SAAS,iBAAiB,GAChFgC,EAAKjC,UAAUC,SAAS,YAAY,EAInCgC,EAAKjC,UAAUC,SAAS,aAAa,GAAKgC,EAAKjC,UAAUC,SAAS,gBAAgB,EACvFgC,EAAKjC,UAAUsW,OAAO,gBAAgB,EAEjCrU,EAAKjC,UAAUC,SAAS,aAAa,GAAKgC,EAAKjC,UAAUC,SAAS,YAAY,EACnFgC,EAAKjC,UAAUsW,OAAO,YAAY,EAE7BrU,EAAKjC,UAAUC,SAAS,iBAAiB,GAC9CgC,EAAKjC,UAAUkF,IAAI,gBAAgB,EACnC3M,EAAM,CAAA,GAED0J,EAAKhB,uBAAuBI,SAAWY,EAAKjC,UAAUC,SAAS,YAAY,GAChFgC,EAAKjC,UAAUsW,OAAO,YAAY,EAC9B/d,EACyB,QAArB0J,EAAK3K,YACL2K,EAAKjC,UAAUkF,IAAI,gBAAgB,EAGnCjD,EAAKjC,UAAUkF,IAAI,eAAe,GAIb,QAArBjD,EAAK3K,aAAyBiC,EAAMyqB,YACpC/hB,EAAKjC,UAAUsW,OAAO,OAAO,EAC7BrU,EAAKjC,UAAUkF,IAAI,gBAAgB,IAG/B3L,EAAMxB,oBACNkK,EAAKjC,UAAUkF,IAAI,OAAO,EAE9BjD,EAAKjC,UAAUsW,OAAO,gBAAgB,GAEjB,OAArBrU,EAAK3K,aAAwBiC,EAAMyqB,WACnC/hB,EAAKjC,UAAUkF,IAAI,mBAAmB,EAGtCjD,EAAKjC,UAAUsW,OAAO,mBAAmB,IAI5CrU,EAAKjC,UAAUC,SAAS,eAAe,GAI5CgC,EAAKjC,UAAUkF,IAAI,YAAY,GA9C/BjD,EAAKjC,UAAUkF,IAAI,YAAY,EAC/B3M,EAAM,CAAA,GA+Cb,GAEL9C,EAAapC,UAAUu/B,eAAiB,SAAUt3B,GAE9C,IADA,IAAIu3B,EAAW,CAAC,OAAQ,OAAQ,MAAO,OAAQ,QAAS,OAAQ,OAAQ,SAAU,SAAU,MAAO,UAAW,SAAU,WAC/Gl/B,EAAI,EAAG8H,EAAMo3B,EAAS/+B,OAAQH,EAAI8H,EAAK9H,CAAC,GAC7C,GAA+C,CAAC,EAA5C2H,EAAMmF,cAAc3J,QAAQ+7B,EAASl/B,EAAE,EACvC,MAAO,CAAA,EAGf,MAAO,CAAA,GAEX8B,EAAapC,UAAUy/B,aAAe,SAAUt6B,EAAOu6B,EAAcC,EAAUC,GAC3E,IAUQC,EAVJ35B,EAAQpG,KACR2E,EAAS,CAAA,EA2Gb,OA1GKk7B,GAAyB,KAAbA,EAKbA,GAAY,IAHZl7B,EAAS,EADTk7B,EAAW,IAMXx6B,EAAMD,MACF26B,EAAYD,EAAY9/B,KAAK2H,KAAKC,YAAY,KAAK,EAAE6tB,cAAgB,IAAM,OAC/EoK,GAAYl7B,EAASo7B,EAAY,IAAM,IAAMA,EAAY,KAEzD16B,EAAMA,OAASA,EAAMA,MAAM1E,SAC3Bk/B,GAAYx6B,EAAMA,MAAM26B,OAAO,SAAUz2B,EAAQrE,EAAMiE,GACnD,IAiBgB82B,EA+CJC,EAWJ/6B,EA3EJg7B,EAAU,GAoFd,OAnFIj7B,EAAKG,OACL86B,EAAU/5B,EAAMu5B,aAAaz6B,EAAM06B,EAAc,GAAIE,CAAS,EAC1D15B,EAAMwG,0BACNvH,EAAMF,UAAYD,EAAKC,aAIvBi7B,GAAcN,EAAY15B,EAAMovB,aAA8BpvB,EAAMyB,WAAvB3C,EAAKuM,UAClDwuB,EAAW,GAQHA,EAPR/6B,EAAKiD,iBAAiBzI,MAC4B,CAAC,EAA/CwF,EAAKuM,SAAS6E,WAAW3S,QAAQ,SAAS,GACtC08B,EAAgBP,EAAY,IAAM15B,EAAMuB,KAAKC,YAAY,KAAK,EAAE6tB,cAAgB,IAAM,QACxE,SAAdvwB,EAAKkC,MAAoBhB,EAAMq5B,eAAev6B,EAAKiD,MAAM,EAAE,EAI3CjD,EAAKiD,MAAM,GAAKk4B,EAAgBn7B,EAAKiD,MAAM,GAHhD,IAAOjD,EAAKiD,MAAM,GAAK,IAAOk4B,EAAgB,IAAOn7B,EAAKiD,MAAM,GAAK,KAOvD,UAAzB,OAAOjD,EAAKiD,MAAM,IAAkC,OAAfjD,EAAKiD,MAE/B,KADMjD,EAAKiD,MACO+B,KAAK,KAAK,EAAI,KAGhC,IAAMhF,EAAKiD,MAAQ,IAKe,CAAC,EAAlDjD,EAAKuM,SAAS6E,WAAW3S,QAAQ,YAAY,EAClCuB,EAAKiD,MAAQ,KAAQjD,EAAKiD,MAAQ,MAAS,IAAMjD,EAAKiD,MAAQ,IAErB,CAAC,EAAhDjD,EAAKuM,SAAS6E,WAAW3S,QAAQ,UAAU,EACrCuB,EAAKiD,MAAQ,MAASjD,EAAKiD,MAAQ,KAAQ,IAAMjD,EAAKiD,MAAQ,IAErB,CAAC,EAAhDjD,EAAKuM,SAAS6E,WAAW3S,QAAQ,UAAU,EACrCuB,EAAKiD,MAAQ,MAASjD,EAAKiD,MAAQ,MAAS,IAAMjD,EAAKiD,MAAQ,IAGxD,WAAdjD,EAAKkC,MAA2C,WAAtB,OAAOlC,EAAKiD,OACtB,OAAfjD,EAAKiD,OAAmBjD,EAAKuM,SAAS6E,WAAW3S,QAAQ,OAAO,EAAI,CAAC,EAC3D,GAAKuB,EAAKiD,MAE4B,CAAC,EAA7CjD,EAAKuM,SAAS6E,WAAW3S,QAAQ,OAAO,EAClC,KAGA,IAAOuB,EAAKiD,MAAQ,IAIvCm4B,EAAYp7B,EAAKa,MACjB65B,EACAU,EAAY,IAAMA,EAAY,IAEA,CAAC,EAA1BA,EAAU38B,QAAQ,GAAG,IAC1B28B,EAAY,IAAMA,EAAY,KAG9BH,EAD2C,CAAC,EAA5Cj7B,EAAKuM,SAAS6E,WAAW3S,QAAQ,MAAM,EAC7B28B,EAAY,IAAMF,GAGxBF,EAAWE,EACO,YAAlBl7B,EAAKuM,SACLyuB,EAAW,IAEY,eAAlBh7B,EAAKuM,WACVyuB,EAAW,MAELI,EAAY,IAAMJ,EAAW,IAAMD,IAGjD92B,IAAM9D,EAAMA,MAAM1E,OAAS,IAGvBwE,EADc,MADdA,EAAYE,EAAMF,YACGD,GAA2B,KAAnBA,EAAKC,WAAoBD,EAAKwR,QAAUxR,EAAKwR,OAAO6pB,SACrEr7B,EAAKC,UAEjBA,KAEAg7B,GAAW,KADXh7B,GAAY26B,EAAY15B,EAAMuB,KAAKC,YAAYzC,EAAUswB,aAAa,EAAkBtwB,GAAhBswB,eAC3C,KAG9BlsB,EAAS42B,GACjB,EAAE,GAEJx7B,IACDk7B,GAAY,KAEZx6B,EAAMD,MACNy6B,GAAY,KAETA,GASXv9B,EAAapC,UAAUsgC,gBAAkB,SAAUC,EAAWX,GAC1DW,EAAYA,EAAUzzB,QAAQ,KAAM,EAAE,EAClC0zB,EAAY1gC,KAAK2gC,gBAAgBF,EAAWX,CAAS,EACzD9/B,KAAK2wB,SAAS,CAAExrB,UAAWu7B,EAAUv7B,UAAWC,IAAKs7B,EAAUt7B,IAAKC,MAAOq7B,EAAUr7B,MAAO,GAShG/C,EAAapC,UAAUygC,gBAAkB,SAAUF,EAAWX,GAC1D9/B,KAAKg0B,OAAS,GACdh0B,KAAK4gC,UAAUH,EAAWX,CAAS,EACnC9/B,KAAKiF,cAAc,CAAEC,KAAM,CAAEC,UAAW,MAAOC,IAAK,CAAA,EAAOC,MAAO,KAAQ,CAAA,CAAI,EAC1EH,EAAOlF,KAAK6gC,cAAc7gC,KAAKg0B,OAAQh0B,KAAKkF,KAAM,CAAC,GAAI46B,CAAS,EACpE,OAAI9/B,KAAK4E,mBACE,CAAEO,UAAWD,EAAKC,UAAWC,IAAKF,EAAKE,IAAKC,MAAOH,EAAKG,OAGxD,CAAEF,UAAWD,EAAKC,UAAWE,MAAOH,EAAKG,QAWxD/C,EAAapC,UAAUuL,gBAAkB,SAAUvG,EAAM47B,EAAahB,GAMlE,OALK56B,EAAAA,GACMlF,KAAK4N,gBAEhB1I,EAAOlF,KAAKge,kBAAkB9Y,EAAM,CAAA,CAAK,EACzBlF,KAAK2/B,aAAa3/B,KAAK4N,cAAc1I,CAAI,EAAG47B,EAAa,KAAMhB,CAAS,EAAE9yB,QAAQ,KAAM,GAAI,GAShH1K,EAAapC,UAAU6gC,oBAAsB,SAAU77B,GAEnD,IAIQ2T,EAJR,OAAI7Y,KAAKghC,aAAaC,cAActgC,QAC3BuE,EAAAA,GACMlF,KAAK4N,gBAGhB5N,KAAKkhC,OAAO,gBAAiB,CAAEC,KAAM,kBAAmBC,iBAAkB,EADtEvoB,EAAM,CAAEwoB,IAAK,OACgEl5B,MAAO,CAAEjD,KAAMA,EAAM2T,IAAKA,GAAO,EAC3GA,EAAS,MAGhB7U,QAAQC,KAAK,6IAA6I,EAEvJ,OAQX3B,EAAapC,UAAUohC,oBAAsB,SAAUC,GAEnD,IAMYb,EANR1gC,KAAKghC,aAAaC,cAActgC,QAEhCX,KAAKkhC,OAAO,gBAAiB,CAAEC,KAAM,uBAAwBC,iBAAkB,EAD3EvoB,EAAM,CAAEwoB,IAAK,OACqEl5B,MAAO,CAAEk5B,IAAKE,EAAU1oB,IAAKA,GAAO,GACtHwoB,EAAMxoB,EAAS,OAEfwoB,EAAMA,EAAIr0B,QAAQ,KAAM,EAAE,EACtB0zB,EAAY1gC,KAAK2gC,gBAAgBU,CAAG,EACxCrhC,KAAK2wB,SAAS,CAAExrB,UAAWu7B,EAAUv7B,UAAWC,IAAKs7B,EAAUt7B,IAAKC,MAAOq7B,EAAUr7B,MAAO,IAIhGrB,QAAQC,KAAK,6IAA6I,GASlK3B,EAAapC,UAAUshC,yBAA2B,SAAUt8B,GAExD,IAIQ2T,EAJR,OAAI7Y,KAAKghC,aAAaC,cAActgC,QAC3BuE,EAAAA,GACMlF,KAAK4N,gBAGhB5N,KAAKkhC,OAAO,gBAAiB,CAAEC,KAAM,uBAAwBC,iBAAkB,EAD3EvoB,EAAM,CAAEwoB,IAAK,OACqEl5B,MAAO,CAAEjD,KAAMA,EAAM2T,IAAKA,GAAO,EAChHA,EAAS,MAGhB7U,QAAQC,KAAK,6IAA6I,EAEvJ,OAQX3B,EAAapC,UAAUuhC,yBAA2B,SAAUF,GAExD,IAMYb,EANR1gC,KAAKghC,aAAaC,cAActgC,QAEhCX,KAAKkhC,OAAO,gBAAiB,CAAEC,KAAM,4BAA6BC,iBAAkB,EADhFvoB,EAAM,CAAEwoB,IAAK,OAC0El5B,MAAO,CAAEk5B,IAAKE,EAAU1oB,IAAKA,GAAO,GAC3HwoB,EAAMxoB,EAAS,OAEfwoB,EAAMA,EAAIr0B,QAAQ,KAAM,EAAE,EACtB0zB,EAAY1gC,KAAK2gC,gBAAgBU,CAAG,EACxCrhC,KAAK2wB,SAAS,CAAExrB,UAAWu7B,EAAUv7B,UAAWC,IAAKs7B,EAAUt7B,IAAKC,MAAOq7B,EAAUr7B,MAAO,IAIhGrB,QAAQC,KAAK,6IAA6I,GAUlK3B,EAAapC,UAAUwhC,cAAgB,SAAUC,EAAYC,GAErD5hC,KAAKghC,aAAaC,cAActgC,QAChCX,KAAKkF,KAAO,CAAEC,UAAW,MAAOC,IAAK,CAAA,EAAOC,MAAO,IACnDrF,KAAKkhC,OAAO,gBAAiB,CAAEC,KAAM,cAAeC,iBAAkB,CAAA,EAAOj5B,MAAO,CAAEw5B,WAAYhU,KAAKpmB,MAAMo6B,CAAU,EAAGz8B,KAAMlF,KAAKkF,KAAM08B,YAAaA,GAAe,GAGvK59B,QAAQC,KAAK,6IAA6I,GASlK3B,EAAapC,UAAU2hC,cAAgB,SAAU38B,GAE7C,IAIQ2T,EAJR,OAAI7Y,KAAKghC,aAAaC,cAActgC,QAC3BuE,EAAAA,GACMlF,KAAK4N,gBAGhB5N,KAAKkhC,OAAO,gBAAiB,CAAEC,KAAM,oBAAqBC,iBAAkB,EADxEvoB,EAAM,CAAE8oB,WAAY,OAC2Dx5B,MAAO,CAAEjD,KAAMA,EAAMy8B,WAAY,GAAI9oB,IAAKA,GAAO,EAC7HA,EAAgB,aAGvB7U,QAAQC,KAAK,6IAA6I,EAEvJ,KAUX3B,EAAapC,UAAUiP,UAAY,SAAUnB,EAAQjB,EAASsC,GAC1D,IAAItB,EAAU/N,KAAK+N,QAAQC,EAAOhB,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,CAAC,EAChE88B,EAAc9hC,KAAKoO,YAAYe,UACnCpC,EAAUA,EAAQC,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACnDhF,KAAKoP,UAAYC,EACjBrP,KAAK+L,kBAAoB,CAAA,EACzB/L,KAAKoO,YAAYe,UAAY,CAAA,EAC7BnP,KAAK2uB,SAAS,CAAC,CACPpmB,MAASwF,EAAQxF,MAAOxC,MAASgI,EAAQhI,MAAOqB,KAAQ2G,EAAQ3G,KAAMqK,SAAY1D,EAAQ0D,SAC1FtJ,MAAS4F,EAAQ5F,MAAOhD,UAAa4I,EAAQ5I,YAC7C4H,CAAO,EACf/M,KAAKoP,UAAY,CAAC,EAClBpP,KAAK+L,kBAAoB,CAAA,EACzB/L,KAAKoO,YAAYe,UAAY2yB,GAWjCx/B,EAAapC,UAAUsQ,WAAa,SAAUzD,EAASg1B,EAAe1yB,GAClE0yB,EAAgBA,EAAc/0B,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EAC/D,IAAIwF,EAAQxK,KAAKiN,SAAS80B,CAAa,EACnCC,EAAehiC,KAAKoO,YAAYoC,WACpCzD,EAAUA,EAAQC,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACnDhF,KAAK+b,WAAa1M,EAClBrP,KAAKmM,iBAAmB,CAAA,EACxBnM,KAAKoO,YAAYoC,WAAa,CAAA,EAC9BxQ,KAAKuc,UAAU,CAAC,CAAEpX,UAAaqF,EAAMrF,UAAWC,IAAOoF,EAAMpF,IAAKC,MAASmF,EAAMnF,QAAU0H,CAAO,EAClG/M,KAAK+b,WAAa,CAAC,EACnB/b,KAAKmM,iBAAmB,CAAA,EACxBnM,KAAKoO,YAAYoC,WAAawxB,GASlC1/B,EAAapC,UAAUqQ,SAAW,SAAUvC,GACpCA,EAAOrK,QAAQ3D,KAAKgD,QAAQgC,EAAE,EAAI,IAClCgJ,EAAShO,KAAKgD,QAAQgC,GAAK,IAAMgJ,GAEjChN,EAASoD,SAAS+G,eAAe6C,CAAM,EAAE7K,iBAAiB,kBAAkB,EAAE,GAClFnD,KAAKiM,SAASjL,CAAM,GAQxBsB,EAAapC,UAAUoQ,UAAY,SAAUvD,GACrCA,EAAQpJ,QAAQ3D,KAAKgD,QAAQgC,EAAE,EAAI,IACnC+H,EAAU/M,KAAKgD,QAAQgC,GAAK,IAAM+H,GAElC/L,EAASoD,SAAS+G,eAAe4B,CAAO,EAAE5J,iBAAiB,iBAAiB,EAAE,GAClFnD,KAAKkM,UAAUlL,CAAM,GAEzBsB,EAAapC,UAAU0gC,UAAY,SAAUH,EAAWX,GAGpD,IAFA,IACImC,EADAC,EAAK,EAGLD,EAAMxB,EAAUvnB,MAAMgpB,CAAE,EACxBA,GAAMliC,KAAKmiC,gBAAgBF,EAAKnC,CAAS,EAC5B,KAARmC,IACT,OAAOjiC,KAAKg0B,QAEhB1xB,EAAapC,UAAUiiC,gBAAkB,SAAU1B,EAAWX,GAuB1D,IAtBA,IAqBIsC,EArBAv6B,EAAY,CAAC,IAAK,KAAM,KAAM,KAAM,IAAK,KAGzCw6B,EADAvC,EACa,CAAC9/B,KAAK2H,KAAKC,YAAY,KAAK,EAAE6tB,cAAez1B,KAAK2H,KAAKC,YAAY,IAAI,EAAE6tB,cAAez1B,KAAK2H,KAAKC,YAAY,KAAK,EAAE6tB,eAGrH,CAAC,MAAO,KAAM,OAI3B6M,EADAxC,EACQ,CAAC9/B,KAAK2H,KAAKC,YAAY,IAAI,EAAE6tB,cAAez1B,KAAK2H,KAAKC,YAAY,OAAO,EAAE6tB,cAC/Ez1B,KAAK2H,KAAKC,YAAY,MAAM,EAAE6tB,cAAez1B,KAAK2H,KAAKC,YAAY,SAAS,EAAE6tB,cAC9Ez1B,KAAK2H,KAAKC,YAAY,SAAS,EAAE6tB,cAAez1B,KAAK2H,KAAKC,YAAY,YAAY,EAAE6tB,cACpFz1B,KAAK2H,KAAKC,YAAY,QAAQ,EAAE6tB,cAAez1B,KAAK2H,KAAKC,YAAY,WAAW,EAAE6tB,cAClFz1B,KAAK2H,KAAKC,YAAY,SAAS,EAAE6tB,cAAez1B,KAAK2H,KAAKC,YAAY,YAAY,EAAE6tB,eAGhF,CAAC,KAAM,SAAU,OAAQ,WAAY,UAAW,cAAe,UAAW,cAAe,WAAY,gBAKxGj1B,EAAI,EAAGwY,EAAOnR,EAAUlH,OAAQH,EAAIwY,EAAMxY,CAAC,GAAI,CAGpD,IAFA+hC,EAAW,QAAQC,KAAK36B,EAAUrH,EAAE,EAAI,MAAQ,GAIhD,GADQ,IADKiiC,OACM,KAAO56B,EAAUrH,GAAK,IAAM+hC,EAAU,IAAI,EACnDG,KAAKjC,CAAS,EAEpB,OADAzgC,KAAKg0B,OAAOruB,KAAK,CAAC,YAAakC,EAAUrH,GAAG8M,cAAc,EACnDzF,EAAUrH,GAAGG,OAG5B,IAAIgiC,EAAc3iC,KAAKg0B,OAAOh0B,KAAKg0B,OAAOrzB,OAAS,GACnD,GAAI,CAACgiC,GAAkD,YAAnBA,EAAY,GAC5C,IAASniC,EAAI,EAAGwY,EAAOqpB,EAAW1hC,OAAQH,EAAIwY,EAAMxY,CAAC,GAKjD,GAJA+hC,EAAW,QAAQC,KAAKH,EAAW7hC,EAAE,EAAI,MAAQ,GAGzC,IADKiiC,OACM,KAAOJ,EAAW7hC,GAAK,IAAM+hC,EAAU,IAAI,EACpDG,KAAKjC,CAAS,EAEpB,OADAzgC,KAAKg0B,OAAOruB,KAAK,CAAC,aAAc08B,EAAW7hC,GAAG8M,cAAc,EACrD+0B,EAAW7hC,GAAGG,OAIjC,IAASH,EAAI,EAAGwY,EAAOspB,EAAM3hC,OAAQH,EAAIwY,EAAMxY,CAAC,GAK5C,GAJA+hC,EAAW,QAAQC,KAAKF,EAAM9hC,EAAE,EAAI,MAAQ,GAGpC,IADKiiC,OACM,KAAOH,EAAM9hC,GAAK,IAAM+hC,EAAU,IAAI,EAC/CG,KAAKjC,CAAS,EAEpB,OADAzgC,KAAKg0B,OAAOruB,KAAK,CAAC,eAAgB28B,EAAM9hC,GAAG8M,cAAc,EAClDg1B,EAAM9hC,GAAGG,OAGxB,GAAI,MAAM+hC,KAAKjC,CAAS,EAEpB,OADAzgC,KAAKg0B,OAAOruB,KAAK,CAAC,OAAQ,IAAI,EACvB,EAEX,GAAI,MAAM+8B,KAAKjC,CAAS,EAEpB,OADAzgC,KAAKg0B,OAAOruB,KAAK,CAAC,QAAS,IAAI,EACxB,EAEX,GAAI,gBAAgB+8B,KAAKjC,CAAS,EAG9B,OAFA2B,EAAa,gBAAgBM,KAAKjC,CAAS,EAAE,GAC7CzgC,KAAKg0B,OAAOruB,KAAK,CAAC,SAAUy8B,EAAW,EAChCA,EAAWzhC,OAEtB,GAAI,QAAQ+hC,KAAKjC,CAAS,EAGtB,OAFA2B,EAAa,QAAQM,KAAKjC,CAAS,EAAE,GACrCzgC,KAAKg0B,OAAOruB,KAAK,CAAC,SAAU,KAAK,EAC1By8B,EAAWzhC,OAEtB,GAAI,kFAAkF+hC,KAAKjC,CAAS,EAGhG,OAFA2B,EAAa,kFAAkFM,KAAKjC,CAAS,EAAE,GAC/GzgC,KAAKg0B,OAAOruB,KAAK,CAAC,UAAWy8B,EAAW,EACjCA,EAAWzhC,OAEtB,GAAIX,KAAK4iC,gBAAkB,oFAAoFF,KAAKjC,CAAS,EAGzH,OAFA2B,EAAa,oFAAoFM,KAAKjC,CAAS,EAAE,GACjHzgC,KAAKg0B,OAAOruB,KAAK,CAAC,UAAWy8B,EAAW,EACjCA,EAAWzhC,OAAS,EAE/B,GAAIX,KAAK6iC,mBAAmBpC,EAAWX,CAAS,EAAG,CAE3CgD,EAAa,qBAAqBJ,KAAKjC,CAAS,EACpD,GAAIqC,EAGA,OAFAV,EAAaU,EAAW,GACxB9iC,KAAKg0B,OAAOruB,KAAK,CAAC,UAAWy8B,EAAW,EACjCA,EAAWzhC,OAGtBoiC,EAAe/iC,KAAKgjC,qBAAqBvC,CAAS,EACtD,GAAqB,KAAjBsC,EAAqB,CAErB,GAA0C,OAD1CX,EAAaW,GACEX,EAAWzhC,OAAS,GAE/B,IADA,IAAIsiC,EAAW,CAAA,EACN95B,EAAIi5B,EAAWzhC,OAAQwI,EAAIs3B,EAAU9/B,SAC1CyhC,GAAc3B,EAAUt3B,GACxB,EACI85B,EADiB,MAAjBxC,EAAUt3B,IAGV85B,IAA6B,MAAjBxC,EAAUt3B,IALwBA,CAAC,SAUlDs3B,EAAU2B,EAAWzhC,SAA6C,MAAjC8/B,EAAU2B,EAAWzhC,SAC3D,CAACX,KAAKkjC,eAAezC,EAAW2B,CAAU,IAC1CA,EAAapiC,KAAKmjC,yBAAyB1C,EAAW2B,CAAU,GAGpE,OADApiC,KAAKg0B,OAAOruB,KAAK,CAAC,SAAUy8B,EAAW,EAChCA,EAAWzhC,OAElByiC,EAAepjC,KAAKqjC,qBAAqB5C,CAAS,EACtD,MAAqB,KAAjB2C,GAEApjC,KAAKg0B,OAAOruB,KAAK,CAAC,eADlBy8B,EAAagB,EACgC,EACtChB,EAAWzhC,QAElB,aAAa+hC,KAAKjC,CAAS,GAC3B2B,EAAa,aAAaM,KAAKjC,CAAS,EAAE,GAC1CzgC,KAAKg0B,OAAOruB,KAAK,CAAC,SAAUy8B,EAAW,EAChCA,EAAWzhC,QAElB,eAAe+hC,KAAKjC,CAAS,GAC7B2B,EAAa,eAAeM,KAAKjC,CAAS,EAAE,GAC5CzgC,KAAKg0B,OAAOruB,KAAK,CAAC,SAAUy8B,EAAW,EAChCA,EAAWzhC,QAEf,GAEX2B,EAAapC,UAAUmjC,qBAAuB,SAAU5C,GACpD,IAAI6C,EAAQ7C,EAAU98B,QAAQ,GAAG,EACjC,GAAc,IAAV2/B,EAAa,CACb,IAAIC,EAAM9C,EAAU98B,QAAQ,IAAK2/B,EAAQ,CAAC,EAC1C,GAAY,CAAC,IAATC,EACA,OAAO9C,EAAUvC,UAAUoF,EAAOC,EAAM,CAAC,EAGjD,MAAO,IAEXjhC,EAAapC,UAAUgjC,eAAiB,SAAUzC,EAAW2B,GACzD,MAAsE,QAAlE3B,EAAUvnB,MAAMkpB,EAAWzhC,OAAS,EAAGyhC,EAAWzhC,OAAS,CAAC,GACM,OAAlE8/B,EAAUvnB,MAAMkpB,EAAWzhC,OAAS,EAAGyhC,EAAWzhC,OAAS,CAAC,GAKpE2B,EAAapC,UAAU8iC,qBAAuB,SAAUvC,EAAW+C,GAC/D,IAAIF,EAAQ7C,EAAU98B,QAAQ,GAAI,EAClC,GAAe,CAAC,IAAX2/B,GAAgBE,GAAyB,IAAVF,GAAe,CAACE,EAAY,CACxDD,EAAM9C,EAAU98B,QAAQ,IAAM2/B,EAAQ,CAAC,EAC3C,GAAY,CAAC,IAATC,EACA,OAAO9C,EAAUvC,UAAUoF,EAAOC,EAAM,CAAC,EAGjD,MAAO,IAEXjhC,EAAapC,UAAUijC,yBAA2B,SAAU1C,EAAW2B,GACnE,IAMYqB,EAKZ,OAXIhD,EAAU2B,EAAWzhC,SAA6C,MAAjC8/B,EAAU2B,EAAWzhC,SACtD,CAACX,KAAKkjC,eAAezC,EAAW2B,CAAU,GAAsC,MAAjC3B,EAAU2B,EAAWzhC,UAChE+iC,EAAiBtB,EAAWlE,UAAU,EAAGkE,EAAWzhC,OAAS,CAAC,EAC9DgjC,EAAUlD,EAAUzzB,QAAQ02B,EAAgB,EAAE,EAE7B,MADjBX,EAAe/iC,KAAKgjC,qBAAqBW,EAAS,CAAA,CAAI,MAElDF,EAAcV,EAAa7E,UAAU,EAAG6E,EAAapiC,MAAM,EAE/DyhC,EAAapiC,KAAKmjC,yBAAyB1C,EAD3C2B,GAAcqB,CACkD,GAGjErB,GAEX9/B,EAAapC,UAAU0iC,aAAe,WAClC,IAKQgB,EACAC,EANJC,EAAa9jC,KAAKg0B,OAAOh0B,KAAKg0B,OAAOrzB,OAAS,GAClD,MAAA,EAAKmjC,IAIGF,EAAY5jC,KAAKg0B,OAAOh0B,KAAKg0B,OAAOrzB,OAAS,GAC7CkjC,EAAgB7jC,KAAKg0B,OAAOh0B,KAAKg0B,OAAOrzB,OAAS,GAC/B,SAAlBmjC,EAAW,IAAkBF,CAAAA,GAA8B,eAAjBA,EAAU,MAIpDE,CAAAA,EAAkB,eAAlBA,EAAW,IAAwBD,GAAiBA,EAAc,GAAGlgC,QADnD,SAC0E,EAAI,IAM5GrB,EAAapC,UAAU2iC,mBAAqB,SAAUpC,EAAWX,GAC7D,IAAIgE,EAAa9jC,KAAKg0B,OAAOh0B,KAAKg0B,OAAOrzB,OAAS,GAClD,GAAKmjC,CAAAA,EACD,MAAO,CAAA,EAGP,GAAI,uBAAuBpB,KAAKjC,CAAS,EAAG,CACxC,IAAImD,EAAY5jC,KAAKg0B,OAAOh0B,KAAKg0B,OAAOrzB,OAAS,GAC7CkjC,EAAgB7jC,KAAKg0B,OAAOh0B,KAAKg0B,OAAOrzB,OAAS,GACrD,GAAsB,SAAlBmjC,EAAW,IAAkBF,GAA8B,eAAjBA,EAAU,GACpD,MAAO,CAAA,EAEPG,EAAkBjE,EAAY9/B,KAAK2H,KAAKC,YAAY,SAAS,EAAE0F,cAAgB,UACnF,GAAsB,eAAlBw2B,EAAW,IAAwBD,GAAiBA,EAAc,GAAGlgC,QAAQogC,CAAe,EAAI,EAChG,MAAO,CAAA,EAInB,MAAO,CAAA,GAEXzhC,EAAapC,UAAU8jC,YAAc,SAAU77B,EAAOsJ,EAAUquB,GAM5D,GAAIA,EAAW,CAEX,IADA,IAAImE,EAAiB1kC,OAAOkH,KAAKzG,KAAKw1B,YAAY,EACzCh1B,EAAI,EAAGA,EAAIyjC,EAAetjC,OAAQH,CAAC,GACxC,GAAIR,KAAKw1B,aAAayO,EAAezjC,MAAQiR,EAASgkB,cAClD,OAAIttB,GAAgC,IAAvBA,EAAMxE,QAAQ,GAAG,GAAuC,MAA5BwE,EAAMA,EAAMxH,OAAS,GACvB,aAA3B8Q,EAASgkB,cAAgC,cAAgB,WAE5DttB,GAAgC,IAAvBA,EAAMxE,QAAQ,GAAG,GAAWwE,EAAMxE,QAAQ,GAAG,IAAMwE,EAAMxH,OAAS,EAC7C,aAA3B8Q,EAASgkB,cAAgC,gBAAkB,aAE9DttB,GAAgC,IAAvBA,EAAMxE,QAAQ,GAAG,GAAWwE,EAAMxE,QAAQ,GAAG,IAAMwE,EAAMxH,OAAS,EAC7C,aAA3B8Q,EAASgkB,cAAgC,cAAgB,WAE9DwO,EAAezjC,GAG9B,OAAO,KAEX,GAAI2H,EAAO,CACP,GAA2B,IAAvBA,EAAMxE,QAAQ,GAAG,GAAuC,MAA5BwE,EAAMA,EAAMxH,OAAS,GACjD,MAAqB,aAAb8Q,EAA2B,cAAgB,WAElD,GAA2B,IAAvBtJ,EAAMxE,QAAQ,GAAG,GAAWwE,EAAMxE,QAAQ,GAAG,IAAMwE,EAAMxH,OAAS,EACvE,MAAqB,aAAb8Q,EAA2B,gBAAkB,aAEpD,GAA2B,IAAvBtJ,EAAMxE,QAAQ,GAAG,GAAWwE,EAAMxE,QAAQ,GAAG,IAAMwE,EAAMxH,OAAS,EACvE,MAAqB,aAAb8Q,EAA2B,cAAgB,eAGtD,CACD,GAAiB,aAAbA,EACA,MAAO,WAEN,GAAiB,SAAbA,EACL,MAAO,QAGf,MA1CgB,CACZyyB,IAAK,QAASC,KAAM,WAAYC,IAAK,WAAYC,IAAK,cAAeC,KAAM,kBAC3EC,KAAM,qBAAsB7P,GAAM,KAAM8P,SAAU,QAASzP,QAAW,UAAW0P,cAAe,aAChGC,WAAY,UAAWC,UAAW,SAAUC,cAAe,YAAaC,eAAgB,cAuC3E,GAAKpzB,IAE1BnP,EAAapC,UAAU4kC,kBAAoB,SAAUz/B,GAC7C4jB,EAAajpB,KAAKuR,UAAUlM,EAAMU,KAAK,EAC3C,OAAKC,oBAAkBijB,CAAU,EAG1B,KAFIA,EAAW7hB,MAI1B9E,EAAapC,UAAUwU,mBAAqB,SAAU3O,GAClD,IAAIwC,EAAQ,GACRw8B,EAAI,EACR,GAAuB,KAAnB/kC,KAAKiG,UAaL,OADgBjG,KAAKuR,UAAUxL,CAAK,EAAEwC,MAVtC,IADA,IAAI2c,EAAYnf,EAAMG,MAAMlG,KAAKiG,SAAS,EACjCzF,EAAI,EAAGA,EAAI0kB,EAAUvkB,OAAQH,CAAC,GACnC+H,GAASvI,KAAKglC,kBAAkB9f,EAAW1kB,EAAI,CAAC,EAChDukC,EAAAA,EACQ7f,EAAUvkB,SACd4H,GAASvI,KAAKiG,WAGtB,OAAOsC,GAOfjG,EAAapC,UAAU8kC,kBAAoB,SAAUj/B,EAAOk/B,GAGxD,IAFA,IAAI3E,EAAY,GACZn3B,EAAI,EACCoc,EAAI,EAAGA,EAAI0f,EAAU1f,CAAC,GAC3B+a,GAAav6B,EAAMwf,GACnBpc,EAAAA,EACQ87B,IACJ3E,GAAatgC,KAAKiG,WAG1B,OAAOjG,KAAKuR,UAAU+uB,CAAS,EAAItgC,KAAKuR,UAAU+uB,CAAS,EAAE/3B,MAAQ,IAEzEjG,EAAapC,UAAU2gC,cAAgB,SAAU7M,EAAQ3uB,EAAON,EAAW+6B,GAevE,IAdA,IAAI32B,EACAqP,EAKA+M,EACA8E,EACA0a,EACAG,EACAC,EACA1zB,EAPA2zB,EAAS,GACTC,EAAS,GAOTC,EAAe,CAAA,EACfC,EAAc,CAAA,EACT/kC,EAAI,EAAGwY,EAAOgb,EAAOrzB,OAAQH,EAAIwY,EAAMxY,CAAC,GAC7C,GAAqB,YAAjBwzB,EAAOxzB,GAAG,GAAkB,CAC5B,IAAI0G,EAASlH,KAAKuR,UAAUyiB,EAAOxzB,GAAG,EAAE,EACxC0E,EAAO,CAAEqD,MAAQrB,GAAUA,EAAOqB,MAASrB,EAAOqB,MAAQyrB,EAAOxzB,GAAG,GAAIuF,MAAOiuB,EAAOxzB,GAAG,IACzF,GAAyB,iBAArBwzB,EAAOxzB,EAAI,GAAG,GAAuB,CA6BrC,IA5BuC,CAAC,EAApCwzB,EAAOxzB,EAAI,GAAG,GAAGmD,QAAQ,MAAM,GAA8C,CAAC,EAArCqwB,EAAOxzB,EAAI,GAAG,GAAGmD,QAAQ,OAAO,GACzEuB,EAAKuM,SAAWzR,KAAKgkC,YAAY,IAAKhQ,EAAOxzB,EAAI,GAAG,GAAIs/B,CAAS,EACjE56B,EAAKiD,MAAQ,KACbjD,EAAKkC,KAAOpH,KAAK8kC,kBAAkB5/B,CAAI,IAI/B4oB,EADc,IAAlBkG,EAAOrzB,QAAiC,WAAjBqzB,EAAO,GAAG,IAAmD,CAAC,IAAhCA,EAAO,GAAG,GAAIrwB,QAAQ,GAAG,EACnEqwB,EAAOxzB,EAAI,GAAG,IAAKwzB,EAAOxzB,EAAI,GAAG,GAAGwM,QAAQ,KAAM,EAAE,EAIpDgnB,EAAOxzB,EAAI,GAAG,IAAKwzB,EAAOxzB,EAAI,GAAG,GAAGwM,QAAQ,KAAM,EAAE,EAC/D9H,EAAKuM,SAAWzR,KAAKgkC,YAAYlW,EAAMkG,EAAOxzB,EAAI,GAAG,GAAIs/B,CAAS,GAG1EruB,EAAWuiB,EAAOxzB,EAAI,GAAG,GAGzBgY,EAAOQ,EACH8mB,GAA+B,aAAlB56B,EAAKuM,UAA6C,eAAlBvM,EAAKuM,UAA+C,aAAlBvM,EAAKuM,SACpFA,EAAW,OAENquB,GAA+B,gBAAlB56B,EAAKuM,UAAgD,kBAAlBvM,EAAKuM,UAAkD,gBAAlBvM,EAAKuM,SAC/FA,EAAW,WAENquB,IACLruB,EAAWvM,EAAKuM,UAEftI,EAXLA,EADA3I,EAAAA,EACQ,EAWQ2I,EAAIqP,EAAMrP,CAAC,GACvB,GAAIsI,EAAS9N,QAAQ,SAAS,EAAI,GAAsB,SAAjBqwB,EAAO7qB,GAAG,GAC7Cm8B,EAAe,CAAA,MAEd,CAAA,GAAqB,UAAjBtR,EAAO7qB,GAAG,IAAkBm8B,EAAc,CAC/C9kC,EAAI2I,EACJm8B,EAAe,CAAA,EACf,MAGA,GAA+B,CAAC,EAA5B7zB,EAAS9N,QAAQ,MAAM,GAAsC,CAAC,EAA7B8N,EAAS9N,QAAQ,OAAO,EACzD,MAEJ,GAA+B,CAAC,EAA5B8N,EAAS9N,QAAQ,MAAM,GAA2B,WAAjBqwB,EAAO7qB,GAAG,GAAiB,CAC5D,IAAI6jB,EAAMgH,EAAO7qB,GAAG,GAIpB6jB,GAFIA,EADAgH,EAAO7qB,GAAG,IAA0B,MAApB6qB,EAAO7qB,GAAG,GAAG,GACvB6qB,EAAO7qB,GAAG,GAAG+0B,UAAU,EAAGlK,EAAO7qB,GAAG,GAAGxI,OAAS,CAAC,EAErDqsB,GAAMA,EAAIhgB,QAAQ,KAAM,EAAE,EAAIgnB,EAAO7qB,GAAG,GAC9CjE,EAAKiD,MAAQ6kB,EACb9nB,EAAKkC,KAAO,aAEX,CAAA,GAAkC,CAAC,EAA/BqK,EAAS9N,QAAQ,SAAS,IACV,YAAjBqwB,EAAO7qB,GAAG,IAAqC,SAAjB6qB,EAAO7qB,GAAG,IACxC,MAciB,WAAjB6qB,EAAO7qB,GAAG,GACVi8B,EAAOz/B,KAAK5D,OAAOiyB,EAAO7qB,GAAG,EAAE,CAAC,EAEV,WAAjB6qB,EAAO7qB,GAAG,KACX6jB,EAAMgH,EAAO7qB,GAAG,GAChB6qB,EAAO7qB,GAAG,IAA0B,MAApB6qB,EAAO7qB,GAAG,GAAG,KAC7B6jB,EAAMgH,EAAO7qB,GAAG,GAAG+0B,UAAU,EAAGlK,EAAO7qB,GAAG,GAAGxI,OAAS,CAAC,GAE3D0kC,EAAO1/B,KAAKqnB,CAAG,GAGvB9nB,EAAKkC,KAAOpH,KAAK8kC,kBAAkB5/B,CAAI,EAG3CuM,EAAS9N,QAAQ,MAAM,EAAI,IACF,WAArBqwB,EAAO7qB,EAAI,GAAG,IACdjE,EAAKiD,MAAQi9B,EACblgC,EAAKkC,KAAO,UAEc,WAArB4sB,EAAO7qB,EAAI,GAAG,IACnBjE,EAAKiD,MAAQk9B,EACbngC,EAAKkC,KAAO,UAEuB,CAAC,EAA/BqK,EAAS9N,QAAQ,SAAS,GAA+B,eAArBqwB,EAAO7qB,EAAI,GAAG,KACjC,IAAlBk8B,EAAO1kC,QACPuE,EAAKiD,MAAQk9B,EACbngC,EAAKkC,KAAO,WAGZlC,EAAKiD,MAAQi9B,EACblgC,EAAKkC,KAAO,WAGpBg+B,EAAS,GACTC,EAAS,GACTngC,EAAKkC,KAAOpH,KAAK8kC,kBAAkB5/B,CAAI,GAEvClF,KAAK4M,yBAAgD,eAArBonB,EAAOxzB,EAAI,GAAG,KAC9C0E,EAAKC,UAAY6uB,EAAOxzB,EAAI,GAAG,QAGT,cAArBwzB,EAAOxzB,EAAI,GAAG,KACnB0E,EAAKuM,SAAWzR,KAAKgkC,YAAYhQ,EAAOxzB,EAAI,GAAG,GAAIwzB,EAAOxzB,EAAI,GAAG,GAAIs/B,CAAS,EACxD,UAAlB56B,EAAKuM,UAA6C,WAArBuiB,EAAOxzB,EAAI,GAAG,IAAwC,OAArBwzB,EAAOxzB,EAAI,GAAG,GAC5E0E,EAAKuM,SAAW,UAEO,aAAlBvM,EAAKuM,UAAgD,WAArBuiB,EAAOxzB,EAAI,GAAG,IAAwC,OAArBwzB,EAAOxzB,EAAI,GAAG,KACpF0E,EAAKuM,SAAW,cAEK,WAArBuiB,EAAOxzB,EAAI,GAAG,IACd0E,EAAKkC,KAAO,SACZlC,EAAKiD,MAAQpG,OAAOiyB,EAAOxzB,EAAI,GAAG,EAAE,IAGpC0E,EAAKkC,KAAO,UAER4lB,EADMgH,EAAOxzB,EAAI,GAAG,KACF,MAAXwsB,EAAI,KACXA,EAAMA,EAAIkR,UAAU,EAAGlR,EAAIrsB,OAAS,CAAC,GAEzCuE,EAAKiD,MAAQ6kB,GAEbhtB,KAAK4M,yBAAgD,eAArBonB,EAAOxzB,EAAI,GAAG,KAC9C0E,EAAKC,UAAY6uB,EAAOxzB,EAAI,GAAG,IAEnC0E,EAAKkC,KAAOpH,KAAK8kC,kBAAkB5/B,CAAI,GAE3CG,EAAMA,MAAMM,KAAKT,CAAI,OAEpB,GAAqB,SAAjB8uB,EAAOxzB,GAAG,GAAe,CAC9B,GAAuB,SAAjBwzB,EAAO,GAAG,MAAwC,QAArBA,EAAOxzB,EAAI,GAAG,IAAgBs/B,GAAa9/B,KAAK2H,KAAKC,YAAY,KAAK,EAAE0F,gBAAkB0mB,EAAOxzB,EAAI,GAAG,IAA3I,CAaA,IATAR,KAAKg0B,OAASA,EAAOrd,OAAOnW,EAAI,EAAGwY,GAAQxY,EAAI,EAAE,EAE7CglC,EADAxlC,KAAK4E,mBACM,CAAEO,UAAW,MAAOE,MAAO,GAAID,IAAK,CAAA,GAGpC,CAAED,UAAW,MAAOE,MAAO,IAG1CglB,EAAOhlB,EAAMA,MAAM1E,OACd4kB,EAFL4f,EAAW,EAEC5f,EAAI8E,EAAM9E,CAAC,GACflgB,EAAMA,MAAMkgB,GAAGlgB,OACf8/B,CAAQ,GAMhB,OAHApgC,EAAUY,KAAKw/B,CAAQ,EACvB9/B,EAAMA,MAAMM,KAAK6/B,CAAQ,EACzBA,EAAWxlC,KAAK6gC,cAAc7gC,KAAKg0B,OAAQwR,EAAUzgC,EAAW+6B,CAAS,EAClEz6B,EApBHkgC,EAAc,CAAA,OAsBjB,GAAqB,eAAjBvR,EAAOxzB,GAAG,IAAwBR,KAAK4M,yBAQ3C,GAAqB,UAAjBonB,EAAOxzB,GAAG,GAAgB,CAC/B,GAAI+kC,CAAAA,GAAoC,UAArBvR,EAAOxzB,EAAI,GAAG,GAAjC,CAQA,IAJAR,KAAKg0B,OAASA,EAAOrd,OAAOnW,EAAI,EAAGwY,GAAQxY,EAAI,EAAE,EACjDuE,EAAU0gC,MACVpgC,EAAQrF,KAAKkF,KACbggC,EAAOngC,EAAUpE,OACZokC,EAAI,EAAGA,EAAIG,EAAMH,CAAC,GACnB1/B,EAAQrF,KAAKouB,eAAerpB,EAAUggC,GAAI1/B,EAAa,IAAN0/B,CAAO,EAE5D,OAAO/kC,KAAK6gC,cAAc7gC,KAAKg0B,OAAQ3uB,EAAON,EAAW+6B,CAAS,EAV9DyF,EAAc,CAAA,OATG,QAAjBvR,EAAOxzB,GAAG,IAAiBs/B,GAAa9/B,KAAK2H,KAAKC,YAAY,KAAK,EAAE0F,gBAAkB0mB,EAAOxzB,GAAG,GACjG6E,EAAMD,IAAM,CAAA,EAGZC,EAAMF,UAAY6uB,EAAOxzB,GAAG,GAkBxC,OAAO6E,GAQX/C,EAAapC,UAAUkM,WAAa,SAAUpL,GAC1C,IAAIsK,EAAYtK,EAAOqL,QAAQ,cAAc,EAAEA,QAAQ,oBAAoB,EACvEq5B,EAAc1kC,EAAOgE,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACzD4zB,EAAUttB,EAAUtG,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACxDwF,EAAQxK,KAAKiN,SAASy4B,CAAW,EACrC1lC,KAAK+b,WAAarc,MAAMQ,UAAUyD,QAAQ/C,KAAKI,EAAOqL,QAAQ,cAAc,EAAEmC,SAAUxN,EAAOqL,QAAQ,oBAAoB,CAAC,EAC5HrM,KAAKuc,UAAU,CAAC,CAAEpX,UAAaqF,EAAMrF,UAAWC,IAAOoF,EAAMpF,IAAKC,MAASmF,EAAMnF,QAAUuzB,CAAO,EAClG54B,KAAK+b,WAAa,CAAC,GAEvBzZ,EAAapC,UAAU8L,UAAY,SAAUhL,GAMzC,IALA,IAAI6N,EAAWxC,UAAQrL,EAAQ,mBAAmB,EAC9CsK,EAAYtK,EAAOqL,QAAQ,cAAc,EAAEA,QAAQ,oBAAoB,EACvE0B,EAAU/N,KAAK+N,QAAQ/M,CAAM,EAC7B43B,EAAUttB,EAAUtG,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,EACxDy1B,EAAenvB,EAAUnI,iBAAiB,mBAAmB,EACxD3C,EAAI,EAAGwY,EAAOyhB,EAAa95B,OAAQH,EAAIwY,EAAMxY,CAAC,GAC/CqO,EAAS7J,KAAOy1B,EAAaj6B,GAAGwE,KAChChF,KAAKoP,UAAY5O,GAGrBR,KAAK4M,wBACL5M,KAAK2uB,SAAS,CAAC,CACPpmB,MAASwF,EAAQxF,MAAOxC,MAASgI,EAAQhI,MAAOqB,KAAQ2G,EAAQ3G,KAAMqK,SAAY1D,EAAQ0D,SAC1FtJ,MAAS4F,EAAQ5F,MAAOhD,UAAa4I,EAAQ5I,YAC7CyzB,CAAO,EAGf54B,KAAK2uB,SAAS,CAAC,CACPpmB,MAASwF,EAAQxF,MAAOxC,MAASgI,EAAQhI,MAAOqB,KAAQ2G,EAAQ3G,KAAMqK,SAAY1D,EAAQ0D,SAC1FtJ,MAAS4F,EAAQ5F,QACjBywB,CAAO,EAEnB54B,KAAKoP,UAAY,CAAC,GAEtB9M,EAAapC,UAAU+L,SAAW,SAAUjL,GACxC,IAAI6N,EAAWxC,UAAQrL,EAAQ,mBAAmB,EAC9CkE,EAAOlF,KAAK+N,QAAQc,EAAS7J,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,CAAC,EAClE6J,EAAShC,UAAUC,SAAS,WAAW,GACvC5H,EAAKyP,SAAW,CAAA,EAChB3U,KAAK2lC,UAAY3lC,KAAK2lC,UAAU/vB,OAAO,SAAUgwB,GAAY,OAAOA,IAAa/2B,EAAS7J,GAAK,EAC/F6J,EAAShC,UAAUsW,OAAO,WAAW,EACrCnjB,KAAK6lC,oBAAoB7kC,EAAQ6N,EAAU,CAAA,CAAK,EAChD7N,EAAOwN,SAAS,GAAG3B,UAAUkF,IAAI,UAAU,EAC3C/Q,EAAOwN,SAAS,GAAG3B,UAAUsW,OAAO,QAAQ,EAC5CniB,EAAOiO,aAAa,QAASjP,KAAK2H,KAAKC,YAAY,UAAU,CAAC,IAG9D1C,EAAKyP,SAAW,CAAA,EACZ3U,KAAK2lC,UAAUhiC,QAAQkL,EAAS7J,EAAE,EAAI,GACtChF,KAAK2lC,UAAUhvB,OAAO3W,KAAK2lC,UAAUhlC,OAAS,EAAG,EAAGkO,EAAS7J,EAAE,EAEnE6J,EAAShC,UAAUkF,IAAI,WAAW,EAClC/R,KAAK6lC,oBAAoB7kC,EAAQ6N,EAAU,CAAA,CAAI,EAC/C7N,EAAOwN,SAAS,GAAG3B,UAAUkF,IAAI,QAAQ,EACzC/Q,EAAOwN,SAAS,GAAG3B,UAAUsW,OAAO,UAAU,EAC9CniB,EAAOiO,aAAa,QAASjP,KAAK2H,KAAKC,YAAY,YAAY,CAAC,IAGxEtF,EAAapC,UAAUgM,UAAY,SAAUlL,GACzC,IAwBY8kC,EAxBRx6B,EAAYe,UAAQrL,EAAQ,oBAAoB,EAChDwJ,EAAQxK,KAAKiN,SAAS3B,EAAUtG,GAAGgI,QAAQhN,KAAKgD,QAAQgC,GAAK,IAAK,EAAE,CAAC,EACrEL,EAA0C,CAAC,EAAlC2G,EAAUtG,GAAGrB,QAAQ,QAAQ,EACtC2H,EAAUuB,UAAUC,SAAS,WAAW,GACpCnI,IAEAmhC,EADe,IACN3gC,UAAYqF,EAAMrF,UAC3B2gC,EAAS1gC,IAAMoF,EAAMpF,IACrB0gC,EAASnxB,SAAW,CAAA,EACpB3U,KAAKiF,cAAc,CAAEC,KAAM4gC,GAAY,CAAA,CAAI,GAG3Ct7B,EAAMmK,SAAW,CAAA,EAErB3U,KAAK2lC,UAAY3lC,KAAK2lC,UAAU/vB,OAAO,SAAUgwB,GAAY,OAAOA,IAAat6B,EAAUtG,GAAK,EAChGsG,EAAUuB,UAAUsW,OAAO,WAAW,EACtCnjB,KAAK+lC,sBAAsB/kC,EAAQsK,EAAW,CAAA,CAAK,EACnDtK,EAAOwN,SAAS,GAAG3B,UAAUkF,IAAI,UAAU,EAC3C/Q,EAAOwN,SAAS,GAAG3B,UAAUsW,OAAO,QAAQ,EAC5CniB,EAAOiO,aAAa,QAASjP,KAAK2H,KAAKC,YAAY,WAAW,CAAC,EAC/D5H,KAAKgmC,oBAGDrhC,IAEAmhC,EADe,IACN3gC,UAAYqF,EAAMrF,UAC3B2gC,EAAS1gC,IAAMoF,EAAMpF,IACrB0gC,EAASnxB,SAAW,CAAA,EACpB3U,KAAKiF,cAAc,CAAEC,KAAM4gC,GAAY,CAAA,CAAI,GAG3Ct7B,EAAMmK,SAAW,CAAA,EAEjB3U,KAAK2lC,UAAUhiC,QAAQ2H,EAAUtG,EAAE,EAAI,GACvChF,KAAK2lC,UAAUhvB,OAAO3W,KAAK2lC,UAAUhlC,OAAS,EAAG,EAAG2K,EAAUtG,EAAE,EAEpEsG,EAAUuB,UAAUkF,IAAI,WAAW,EACnC/R,KAAK+lC,sBAAsB/kC,EAAQsK,EAAW,CAAA,CAAI,EAClDtK,EAAOwN,SAAS,GAAG3B,UAAUkF,IAAI,QAAQ,EACzC/Q,EAAOwN,SAAS,GAAG3B,UAAUsW,OAAO,UAAU,EAC9CniB,EAAOiO,aAAa,QAASjP,KAAK2H,KAAKC,YAAY,aAAa,CAAC,IAGzEtF,EAAapC,UAAU8lC,gBAAkB,WACrC,IAAK,IAYOhlC,EAZHR,EAAI,EAAGA,EAAIR,KAAK2lC,UAAUhlC,OAAQH,CAAC,GAEpB,EADPR,KAAK2lC,UAAUnlC,GAAG0F,MAAM,GAAG,EAC7BvF,QAEHK,EADWhB,KAAKgD,QAAQC,cAAc,IAAMjD,KAAK2lC,UAAUnlC,EAAE,EAC3CyC,cAAc,kBAAkB,EAC3CoJ,UAAQrL,EAAQ,mBAAmB,EAChC6L,UAAUC,SAAS,WAAW,GACxC9M,KAAKiM,SAASjL,CAAM,IAKpBA,EADYhB,KAAKgD,QAAQC,cAAc,IAAMjD,KAAK2lC,UAAUnlC,EAAE,EAC3CyC,cAAc,iBAAiB,EAC1CoJ,UAAQrL,EAAQ,oBAAoB,EACjC6L,UAAUC,SAAS,WAAW,GACzC9M,KAAKkM,UAAUlL,CAAM,IAKrCsB,EAAapC,UAAU6lC,sBAAwB,SAAU/kC,EAAQsK,EAAW26B,GAWxE,IAVA,IAAIv4B,EAAUpC,EAAUnI,iBAAiB,iBAAiB,EACtDwK,EAASrC,EAAUnI,iBAAiB,gBAAgB,EACpDwZ,EAAUrR,EAAUnI,iBAAiB,cAAc,EACnD+iC,EAAU56B,EAAUnI,iBAAiB,YAAY,EACjDgjC,EAAgB76B,EAAUnI,iBAAiB,gBAAgB,EAC3DijC,EAAW96B,EAAUnI,iBAAiB,iBAAiB,EACvD+7B,EAAY5zB,EAAUnI,iBAAiB,kBAAkB,EACzDkjC,EAAgB/6B,EAAUnI,iBAAiB,oBAAoB,EAC/DmjC,EAAeh7B,EAAUnI,iBAAiB,sBAAsB,EAChEojC,EAAWj7B,EAAUnI,iBAAiB,kBAAkB,EACnD3C,EAAI,EAAGA,EAAIkN,EAAQ/M,OAAQH,CAAC,GAC7BylC,GACII,EAAc7lC,IAAM6lC,EAAc7lC,GAAGqM,UAAUC,SAAS,WAAW,GACnEu5B,EAAc7lC,GAAGqM,UAAUkF,IAAI,WAAW,EAE9CrE,EAAQlN,GAAGqd,SAAW,CAAA,EACtBlQ,EAAOnN,GAAGqd,SAAW,CAAA,EACjBqoB,EAAQ1lC,KACR0lC,EAAQ1lC,GAAGqd,SAAW,CAAA,GAEtByoB,EAAa9lC,KACb8lC,EAAa9lC,GAAGqd,SAAW,CAAA,GAE3B0oB,EAAS/lC,KACT+lC,EAAS/lC,GAAGqd,SAAW,CAAA,GAEvBlB,EAAQnc,KACRmc,EAAQnc,GAAGqd,SAAW,CAAA,GAEtBsoB,EAAc3lC,KACd2lC,EAAc3lC,GAAGqd,SAAW,CAAA,GAE5BqhB,EAAU1+B,KACV0+B,EAAU1+B,GAAGqd,SAAW,CAAA,GAE5BnQ,EAAQlN,GAAGsD,cAAc+I,UAAUkF,IAAI,YAAY,EAC/Cq0B,EAAS5lC,IAAM4lC,EAAS5lC,KAAOQ,IAC/BolC,EAAS5lC,GAAGqd,SAAW,CAAA,EACvBuoB,EAAS5lC,GAAGgO,SAAS,GAAG3B,UAAUsW,OAAO,UAAU,EACnDijB,EAAS5lC,GAAGgO,SAAS,GAAG3B,UAAUkF,IAAI,QAAQ,KAI9Cs0B,EAAc7lC,IACd6lC,EAAc7lC,GAAGqM,UAAUsW,OAAO,WAAW,EAEjDzV,EAAQlN,GAAGqd,SAAW,CAAA,EACtBlQ,EAAOnN,GAAGqd,SAAW,CAAA,EACjBqoB,EAAQ1lC,KACR0lC,EAAQ1lC,GAAGqd,SAAW,CAAA,GAEtByoB,EAAa9lC,KACb8lC,EAAa9lC,GAAGqd,SAAW,CAAA,GAE3B0oB,EAAS/lC,KACT+lC,EAAS/lC,GAAGqd,SAAW,CAAA,GAEvBuoB,EAAS5lC,KACT4lC,EAAS5lC,GAAGqd,SAAW,CAAA,GAEvBlB,EAAQnc,KACRmc,EAAQnc,GAAGqd,SAAW,CAAA,GAEtBsoB,EAAc3lC,KACd2lC,EAAc3lC,GAAGqd,SAAW,CAAA,GAE5BqhB,EAAU1+B,KACV0+B,EAAU1+B,GAAGqd,SAAW,CAAA,GAE5BnQ,EAAQlN,GAAGsD,cAAc+I,UAAUsW,OAAO,YAAY,EAClDijB,EAAS5lC,IACT4lC,EAAS5lC,GAAGgO,SAAS,GAAG3B,UAAUsW,OAAO,QAAQ,EAEjDijB,EAAS5lC,IACT4lC,EAAS5lC,GAAGgO,SAAS,GAAG3B,UAAUkF,IAAI,UAAU,GAI5D/R,KAAK6lC,oBAAoB7kC,EAAQsK,EAAW26B,CAAU,GAE1D3jC,EAAapC,UAAU2lC,oBAAsB,SAAU7kC,EAAQsK,EAAW26B,GAC9C,SAApBO,EAA8BzhB,EAAU0hB,EAAiBR,GACzDlhB,EAAS9d,QAAQ,SAAUjE,GACnB0jC,EAAYD,EAAgBzjC,CAAO,EACnC,YAAa0jC,EACbA,EAAUC,QAAU,CAACV,EAEhB,aAAcS,IACnBA,EAAU7oB,SAAWooB,GAE5B,EATL,IAWIlhB,EAAW,CACX9D,IAAK3V,EAAUnI,iBAAiB,2BAA2B,EAC3D6mB,QAAS1e,EAAUnI,iBAAiB,6BAA6B,EACjE+E,KAAMoD,EAAUnI,iBAAiB,sBAAsB,EACvDi7B,KAAM9yB,EAAUnI,iBAAiB,yBAAyB,EAC1DyjC,SAAUt7B,EAAUnI,iBAAiB,uBAAuB,EAC5D0jC,MAAOv7B,EAAUnI,iBAAiB,oBAAoB,EACtD2jC,YAAax7B,EAAUnI,iBAAiB,0BAA0B,EAClE4jC,WAAYz7B,EAAUnI,iBAAiB,gBAAgB,EACvDijC,SAAU96B,EAAUnI,iBAAiB,cAAc,EACnD+7B,UAAW5zB,EAAUnI,iBAAiB,eAAe,EACrD0L,SAAUvD,EAAUnI,iBAAiB,mBAAmB,GAE5D4hB,EAASgiB,WAAW9/B,QAAQ,SAAU6H,EAAMtO,GACpCylC,GACIlhB,EAASlW,SAASrO,IAAMukB,EAASlW,SAASrO,GAAGqM,UAAUC,SAAS,WAAW,GAC3EiY,EAASlW,SAASrO,GAAGqM,UAAUkF,IAAI,WAAW,EAElDgT,EAASgiB,WAAWvmC,GAAGqd,SAAW,CAAA,EAC9BkH,EAASma,UAAU1+B,KACnBukB,EAASma,UAAU1+B,GAAGqd,SAAW,CAAA,GAEjCkH,EAASqhB,SAAS5lC,KAAOQ,IACzB+jB,EAASqhB,SAAS5lC,GAAGqd,SAAW,CAAA,EAChCkH,EAASqhB,SAAS5lC,GAAGgO,SAAS,GAAG3B,UAAUsW,OAAO,UAAU,EAC5D4B,EAASqhB,SAAS5lC,GAAGgO,SAAS,GAAG3B,UAAUkF,IAAI,QAAQ,KAIvDgT,EAASlW,SAASrO,IAClBukB,EAASlW,SAASrO,GAAGqM,UAAUsW,OAAO,WAAW,EAEjD4B,EAASma,UAAU1+B,KACnBukB,EAASma,UAAU1+B,GAAGqd,SAAW,CAAA,GAErCkH,EAASgiB,WAAWvmC,GAAGqd,SAAW,CAAA,EAClCkH,EAASqhB,SAAS5lC,GAAGqd,SAAW,CAAA,EAChCkH,EAASqhB,SAAS5lC,GAAGgO,SAAS,GAAG3B,UAAUsW,OAAO,QAAQ,EAC1D4B,EAASqhB,SAAS5lC,GAAGgO,SAAS,GAAG3B,UAAUkF,IAAI,UAAU,GAEhE,EACDy0B,EAAkBzhB,EAAS9D,IAAK,SAAUnS,GAAQ,OAAOlL,eAAakL,EAAM,cAAc,GAAMm3B,CAAU,EAC1GO,EAAkBzhB,EAASiF,QAAS,SAAUlb,GAAQ,OAAOlL,eAAakL,EAAM,gBAAgB,GAAMm3B,CAAU,EAChHO,EAAkBzhB,EAAS7c,KAAM,SAAU4G,GAAQ,OAAOlL,eAAakL,EAAM,SAAS,GAAMm3B,CAAU,EACtGO,EAAkBzhB,EAASqZ,KAAM,SAAUtvB,GAAQ,OAAOlL,eAAakL,EAAM,YAAY,GAAMm3B,CAAU,EACzGO,EAAkBzhB,EAAS6hB,SAAU,SAAU93B,GAAQ,OAAOlL,eAAakL,EAAM,UAAU,GAAMm3B,CAAU,EAC3GO,EAAkBzhB,EAAS8hB,MAAO,SAAU/3B,GAAQ,OAAOlL,eAAakL,EAAM,OAAO,GAAMm3B,CAAU,EACrGO,EAAkBzhB,EAAS+hB,YAAa,SAAUh4B,GAAQ,OAAOlL,eAAakL,EAAM,aAAa,GAAMm3B,CAAU,GAErHnlC,EAAW,CACPkmC,WACD1kC,EAAapC,UAAW,UAAW,KAAA,CAAM,EAC5CY,EAAW,CACPkmC,WACD1kC,EAAapC,UAAW,cAAe,KAAA,CAAM,EAChDY,EAAW,CACPkmC,WACD1kC,EAAapC,UAAW,eAAgB,KAAA,CAAM,EACjDY,EAAW,CACPkmC,WACD1kC,EAAapC,UAAW,SAAU,KAAA,CAAM,EAC3CY,EAAW,CACPkmC,WACD1kC,EAAapC,UAAW,YAAa,KAAA,CAAM,EAC9CY,EAAW,CACPkmC,WACD1kC,EAAapC,UAAW,aAAc,KAAA,CAAM,EAC/CY,EAAW,CACPkmC,WACD1kC,EAAapC,UAAW,YAAa,KAAA,CAAM,EAC9CY,EAAW,CACPkmC,WACD1kC,EAAapC,UAAW,OAAQ,KAAA,CAAM,EACzCY,EAAW,CACPkmC,WACD1kC,EAAapC,UAAW,OAAQ,KAAA,CAAM,EACzCY,EAAW,CACPmmC,UAAQ,GAAI7kC,CAAW,GACxBE,EAAapC,UAAW,cAAe,KAAA,CAAM,EAChDY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfW,EAAapC,UAAW,cAAe,KAAA,CAAM,EAChDY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfW,EAAapC,UAAW,kBAAmB,KAAA,CAAM,EACpDY,EAAW,CACPa,WAAS,SAAS,GACnBW,EAAapC,UAAW,YAAa,KAAA,CAAM,EAC9CY,EAAW,CACPa,WAAS,EAAE,GACZW,EAAapC,UAAW,UAAW,KAAA,CAAM,EAC5CY,EAAW,CACPa,WAAS,IAAI,GACdW,EAAapC,UAAW,aAAc,KAAA,CAAM,EAC/CY,EAAW,CACPa,WAAS,IAAI,GACdW,EAAapC,UAAW,gBAAiB,KAAA,CAAM,EAClDY,EAAW,CACPa,WAAS,IAAI,GACdW,EAAapC,UAAW,aAAc,KAAA,CAAM,EAC/CY,EAAW,CACPa,cACDW,EAAapC,UAAW,iBAAkB,KAAA,CAAM,EACnDY,EAAW,CACPa,WAAS,EAAE,GACZW,EAAapC,UAAW,WAAY,KAAA,CAAM,EAC7CY,EAAW,CACPa,WAAS,EAAE,GACZW,EAAapC,UAAW,aAAc,KAAA,CAAM,EAC/CY,EAAW,CACPa,WAAS,YAAY,GACtBW,EAAapC,UAAW,cAAe,KAAA,CAAM,EAChDY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfW,EAAapC,UAAW,oBAAqB,KAAA,CAAM,EACtDY,EAAW,CACPa,WAAS,SAAS,GACnBW,EAAapC,UAAW,gBAAiB,KAAA,CAAM,EAClDY,EAAW,CACPa,WAAS,CAAC,GACXW,EAAapC,UAAW,gBAAiB,KAAA,CAAM,EAClDY,EAAW,CACPa,WAAS,MAAM,GAChBW,EAAapC,UAAW,SAAU,KAAA,CAAM,EAC3CY,EAAW,CACPa,WAAS,MAAM,GAChBW,EAAapC,UAAW,QAAS,KAAA,CAAM,EAC1CY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfW,EAAapC,UAAW,YAAa,KAAA,CAAM,EAC9CY,EAAW,CACPa,WAAS,CAAC,GACXW,EAAapC,UAAW,qBAAsB,KAAA,CAAM,EACvDY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfW,EAAapC,UAAW,qBAAsB,KAAA,CAAM,EACvDY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfW,EAAapC,UAAW,WAAY,KAAA,CAAM,EAC7CY,EAAW,CACPa,WAAS,CAAA,CAAI,GACdW,EAAapC,UAAW,qBAAsB,KAAA,CAAM,EACvDY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfW,EAAapC,UAAW,kBAAmB,KAAA,CAAM,EACpDY,EAAW,CACPa,WAAS,CAAA,CAAI,GACdW,EAAapC,UAAW,qBAAsB,KAAA,CAAM,EACvDY,EAAW,CACPa,WAAS,EAAE,GACZW,EAAapC,UAAW,YAAa,KAAA,CAAM,EAC9CY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfW,EAAapC,UAAW,0BAA2B,KAAA,CAAM,EAC5DY,EAAW,CACPmmC,UAAQ,CAAE9hC,UAAW,MAAOE,MAAO,IAAMpD,CAAI,GAC9CK,EAAapC,UAAW,OAAQ,KAAA,CAAM,EACzCY,EAAW,CACPa,WAAS,CAAA,CAAK,GACfW,EAAapC,UAAW,mBAAoB,KAAA,CAAM,MArqObL,EAAxCyC,EAsqOexB,EAAW,CACtBomC,yBACD5kC,CAAY,EAtqOf,SAASA,EAAa6kC,EAASnkC,GACvBoD,EAAQvG,EAAOe,KAAKZ,KAAMmnC,EAASnkC,CAAO,GAAKhD,KAyBnD,OAxBAoG,EAAMyqB,WAAa,CAAA,EACnBzqB,EAAM6B,OAAS,CAAEC,KAAM,QAASC,MAAO,SACvC/B,EAAMyW,YAAc,CAAEzX,IAAK,CAAA,EAAOD,UAAW,MAAOwP,SAAU,CAAA,GAC9DvO,EAAM0B,SAAW,CAAA,EACjB1B,EAAM8oB,YAAc,CAAA,EACpB9oB,EAAMwY,WAAa,CAAA,EACnBxY,EAAMkW,aAAe,CAAA,EACrBlW,EAAM2b,iBAAmB,CAAA,EACzB3b,EAAMya,cAAgB,CAAA,EACtBza,EAAM2a,aAAe,CAAA,EACrB3a,EAAM0a,UAAY,CAAA,EAClB1a,EAAM+f,gBAAkB,CAAA,EACxB/f,EAAM2B,gBAAkB,GACxB3B,EAAMghC,aAAe,EACrBhhC,EAAMu/B,UAAY,GAClBv/B,EAAM2V,WAAa,CAAC,EACpB3V,EAAMgJ,UAAY,CAAC,EACnBhJ,EAAM4V,YAAc,CAAA,EACpB5V,EAAM+F,iBAAmB,CAAA,EACzB/F,EAAMgW,cAAgB,CAAA,EACtBhW,EAAM2F,kBAAoB,CAAA,EAC1B3F,EAAMy1B,aAAe,CAAA,EACrBz1B,EAAM4oB,aAAe,CAAA,EACrBhI,cAAYqgB,OAAOC,mBAAiB,EAC7BlhC,ECxNXmhC,EAAarnC,UAAU2D,QAAU,WACzB7D,KAAKwnC,OAAOC,aAGhBznC,KAAKk6B,uBAETqN,EAAarnC,UAAU85B,iBAAmB,WAClCh6B,KAAKwnC,OAAOC,cAGhBznC,KAAKwnC,OAAOE,GAAG,gBAAiB1nC,KAAK2nC,aAAc3nC,IAAI,EACvDA,KAAKwnC,OAAOE,GAAG,YAAa1nC,KAAK6D,QAAS7D,IAAI,IAElDunC,EAAarnC,UAAUg6B,oBAAsB,WACzCl6B,KAAKwnC,OAAOI,IAAI,gBAAiB5nC,KAAK2nC,YAAY,EAClD3nC,KAAKwnC,OAAOI,IAAI,YAAa5nC,KAAK6D,OAAO,GAE7C0jC,EAAarnC,UAAUynC,aAAe,SAAU9hC,GAC5C,OAAQA,EAAKs7B,MACT,IAAK,oBACDt7B,EAAKsC,MAAW,IAAc,WAAInI,KAAK6nC,kBAAkBhiC,EAAKsC,MAAY,KAAGtC,EAAKsC,MAAkB,UAAC,EACrG,MACJ,IAAK,cACDnI,KAAK8nC,YAAYjiC,EAAKsC,MAAkB,WAAGtC,EAAKsC,MAAY,KAAGtC,EAAKsC,MAAmB,WAAC,EACxF,MACJ,IAAK,kBACDtC,EAAKsC,MAAW,IAAO,IAAInI,KAAK+nC,gBAAgBliC,EAAKsC,MAAY,IAAC,EAClE,MACJ,IAAK,uBACDtC,EAAKsC,MAAW,IAAO,IAAInI,KAAKgoC,qBAAqBniC,EAAKsC,MAAY,IAAC,EACvE,MACJ,IAAK,uBACDtC,EAAKsC,MAAW,IAAO,IAAInI,KAAKioC,qBAAqBpiC,EAAKsC,MAAW,GAAC,EACtE,MACJ,IAAK,4BACDtC,EAAKsC,MAAW,IAAO,IAAInI,KAAKkoC,0BAA0BriC,EAAKsC,MAAW,GAAC,IAIvFo/B,EAAarnC,UAAU2nC,kBAAoB,SAAU3iC,EAAMy8B,GAWvD,OAVAA,EAAa,IAGTA,EAFmB,OAAnBz8B,EAAKC,UAEQnF,KAAKmoC,kBAAkBjjC,EAAKG,MADzCs8B,GAAc,SAC4C,EAAI,IAIjD3hC,KAAKmoC,kBAAkBjjC,EAAKG,MADzCs8B,GAAc,UAC4C,EAAI,IAElEA,GAAc,KAGlB4F,EAAarnC,UAAUkoC,6BAA+B,SAAU32B,GAC5D,IAAI42B,EACJ,OAAQ52B,GACJ,IAAK,MACD42B,EAAgB,WAChB,MACJ,IAAK,MACDA,EAAgB,cAChB,MACJ,IAAK,OACDA,EAAgB,qBAChB,MACJ,IAAK,MACDA,EAAgB,WAChB,MACJ,IAAK,OACDA,EAAgB,kBAChB,MACJ,IAAK,OACDA,EAAgB,QAGxB,OAAOA,GAGXd,EAAarnC,UAAUioC,kBAAoB,SAAU9iC,EAAOs8B,GACxD,IAAIv7B,EAAQpG,KACRQ,EAAI,EA4KR,OA1KA6E,EAAM4B,QAAQ,SAAU+Z,GACpBxgB,CAAC,GACDmhC,GAAc,IACK5sB,KAAAA,IAAfiM,EAAK3b,QAGDs8B,GAFmB,OAAnB3gB,EAAK7b,UACLw8B,GAAc,WAIdA,GAAc,YACDv7B,EAAM+hC,kBAAkBnnB,EAAK3b,MAAOs8B,CAAU,EAAI,MAGvE,IAsFoBphC,EAtFhB+nC,EAAsB,WAAdtnB,EAAK5Z,MAAuC,OAAlB4Z,EAAKvP,UAAuC,UAAlBuP,EAAKvP,UAAwBuP,EAAK7Y,OAA+B,KAAtB6Y,EAAK7Y,MAAM8kB,OAAgBjM,EAAK7Y,MAAM6E,QAAQ,KAAM,IAAI,EAAI,GAInKjH,GAHc,WAAdib,EAAK5Z,MAAwC,OAAlB4Z,EAAKvP,UAAuC,UAAlBuP,EAAKvP,UAAyBuP,CAAAA,EAAK7Y,OAA+B,IAAtB6Y,EAAK7Y,MAAMxH,SAC5G2nC,EAAQtnB,EAAK7Y,MAAM,GAAG6E,QAAQ,KAAM,IAAI,GAEhCgU,EAAKjb,MAAQib,EAAKjb,MAAMm4B,UAAU,CAAC,EAAI,IACnD,OAAQld,EAAKvP,UACT,IAAK,WACDkwB,GAAc,IAAM57B,EAAQ,gBAAkBuiC,EAAQ,KACtD,MACJ,IAAK,cACD3G,GAAc,IAAM57B,EAAQ,wBAA0Bib,EAAK7Y,MAAQ,MACnE,MACJ,IAAK,aACDw5B,GAAc,IAAM57B,EAAQ,iBAAmBuiC,EAAQ,KACvD,MACJ,IAAK,gBACD3G,GAAc,IAAM57B,EAAQ,yBAA2Bib,EAAK7Y,MAAQ,MACpE,MACJ,IAAK,WACDw5B,GAAc,IAAM57B,EAAQ,gBAAkBuiC,EAAQ,MACtD,MACJ,IAAK,cACD3G,GAAc,IAAM57B,EAAQ,wBAA0Bib,EAAK7Y,MAAQ,OACnE,MACJ,IAAK,SACDw5B,GAAc,IAAM57B,EAAQ,UAC5B,MACJ,IAAK,YACD47B,GAAc,IAAM57B,EAAQ,kBAC5B,MACJ,IAAK,UACD47B,GAAc,IAAM57B,EAAQ,QAC5B,MACJ,IAAK,aACD47B,GAAc,IAAM57B,EAAQ,gBAC5B,MACJ,IAAK,QACiB,WAAdib,EAAK5Z,KACLu6B,GAAc,IAAM57B,EAAQ,MAAQuiC,EAAQ,IAEzB,SAAdtnB,EAAK5Z,KACVu6B,GAAc,IAAM57B,EAAQ,MAAQib,EAAK7Y,MAAQ,KAE5C6Y,EAAK5Z,KACVu6B,GAAc,IAAM57B,EAAQ,KAAOib,EAAK7Y,OAK5C,MACJ,IAAK,WACiB,WAAd6Y,EAAK5Z,KACLu6B,GAAc,IAAM57B,EAAQ,aAAeuiC,EAAQ,KAEhC,SAAdtnB,EAAK5Z,KACVu6B,GAAc,IAAM57B,EAAQ,aAAeib,EAAK7Y,MAAQ,KAGxDw5B,GAAc,IAAM57B,EAAQ,YAAcib,EAAK7Y,MAAQ,IAE3D,MACJ,IAAK,KACiB,WAAd6Y,EAAK5Z,KACmB,EAApB4Z,EAAK7Y,MAAMxH,QAGXJ,GAAIA,EADIygB,EAAK7Y,MAAM8B,IAAI,SAAUs+B,EAAGp/B,GAAK,OAAQA,EAAI6X,EAAK7Y,MAAMxH,OAAS,IAAO4nC,EAAI,IAAO,GAAM,EAAEjyB,YAC7FkyB,SAAS,GAAG,EAAIjoC,EAAE29B,UAAU,EAAG39B,EAAEI,OAAS,CAAC,EAAIJ,EACrDohC,GAAc,IAAM57B,EAAQ,gBAAkBxF,EAAI,MAGlDohC,GAAc,IAAM57B,EAAQ,iBAAmBuiC,EAAQ,MAGxC,WAAdtnB,EAAK5Z,OACc,EAApB4Z,EAAK7Y,MAAMxH,OACXghC,GAAc,IAAM57B,EAAQ,gBAAkBib,EAAK7Y,MAAMmO,WAAa,KAGtEqrB,GAAc,IAAM57B,EAAQ,gBAAkBib,EAAK7Y,MAAQ,MAGnE,MACJ,IAAK,QACiB,WAAd6Y,EAAK5Z,KACmB,EAApB4Z,EAAK7Y,MAAMxH,QAGXJ,GAAIA,EADIygB,EAAK7Y,MAAM8B,IAAI,SAAUs+B,EAAGp/B,GAAK,OAAQA,EAAI6X,EAAK7Y,MAAMxH,OAAS,IAAO4nC,EAAI,IAAO,GAAM,EAAEjyB,YAC7FkyB,SAAS,GAAG,EAAIjoC,EAAE29B,UAAU,EAAG39B,EAAEI,OAAS,CAAC,EAAIJ,EACrDohC,GAAc,IAAM57B,EAAQ,iBAAmBxF,EAAI,MAGnDohC,GAAc,IAAM57B,EAAQ,kBAAoBuiC,EAAQ,MAGzC,WAAdtnB,EAAK5Z,OACc,EAApB4Z,EAAK7Y,MAAMxH,OACXghC,GAAc,IAAM57B,EAAQ,iBAAmBib,EAAK7Y,MAAMmO,WAAa,KAGvEqrB,GAAc,IAAM57B,EAAQ,iBAAmBib,EAAK7Y,MAAQ,MAGpE,MACJ,IAAK,cACiB,WAAd6Y,EAAK5Z,KACLu6B,GAAc,IAAM57B,EAAQ,eAAiBib,EAAK7Y,MAAQ,IAG1Dw5B,GAAc,IAAM57B,EAAQ,gBAAkBib,EAAK7Y,MAAQ,KAE/D,MACJ,IAAK,qBACiB,WAAd6Y,EAAK5Z,KACLu6B,GAAc,IAAM57B,EAAQ,gBAAkBib,EAAK7Y,MAAQ,IAG3Dw5B,GAAc,IAAM57B,EAAQ,iBAAmBib,EAAK7Y,MAAQ,KAEhE,MACJ,IAAK,UACiB,WAAd6Y,EAAK5Z,KACLu6B,GAAc,IAAM57B,EAAQ,cAAgBib,EAAK7Y,MAAM,GAAK,YAAc6Y,EAAK7Y,MAAM,GAAK,IAG1Fw5B,GAAc,IAAM57B,EAAQ,gBAAkBib,EAAK7Y,MAAM,GAAK,eAAiB6Y,EAAK7Y,MAAM,GAAK,KAEnG,MACJ,IAAK,aACiB,WAAd6Y,EAAK5Z,KACLu6B,GAAc,YAAc57B,EAAQ,aAAeib,EAAK7Y,MAAM,GAAK,SAAWpC,EAAQ,aAAeib,EAAK7Y,MAAM,GAAK,MAGrHw5B,GAAc,YAAc57B,EAAQ,eAAiBib,EAAK7Y,MAAM,GAAK,UAAYpC,EAAQ,eAAiBib,EAAK7Y,MAAM,GAAK,OAE9H,MACJ,IAAK,WACiB,WAAd6Y,EAAK5Z,KACLu6B,GAAc,IAAM57B,EAAQ,eAAiBib,EAAK7Y,MAAQ,IAG1Dw5B,GAAc,IAAM57B,EAAQ,gBAAkBib,EAAK7Y,MAAQ,KAE/D,MACJ,IAAK,kBACiB,WAAd6Y,EAAK5Z,KACLu6B,GAAc,IAAM57B,EAAQ,gBAAkBib,EAAK7Y,MAAQ,IAG3Dw5B,GAAc,IAAM57B,EAAQ,iBAAmBib,EAAK7Y,MAAQ,KAIxEw5B,GAAc,IACVt8B,EAAM1E,SAAWH,IACjBmhC,GAAc,KAErB,EACMA,GAEX4F,EAAarnC,UAAU4nC,YAAc,SAAUnG,EAAYz8B,EAAM08B,GAC7D,IAAI6G,EAC0C,CAAC,EAA3ClpC,OAAOkH,KAAKk7B,CAAU,EAAEh+B,QAAQ,MAAM,GACtC8kC,EAAY9G,EAAiB,KAC7Bz8B,EAAKC,UAAY,OAE6B,CAAC,EAA1C5F,OAAOkH,KAAKk7B,CAAU,EAAEh+B,QAAQ,KAAK,IAC1C8kC,EAAY9G,EAAgB,IAC5Bz8B,EAAKC,UAAY,MAErBD,EAAKG,MAAQ,GACbrF,KAAK0oC,eAAeD,EAAWvjC,EAAKG,MAAOu8B,CAAW,GAE1D2F,EAAarnC,UAAUwoC,eAAiB,SAAUD,EAAWpjC,EAAOu8B,GAchE,IAbA,IAAIyG,EACAjhC,EAEAuhC,EACA1nC,EACA2nC,EACAC,EAGArD,EACAtgC,EAEA+3B,EACKz8B,EAAI,EAAG8H,EAAMmgC,EAAU9nC,OAAQH,EAAI8H,EAAK9H,CAAC,GAAI,CAClD,IAAIsoC,EAAuB,GACvBC,EAAkB,GACtB5jC,EAAY5F,OAAOkH,KAAKgiC,EAAUjoC,EAAE,EAAE,GACtC2H,EAAQsgC,EAAUjoC,GAAG2E,GACrB,GAAkB,SAAdA,EAEIqgC,EADAxlC,KAAKwnC,OAAO5iC,mBACD,CAAEO,UAAWA,EAAU6H,QAAQ,IAAK,EAAE,EAAG3H,MAAO,GAAID,IAAK,CAAA,GAGzD,CAAED,UAAWA,EAAU6H,QAAQ,IAAK,EAAE,EAAG3H,MAAO,IAE/DA,EAAMM,KAAK6/B,CAAQ,EACnBxlC,KAAK0oC,eAAeD,EAAUjoC,GAAG2E,GAAYE,EAAMA,EAAM1E,OAAS,GAAG0E,MAAOu8B,CAAW,OAEtF,GAAkB,QAAdz8B,EAAqB,CAC1B,IAEI6jC,EAGAC,EAIAC,EACAC,EACAC,EAXAC,EAAa,KAAA,EAYb3pC,MAAM28B,QAAQl0B,CAAK,GAAsB,IAAjBA,EAAMxH,SAE9BwoC,EAAkBhhC,GADlB1B,EAAOlH,OAAOkH,KAAK0B,CAAK,GACK,IAC7BihC,EAAmBjhC,EAAM1B,EAAK,IACC,UAA3B,OAAO0iC,KACPH,EAAczpC,OAAOkH,KAAK0iC,CAAe,EAAE,GAE3CG,EADY/pC,OAAOkH,KAAK0iC,EAAgB5pC,OAAOkH,KAAK0iC,CAAe,EAAE,GAAG,EACnD,GACrBF,EAAY1pC,OAAOkH,KAAK2iC,EAAiB7pC,OAAOkH,KAAK2iC,CAAgB,EAAE,GAAG,EAAE,GAC3D,QAAbE,IAAoC,QAAdL,IAGtBM,EAAaJ,EAAgBH,GAAaM,GAE1CJ,EAAcE,EAAiBJ,GAAaC,GAI5C5jC,EAAMM,KADNT,EAAO,CAAEa,MAAOijC,EAAazgC,MAAOygC,EAAa7gC,MADjD80B,EAAY,CAACsM,EAAYL,GAC0Cz3B,SAPnE42B,EAAgB,aAO4EjhC,KAF5FA,EAA6B,UAAtB,OAAOmiC,EAA0B,SAAW,OAGpC,EACfF,EAAa,CAAA,GAIpBA,IAEG7D,EADAxlC,KAAKwnC,OAAO5iC,mBACD,CAAEO,UAAWA,EAAU6H,QAAQ,IAAK,EAAE,EAAG3H,MAAO,GAAID,IAAK,CAAA,GAGzD,CAAED,UAAWA,EAAU6H,QAAQ,IAAK,EAAE,EAAG3H,MAAO,IAE/DA,EAAMM,KAAK6/B,CAAQ,EACnBxlC,KAAK0oC,eAAeD,EAAUjoC,GAAG2E,GAAYE,EAAMA,EAAM1E,OAAS,GAAG0E,MAAOu8B,CAAW,OAG1F,CAUD,GARc,QADdz5B,EAAQsgC,EAAUjoC,GAAG2E,MAEjBkjC,EAAgB,UAEC,WAAjB,OAAOlgC,IACPkgC,EAAgB,QAChBjhC,EAAO,UACP61B,EAAY90B,GAEO,UAAnB,SACA80B,EAAY90B,EACZf,EAAO,SACPihC,EAAgB,aAEf,GAAuB,UAAnB,UAAyC,OAAVlgC,GAEpC,IAAK,IADLqhC,EAASjqC,OAAOkH,KAAK0B,CAAK,EACjBmlB,EAAM,EAAGA,EAAMkc,EAAO7oC,OAAQ2sB,CAAG,GAuDtC,GAtDArsB,EAAMuoC,EAAOlc,GACbqb,EAAc,EAAQa,EAAOlc,IACjB,QAARrsB,GAAiB+E,oBAAkB2iC,CAAW,IAC9CN,EAAgB,YAChBpL,EAAY,MAEJ,QAARh8B,GAAwC,WAAvB,OAAO0nC,IACxBN,EAAgB,WAChBpL,EAAY0L,EACZvhC,EAAO,WAEU,GAAjBoiC,EAAO7oC,QAAe6oC,EAAOlc,IACD,UAAxB,UACA+a,EAAgB,aAChBljC,EAAY5F,OAAOkH,KAAKkiC,CAAW,EAAE,GACrCC,EAAe,CAACrpC,OAAOkH,KAAKkiC,EAAYxjC,EAAU,EAAE,IAEpD2jC,EAAqBnjC,KAAKgjC,EAAYxjC,GAAWyjC,EAAa,EAC9DxhC,EAAO,WAGPihC,EAAgB,UAChBS,EAAqBnjC,KAAKgjC,CAAW,GAEZ,UAAzB,WACAvhC,EAAO,WAGmB,UAAzB,UAAqD,OAAhBuhC,EAC9B,SAAR1nC,GAAkD,WAAhC1B,OAAOkH,KAAKkiC,CAAW,EAAE,GAGvC1L,EAFqC,CAAC,EAAtC0L,EAAoB,OAAEhlC,QAAQ,GAAG,GACjC0kC,EAAgB,gBACJM,EAAoB,OAAE37B,QAAQ,IAAK,EAAE,GAEP,CAAC,EAAtC27B,EAAoB,OAAEhlC,QAAQ,GAAG,GACtC0kC,EAAgB,cACJM,EAAoB,OAAE37B,QAAQ,IAAK,EAAE,IAGjDq7B,EAAgB,cACJM,EAAoB,SAIpCN,EAAwB,QAARpnC,EAAgB,KAAO,QAEvCmG,EAAmC,UAA5B,OADP2hC,EAAkBJ,GACS,GAAmB,SAAW,UAG/B,UAAzB,WACLN,EAAgBroC,KAAKooC,6BAA6BnnC,CAAG,EACrDmG,EAAO,SACP61B,EAAY0L,GAEa,UAAzB,SAAmC,CACvB,WAAR1nC,IACAonC,EAAgB,WAChBpL,EAAY0L,EACZvhC,EAAO,UAEC,QAARnG,IACoB,OAAhB0nC,GAA6C,EAArBA,EAAYhoC,QAAc0G,MAAMC,KAAKC,MAAMohC,CAAW,CAAC,GAC/EN,EAAgB,WAChBpL,EAAY0L,GAEP3iC,oBAAkB2iC,CAAW,GAClCN,EAAgB,YAChBpL,EAAY0L,GAES,KAAhBA,IACLN,EAAgB,aAChBpL,EAAY0L,GAEhBvhC,EAAO,UAEoB,CAAC,EAA5BuhC,EAAYhlC,QAAQ,GAAG,IACvB0kC,EAAgB,aAChBpL,EAAY0L,EAAY37B,QAAQ,IAAK,EAAE,EACvC5F,EAAO,UAEoB,CAAC,EAA5BuhC,EAAYhlC,QAAQ,GAAG,GAAkB,SAAR1C,IACjConC,EAAgB,WAChBpL,EAAY0L,EAAY37B,QAAQ,IAAK,EAAE,EACvC5F,EAAO,UAEX,IAAK,IAAIopB,EAAK,EAAGiZ,EAAKzpC,KAAKwnC,OAAOzgC,QAASypB,EAAKiZ,EAAG9oC,OAAQ6vB,CAAE,GAAI,CAC7D,IAAItpB,EAASuiC,EAAGjZ,GAChB,GAAItpB,EAAOnB,QAAUZ,EAAW,CAC5B0jC,EAAY3hC,EAAOE,KACnB,OAGHC,MAAMC,KAAKC,MAAMohC,CAAW,CAAC,GAAmB,SAAdE,IACnCR,EAAgBA,GAAiBroC,KAAKooC,6BAA6BnnC,CAAG,EACtEmG,EAAO,OACP61B,EAAY0L,SAKnBxgC,GAA4B,UAAnB,UAA+B,CAACd,MAAMC,KAAKC,MAAMY,CAAK,CAAC,GACrEkgC,EAAgB,QAChBpL,EAAY90B,EACZf,EAAO,QAEiB,UAAnB,UAAyC,KAAVe,GAA0B,SAAVA,GAA8B,UAAVA,GACxEkgC,EAAgB,QAChBpL,EAAY90B,EACZf,EAAO,UAEiB,UAAnB,UAAyC,KAAVe,IACpCkgC,EAAgB,UAChBpL,EAAY90B,EACZf,EAAO,UAGPlC,EADA4jC,GAAsD,EAA9BA,EAAqBnoC,OACtC,CAAEoF,MAAOZ,EAAWoD,MAAOpD,EAAWgD,MAAO2gC,EAAsBr3B,SAAU42B,EAAejhC,KAAMA,GAEpG2hC,GAA4C,EAAzBA,EAAgBpoC,OACjC,CAAEoF,MAAOZ,EAAWoD,MAAOpD,EAAWgD,MAAO4gC,EAAiBt3B,SAAU42B,EAAejhC,KAAMA,GAG7F,CAAErB,MAAOZ,EAAWoD,MAAOpD,EAAWgD,MAAO80B,EAAWxrB,SAAU42B,EAAejhC,KAAMA,GAElG/B,EAAMM,KAAKT,CAAI,EACfmjC,EAAgB,MAI5Bd,EAAarnC,UAAU+nC,qBAAuB,SAAU5G,GAKpD,IAJA,IAAIqI,EAAWrI,EAAIA,IACfsI,EAActI,EAAIuI,OAClBC,EAAQH,EAASxjC,MAAM,GAAG,EAC1B4jC,EAAYD,EAAM,GACbrpC,EAAI,EAAGA,EAAImpC,EAAYhpC,OAAQH,CAAC,GACrCspC,GAA0C,UAA5B,OAAQH,EAAYnpC,GAAmB,IAAMmpC,EAAYnpC,GAAK,IAAMqpC,EAAMrpC,EAAI,GAAKmpC,EAAYnpC,GAAKqpC,EAAMrpC,EAAI,GAMhI,OADAspC,GAFIA,EADoB,GAApBA,EAAUnpC,QAAgC,MAAjBmpC,EAAU,IAAkD,MAApCA,EAAUA,EAAUnpC,OAAS,GAClEmpC,EAAU5wB,MAAM,EAAG,CAAC,CAAC,EAEzB4wB,GAAU98B,QAAQ,eAAgB,cAAc,EAAEA,QAAQ,QAAS,UAAU,GAG7Fu6B,EAAarnC,UAAUgoC,0BAA4B,SAAU7G,GACzD,IAAI0I,EAAgB1I,EAAIA,IACpBuI,EAASvI,EAAIuI,OACbE,EAAYC,EAUhB,OATAxqC,OAAOkH,KAAKmjC,CAAM,EAAE3iC,QAAQ,SAAU+iC,GAClC,IAAIC,EAAaL,EAAOI,GAExBF,EAAYA,EAAU98B,QADtBg9B,EAAY,IAAMA,EAC+C,UAAxB,SAAmC,IAAMC,EAAa,IAAMC,OAAOD,CAAU,CAAC,EAC1H,EAIDH,GAFIA,EADoB,GAApBA,EAAUnpC,QAAgC,MAAjBmpC,EAAU,IAAkD,MAApCA,EAAUA,EAAUnpC,OAAS,GAClEmpC,EAAU5wB,MAAM,EAAG,CAAC,CAAC,EAEzB4wB,GAAU98B,QAAQ,eAAgB,cAAc,EAAEA,QAAQ,QAAS,UAAU,GAG7Fu6B,EAAarnC,UAAU6nC,gBAAkB,SAAUoC,GAC/C,IAAIC,EAAS59B,SAAO,GAAI29B,EAAQ,KAAM,CAAA,CAAI,EAEtChiC,EAAQnI,KAAKqqC,gBAAgBD,EAAQ,CAAA,CAAK,EAC9C,OAAOpqC,KAAKsqC,mBAAmBtqC,KAAKwnC,OAAO/7B,gBAAgB2+B,CAAM,EAAGjiC,EAAe,OAAC,GAExFo/B,EAAarnC,UAAU8nC,qBAAuB,SAAUmC,GACpD,IAAIC,EAAS59B,SAAO,GAAI29B,EAAQ,KAAM,CAAA,CAAI,EAEtChiC,EAAQnI,KAAKqqC,gBAAgBD,EAAQ,CAAA,CAAI,EAC7C,OAAOpqC,KAAKuqC,wBAAwBvqC,KAAKwnC,OAAO/7B,gBAAgB2+B,CAAM,EAAGjiC,EAAoB,YAAC,GAElGo/B,EAAarnC,UAAUoqC,mBAAqB,SAAUlzB,EAAS6lB,GAE3D,MAAO,CAAEoE,IAAK,IADOjqB,EAAQpK,QAAQ,QAAS,EAAE,EACX,IAAK48B,OAAQ3M,IAEtDsK,EAAarnC,UAAUqqC,wBAA0B,SAAUnzB,EAAS6lB,GAEhE,MAAO,CAAEoE,IAAK,IADOjqB,EAAQpK,QAAQ,QAAS,EAAE,EACX,IAAK48B,OAAQ3M,IAGtDsK,EAAarnC,UAAUmqC,gBAAkB,SAAUnlC,EAAMslC,GAIrD,OAAOxqC,KAAKyqC,YAAYvlC,EAAKG,MAAOmlC,EAHtB,GACK,GACG,EACsE,GAEhGjD,EAAarnC,UAAUuqC,YAAc,SAAUplC,EAAOmlC,EAAkBE,EAExEC,EAAcC,GACV,GAAI5kC,CAAAA,oBAAkBX,CAAK,EAG3B,IAAK,IAAI7E,EAAI,EAAGA,EAAI6E,EAAM1E,OAAQH,CAAC,GAC/B,GAAI6E,EAAM7E,GAAG6E,MAGTqlC,GAAUviC,EADEnI,KAAKyqC,YAAYplC,EAAM7E,GAAG6E,MAAOmlC,EAAkBE,EAASC,EAAcC,CAAe,GAC5E,QACzBD,EAAexiC,EAAoB,iBAElC,CACD,IAAI0iC,EAAa,KAAA,EACjB,GAAIxlC,EAAM7E,GAAG2H,iBAAiBzI,MAE1B,IAAK,IAAIyJ,EAAI,EAAGA,EAAK9D,EAAM7E,GAAQ,MAAEG,OAAQwI,CAAC,GACtCqhC,IACAK,EAAa7qC,KAAK8qC,kBAAkBzlC,EAAM7E,GAAGuF,MAAO6kC,CAAe,GAElE5kC,oBAAkBX,EAAM7E,GAAG2H,MAAMgB,EAAE,IACd,WAAlB9D,EAAM7E,GAAG4G,MAAqB/B,EAAM7E,GAAG4G,KACnCojC,EACAG,EAAaE,GAAcxlC,EAAM7E,GAAG2H,MAAMgB,GAG1CuhC,EAAQ/kC,KAAKN,EAAM7E,GAAG2H,MAAMgB,EAAE,GAatC9D,EAAM7E,GAAG2H,MAAMgB,GADfqhC,EACoB,IAAMK,EAGN,SAQ5B,GAHIL,IACAK,EAAa7qC,KAAK8qC,kBAAkBzlC,EAAM7E,GAAGuF,MAAO6kC,CAAe,GAEnEvlC,EAAM7E,GAAGiR,SAAS9N,QAAQ,MAAM,EAAI,IACd,WAAlB0B,EAAM7E,GAAG4G,MAAwC,WAAlB/B,EAAM7E,GAAG4G,OAAyC,KAAnB/B,EAAM7E,GAAG2H,OAAmC,IAAnB9C,EAAM7E,GAAG2H,QAAe,CAC/G,GAAsB,WAAlB9C,EAAM7E,GAAG4G,MAAuC,SAAlB/B,EAAM7E,GAAG4G,KACvC,GAAI/B,EAAM7E,GAAGiR,SAAS9N,QAAQ,OAAO,EAAI,EAAG,CACxC,IAAIwE,EAAQ9C,EAAM7E,GAAG2H,MAAMmO,WAC3B,OAAQjR,EAAM7E,GAAGiR,UACb,IAAK,aACL,IAAK,gBACDtJ,GAAgB,IAChB,MACJ,IAAK,WACL,IAAK,cACDA,EAAQ,IAAMA,EACd,MACJ,IAAK,WACL,IAAK,cACDA,EAAQ,IAAMA,EAAQ,IAG1BqiC,EAEAG,EAAaE,GAAc1iC,EAI3BuiC,EAAQ/kC,KAAKwC,CAAK,OAIlBqiC,EAEAG,EAAaE,GAAc,GAI3BH,EAAQ/kC,KAAK,EAAE,EAEO,YAAtBN,EAAM7E,GAAGiR,SACTpM,EAAM7E,GAAGiR,SAAW,QAGpBpM,EAAM7E,GAAGiR,SAAW,gBAKvBzL,oBAAkBX,EAAM7E,GAAG2H,KAAK,IAC7BqiC,EAEAG,EAAaE,GAAcxlC,EAAM7E,GAAG2H,MAIpCuiC,EAAQ/kC,KAAKN,EAAM7E,GAAG2H,KAAK,GAKnC9C,EAAM7E,GAAG2H,MADTqiC,EACiB,IAAMK,EAGN,KAOzC,MAAO,CAAEH,QAASA,EAASC,aAAcA,IAE7CpD,EAAarnC,UAAU4qC,kBAAoB,SAAU/kC,EAAO6kC,GACxD,IAAIG,EAAW,KACf,GAA6B,EAAzBH,EAAgBjqC,OAChB,IAAK,IAAIH,EAAIoqC,EAAgBjqC,OAAS,EAAQ,GAALH,EAAQA,CAAC,GAAI,CAClD,IAAIwqC,EAAYJ,EAAgBpqC,GAChC,GAA+B,CAAC,EAA5BwqC,EAAUrnC,QAAQoC,CAAK,EAAQ,CAE/BglC,EAAWhlC,EAAQ,KADTsQ,SAAS20B,EAAU9kC,MAAM,GAAG,EAAE,GAAI,EAAE,EAAI,GAElD0kC,EAAgBjlC,KAAKolC,CAAQ,EAC7B,OAQZ,OAJKA,GAEDH,EAAgBjlC,KADhBolC,EAAWhlC,EAAQ,IACU,EAE1BglC,GAEXxD,EAAarnC,UAAUsF,cAAgB,WACnC,MAAO,iBAnrBX+hC,EAqrBOA,EAprBP,SAASA,EAAaC,GAClBxnC,KAAKwnC,OAASA,EACdxnC,KAAKg6B"}